commit 677d1bffff14d4a503701120d95628616cb80719 Author: monsieur-a Date: Sun Jul 6 13:21:10 2014 +0200 initial commit diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb3641e --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +ynh_piwigo +========== diff --git a/conf/config.sql~ b/conf/config.sql~ new file mode 100644 index 0000000..3783d01 --- /dev/null +++ b/conf/config.sql~ @@ -0,0 +1,66 @@ +-- initial configuration for Piwigo + +INSERT INTO piwigo_config (param,value,comment) VALUES ('activate_comments','true','Global parameter for usage of comments system'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nb_comment_page','10','number of comments to display on each page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('log','true','keep an history of visits on your website'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_validation','false','administrators validate users comments before becoming visible'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_forall','false','even guest not registered can post comments'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_order','ASC','comments order on picture page and cie'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_author_mandatory','false','Comment author is mandatory'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('comments_email_mandatory','false','Comment email is mandatory'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('user_can_delete_comment','false','administrators can allow user delete their own comments'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('user_can_edit_comment','false','administrators can allow user edit their own comments'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment_edition','false','Send an email to the administrators when a comment is modified'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment_deletion','false','Send an email to the administrators when a comment is deleted'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('gallery_locked','false','Lock your gallery temporary for non admin users'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('gallery_title','','Title at top of each page and for RSS feed'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('rate','true','Rating pictures feature is enabled'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('rate_anonymous','true','Rating pictures feature is also enabled for visitors'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('page_banner','','html displayed on the top each page of your gallery'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('history_admin','false','keep a history of administrator visits on your website'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('history_guest','true','keep a history of guest visits on your website'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('allow_user_registration','true','allow visitors to register?'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('allow_user_customization','true','allow users to customize their gallery?'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nb_categories_page','12','Param for categories pagination'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_html_mail','true','Send mail on HTML format for notification by mail'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_mail_as','','Send mail as param value for notification by mail'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_detailed_content','true','Send detailed content for notification by mail'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_complementary_mail_content','','Complementary mail content for notification by mail'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('nbm_send_recent_post_dates','true','Send recent post by dates for notification by mail'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_new_user','false','Send an email to theadministrators when a user registers'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment','false','Send an email to the administrators when a valid comment is entered'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('email_admin_on_comment_validation','true','Send an email to the administrators when a comment requires validation'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('obligatory_user_mail_address','false','Mail address is obligatory for users'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('c13y_ignore',null,'List of ignored anomalies'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('extents_for_templates','a:0:{}','Actived template-extension(s)'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('blk_menubar','','Menubar options'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('menubar_filter_icon','false','Display filter icon'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('index_sort_order_input','true','Display image order selection list'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('index_flat_icon','false','Display flat icon'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('index_posted_date_icon','true','Display calendar by posted date'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('index_created_date_icon','true','Display calendar by creation date icon'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('index_slideshow_icon','true','Display slideshow icon'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('index_new_icon','true','Display new icons next albums and pictures'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_metadata_icon','true','Display metadata icon on picture page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_slideshow_icon','true','Display slideshow icon on picture page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_favorite_icon','true','Display favorite icon on picture page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_download_icon','true','Display download icon on picture page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_navigation_icons','true','Display navigation icons on picture page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_navigation_thumb','true','Display navigation thumbnails on picture page'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('picture_menu','false','Show menubar on picture page'); +INSERT INTO piwigo_config (param,value,comment) + VALUES ( + 'picture_informations', + 'a:11:{s:6:"author";b:1;s:10:"created_on";b:1;s:9:"posted_on";b:1;s:10:"dimensions";b:0;s:4:"file";b:0;s:8:"filesize";b:0;s:4:"tags";b:1;s:10:"categories";b:1;s:6:"visits";b:1;s:12:"rating_score";b:1;s:13:"privacy_level";b:1;}', + 'Information displayed on picture page' + ); +INSERT INTO piwigo_config (param,value,comment) VALUES ('week_starts_on','monday','Monday may not be the first day of the week'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('updates_ignored','a:3:{s:7:"plugins";a:0:{}s:6:"themes";a:0:{}s:9:"languages";a:0:{}}','Extensions ignored for update'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by','ORDER BY date_available DESC, file ASC, id ASC','default photo order'); +INSERT INTO piwigo_config (param,value,comment) VALUES ('order_by_inside_category','ORDER BY date_available DESC, file ASC, id ASC','default photo order inside category'); +INSERT INTO piwigo_config (param,value) VALUES ('original_resize','false'); +INSERT INTO piwigo_config (param,value) VALUES ('original_resize_maxwidth','2016'); +INSERT INTO piwigo_config (param,value) VALUES ('original_resize_maxheight','2016'); +INSERT INTO piwigo_config (param,value) VALUES ('original_resize_quality','95'); +INSERT INTO piwigo_config (param,value) VALUES ('mobile_theme',null); +INSERT INTO piwigo_config (param,value) VALUES ('mail_theme','clear'); diff --git a/conf/database.inc.php b/conf/database.inc.php new file mode 100644 index 0000000..c7db0ee --- /dev/null +++ b/conf/database.inc.php @@ -0,0 +1,15 @@ + diff --git a/conf/database.inc.php~ b/conf/database.inc.php~ new file mode 100644 index 0000000..b3e055f --- /dev/null +++ b/conf/database.inc.php~ @@ -0,0 +1,15 @@ + diff --git a/conf/index.php b/conf/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/conf/index.php @@ -0,0 +1,30 @@ + diff --git a/conf/nginx.conf b/conf/nginx.conf new file mode 100644 index 0000000..f0d478a --- /dev/null +++ b/conf/nginx.conf @@ -0,0 +1,18 @@ +location PATHTOCHANGE { + alias ALIASTOCHANGE; + client_max_body_size 10G; + index index.php; + default_type text/html; + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php5-fpm.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param REMOTE_USER $remote_user; + fastcgi_param PATH_INFO $fastcgi_path_info; + } + + + # Include SSOWAT user panel. + #include conf.d/yunohost_panel.conf.inc; +} diff --git a/conf/nginx.conf~ b/conf/nginx.conf~ new file mode 100644 index 0000000..3f17a3f --- /dev/null +++ b/conf/nginx.conf~ @@ -0,0 +1,17 @@ +location PATHTOCHANGE { + alias ALIASTOCHANGE; + index index.php index.html index.htm; + default_type text/html; + location ~ [^/]\.php(/|$) { + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + fastcgi_pass unix:/var/run/php5-fpm.sock; + fastcgi_index index.php; + include fastcgi_params; + fastcgi_param REMOTE_USER $remote_user; + fastcgi_param PATH_INFO $fastcgi_path_info; + } + + + # Include SSOWAT user panel. + #include conf.d/yunohost_panel.conf.inc; +} diff --git a/conf/php-fpm.conf b/conf/php-fpm.conf new file mode 100644 index 0000000..c27d48a --- /dev/null +++ b/conf/php-fpm.conf @@ -0,0 +1,239 @@ +; Start a new pool named 'www'. +; the variable $pool can we used in any directive and will be replaced by the +; pool name ('www' here) +[NAMETOCHANGE] + +; Per pool prefix +; It only applies on the following directives: +; - 'slowlog' +; - 'listen' (unixsocket) +; - 'chroot' +; - 'chdir' +; - 'php_values' +; - 'php_admin_values' +; When not set, the global prefix (or /usr) applies instead. +; Note: This directive can also be relative to the global prefix. +; Default Value: none +;prefix = /path/to/pools/$pool + +; The address on which to accept FastCGI requests. +; Valid syntaxes are: +; 'ip.add.re.ss:port' - to listen on a TCP socket to a specific address on +; a specific port; +; 'port' - to listen on a TCP socket to all addresses on a +; specific port; +; '/path/to/unix/socket' - to listen on a unix socket. +; Note: This value is mandatory. +listen = /var/run/php5-fpm-NAMETOCHANGE.sock + +; Set listen(2) backlog. A value of '-1' means unlimited. +; Default Value: 128 (-1 on FreeBSD and OpenBSD) +;listen.backlog = -1 + +; List of ipv4 addresses of FastCGI clients which are allowed to connect. +; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original +; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address +; must be separated by a comma. If this value is left blank, connections will be +; accepted from any ip address. +; Default Value: any +;listen.allowed_clients = 127.0.0.1 + +; Set permissions for unix socket, if one is used. In Linux, read/write +; permissions must be set in order to allow connections from a web server. Many +; BSD-derived systems allow connections regardless of permissions. +; Default Values: user and group are set as the running user +; mode is set to 0666 +listen.owner = www-data +listen.group = www-data +listen.mode = 0600 + +; Unix user/group of processes +; Note: The user is mandatory. If the group is not set, the default user's group +; will be used. +user = NAMETOCHANGE +group = NAMETOCHANGE + +; Choose how the process manager will control the number of child processes. +; Possible Values: +; static - a fixed number (pm.max_children) of child processes; +; dynamic - the number of child processes are set dynamically based on the +; following directives: +; pm.max_children - the maximum number of children that can +; be alive at the same time. +; pm.start_servers - the number of children created on startup. +; pm.min_spare_servers - the minimum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is less than this +; number then some children will be created. +; pm.max_spare_servers - the maximum number of children in 'idle' +; state (waiting to process). If the number +; of 'idle' processes is greater than this +; number then some children will be killed. +; Note: This value is mandatory. +pm = dynamic + +; The number of child processes to be created when pm is set to 'static' and the +; maximum number of child processes to be created when pm is set to 'dynamic'. +; This value sets the limit on the number of simultaneous requests that will be +; served. Equivalent to the ApacheMaxClients directive with mpm_prefork. +; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP +; CGI. +; Note: Used when pm is set to either 'static' or 'dynamic' +; Note: This value is mandatory. +pm.max_children = 6 + +; The number of child processes created on startup. +; Note: Used only when pm is set to 'dynamic' +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2 +pm.start_servers = 3 + +; The desired minimum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.min_spare_servers = 3 + +; The desired maximum number of idle server processes. +; Note: Used only when pm is set to 'dynamic' +; Note: Mandatory when pm is set to 'dynamic' +pm.max_spare_servers = 5 + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. For +; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default Value: 0 +pm.max_requests = 500 + +; The URI to view the FPM status page. If this value is not set, no URI will be +; recognized as a status page. By default, the status page shows the following +; information: +; accepted conn - the number of request accepted by the pool; +; pool - the name of the pool; +; process manager - static or dynamic; +; idle processes - the number of idle processes; +; active processes - the number of active processes; +; total processes - the number of idle + active processes. +; max children reached - number of times, the process limit has been reached, +; when pm tries to start more children (works only for +; pm 'dynamic') +; The values of 'idle processes', 'active processes' and 'total processes' are +; updated each second. The value of 'accepted conn' is updated in real time. +; Example output: +; accepted conn: 12073 +; pool: www +; process manager: static +; idle processes: 35 +; active processes: 65 +; total processes: 100 +; max children reached: 1 +; By default the status page output is formatted as text/plain. Passing either +; 'html' or 'json' as a query string will return the corresponding output +; syntax. Example: +; http://www.foo.bar/status +; http://www.foo.bar/status?json +; http://www.foo.bar/status?html +; Note: The value must start with a leading slash (/). The value can be +; anything, but it may not be a good idea to use the .php extension or it +; may conflict with a real PHP file. +; Default Value: not set +pm.status_path = /fpm-status + +; The ping URI to call the monitoring page of FPM. If this value is not set, no +; URI will be recognized as a ping page. This could be used to test from outside +; that FPM is alive and responding, or to +; - create a graph of FPM availability (rrd or such); +; - remove a server from a group if it is not responding (load balancing); +; - trigger alerts for the operating team (24/7). +; Note: The value must start with a leading slash (/). The value can be +; anything, but it may not be a good idea to use the .php extension or it +; may conflict with a real PHP file. +; Default Value: not set +ping.path = /ping + +; This directive may be used to customize the response of a ping request. The +; response is formatted as text/plain with a 200 response code. +; Default Value: pong +;ping.response = pong + +; The timeout for serving a single request after which the worker process will +; be killed. This option should be used when the 'max_execution_time' ini option +; does not stop script execution for some reason. A value of '0' means 'off'. +; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) +; Default Value: 0 +request_terminate_timeout = 120s + +; The timeout for serving a single request after which a PHP backtrace will be +; dumped to the 'slowlog' file. A value of '0s' means 'off'. +; Available units: s(econds)(default), m(inutes), h(ours), or d(ays) +; Default Value: 0 +request_slowlog_timeout = 5s + +; The log file for slow requests +; Default Value: not set +; Note: slowlog is mandatory if request_slowlog_timeout is set +slowlog = /var/log/nginx/NAMETOCHANGE.slow.log + +; Set open file descriptor rlimit. +; Default Value: system defined value +rlimit_files = 4096 + +; Set max core size rlimit. +; Possible Values: 'unlimited' or an integer greater or equal to 0 +; Default Value: system defined value +rlimit_core = 0 + +; Chroot to this directory at the start. This value must be defined as an +; absolute path. When this value is not set, chroot is not used. +; Note: you can prefix with '$prefix' to chroot to the pool prefix or one +; of its subdirectories. If the pool prefix is not set, the global prefix +; will be used instead. +; Note: chrooting is a great security feature and should be used whenever +; possible. However, all PHP paths will be relative to the chroot +; (error_log, sessions.save_path, ...). +; Default Value: not set +;chroot = + +; Chdir to this directory at the start. +; Note: relative path can be used. +; Default Value: current directory or / when chroot +chdir = /var/www/NAMETOCHANGE + +; Redirect worker stdout and stderr into main error log. If not set, stdout and +; stderr will be redirected to /dev/null according to FastCGI specs. +; Note: on highloaded environement, this can cause some delay in the page +; process time (several ms). +; Default Value: no +catch_workers_output = yes + +; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from +; the current environment. +; Default Value: clean env +;env[HOSTNAME] = $HOSTNAME +;env[PATH] = /usr/local/bin:/usr/bin:/bin +;env[TMP] = /tmp +;env[TMPDIR] = /tmp +;env[TEMP] = /tmp + +; Additional php.ini defines, specific to this pool of workers. These settings +; overwrite the values previously defined in the php.ini. The directives are the +; same as the PHP SAPI: +; php_value/php_flag - you can set classic ini defines which can +; be overwritten from PHP call 'ini_set'. +; php_admin_value/php_admin_flag - these directives won't be overwritten by +; PHP call 'ini_set' +; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no. + +; Defining 'extension' will load the corresponding shared extension from +; extension_dir. Defining 'disable_functions' or 'disable_classes' will not +; overwrite previously defined php.ini values, but will append the new value +; instead. + +; Note: path INI options can be relative and will be expanded with the prefix +; (pool, global or /usr) + +; Default Value: nothing is defined by default except the values in php.ini and +; specified at startup with the -d argument +;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com +;php_flag[display_errors] = off +;php_admin_value[error_log] = /var/log/fpm-php.www.log +;php_admin_flag[log_errors] = on +;php_admin_value[memory_limit] = 32M diff --git a/conf/php-fpm.conf~ b/conf/php-fpm.conf~ new file mode 100644 index 0000000..e69de29 diff --git a/conf/php-fpm.ini b/conf/php-fpm.ini new file mode 100644 index 0000000..5cf1490 --- /dev/null +++ b/conf/php-fpm.ini @@ -0,0 +1,2 @@ +upload_max_filesize=10G +post_max_size=10G diff --git a/conf/php-fpm.ini~ b/conf/php-fpm.ini~ new file mode 100644 index 0000000..e69de29 diff --git a/conf/piwigo.sql~ b/conf/piwigo.sql~ new file mode 100644 index 0000000..3916f7f --- /dev/null +++ b/conf/piwigo.sql~ @@ -0,0 +1,977 @@ +-- phpMyAdmin SQL Dump +-- version 4.2.0 +-- http://www.phpmyadmin.net +-- +-- Client : localhost +-- Généré le : Sam 28 Juin 2014 à 23:02 +-- Version du serveur : 5.5.37-0+wheezy1 +-- Version de PHP : 5.4.4-14+deb7u11 +USE piwigo; +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- Base de données : `piwigo` +-- + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_caddie` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_caddie` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `element_id` mediumint(8) NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_categories` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_categories` ( +`id` smallint(5) unsigned NOT NULL, + `name` varchar(255) NOT NULL DEFAULT '', + `id_uppercat` smallint(5) unsigned DEFAULT NULL, + `comment` text, + `dir` varchar(255) DEFAULT NULL, + `rank` smallint(5) unsigned DEFAULT NULL, + `status` enum('public','private') NOT NULL DEFAULT 'public', + `site_id` tinyint(4) unsigned DEFAULT NULL, + `visible` enum('true','false') NOT NULL DEFAULT 'true', + `representative_picture_id` mediumint(8) unsigned DEFAULT NULL, + `uppercats` varchar(255) NOT NULL DEFAULT '', + `commentable` enum('true','false') NOT NULL DEFAULT 'true', + `global_rank` varchar(255) DEFAULT NULL, + `image_order` varchar(128) DEFAULT NULL, + `permalink` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_comments` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_comments` ( +`id` int(11) unsigned NOT NULL, + `image_id` mediumint(8) unsigned NOT NULL DEFAULT '0', + `date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `author` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `author_id` smallint(5) DEFAULT NULL, + `anonymous_id` varchar(45) NOT NULL, + `website_url` varchar(255) DEFAULT NULL, + `content` longtext, + `validated` enum('true','false') NOT NULL DEFAULT 'false', + `validation_date` datetime DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_config` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_config` ( + `param` varchar(40) NOT NULL DEFAULT '', + `value` text, + `comment` varchar(255) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='configuration table'; + +-- +-- Contenu de la table `piwigo_config` +-- + +INSERT INTO `piwigo_config` (`param`, `value`, `comment`) VALUES +('activate_comments', 'true', 'Global parameter for usage of comments system'), +('nb_comment_page', '10', 'number of comments to display on each page'), +('log', 'true', 'keep an history of visits on your website'), +('comments_validation', 'false', 'administrators validate users comments before becoming visible'), +('comments_forall', 'false', 'even guest not registered can post comments'), +('comments_order', 'ASC', 'comments order on picture page and cie'), +('comments_author_mandatory', 'false', 'Comment author is mandatory'), +('comments_email_mandatory', 'false', 'Comment email is mandatory'), +('user_can_delete_comment', 'false', 'administrators can allow user delete their own comments'), +('user_can_edit_comment', 'false', 'administrators can allow user edit their own comments'), +('email_admin_on_comment_edition', 'false', 'Send an email to the administrators when a comment is modified'), +('email_admin_on_comment_deletion', 'false', 'Send an email to the administrators when a comment is deleted'), +('gallery_locked', 'false', 'Lock your gallery temporary for non admin users'), +('gallery_title', 'Une galerie Piwigo de plus', 'Title at top of each page and for RSS feed'), +('rate', 'true', 'Rating pictures feature is enabled'), +('rate_anonymous', 'true', 'Rating pictures feature is also enabled for visitors'), +('page_banner', '

%gallery_title%

\n\n

Bienvenue sur ma galerie photo

', 'html displayed on the top each page of your gallery'), +('history_admin', 'false', 'keep a history of administrator visits on your website'), +('history_guest', 'true', 'keep a history of guest visits on your website'), +('allow_user_registration', 'true', 'allow visitors to register?'), +('allow_user_customization', 'true', 'allow users to customize their gallery?'), +('nb_categories_page', '12', 'Param for categories pagination'), +('nbm_send_html_mail', 'true', 'Send mail on HTML format for notification by mail'), +('nbm_send_mail_as', '', 'Send mail as param value for notification by mail'), +('nbm_send_detailed_content', 'true', 'Send detailed content for notification by mail'), +('nbm_complementary_mail_content', '', 'Complementary mail content for notification by mail'), +('nbm_send_recent_post_dates', 'true', 'Send recent post by dates for notification by mail'), +('email_admin_on_new_user', 'false', 'Send an email to theadministrators when a user registers'), +('email_admin_on_comment', 'false', 'Send an email to the administrators when a valid comment is entered'), +('email_admin_on_comment_validation', 'true', 'Send an email to the administrators when a comment requires validation'), +('obligatory_user_mail_address', 'false', 'Mail address is obligatory for users'), +('c13y_ignore', 'a:2:{s:7:"version";s:5:"2.6.3";s:4:"list";a:0:{}}', 'List of ignored anomalies'), +('extents_for_templates', 'a:0:{}', 'Actived template-extension(s)'), +('blk_menubar', '', 'Menubar options'), +('menubar_filter_icon', 'false', 'Display filter icon'), +('index_sort_order_input', 'true', 'Display image order selection list'), +('index_flat_icon', 'false', 'Display flat icon'), +('index_posted_date_icon', 'true', 'Display calendar by posted date'), +('index_created_date_icon', 'true', 'Display calendar by creation date icon'), +('index_slideshow_icon', 'true', 'Display slideshow icon'), +('index_new_icon', 'true', 'Display new icons next albums and pictures'), +('picture_metadata_icon', 'true', 'Display metadata icon on picture page'), +('picture_slideshow_icon', 'true', 'Display slideshow icon on picture page'), +('picture_favorite_icon', 'true', 'Display favorite icon on picture page'), +('picture_download_icon', 'true', 'Display download icon on picture page'), +('picture_navigation_icons', 'true', 'Display navigation icons on picture page'), +('picture_navigation_thumb', 'true', 'Display navigation thumbnails on picture page'), +('picture_menu', 'false', 'Show menubar on picture page'), +('picture_informations', 'a:11:{s:6:"author";b:1;s:10:"created_on";b:1;s:9:"posted_on";b:1;s:10:"dimensions";b:0;s:4:"file";b:0;s:8:"filesize";b:0;s:4:"tags";b:1;s:10:"categories";b:1;s:6:"visits";b:1;s:12:"rating_score";b:1;s:13:"privacy_level";b:1;}', 'Information displayed on picture page'), +('week_starts_on', 'monday', 'Monday may not be the first day of the week'), +('updates_ignored', 'a:3:{s:7:"plugins";a:0:{}s:6:"themes";a:0:{}s:9:"languages";a:0:{}}', 'Extensions ignored for update'), +('order_by', 'ORDER BY date_available DESC, file ASC, id ASC', 'default photo order'), +('order_by_inside_category', 'ORDER BY date_available DESC, file ASC, id ASC', 'default photo order inside category'), +('original_resize', 'false', NULL), +('original_resize_maxwidth', '2016', NULL), +('original_resize_maxheight', '2016', NULL), +('original_resize_quality', '95', NULL), +('mobile_theme', 'smartpocket', NULL), +('mail_theme', 'clear', NULL), +('secret_key', '8c52ac66f4b2bb51a8e2a850990e900d', 'a secret key specific to the gallery for internal use'), +('piwigo_db_version', '2.6', NULL), +('smartpocket', 'a:2:{s:4:"loop";b:1;s:8:"autohide";i:5000;}', 'loop#autohide'), +('derivatives', 'a:4:{s:1:"d";a:9:{s:6:"square";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:120;i:1;i:120;}s:8:"max_crop";i:1;s:8:"min_size";a:2:{i:0;i:120;i:1;i:120;}}s:7:"sharpen";i:0;}s:5:"thumb";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:144;i:1;i:144;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:6:"2small";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:240;i:1;i:240;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:6:"xsmall";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:432;i:1;i:324;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:5:"small";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:576;i:1;i:432;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:6:"medium";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:792;i:1;i:594;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:5:"large";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:1008;i:1;i:756;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:6:"xlarge";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:1224;i:1;i:918;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}s:7:"xxlarge";O:16:"DerivativeParams":3:{s:13:"last_mod_time";i:1403987679;s:6:"sizing";O:12:"SizingParams":3:{s:10:"ideal_size";a:2:{i:0;i:1656;i:1;i:1242;}s:8:"max_crop";i:0;s:8:"min_size";N;}s:7:"sharpen";i:0;}}s:1:"q";i:95;s:1:"w";O:15:"WatermarkParams":6:{s:4:"file";s:0:"";s:8:"min_size";a:2:{i:0;i:500;i:1;i:500;}s:4:"xpos";i:50;s:4:"ypos";i:50;s:7:"xrepeat";i:0;s:7:"opacity";i:100;}s:1:"c";a:0:{}}', NULL), +('data_dir_checked', '1', NULL), +('elegant', 'a:3:{s:11:"p_main_menu";s:2:"on";s:12:"p_pict_descr";s:2:"on";s:14:"p_pict_comment";s:3:"off";}', 'p_main_menu#'), +('no_photo_yet', 'false', NULL); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_favorites` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_favorites` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `image_id` mediumint(8) unsigned NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_groups` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_groups` ( +`id` smallint(5) unsigned NOT NULL, + `name` varchar(255) NOT NULL DEFAULT '', + `is_default` enum('true','false') NOT NULL DEFAULT 'false' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_group_access` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_group_access` ( + `group_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `cat_id` smallint(5) unsigned NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_history` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_history` ( +`id` int(10) unsigned NOT NULL, + `date` date NOT NULL DEFAULT '0000-00-00', + `time` time NOT NULL DEFAULT '00:00:00', + `user_id` smallint(5) NOT NULL DEFAULT '0', + `IP` varchar(15) NOT NULL DEFAULT '', + `section` enum('categories','tags','search','list','favorites','most_visited','best_rated','recent_pics','recent_cats') DEFAULT NULL, + `category_id` smallint(5) DEFAULT NULL, + `tag_ids` varchar(50) DEFAULT NULL, + `image_id` mediumint(8) DEFAULT NULL, + `summarized` enum('true','false') DEFAULT 'false', + `image_type` enum('picture','high','other') DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=9 ; + +-- +-- Contenu de la table `piwigo_history` +-- + +INSERT INTO `piwigo_history` (`id`, `date`, `time`, `user_id`, `IP`, `section`, `category_id`, `tag_ids`, `image_id`, `summarized`, `image_type`) VALUES +(1, '2014-06-28', '22:50:57', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(2, '2014-06-28', '22:54:12', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(3, '2014-06-28', '22:56:13', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(4, '2014-06-28', '22:57:03', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(5, '2014-06-28', '22:57:35', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(6, '2014-06-28', '22:58:24', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(7, '2014-06-28', '22:58:59', 3, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL), +(8, '2014-06-28', '22:59:07', 2, '192.168.0.13', 'categories', NULL, NULL, NULL, 'false', NULL); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_history_summary` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_history_summary` ( + `year` smallint(4) NOT NULL DEFAULT '0', + `month` tinyint(2) DEFAULT NULL, + `day` tinyint(2) DEFAULT NULL, + `hour` tinyint(2) DEFAULT NULL, + `nb_pages` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_images` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_images` ( +`id` mediumint(8) unsigned NOT NULL, + `file` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `date_available` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `date_creation` datetime DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `comment` text, + `author` varchar(255) DEFAULT NULL, + `hit` int(10) unsigned NOT NULL DEFAULT '0', + `filesize` mediumint(9) unsigned DEFAULT NULL, + `width` smallint(9) unsigned DEFAULT NULL, + `height` smallint(9) unsigned DEFAULT NULL, + `coi` char(4) DEFAULT NULL COMMENT 'center of interest', + `representative_ext` varchar(4) DEFAULT NULL, + `date_metadata_update` date DEFAULT NULL, + `rating_score` float(5,2) unsigned DEFAULT NULL, + `path` varchar(255) NOT NULL DEFAULT '', + `storage_category_id` smallint(5) unsigned DEFAULT NULL, + `level` tinyint(3) unsigned NOT NULL DEFAULT '0', + `md5sum` char(32) DEFAULT NULL, + `added_by` smallint(5) NOT NULL DEFAULT '0', + `rotation` tinyint(3) unsigned DEFAULT NULL, + `latitude` double(8,6) DEFAULT NULL, + `longitude` double(9,6) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_image_category` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_image_category` ( + `image_id` mediumint(8) unsigned NOT NULL DEFAULT '0', + `category_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `rank` mediumint(8) unsigned DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_image_tag` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_image_tag` ( + `image_id` mediumint(8) unsigned NOT NULL DEFAULT '0', + `tag_id` smallint(5) unsigned NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_languages` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_languages` ( + `id` varchar(64) NOT NULL DEFAULT '', + `version` varchar(64) NOT NULL DEFAULT '0', + `name` varchar(64) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `piwigo_languages` +-- + +INSERT INTO `piwigo_languages` (`id`, `version`, `name`) VALUES +('af_ZA', '2.6.0', 'Afrikaans [ZA]'), +('es_AR', '2.6.0', 'Argentina [AR]'), +('az_AZ', '2.5.0', 'Azərbaycanca [AZ]'), +('id_ID', '2.6.0', 'Bahasa Indonesia [ID]'), +('pt_BR', '2.6.1', 'Brasil [BR]'), +('br_FR', '2.6.2', 'Brezhoneg [FR]'), +('ca_ES', '2.6.1', 'Català [CA]'), +('da_DK', '2.6.0', 'Dansk [DK]'), +('de_DE', '2.6.0', 'Deutsch [DE]'), +('dv_MV', '2.5.0', 'Dhivehi [MV]'), +('en_GB', '2.6.1', 'English [GB]'), +('en_UK', '2.6.0', 'English [UK]'), +('en_US', '2.6.0', 'English [US]'), +('es_ES', '2.6.0', 'Español [ES]'), +('eo_EO', '2.6.0', 'Esperanto [EO]'), +('et_EE', '2.6.0', 'Estonian [EE]'), +('fi_FI', '2.6.0', 'Finnish [FI]'), +('fr_FR', '2.6.0', 'Français [FR]'), +('fr_CA', '2.6.0', 'Français [QC]'), +('ga_IE', '2.5.0', 'Gaeilge [IE]'), +('gl_ES', '2.6.1', 'Galego [ES]'), +('hr_HR', '2.6.0', 'Hrvatski [HR]'), +('it_IT', '2.6.0', 'Italiano [IT]'), +('lv_LV', '2.6.0', 'Latviešu [LV]'), +('lt_LT', '2.6.0', 'Lietuviu [LT]'), +('lb_LU', '2.5.0', 'Lëtzebuergesch [LU]'), +('hu_HU', '2.6.0', 'Magyar [HU]'), +('ms_MY', '2.5.0', 'Malay [MY]'), +('nl_NL', '2.6.0', 'Nederlands [NL]'), +('nb_NO', '2.6.0', 'Norwegian [NO]'), +('nn_NO', '2.6.0', 'Norwegian nynorsk [NO]'), +('pl_PL', '2.6.1', 'Polski [PL]'), +('pt_PT', '2.6.0', 'Português [PT]'), +('ro_RO', '2.6.0', 'Română [RO]'), +('sk_SK', '2.6.0', 'Slovensky [SK]'), +('sl_SI', '2.6.1', 'Slovenšcina [SI]'), +('sh_RS', '2.6.1', 'Srpski [SR]'), +('sv_SE', '2.6.0', 'Svenska [SE]'), +('vi_VN', '2.6.0', 'Tiếng Việt [VN]'), +('tr_TR', '2.6.0', 'Türkçe [TR]'), +('is_IS', '2.6.0', 'Íslenska [IS]'), +('cs_CZ', '2.6.0', 'Česky [CZ]'), +('el_GR', '2.6.0', 'Ελληνικά [GR]'), +('bg_BG', '2.6.0', 'Български [BG]'), +('mk_MK', '2.6.0', 'Македонски [MK]'), +('mn_MN', '2.6.2', 'Монгол [MN]'), +('ru_RU', '2.6.0', 'Русский [RU]'), +('sr_RS', '2.6.1', 'Српски [SR]'), +('uk_UA', '2.6.0', 'Українська [UA]'), +('he_IL', '2.6.2', 'עברית [IL]'), +('ar_SA', '2.6.0', 'العربية [AR]'), +('ar_MA', '2.5.0', 'العربية [MA]'), +('fa_IR', '2.6.0', 'پارسی [IR]'), +('kok_IN', '2.5.0', 'कोंकणी [IN]'), +('bn_IN', '2.5.0', 'বাংলা[IN]'), +('ta_IN', '2.6.1', 'தமிழ் [IN]'), +('kn_IN', '2.6.0', 'ಕನ್ನಡ [IN]'), +('th_TH', '2.6.0', 'ภาษาไทย [TH]'), +('ka_GE', '2.6.0', 'ქართული [GE]'), +('km_KH', '2.6.2', 'ខ្មែរ [KH]'), +('zh_TW', '2.6.0', '中文 (繁體) [TW]'), +('zh_HK', '2.6.0', '中文 (香港) [HK]'), +('ja_JP', '2.6.0', '日本語 [JP]'), +('zh_CN', '2.6.0', '简体中文 [CN]'), +('ko_KR', '2.6.0', '한국어 [KR]'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_old_permalinks` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_old_permalinks` ( + `cat_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `permalink` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `date_deleted` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `last_hit` datetime DEFAULT NULL, + `hit` int(10) unsigned NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_plugins` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_plugins` ( + `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `state` enum('inactive','active') NOT NULL DEFAULT 'inactive', + `version` varchar(64) NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `piwigo_plugins` +-- + +INSERT INTO `piwigo_plugins` (`id`, `state`, `version`) VALUES +('Ldap_Login', 'active', '1.1'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_rate` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_rate` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `element_id` mediumint(8) unsigned NOT NULL DEFAULT '0', + `anonymous_id` varchar(45) NOT NULL DEFAULT '', + `rate` tinyint(2) unsigned NOT NULL DEFAULT '0', + `date` date NOT NULL DEFAULT '0000-00-00' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_search` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_search` ( +`id` int(10) unsigned NOT NULL, + `last_seen` date DEFAULT NULL, + `rules` text +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_sessions` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_sessions` ( + `id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `data` mediumtext NOT NULL, + `expiration` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `piwigo_sessions` +-- + +INSERT INTO `piwigo_sessions` (`id`, `data`, `expiration`) VALUES +('C0A8q02887miht1f856vh8u19emb13', 'pwg_device|s:7:"desktop";pwg_mobile_theme|b:0;', '2014-06-28 22:59:15'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_sites` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_sites` ( +`id` tinyint(4) NOT NULL, + `galleries_url` varchar(255) NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ; + +-- +-- Contenu de la table `piwigo_sites` +-- + +INSERT INTO `piwigo_sites` (`id`, `galleries_url`) VALUES +(1, './galleries/'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_tags` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_tags` ( +`id` smallint(5) unsigned NOT NULL, + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `url_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_themes` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_themes` ( + `id` varchar(64) NOT NULL DEFAULT '', + `version` varchar(64) NOT NULL DEFAULT '0', + `name` varchar(64) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `piwigo_themes` +-- + +INSERT INTO `piwigo_themes` (`id`, `version`, `name`) VALUES +('smartpocket', '2.6.2', 'Smart Pocket'), +('elegant', '2.6.2', 'elegant'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_upgrade` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_upgrade` ( + `id` varchar(20) NOT NULL DEFAULT '', + `applied` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `description` varchar(255) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `piwigo_upgrade` +-- + +INSERT INTO `piwigo_upgrade` (`id`, `applied`, `description`) VALUES +('61', '2014-06-28 22:33:36', 'upgrade included in installation'), +('62', '2014-06-28 22:33:36', 'upgrade included in installation'), +('63', '2014-06-28 22:33:36', 'upgrade included in installation'), +('64', '2014-06-28 22:33:36', 'upgrade included in installation'), +('65', '2014-06-28 22:33:36', 'upgrade included in installation'), +('66', '2014-06-28 22:33:36', 'upgrade included in installation'), +('67', '2014-06-28 22:33:36', 'upgrade included in installation'), +('68', '2014-06-28 22:33:36', 'upgrade included in installation'), +('69', '2014-06-28 22:33:36', 'upgrade included in installation'), +('70', '2014-06-28 22:33:36', 'upgrade included in installation'), +('71', '2014-06-28 22:33:36', 'upgrade included in installation'), +('72', '2014-06-28 22:33:36', 'upgrade included in installation'), +('73', '2014-06-28 22:33:36', 'upgrade included in installation'), +('74', '2014-06-28 22:33:36', 'upgrade included in installation'), +('75', '2014-06-28 22:33:36', 'upgrade included in installation'), +('76', '2014-06-28 22:33:36', 'upgrade included in installation'), +('77', '2014-06-28 22:33:36', 'upgrade included in installation'), +('78', '2014-06-28 22:33:36', 'upgrade included in installation'), +('79', '2014-06-28 22:33:36', 'upgrade included in installation'), +('80', '2014-06-28 22:33:36', 'upgrade included in installation'), +('81', '2014-06-28 22:33:36', 'upgrade included in installation'), +('82', '2014-06-28 22:33:36', 'upgrade included in installation'), +('83', '2014-06-28 22:33:36', 'upgrade included in installation'), +('84', '2014-06-28 22:33:36', 'upgrade included in installation'), +('85', '2014-06-28 22:33:36', 'upgrade included in installation'), +('86', '2014-06-28 22:33:36', 'upgrade included in installation'), +('87', '2014-06-28 22:33:36', 'upgrade included in installation'), +('88', '2014-06-28 22:33:36', 'upgrade included in installation'), +('89', '2014-06-28 22:33:36', 'upgrade included in installation'), +('90', '2014-06-28 22:33:36', 'upgrade included in installation'), +('91', '2014-06-28 22:33:36', 'upgrade included in installation'), +('92', '2014-06-28 22:33:36', 'upgrade included in installation'), +('93', '2014-06-28 22:33:36', 'upgrade included in installation'), +('94', '2014-06-28 22:33:36', 'upgrade included in installation'), +('95', '2014-06-28 22:33:36', 'upgrade included in installation'), +('96', '2014-06-28 22:33:36', 'upgrade included in installation'), +('97', '2014-06-28 22:33:36', 'upgrade included in installation'), +('98', '2014-06-28 22:33:36', 'upgrade included in installation'), +('99', '2014-06-28 22:33:36', 'upgrade included in installation'), +('100', '2014-06-28 22:33:36', 'upgrade included in installation'), +('101', '2014-06-28 22:33:36', 'upgrade included in installation'), +('102', '2014-06-28 22:33:36', 'upgrade included in installation'), +('103', '2014-06-28 22:33:36', 'upgrade included in installation'), +('104', '2014-06-28 22:33:36', 'upgrade included in installation'), +('105', '2014-06-28 22:33:36', 'upgrade included in installation'), +('106', '2014-06-28 22:33:36', 'upgrade included in installation'), +('107', '2014-06-28 22:33:36', 'upgrade included in installation'), +('108', '2014-06-28 22:33:36', 'upgrade included in installation'), +('109', '2014-06-28 22:33:36', 'upgrade included in installation'), +('110', '2014-06-28 22:33:36', 'upgrade included in installation'), +('111', '2014-06-28 22:33:36', 'upgrade included in installation'), +('112', '2014-06-28 22:33:36', 'upgrade included in installation'), +('113', '2014-06-28 22:33:36', 'upgrade included in installation'), +('114', '2014-06-28 22:33:36', 'upgrade included in installation'), +('115', '2014-06-28 22:33:36', 'upgrade included in installation'), +('116', '2014-06-28 22:33:36', 'upgrade included in installation'), +('117', '2014-06-28 22:33:36', 'upgrade included in installation'), +('118', '2014-06-28 22:33:36', 'upgrade included in installation'), +('119', '2014-06-28 22:33:36', 'upgrade included in installation'), +('120', '2014-06-28 22:33:36', 'upgrade included in installation'), +('121', '2014-06-28 22:33:36', 'upgrade included in installation'), +('122', '2014-06-28 22:33:36', 'upgrade included in installation'), +('123', '2014-06-28 22:33:36', 'upgrade included in installation'), +('124', '2014-06-28 22:33:36', 'upgrade included in installation'), +('125', '2014-06-28 22:33:36', 'upgrade included in installation'), +('126', '2014-06-28 22:33:36', 'upgrade included in installation'), +('127', '2014-06-28 22:33:36', 'upgrade included in installation'), +('128', '2014-06-28 22:33:36', 'upgrade included in installation'), +('129', '2014-06-28 22:33:36', 'upgrade included in installation'), +('130', '2014-06-28 22:33:36', 'upgrade included in installation'), +('131', '2014-06-28 22:33:36', 'upgrade included in installation'), +('132', '2014-06-28 22:33:36', 'upgrade included in installation'), +('133', '2014-06-28 22:33:36', 'upgrade included in installation'), +('134', '2014-06-28 22:33:36', 'upgrade included in installation'), +('135', '2014-06-28 22:33:36', 'upgrade included in installation'), +('136', '2014-06-28 22:33:36', 'upgrade included in installation'), +('137', '2014-06-28 22:33:36', 'upgrade included in installation'), +('138', '2014-06-28 22:33:36', 'upgrade included in installation'), +('139', '2014-06-28 22:33:36', 'upgrade included in installation'); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_users` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_users` ( +`id` smallint(5) NOT NULL, + `username` varchar(100) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `password` varchar(255) DEFAULT NULL, + `mail_address` varchar(255) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; + +-- +-- Contenu de la table `piwigo_users` +-- + +INSERT INTO `piwigo_users` (`id`, `username`, `password`, `mail_address`) VALUES +(1, 'ADMINUSER', '', 'webmaster@monsieur-a.com'), +(2, 'guest', NULL, NULL); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_access` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_access` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `cat_id` smallint(5) unsigned NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_cache` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_cache` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `need_update` enum('true','false') NOT NULL DEFAULT 'true', + `cache_update_time` int(10) unsigned NOT NULL DEFAULT '0', + `forbidden_categories` mediumtext, + `nb_total_images` mediumint(8) unsigned DEFAULT NULL, + `last_photo_date` datetime DEFAULT NULL, + `nb_available_tags` int(5) DEFAULT NULL, + `nb_available_comments` int(5) DEFAULT NULL, + `image_access_type` enum('NOT IN','IN') NOT NULL DEFAULT 'NOT IN', + `image_access_list` mediumtext +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_cache_categories` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_cache_categories` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `cat_id` smallint(5) unsigned NOT NULL DEFAULT '0', + `date_last` datetime DEFAULT NULL, + `max_date_last` datetime DEFAULT NULL, + `nb_images` mediumint(8) unsigned NOT NULL DEFAULT '0', + `count_images` mediumint(8) unsigned DEFAULT '0', + `nb_categories` mediumint(8) unsigned DEFAULT '0', + `count_categories` mediumint(8) unsigned DEFAULT '0', + `user_representative_picture_id` mediumint(8) unsigned DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_feed` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_feed` ( + `id` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `user_id` smallint(5) NOT NULL DEFAULT '0', + `last_check` datetime DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_group` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_group` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `group_id` smallint(5) unsigned NOT NULL DEFAULT '0' +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_infos` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_infos` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `nb_image_page` smallint(3) unsigned NOT NULL DEFAULT '15', + `status` enum('webmaster','admin','normal','generic','guest') NOT NULL DEFAULT 'guest', + `language` varchar(50) NOT NULL DEFAULT 'en_UK', + `expand` enum('true','false') NOT NULL DEFAULT 'false', + `show_nb_comments` enum('true','false') NOT NULL DEFAULT 'false', + `show_nb_hits` enum('true','false') NOT NULL DEFAULT 'false', + `recent_period` tinyint(3) unsigned NOT NULL DEFAULT '7', + `theme` varchar(255) NOT NULL DEFAULT 'elegant', + `registration_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', + `enabled_high` enum('true','false') NOT NULL DEFAULT 'true', + `level` tinyint(3) unsigned NOT NULL DEFAULT '0', + `activation_key` char(20) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Contenu de la table `piwigo_user_infos` +-- + +INSERT INTO `piwigo_user_infos` (`user_id`, `nb_image_page`, `status`, `language`, `expand`, `show_nb_comments`, `show_nb_hits`, `recent_period`, `theme`, `registration_date`, `enabled_high`, `level`, `activation_key`) VALUES +(1, 15, 'webmaster', 'fr_FR', 'false', 'false', 'false', 7, 'elegant', '2014-06-28 22:33:36', 'true', 8, NULL), +(2, 15, 'guest', 'fr_FR', 'false', 'false', 'false', 7, 'elegant', '2014-06-28 22:33:36', 'true', 0, NULL); + +-- -------------------------------------------------------- + +-- +-- Structure de la table `piwigo_user_mail_notification` +-- + +CREATE TABLE IF NOT EXISTS `piwigo_user_mail_notification` ( + `user_id` smallint(5) NOT NULL DEFAULT '0', + `check_key` varchar(16) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '', + `enabled` enum('true','false') NOT NULL DEFAULT 'false', + `last_send` datetime DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Index pour les tables exportées +-- + +-- +-- Index pour la table `piwigo_caddie` +-- +ALTER TABLE `piwigo_caddie` + ADD PRIMARY KEY (`user_id`,`element_id`); + +-- +-- Index pour la table `piwigo_categories` +-- +ALTER TABLE `piwigo_categories` + ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `categories_i3` (`permalink`), ADD KEY `categories_i2` (`id_uppercat`); + +-- +-- Index pour la table `piwigo_comments` +-- +ALTER TABLE `piwigo_comments` + ADD PRIMARY KEY (`id`), ADD KEY `comments_i2` (`validation_date`), ADD KEY `comments_i1` (`image_id`); + +-- +-- Index pour la table `piwigo_config` +-- +ALTER TABLE `piwigo_config` + ADD PRIMARY KEY (`param`); + +-- +-- Index pour la table `piwigo_favorites` +-- +ALTER TABLE `piwigo_favorites` + ADD PRIMARY KEY (`user_id`,`image_id`); + +-- +-- Index pour la table `piwigo_groups` +-- +ALTER TABLE `piwigo_groups` + ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `groups_ui1` (`name`); + +-- +-- Index pour la table `piwigo_group_access` +-- +ALTER TABLE `piwigo_group_access` + ADD PRIMARY KEY (`group_id`,`cat_id`); + +-- +-- Index pour la table `piwigo_history` +-- +ALTER TABLE `piwigo_history` + ADD PRIMARY KEY (`id`), ADD KEY `history_i1` (`summarized`); + +-- +-- Index pour la table `piwigo_history_summary` +-- +ALTER TABLE `piwigo_history_summary` + ADD UNIQUE KEY `history_summary_ymdh` (`year`,`month`,`day`,`hour`); + +-- +-- Index pour la table `piwigo_images` +-- +ALTER TABLE `piwigo_images` + ADD PRIMARY KEY (`id`), ADD KEY `images_i2` (`date_available`), ADD KEY `images_i3` (`rating_score`), ADD KEY `images_i4` (`hit`), ADD KEY `images_i5` (`date_creation`), ADD KEY `images_i1` (`storage_category_id`), ADD KEY `images_i6` (`latitude`); + +-- +-- Index pour la table `piwigo_image_category` +-- +ALTER TABLE `piwigo_image_category` + ADD PRIMARY KEY (`image_id`,`category_id`), ADD KEY `image_category_i1` (`category_id`); + +-- +-- Index pour la table `piwigo_image_tag` +-- +ALTER TABLE `piwigo_image_tag` + ADD PRIMARY KEY (`image_id`,`tag_id`), ADD KEY `image_tag_i1` (`tag_id`); + +-- +-- Index pour la table `piwigo_languages` +-- +ALTER TABLE `piwigo_languages` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_old_permalinks` +-- +ALTER TABLE `piwigo_old_permalinks` + ADD PRIMARY KEY (`permalink`); + +-- +-- Index pour la table `piwigo_plugins` +-- +ALTER TABLE `piwigo_plugins` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_rate` +-- +ALTER TABLE `piwigo_rate` + ADD PRIMARY KEY (`element_id`,`user_id`,`anonymous_id`); + +-- +-- Index pour la table `piwigo_search` +-- +ALTER TABLE `piwigo_search` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_sessions` +-- +ALTER TABLE `piwigo_sessions` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_sites` +-- +ALTER TABLE `piwigo_sites` + ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `sites_ui1` (`galleries_url`); + +-- +-- Index pour la table `piwigo_tags` +-- +ALTER TABLE `piwigo_tags` + ADD PRIMARY KEY (`id`), ADD KEY `tags_i1` (`url_name`); + +-- +-- Index pour la table `piwigo_themes` +-- +ALTER TABLE `piwigo_themes` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_upgrade` +-- +ALTER TABLE `piwigo_upgrade` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_users` +-- +ALTER TABLE `piwigo_users` + ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `users_ui1` (`username`); + +-- +-- Index pour la table `piwigo_user_access` +-- +ALTER TABLE `piwigo_user_access` + ADD PRIMARY KEY (`user_id`,`cat_id`); + +-- +-- Index pour la table `piwigo_user_cache` +-- +ALTER TABLE `piwigo_user_cache` + ADD PRIMARY KEY (`user_id`); + +-- +-- Index pour la table `piwigo_user_cache_categories` +-- +ALTER TABLE `piwigo_user_cache_categories` + ADD PRIMARY KEY (`user_id`,`cat_id`); + +-- +-- Index pour la table `piwigo_user_feed` +-- +ALTER TABLE `piwigo_user_feed` + ADD PRIMARY KEY (`id`); + +-- +-- Index pour la table `piwigo_user_group` +-- +ALTER TABLE `piwigo_user_group` + ADD PRIMARY KEY (`group_id`,`user_id`); + +-- +-- Index pour la table `piwigo_user_infos` +-- +ALTER TABLE `piwigo_user_infos` + ADD PRIMARY KEY (`user_id`); + +-- +-- Index pour la table `piwigo_user_mail_notification` +-- +ALTER TABLE `piwigo_user_mail_notification` + ADD PRIMARY KEY (`user_id`), ADD UNIQUE KEY `user_mail_notification_ui1` (`check_key`); + +-- +-- AUTO_INCREMENT pour les tables exportées +-- + +-- +-- AUTO_INCREMENT pour la table `piwigo_categories` +-- +ALTER TABLE `piwigo_categories` +MODIFY `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT pour la table `piwigo_comments` +-- +ALTER TABLE `piwigo_comments` +MODIFY `id` int(11) unsigned NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT pour la table `piwigo_groups` +-- +ALTER TABLE `piwigo_groups` +MODIFY `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT pour la table `piwigo_history` +-- +ALTER TABLE `piwigo_history` +MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=9; +-- +-- AUTO_INCREMENT pour la table `piwigo_images` +-- +ALTER TABLE `piwigo_images` +MODIFY `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT pour la table `piwigo_search` +-- +ALTER TABLE `piwigo_search` +MODIFY `id` int(10) unsigned NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT pour la table `piwigo_sites` +-- +ALTER TABLE `piwigo_sites` +MODIFY `id` tinyint(4) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=2; +-- +-- AUTO_INCREMENT pour la table `piwigo_tags` +-- +ALTER TABLE `piwigo_tags` +MODIFY `id` smallint(5) unsigned NOT NULL AUTO_INCREMENT; +-- +-- AUTO_INCREMENT pour la table `piwigo_users` +-- +ALTER TABLE `piwigo_users` +MODIFY `id` smallint(5) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/conf/piwigo_structure-mysql.sql~ b/conf/piwigo_structure-mysql.sql~ new file mode 100644 index 0000000..dadad1d --- /dev/null +++ b/conf/piwigo_structure-mysql.sql~ @@ -0,0 +1,455 @@ +-- MySQL dump 9.11 +-- +-- Host: localhost Database: pwg-bsf +-- ------------------------------------------------------ +-- Server version 4.0.24_Debian-10-log + +-- +-- Table structure for table `piwigo_caddie` +-- + +DROP TABLE IF EXISTS `piwigo_caddie`; +CREATE TABLE `piwigo_caddie` ( + `user_id` smallint(5) NOT NULL default '0', + `element_id` mediumint(8) NOT NULL default '0', + PRIMARY KEY (`user_id`,`element_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_categories` +-- + +DROP TABLE IF EXISTS `piwigo_categories`; +CREATE TABLE `piwigo_categories` ( + `id` smallint(5) unsigned NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `id_uppercat` smallint(5) unsigned default NULL, + `comment` text, + `dir` varchar(255) default NULL, + `rank` smallint(5) unsigned default NULL, + `status` enum('public','private') NOT NULL default 'public', + `site_id` tinyint(4) unsigned default NULL, + `visible` enum('true','false') NOT NULL default 'true', + `representative_picture_id` mediumint(8) unsigned default NULL, + `uppercats` varchar(255) NOT NULL default '', + `commentable` enum('true','false') NOT NULL default 'true', + `global_rank` varchar(255) default NULL, + `image_order` varchar(128) default NULL, + `permalink` varchar(64) binary default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `categories_i3` (`permalink`), + KEY `categories_i2` (`id_uppercat`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_comments` +-- + +DROP TABLE IF EXISTS `piwigo_comments`; +CREATE TABLE `piwigo_comments` ( + `id` int(11) unsigned NOT NULL auto_increment, + `image_id` mediumint(8) unsigned NOT NULL default '0', + `date` datetime NOT NULL default '0000-00-00 00:00:00', + `author` varchar(255) default NULL, + `email` varchar(255) default NULL, + `author_id` smallint(5) DEFAULT NULL, + `anonymous_id` varchar(45) NOT NULL, + `website_url` varchar(255) DEFAULT NULL, + `content` longtext, + `validated` enum('true','false') NOT NULL default 'false', + `validation_date` datetime default NULL, + PRIMARY KEY (`id`), + KEY `comments_i2` (`validation_date`), + KEY `comments_i1` (`image_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_config` +-- + +DROP TABLE IF EXISTS `piwigo_config`; +CREATE TABLE `piwigo_config` ( + `param` varchar(40) NOT NULL default '', + `value` text, + `comment` varchar(255) default NULL, + PRIMARY KEY (`param`) +) ENGINE=MyISAM COMMENT='configuration table'; + +-- +-- Table structure for table `piwigo_favorites` +-- + +DROP TABLE IF EXISTS `piwigo_favorites`; +CREATE TABLE `piwigo_favorites` ( + `user_id` smallint(5) NOT NULL default '0', + `image_id` mediumint(8) unsigned NOT NULL default '0', + PRIMARY KEY (`user_id`,`image_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_group_access` +-- + +DROP TABLE IF EXISTS `piwigo_group_access`; +CREATE TABLE `piwigo_group_access` ( + `group_id` smallint(5) unsigned NOT NULL default '0', + `cat_id` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`group_id`,`cat_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_groups` +-- + +DROP TABLE IF EXISTS `piwigo_groups`; +CREATE TABLE `piwigo_groups` ( + `id` smallint(5) unsigned NOT NULL auto_increment, + `name` varchar(255) NOT NULL default '', + `is_default` enum('true','false') NOT NULL default 'false', + PRIMARY KEY (`id`), + UNIQUE KEY `groups_ui1` (`name`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_history` +-- + +DROP TABLE IF EXISTS `piwigo_history`; +CREATE TABLE `piwigo_history` ( + `id` int(10) unsigned NOT NULL auto_increment, + `date` date NOT NULL default '0000-00-00', + `time` time NOT NULL default '00:00:00', + `user_id` smallint(5) NOT NULL default '0', + `IP` varchar(15) NOT NULL default '', + `section` enum('categories','tags','search','list','favorites','most_visited','best_rated','recent_pics','recent_cats') default NULL, + `category_id` smallint(5) default NULL, + `tag_ids` varchar(50) default NULL, + `image_id` mediumint(8) default NULL, + `summarized` enum('true','false') default 'false', + `image_type` enum('picture','high','other') default NULL, + PRIMARY KEY (`id`), + KEY `history_i1` (`summarized`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_history_summary` +-- + +DROP TABLE IF EXISTS `piwigo_history_summary`; +CREATE TABLE `piwigo_history_summary` ( + `year` smallint(4) NOT NULL default '0', + `month` tinyint(2) default NULL, + `day` tinyint(2) default NULL, + `hour` tinyint(2) default NULL, + `nb_pages` int(11) default NULL, + UNIQUE KEY history_summary_ymdh (`year`,`month`,`day`,`hour`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_image_category` +-- + +DROP TABLE IF EXISTS `piwigo_image_category`; +CREATE TABLE `piwigo_image_category` ( + `image_id` mediumint(8) unsigned NOT NULL default '0', + `category_id` smallint(5) unsigned NOT NULL default '0', + `rank` mediumint(8) unsigned default NULL, + PRIMARY KEY (`image_id`,`category_id`), + KEY `image_category_i1` (`category_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_image_tag` +-- + +DROP TABLE IF EXISTS `piwigo_image_tag`; +CREATE TABLE `piwigo_image_tag` ( + `image_id` mediumint(8) unsigned NOT NULL default '0', + `tag_id` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`image_id`,`tag_id`), + KEY `image_tag_i1` (`tag_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_images` +-- + +DROP TABLE IF EXISTS `piwigo_images`; +CREATE TABLE `piwigo_images` ( + `id` mediumint(8) unsigned NOT NULL auto_increment, + `file` varchar(255) binary NOT NULL default '', + `date_available` datetime NOT NULL default '0000-00-00 00:00:00', + `date_creation` datetime default NULL, + `name` varchar(255) default NULL, + `comment` text, + `author` varchar(255) default NULL, + `hit` int(10) unsigned NOT NULL default '0', + `filesize` mediumint(9) unsigned default NULL, + `width` smallint(9) unsigned default NULL, + `height` smallint(9) unsigned default NULL, + `coi` char(4) default NULL COMMENT 'center of interest', + `representative_ext` varchar(4) default NULL, + `date_metadata_update` date default NULL, + `rating_score` float(5,2) unsigned default NULL, + `path` varchar(255) NOT NULL default '', + `storage_category_id` smallint(5) unsigned default NULL, + `level` tinyint unsigned NOT NULL default '0', + `md5sum` char(32) default NULL, + `added_by` smallint(5) NOT NULL default '0', + `rotation` tinyint unsigned default NULL, + `latitude` double(8, 6) default NULL, + `longitude` double(9, 6) default NULL, + PRIMARY KEY (`id`), + KEY `images_i2` (`date_available`), + KEY `images_i3` (`rating_score`), + KEY `images_i4` (`hit`), + KEY `images_i5` (`date_creation`), + KEY `images_i1` (`storage_category_id`), + KEY `images_i6` (`latitude`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_languages` +-- + +DROP TABLE IF EXISTS `piwigo_languages`; +CREATE TABLE `piwigo_languages` ( + `id` varchar(64) NOT NULL default '', + `version` varchar(64) NOT NULL default '0', + `name` varchar(64) default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_old_permalinks` +-- + +DROP TABLE IF EXISTS `piwigo_old_permalinks`; +CREATE TABLE `piwigo_old_permalinks` ( + `cat_id` smallint(5) unsigned NOT NULL default '0', + `permalink` varchar(64) binary NOT NULL default '', + `date_deleted` datetime NOT NULL default '0000-00-00 00:00:00', + `last_hit` datetime default NULL, + `hit` int(10) unsigned NOT NULL default '0', + PRIMARY KEY (`permalink`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_plugins` +-- + +DROP TABLE IF EXISTS `piwigo_plugins`; +CREATE TABLE `piwigo_plugins` ( + `id` varchar(64) binary NOT NULL default '', + `state` enum('inactive','active') NOT NULL default 'inactive', + `version` varchar(64) NOT NULL default '0', + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_rate` +-- + +DROP TABLE IF EXISTS `piwigo_rate`; +CREATE TABLE `piwigo_rate` ( + `user_id` smallint(5) NOT NULL default '0', + `element_id` mediumint(8) unsigned NOT NULL default '0', + `anonymous_id` varchar(45) NOT NULL default '', + `rate` tinyint(2) unsigned NOT NULL default '0', + `date` date NOT NULL default '0000-00-00', + PRIMARY KEY (`element_id`,`user_id`,`anonymous_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_search` +-- + +DROP TABLE IF EXISTS `piwigo_search`; +CREATE TABLE `piwigo_search` ( + `id` int(10) unsigned NOT NULL auto_increment, + `last_seen` date default NULL, + `rules` text, + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_sessions` +-- + +DROP TABLE IF EXISTS `piwigo_sessions`; +CREATE TABLE `piwigo_sessions` ( + `id` varchar(255) binary NOT NULL default '', + `data` mediumtext NOT NULL, + `expiration` datetime NOT NULL default '0000-00-00 00:00:00', + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_sites` +-- + +DROP TABLE IF EXISTS `piwigo_sites`; +CREATE TABLE `piwigo_sites` ( + `id` tinyint(4) NOT NULL auto_increment, + `galleries_url` varchar(255) NOT NULL default '', + PRIMARY KEY (`id`), + UNIQUE KEY `sites_ui1` (`galleries_url`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_tags` +-- + +DROP TABLE IF EXISTS `piwigo_tags`; +CREATE TABLE `piwigo_tags` ( + `id` smallint(5) unsigned NOT NULL auto_increment, + `name` varchar(255) binary NOT NULL default '', + `url_name` varchar(255) binary NOT NULL default '', + PRIMARY KEY (`id`), + KEY `tags_i1` (`url_name`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_themes` +-- + +DROP TABLE IF EXISTS `piwigo_themes`; +CREATE TABLE `piwigo_themes` ( + `id` varchar(64) NOT NULL default '', + `version` varchar(64) NOT NULL default '0', + `name` varchar(64) default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_upgrade` +-- + +DROP TABLE IF EXISTS `piwigo_upgrade`; +CREATE TABLE `piwigo_upgrade` ( + `id` varchar(20) NOT NULL default '', + `applied` datetime NOT NULL default '0000-00-00 00:00:00', + `description` varchar(255) default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_access` +-- + +DROP TABLE IF EXISTS `piwigo_user_access`; +CREATE TABLE `piwigo_user_access` ( + `user_id` smallint(5) NOT NULL default '0', + `cat_id` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`user_id`,`cat_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_cache` +-- + +DROP TABLE IF EXISTS `piwigo_user_cache`; +CREATE TABLE `piwigo_user_cache` ( + `user_id` smallint(5) NOT NULL default '0', + `need_update` enum('true','false') NOT NULL default 'true', + `cache_update_time` integer unsigned NOT NULL default 0, + `forbidden_categories` mediumtext, + `nb_total_images` mediumint(8) unsigned default NULL, + `last_photo_date` datetime DEFAULT NULL, + `nb_available_tags` INT(5) DEFAULT NULL, + `nb_available_comments` INT(5) DEFAULT NULL, + `image_access_type` enum('NOT IN','IN') NOT NULL default 'NOT IN', + `image_access_list` mediumtext default NULL, + PRIMARY KEY (`user_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_cache_categories` +-- + +DROP TABLE IF EXISTS `piwigo_user_cache_categories`; +CREATE TABLE `piwigo_user_cache_categories` ( + `user_id` smallint(5) NOT NULL default '0', + `cat_id` smallint(5) unsigned NOT NULL default '0', + `date_last` datetime default NULL, + `max_date_last` datetime default NULL, + `nb_images` mediumint(8) unsigned NOT NULL default '0', + `count_images` mediumint(8) unsigned default '0', + `nb_categories` mediumint(8) unsigned default '0', + `count_categories` mediumint(8) unsigned default '0', + `user_representative_picture_id` mediumint(8) unsigned default NULL, + PRIMARY KEY (`user_id`,`cat_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_feed` +-- + +DROP TABLE IF EXISTS `piwigo_user_feed`; +CREATE TABLE `piwigo_user_feed` ( + `id` varchar(50) binary NOT NULL default '', + `user_id` smallint(5) NOT NULL default '0', + `last_check` datetime default NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_group` +-- + +DROP TABLE IF EXISTS `piwigo_user_group`; +CREATE TABLE `piwigo_user_group` ( + `user_id` smallint(5) NOT NULL default '0', + `group_id` smallint(5) unsigned NOT NULL default '0', + PRIMARY KEY (`group_id`,`user_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_infos` +-- + +DROP TABLE IF EXISTS `piwigo_user_infos`; +CREATE TABLE `piwigo_user_infos` ( + `user_id` smallint(5) NOT NULL default '0', + `nb_image_page` smallint(3) unsigned NOT NULL default '15', + `status` enum('webmaster','admin','normal','generic','guest') NOT NULL default 'guest', + `language` varchar(50) NOT NULL default 'en_UK', + `expand` enum('true','false') NOT NULL default 'false', + `show_nb_comments` enum('true','false') NOT NULL default 'false', + `show_nb_hits` enum('true','false') NOT NULL default 'false', + `recent_period` tinyint(3) unsigned NOT NULL default '7', + `theme` varchar(255) NOT NULL default 'elegant', + `registration_date` datetime NOT NULL default '0000-00-00 00:00:00', + `enabled_high` enum('true','false') NOT NULL default 'true', + `level` tinyint unsigned NOT NULL default '0', + `activation_key` char(20) default NULL, + PRIMARY KEY (`user_id`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_user_mail_notification` +-- + +DROP TABLE IF EXISTS `piwigo_user_mail_notification`; +CREATE TABLE `piwigo_user_mail_notification` ( + `user_id` smallint(5) NOT NULL default '0', + `check_key` varchar(16) binary NOT NULL default '', + `enabled` enum('true','false') NOT NULL default 'false', + `last_send` datetime default NULL, + PRIMARY KEY (`user_id`), + UNIQUE KEY `user_mail_notification_ui1` (`check_key`) +) ENGINE=MyISAM; + +-- +-- Table structure for table `piwigo_users` +-- + +DROP TABLE IF EXISTS `piwigo_users`; +CREATE TABLE `piwigo_users` ( + `id` smallint(5) NOT NULL auto_increment, + `username` varchar(100) binary NOT NULL default '', + `password` varchar(255) default NULL, + `mail_address` varchar(255) default NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_ui1` (`username`) +) ENGINE=MyISAM; diff --git a/conf/plug.sql~ b/conf/plug.sql~ new file mode 100644 index 0000000..c8e0161 --- /dev/null +++ b/conf/plug.sql~ @@ -0,0 +1 @@ +INSERT INTO plugins diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..6b51bd9 --- /dev/null +++ b/manifest.json @@ -0,0 +1,49 @@ +{ + "name": "Piwigo", + "id": "piwigo", + "description": { + "en": "photo gallery", + "fr": "Gallerie photo" + }, + "developer": { + "name": "monsieur-a", + "email": "simon@monsieur-a.fr", + "url": "http://piwigo.org" + }, + "multi_instance": "true", + "arguments": { + "install" : [ + { + "name": "domain", + "ask": { + "en": "Choose a domain for Piwigo" + }, + "example": "domain.org" + }, + { + "name": "path", + "ask": { + "en": "Choose a path for Piwigo" + }, + "example": "/piwigo", + "default": "/piwigo" + }, + { + "name": "admin", + "ask": { + "en": "Choose the Piwigo administrator (must be an existing YunoHost user)" + }, + "example": "homer" + }, + { + "name": "public_site", + "ask": { + "en": "Is it a public Piwigo site ?", + "fr": "Est-ce un site public ?" + }, + "choices": ["Yes", "No"], + "default": "Yes" + } + ] + } +} diff --git a/plugins/Ldap_Login/TODO b/plugins/Ldap_Login/TODO new file mode 100644 index 0000000..f7eafc9 --- /dev/null +++ b/plugins/Ldap_Login/TODO @@ -0,0 +1,30 @@ +TODO : +auto config (may use ajax): fill in the settings, then the page guess the next settings. +Ex : after filled the host address, the page guess the base dn. The last to guess is the users OU. + Users OU can come with a select field, as the ld_attr. + +correct init plugin +if mail isn't furnished ? +create common piwigo users upon successfull ldap connection when piwigo user doesn't exist => done ! + Groups : users may belong to ldap group to allow connection + Groups : users belonging to «sudo» or «admin» ldap group become piwigo admin when created this way + fetching attributes from ldap (mail…). + +config of the previous one (need tabs) +config page to render better + +######## + +à faire : +initialisation du plugin correcte +qu'est-ce qu'on fait si le mail est pas fourni ? +configuration automatique (javascript/ajax probable): entrée des paramètres et la page recherche le paramètre suivant si possible. +Ex : adresse du serveur -> la page trouve toute seule la racine ldap, reste plus que la OU des utilisateurs (qu'on peut selectionner via une liste déroulante). + l'attribut d'identification peut être selectionné par une liste déroulante. + +creation d'un utilisateur piwigo suite à une authentification ldap quand l'utilisateur n'existe pas. => fait ! + question de groups : les utilisateurs membres du groupe ldap «sudo» ou autre pourraient automatiquement être admins piwigo + question de groupe : les utilisateurs devraient appartenir à un groupe ldap pour se connecter… + récuperer les attributs dans le ldap (mail…). + +page de config à peaufiner, option précédente à intégrer dans un onglet. \ No newline at end of file diff --git a/plugins/Ldap_Login/admin.php b/plugins/Ldap_Login/admin.php new file mode 100644 index 0000000..7bd3743 --- /dev/null +++ b/plugins/Ldap_Login/admin.php @@ -0,0 +1,25 @@ +set_id('ldap_login'); + +$tabsheet->add('configuration', l10n('Configuration'), LDAP_LOGIN_ADMIN . '-configuration'); +$tabsheet->add('newusers', l10n('New users when ldap auth is successfull'), LDAP_LOGIN_ADMIN . '-newusers'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +// include page +include(LDAP_LOGIN_PATH . 'admin/' . $page['tab'] . '.php'); + +// template vars +$template->assign('LDAP_LOGIN_PATH', get_root_url() . LDAP_LOGIN_PATH ); + +?> \ No newline at end of file diff --git a/plugins/Ldap_Login/admin/configuration.php b/plugins/Ldap_Login/admin/configuration.php new file mode 100644 index 0000000..be6ab6e --- /dev/null +++ b/plugins/Ldap_Login/admin/configuration.php @@ -0,0 +1,58 @@ +set_filenames( array('plugin_admin_content' => dirname(__FILE__).'/configuration.tpl') ); +$template->assign( + array( + 'PLUGIN_ACTION' => get_root_url().'admin.php?page=plugin-Ldap_Login-configuration', + 'PLUGIN_CHECK' => get_root_url().'admin.php?page=plugin-Ldap_Login-configuration', + )); + +$me = new Ldap(); +$me->load_config(); +//$me = get_plugin_data($plugin_id); + +$template->assign('HOST', $me->config['host']); +$template->assign('BASEDN', $me->config['basedn']); // racine ! +$template->assign('PORT', $me->config['port']); +$template->assign('LD_ATTR', $me->config['ld_attr']); +$template->assign('LD_USE_SSL', $me->config['ld_use_ssl']); +$template->assign('LD_BINDPW', $me->config['ld_bindpw']); +$template->assign('LD_BINDDN', $me->config['ld_binddn']); + +if (isset($_POST['save'])){ + $me->config['host'] = $_POST['HOST']; + $me->config['basedn'] = $_POST['BASEDN']; + $me->config['port'] = $_POST['PORT']; + $me->config['ld_attr'] = $_POST['LD_ATTR']; + $me->config['ld_binddn'] = $_POST['LD_BINDDN']; + $me->config['ld_bindpw'] = $_POST['LD_BINDPW']; + + if (isset($_POST['LD_USE_SSL'])){ + $me->config['ld_use_ssl'] = True; + } else { + $me->config['ld_use_ssl'] = False; + } +} + +// Save LDAP configuration +if (isset($_POST['save'])){ + $me->save_config(); +} + +// Check LDAP configuration +if (isset($_POST['check_ldap'])){ +$check = $me->ldap_name($_POST['USERNAME']); +$error = $me->check_ldap(); + + if ($me->ldap_bind_as($_POST['USERNAME'],$_POST['PASSWORD'])){ + $template->assign('LD_CHECK_LDAP','

Configuration LDAP OK : '.$check.'

'); + } + else { + $template->assign('LD_CHECK_LDAP','

Error :'.$error.' test '.$me->config['uri'].' '.$check.'

'); + } +} + +$template->assign_var_from_handle( 'ADMIN_CONTENT', 'plugin_admin_content'); +?> \ No newline at end of file diff --git a/plugins/Ldap_Login/admin/configuration.tpl b/plugins/Ldap_Login/admin/configuration.tpl new file mode 100644 index 0000000..5d6b220 --- /dev/null +++ b/plugins/Ldap_Login/admin/configuration.tpl @@ -0,0 +1,109 @@ +

{'Ldap_Login Plugin'|@translate}

+ +
+ +

{'All LDAP users can use their ldap password everywhere on piwigo if needed.'|@translate}

+ +
+ + {if (!extension_loaded('ldap'))} +

{'Warning: LDAP Extension missing.'|@translate}

+
+ {/if} + +
+ {'Ldap server host connection'|@translate} + +
    +
  • + +
    + +
  • + +
  • + +
  • + +
  • + +
    + +
  • +
+ {'If empty, localhost and standard protocol ports will be used in configuration.'|@translate} +
+ +
+ {'Ldap attributes'|@translate} +
    +
  • + +
    + +
  • + +
  • + +
    + +
  • +
+
+ +
+ {'Ldap connection credentials'|@translate} +
    +
  • + +
    + +
  • + +
  • + +
    + +
  • +
+ {'Let the fields blank if the ldap accept anonymous connections.'|@translate} +
+ +

+ +

+
+ +
+
+{'Ldap_Login Test'|@translate} +{'You must save the settings with the Save button just up there before testing here.'|@translate} +
    +
  • + +
    + +
  • + +
  • + +
    + +
  • +
+ + {if (!empty($LD_CHECK_LDAP))} + {$LD_CHECK_LDAP} + {/if} + +
+

+ +
+
diff --git a/plugins/Ldap_Login/admin/index.php b/plugins/Ldap_Login/admin/index.php new file mode 100644 index 0000000..df13f7e --- /dev/null +++ b/plugins/Ldap_Login/admin/index.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/admin/ldap_login_plugin_admin.php b/plugins/Ldap_Login/admin/ldap_login_plugin_admin.php new file mode 100644 index 0000000..07c9104 --- /dev/null +++ b/plugins/Ldap_Login/admin/ldap_login_plugin_admin.php @@ -0,0 +1,22 @@ +config['host'] = $_POST['HOST']; + $me->config['basedn'] = $_POST['BASEDN']; + $me->config['pref'] = $_POST['PREF']; + $me->save_config(); +} + +global $template; +$template->set_filenames( array('plugin_admin_content' => dirname(__FILE__).'/ldap_login_plugin_admin.tpl') ); + +$template->assign('HOST', $me->config['host']); +$template->assign('BASEDN', $me->config['basedn']); +$template->assign('PREF', $me->config['pref']); + +$template->assign_var_from_handle( 'ADMIN_CONTENT', 'plugin_admin_content'); +?> \ No newline at end of file diff --git a/plugins/Ldap_Login/admin/ldap_login_plugin_admin.tpl b/plugins/Ldap_Login/admin/ldap_login_plugin_admin.tpl new file mode 100644 index 0000000..4ece27e --- /dev/null +++ b/plugins/Ldap_Login/admin/ldap_login_plugin_admin.tpl @@ -0,0 +1,24 @@ +
+

Ldap_Login PlugIn

+
+ +

Configuration du plugin Ldap_Login

+ +
+
+ Ldap_Login PlugIn + +
+ +
+ +
+ +

+
\ No newline at end of file diff --git a/plugins/Ldap_Login/admin/newusers.php b/plugins/Ldap_Login/admin/newusers.php new file mode 100644 index 0000000..e54aceb --- /dev/null +++ b/plugins/Ldap_Login/admin/newusers.php @@ -0,0 +1,52 @@ +set_filenames( array('plugin_admin_content' => dirname(__FILE__).'/newusers.tpl') ); +$template->assign( + array( + 'PLUGIN_NEWUSERS' => get_root_url().'admin.php?page=plugin-Ldap_Login-newusers', + )); + +$me = new Ldap(); +$me->load_config(); +//$me = get_plugin_data($plugin_id); + +$template->assign('ALLOW_NEWUSERS', $me->config['allow_newusers']); +$template->assign('ADVERTISE_ADMINS', $me->config['advertise_admin_new_ldapuser']); +$template->assign('SEND_CASUAL_MAIL', $me->config['send_password_by_mail_ldap']); + +if (isset($_POST['save'])){ + + if (isset($_POST['ALLOW_NEWUSERS'])){ + $me->config['allow_newusers'] = True; + } else { + $me->config['allow_newusers'] = False; + } + + if (isset($_POST['ADVERTISE_ADMINS'])){ + $me->config['advertise_admin_new_ldapuser'] = True; + } else { + $me->config['advertise_admin_new_ldapuser'] = False; + } + + if (isset($_POST['SEND_CASUAL_MAIL'])){ + $me->config['send_password_by_mail_ldap'] = True; + } else { + $me->config['send_password_by_mail_ldap'] = False; + } +} + +// Save LDAP configuration +if (isset($_POST['save'])){ + $me->save_config(); +} + +// do we allow to create new piwigo users in case of auth along the ldap ? +// does he have to belong an ldap group ? +// does ldap groups give some power ? +// what do we do when there's no mail in the ldap ? +// do we send mail to admins ? + +$template->assign_var_from_handle( 'ADMIN_CONTENT', 'plugin_admin_content'); +?> \ No newline at end of file diff --git a/plugins/Ldap_Login/admin/newusers.tpl b/plugins/Ldap_Login/admin/newusers.tpl new file mode 100644 index 0000000..ec9d9a6 --- /dev/null +++ b/plugins/Ldap_Login/admin/newusers.tpl @@ -0,0 +1,54 @@ +{literal} + +{/literal} + +
+

{'Ldap_Login Plugin'|@translate}

+
+ +{"If the LDAP doesn't furnish the mail address, users can set it up in the profile page."|@translate} +
+ +
+ {'Ldap_Login configuration'|@translate} + +

+ {if $ALLOW_NEWUSERS} + + {else} + + {/if} + {'Do you allow new piwigo users to be created when users authenticate succesfully on the ldap ?'|@translate} +

+ +

+ {if $ADVERTISE_ADMINS} + + {else} + + {/if} + {'Do you want admins to be advertised by mail in case of new users creation upon ldap login ?'|@translate} +

+ +

+ {if $SEND_CASUAL_MAIL} + + {else} + + {/if} + {'Do you want to send mail to the new users, like casual piwigo users receive ?'|@translate} +

+ +
+ +

+ +

+
\ No newline at end of file diff --git a/plugins/Ldap_Login/class.ldap.php b/plugins/Ldap_Login/class.ldap.php new file mode 100644 index 0000000..c062c6a --- /dev/null +++ b/plugins/Ldap_Login/class.ldap.php @@ -0,0 +1,192 @@ +ldap_conn()) { + return $this->getErrorString(); + } + + // test du compte root si renseigné + if (!empty($this->config['ld_binddn']) && !empty($this->config['ld_bindpw'])){ // if empty ld_binddn, anonymous search + // authentication with rootdn and rootpw for search + if (!$this->ldap_bind_as($this->config['ld_binddn'],$this->config['ld_bindpw'])){ + return $this->getErrorString(); + } + } else { + // sinon recherche du basedn (cf comportement ldap_connect avec OpenLDAP) + if (!$this->ldap_check_basedn()){ // search userdn + return $this->getErrorString(); + } + } + return true; + } + + public function load_default_config() + { + $this->config['host'] = 'localhost'; + $this->config['basedn'] = 'ou=people,dc=example,dc=com'; // racine ! + $this->config['port'] = ''; // if port is empty, I count on the software to care of it ! + $this->config['ld_attr'] = 'uid'; + $this->config['ld_use_ssl'] = False; + $this->config['ld_bindpw'] =''; + $this->config['ld_binddn'] =''; + + $this->config['allow_newusers'] = False; + $this->config['advertise_admin_new_ldapuser'] = False; + $this->config['send_password_by_mail_ldap'] = False; + } + + function load_config() { + // first we load the base config + $conf_file = @file_get_contents( LDAP_LOGIN_PATH.'data.dat' ); + if ($conf_file!==false) + { + $this->config = unserialize($conf_file); + } + } + + function save_config() + { + $file = fopen( LDAP_LOGIN_PATH.'/data.dat', 'w' ); + fwrite($file, serialize($this->config) ); + fclose( $file ); + } + + function ldap_admin_menu($menu) + { + array_push($menu, + array( + 'NAME' => 'Ldap Login', + 'URL' => get_admin_plugin_menu_link(LDAP_LOGIN_PATH.'/admin.php') ) + ); + return $menu; + } + + public function ldap_conn(){ + if ($this->config['ld_use_ssl'] == 1){ + if (empty($this->config['port'])){ + $this->config['uri'] = 'ldaps://'.$this->config['host']; + } + else { + $this->config['uri'] = 'ldaps://'.$this->config['host'].':'.$this->config['port']; + } + } + + // now, it's without ssl + else { + if (empty($this->config['port'])){ + $this->config['uri'] = 'ldap://'.$this->config['host']; + } + else { + $this->config['uri'] = 'ldap://'.$this->config['host'].':'.$this->config['port']; + } + } + + if ($this->cnx = @ldap_connect($this->config['uri'])){ + @ldap_set_option($this->cnx, LDAP_OPT_PROTOCOL_VERSION, 3); // LDAPv3 if possible + return true; + } + return false; + + // connect with rootdn in case not anonymous. + if (!empty($obj->config['ld_binddn']) && !empty($obj->config['ld_bindpw'])){ // if empty ld_binddn, anonymous work + + // authentication with rootdn and rootpw for dn search + // carefull ! rootdn should be in full ldap style ! Nothing is supposed (to be one of the users the plugin auth…). + if (@ldap_bind($obj->config['ld_binddn'],$obj->config['ld_bindpw'])){ + return false; + } + } + } + + // return ldap error + public function getErrorString(){ + return ldap_err2str(ldap_errno($this->cnx)); + } + + // return the name ldap understand + public function ldap_name($name){ + return $this->config['ld_attr'].'='.$name.','.$this->config['basedn']; + } + + // authentication + public function ldap_bind_as($user,$user_passwd){ + if (@ldap_bind($this->cnx,$this->ldap_name($user),$user_passwd)){ + return true; + } + return false; + } + + public function ldap_mail($name){ + + //echo $this->cnx; + //echo $this->ldap_name($name); + $sr=@ldap_read($this->cnx, $this->ldap_name($name), "(objectclass=*)", array('mail')); + $entry = @ldap_get_entries($this->cnx, $sr); + + if (!empty($entry[0]['mail'])) { + return $entry[0]['mail'][0]; + } + return False; + } + + // return userdn (and username) for authentication + /* public function ldap_search_dn($to_search){ + $filter = str_replace('%s',$to_search,$this->config['ld_filter']); + //$this->write_log('$filter '.$filter); + + if ($search = @ldap_search($this->cnx,$this->config['basedn'],$filter,array('dn',$this->config['ld_attr']),0,1)){ + $entry = @ldap_get_entries($this->cnx, $search); + if (!empty($entry[0][strtolower($this->config['ld_attr'])][0])) { + return $entry; + } + } + return false; + } */ + + + public function getAttr() { + $search = @ldap_read($this->cnx, "cn=subschema", "(objectClass=*)", array('*', 'subschemasubentry')); + $entries = @ldap_get_entries($this->cnx, $search); + echo count($entries); + } + + public function getRootDse() { + + $search = @ldap_read($this->cnx, NULL, 'objectClass=*', array("*", "+")); + $entries = @ldap_get_entries($this->cnx, $search); + return $entries[0]; + } + + + public function ldap_check_basedn(){ + if ($read = @ldap_read($this->cnx,$this->config['basedn'],'(objectClass=*)',array('dn'))){ + $entry = @ldap_get_entries($this->cnx, $read); + if (!empty($entry[0]['dn'])) { + return true; + } + } + return false; + } + +} +?> \ No newline at end of file diff --git a/plugins/Ldap_Login/data.dat b/plugins/Ldap_Login/data.dat new file mode 100644 index 0000000..dd1c67d --- /dev/null +++ b/plugins/Ldap_Login/data.dat @@ -0,0 +1 @@ +a:10:{s:4:"host";s:0:"";s:6:"basedn";s:27:"ou=users,dc=yunohost,dc=org";s:4:"port";s:0:"";s:7:"ld_attr";s:3:"uid";s:9:"ld_binddn";s:0:"";s:9:"ld_bindpw";s:0:"";s:10:"ld_use_ssl";b:0;s:14:"allow_newusers";b:1;s:28:"advertise_admin_new_ldapuser";b:0;s:26:"send_password_by_mail_ldap";b:0;} diff --git a/plugins/Ldap_Login/index.php b/plugins/Ldap_Login/index.php new file mode 100644 index 0000000..df13f7e --- /dev/null +++ b/plugins/Ldap_Login/index.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/da_DK/plugin.lang.php b/plugins/Ldap_Login/language/da_DK/plugin.lang.php new file mode 100644 index 0000000..eef142e --- /dev/null +++ b/plugins/Ldap_Login/language/da_DK/plugin.lang.php @@ -0,0 +1,56 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/de_DE/index.php b/plugins/Ldap_Login/language/de_DE/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/de_DE/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/de_DE/plugin.lang.php b/plugins/Ldap_Login/language/de_DE/plugin.lang.php new file mode 100644 index 0000000..596dfd3 --- /dev/null +++ b/plugins/Ldap_Login/language/de_DE/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/el_GR/index.php b/plugins/Ldap_Login/language/el_GR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/el_GR/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/el_GR/plugin.lang.php b/plugins/Ldap_Login/language/el_GR/plugin.lang.php new file mode 100644 index 0000000..722ef9a --- /dev/null +++ b/plugins/Ldap_Login/language/el_GR/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/en_UK/description.txt b/plugins/Ldap_Login/language/en_UK/description.txt new file mode 100644 index 0000000..cbcc1c5 --- /dev/null +++ b/plugins/Ldap_Login/language/en_UK/description.txt @@ -0,0 +1 @@ +allow to login piwigo users with their ldap credentials (login, mail, or another attribute specified by piwigo admins + ldap password). diff --git a/plugins/Ldap_Login/language/en_UK/plugin.lang.php b/plugins/Ldap_Login/language/en_UK/plugin.lang.php new file mode 100644 index 0000000..44a7e8c --- /dev/null +++ b/plugins/Ldap_Login/language/en_UK/plugin.lang.php @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/es_ES/index.php b/plugins/Ldap_Login/language/es_ES/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/es_ES/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/es_ES/plugin.lang.php b/plugins/Ldap_Login/language/es_ES/plugin.lang.php new file mode 100644 index 0000000..558e223 --- /dev/null +++ b/plugins/Ldap_Login/language/es_ES/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/fr_CA/plugin.lang.php b/plugins/Ldap_Login/language/fr_CA/plugin.lang.php new file mode 100644 index 0000000..5de7507 --- /dev/null +++ b/plugins/Ldap_Login/language/fr_CA/plugin.lang.php @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/fr_FR/plugin.lang.php b/plugins/Ldap_Login/language/fr_FR/plugin.lang.php new file mode 100644 index 0000000..5de7507 --- /dev/null +++ b/plugins/Ldap_Login/language/fr_FR/plugin.lang.php @@ -0,0 +1,59 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/index.php b/plugins/Ldap_Login/language/index.php new file mode 100644 index 0000000..df13f7e --- /dev/null +++ b/plugins/Ldap_Login/language/index.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/it_IT/index.php b/plugins/Ldap_Login/language/it_IT/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/it_IT/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/it_IT/plugin.lang.php b/plugins/Ldap_Login/language/it_IT/plugin.lang.php new file mode 100644 index 0000000..14b2264 --- /dev/null +++ b/plugins/Ldap_Login/language/it_IT/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/lv_LV/index.php b/plugins/Ldap_Login/language/lv_LV/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/lv_LV/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/lv_LV/plugin.lang.php b/plugins/Ldap_Login/language/lv_LV/plugin.lang.php new file mode 100644 index 0000000..19c0a03 --- /dev/null +++ b/plugins/Ldap_Login/language/lv_LV/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/pt_BR/index.php b/plugins/Ldap_Login/language/pt_BR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/pt_BR/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/pt_BR/plugin.lang.php b/plugins/Ldap_Login/language/pt_BR/plugin.lang.php new file mode 100644 index 0000000..4762502 --- /dev/null +++ b/plugins/Ldap_Login/language/pt_BR/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/pt_PT/index.php b/plugins/Ldap_Login/language/pt_PT/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/pt_PT/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/pt_PT/plugin.lang.php b/plugins/Ldap_Login/language/pt_PT/plugin.lang.php new file mode 100644 index 0000000..4f5ca9d --- /dev/null +++ b/plugins/Ldap_Login/language/pt_PT/plugin.lang.php @@ -0,0 +1,50 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/ru_RU/index.php b/plugins/Ldap_Login/language/ru_RU/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/ru_RU/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/ru_RU/plugin.lang.php b/plugins/Ldap_Login/language/ru_RU/plugin.lang.php new file mode 100644 index 0000000..cefb268 --- /dev/null +++ b/plugins/Ldap_Login/language/ru_RU/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/sk_SK/index.php b/plugins/Ldap_Login/language/sk_SK/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/sk_SK/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/sk_SK/plugin.lang.php b/plugins/Ldap_Login/language/sk_SK/plugin.lang.php new file mode 100644 index 0000000..2da26aa --- /dev/null +++ b/plugins/Ldap_Login/language/sk_SK/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/language/tr_TR/index.php b/plugins/Ldap_Login/language/tr_TR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/plugins/Ldap_Login/language/tr_TR/index.php @@ -0,0 +1,7 @@ + diff --git a/plugins/Ldap_Login/language/tr_TR/plugin.lang.php b/plugins/Ldap_Login/language/tr_TR/plugin.lang.php new file mode 100644 index 0000000..02431a8 --- /dev/null +++ b/plugins/Ldap_Login/language/tr_TR/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/plugins/Ldap_Login/main.inc.php b/plugins/Ldap_Login/main.inc.php new file mode 100644 index 0000000..99b254d --- /dev/null +++ b/plugins/Ldap_Login/main.inc.php @@ -0,0 +1,114 @@ +load_config(); +set_plugin_data($plugin['id'], $ldap); +unset($ldap); + +// +-----------------------------------------------------------------------+ +// | functions | +// +-----------------------------------------------------------------------+ + +function random_password( $length = 8 ) { + $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?"; + $password = substr( str_shuffle( $chars ), 0, $length ); + return $password; +} + +function ld_init(){ + load_language('plugin.lang', LDAP_LOGIN_PATH); +} + + +function login($success, $username, $password, $remember_me){ + + global $conf; + + $obj = new Ldap(); + $obj->load_config(); + $obj->ldap_conn() or die("Unable to connect LDAP server : ".$ldap->getErrorString()); + + if (!$obj->ldap_bind_as($username,$password)){ // bind with userdn + trigger_action('login_failure', stripslashes($username)); + return false; // wrong password + } + + // search user in piwigo database +$query = 'SELECT '.$conf['user_fields']['id'].' AS id FROM '.USERS_TABLE.' WHERE '.$conf['user_fields']['username'].' = \''.pwg_db_real_escape_string($username).'\' ;'; + + $row = pwg_db_fetch_assoc(pwg_query($query)); + + // if query is not empty, it means everything is ok and we can continue, auth is done ! + if (!empty($row['id'])) { + log_user($row['id'], $remember_me); + trigger_action('login_success', stripslashes($username)); + return true; + } + + // if query is empty but ldap auth is done we can create a piwigo user if it's said so ! + else { + // this is where we check we are allowed to create new users upon that. + if ($obj->config['allow_newusers']) { + + // we got the email address + if ($obj->ldap_mail($username)) { + $mail = $obj->ldap_mail($username); + } + else { + $mail = NULL; + } + + // we actually register the new user + $new_id = register_user($username,random_password(8),$mail); + + // now we fetch again his id in the piwigo db, and we get them, as we just created him ! + //$query = 'SELECT '.$conf['user_fields']['id'].' AS id FROM '.USERS_TABLE.' WHERE '.$conf['user_fields']['username'].' = \''.pwg_db_real_escape_string($username).'\' ;'; + //$row = pwg_db_fetch_assoc(pwg_query($query)); + + log_user($new_id, False); + trigger_action('login_success', stripslashes($username)); + redirect('profile.php'); + return true; + } + // else : this is the normal behavior ! user is not created. + else { + trigger_action('login_failure', stripslashes($username)); + return false; + } + } +} + +?> \ No newline at end of file diff --git a/plugins/Ldap_Login/maintain.inc.php b/plugins/Ldap_Login/maintain.inc.php new file mode 100644 index 0000000..ff5015b --- /dev/null +++ b/plugins/Ldap_Login/maintain.inc.php @@ -0,0 +1,75 @@ +load_config(); + } + + else { + $config->load_default_config(); + } + + $config->save_config(); + + $this->installed = true; + } + + /** + * plugin activation + * + * this function is triggered after installation, by manual activation + * or after a plugin update + * for this last case you must manage updates tasks of your plugin in this function + */ + function activate($plugin_version, &$errors=array()) + { + if (!$this->installed) + { + $this->install($plugin_version, $errors); + } + } + + function deactivate() + { + } + + function uninstall() + { + } + +} \ No newline at end of file diff --git a/plugins/Ldap_Login/pem_metadata.txt b/plugins/Ldap_Login/pem_metadata.txt new file mode 100644 index 0000000..ac2f543 --- /dev/null +++ b/plugins/Ldap_Login/pem_metadata.txt @@ -0,0 +1,4 @@ +File automatically created from SVN repository. + +URL: http://piwigo.org/svn/extensions/Ldap_Login +Revision: 27288 \ No newline at end of file diff --git a/scripts/install b/scripts/install new file mode 100644 index 0000000..5eec2a2 --- /dev/null +++ b/scripts/install @@ -0,0 +1,112 @@ +#!/bin/bash + +# Retrieve arguments +domain=$1 +path=$2 +user=$3 +is_public=$4 + +# Check user parameter +sudo yunohost user list --json | grep -q "\"username\": \"$user\"" +if [[ ! $? -eq 0 ]]; then + echo "Wrong user" + exit 1 +fi +sudo yunohost app setting piwigo admin_user -v $user + +# Check domain/path availability +sudo yunohost app checkurl $domain$path -a piwigo +if [[ ! $? -eq 0 ]]; then + exit 1 +fi + +# Generate random password + +db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p') + +# Use 'piwigo' as database name and user +db_user=piwigo + +# Initialize database and store mysql password for upgrade +sudo yunohost app initdb $db_user -p $db_pwd +sudo yunohost app setting piwigo mysqlpwd -v $db_pwd + + +# Modify Nginx configuration file and copy it to Nginx conf directory + +final_path=/var/www/piwigo + +sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf +sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/nginx.conf +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/piwigo.conf + +# Copy files to the right place + + +datapath=/home/yunohost.app/piwigo + +sudo mkdir -p $final_path +sudo mkdir -p $datapath +sudo mkdir -p $datapath/galleries +sudo mkdir -p $datapath/upload +sudo mkdir -p $final_path/_data +sudo cp -a ../sources/* $final_path +sudo ln -sd $datapath/_data $final_path/galleries +sudo ln -sd $datapath/upload $final_path/upload +sudo cp ../conf/index.php $final_path/upload + + +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/piwigo.conf +#sudo cp ../conf/php-fpm.conf /etc/php5/fpm/pool.d/piwigo.conf +#sudo cp ../conf/php-fpm.ini /etc/php5/fpm/conf.d/20-piwigo.ini +sudo cp -R ../plugins/Ldap_Login $final_path/plugins/Ldap_Login + + +# set permission + +sudo chown -R www-data:www-data $final_path +sudo chmod -R 755 $final_path +sudo chmod 777 $final_path/_data +sudo chmod 777 $final_path/upload +sudo chmod 755 -R $final_path/galleries + + +# Reload Nginx and regenerate SSOwat conf +sudo service php5-fpm restart +sudo service nginx reload +sudo yunohost app setting piwigo skipped_uris -v "/" +sudo yunohost app ssowatconf + +# Generate random password for admin + +adm_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p') + +#configure piwigo via curl +echo "127.0.0.1 $domain #yunopiwigo" | sudo tee -a /etc/hosts +sleep 2 +curl -kL -X POST https://$domain$path/install.php?language=fr_FR --data "install=true&dbuser=$db_user&dbpasswd=$db_pwd&dbname=$db_user&admin_name=$user&admin_pass1=$adm_pwd&admin_pass2=$adm_pwd&admin_mail=webmaster@$domain" > /home/admin/test + +#change variable in local/config/database.inc.php + +sudo sed -i "s@DBTOCHANGE@$db_user@g" ../conf/database.inc.php +sudo sed -i "s@USERTOCHANGE@$db_user@g" ../conf/database.inc.php +sudo sed -i "s@PASSTOCHANGE@$db_pwd@g" ../conf/database.inc.php + +sudo cp ../conf/database.inc.php $final_path/local/config/database.inc.php + +#activate ldap plugin + +mysql -u $db_user -p$db_pwd $db_user -e "INSERT INTO plugins (id,state,version) VALUES ('Ldap_Login','active','1.1');" + +#protect URIs + +if [ $is_public = "No" ]; +then + sudo yunohost app setting piwigo protected_uris -v "/" + sudo yunohost app ssowatconf +fi + +# Remove temporary entry in /etc/hosts +sudo sed -i '/yunopiwigo/d' /etc/hosts + + diff --git a/scripts/remove b/scripts/remove new file mode 100644 index 0000000..4329e0d --- /dev/null +++ b/scripts/remove @@ -0,0 +1,15 @@ +#!/bin/bash + +db_user=piwigo +db_name=piwigo +root_pwd=$(sudo cat /etc/yunohost/mysql) +domain=$(sudo yunohost app setting piwigo domain) + +mysql -u root -p$root_pwd -e "DROP DATABASE $db_name ; DROP USER $db_user@localhost ;" + +sudo rm -rf /var/www/piwigo +sudo rm -f /etc/nginx/conf.d/$domain.d/piwigo.conf +sudo rm -rf /home/yunohost.app/piwigo + +sudo service nginx reload + diff --git a/scripts/remove~ b/scripts/remove~ new file mode 100644 index 0000000..60973d0 --- /dev/null +++ b/scripts/remove~ @@ -0,0 +1,17 @@ +#!/bin/bash + +db_user=piwigo +db_name=piwigo +root_pwd=$(sudo cat /etc/yunohost/mysql) +domain=$(sudo yunohost app setting piwigo domain) + +mysql -u root -p$root_pwd -e "DROP DATABASE $db_name ; DROP USER $db_user@localhost ;" + +sudo rm -rf /var/www/piwigo +sudo rm -f /etc/nginx/conf.d/$domain.d/piwigo.conf +sudo rm -f /etc/php5/fpm/pool.d/piwigo.conf +sudo rm -f /etc/php5/fpm/conf.d/20-piwigo.ini +sudo rm -rf /home/yunohost.app/piwigo + +sudo service nginx reload + diff --git a/sources/_data/dummy.txt b/sources/_data/dummy.txt new file mode 100644 index 0000000..e69de29 diff --git a/sources/about.php b/sources/about.php new file mode 100644 index 0000000..e4f04bf --- /dev/null +++ b/sources/about.php @@ -0,0 +1,63 @@ +set_filename('about', 'about.tpl'); + +$template->assign('ABOUT_MESSAGE', load_language('about.html','', array('return'=>true)) ); + +$theme_about = load_language('about.html', PHPWG_THEMES_PATH.$user['theme'].'/', array('return' => true)); +if ( $theme_about !== false ) +{ + $template->assign('THEME_ABOUT', $theme_about); +} + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theAboutPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +include(PHPWG_ROOT_PATH.'include/page_header.php'); +flush_page_messages(); +$template->pparse('about'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> diff --git a/sources/action.php b/sources/action.php new file mode 100644 index 0000000..4b92e05 --- /dev/null +++ b/sources/action.php @@ -0,0 +1,200 @@ + restriction) +$query=' +SELECT id + FROM '.CATEGORIES_TABLE.' + INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON category_id = id + WHERE image_id = '.$_GET['id'].' +'.get_sql_condition_FandF( + array( + 'forbidden_categories' => 'category_id', + 'forbidden_images' => 'image_id', + ), + ' AND' + ).' + LIMIT 1 +;'; +if ( pwg_db_num_rows(pwg_query($query))<1 ) +{ + do_error(401, 'Access denied'); +} + +include_once(PHPWG_ROOT_PATH.'include/functions_picture.inc.php'); +$file=''; +switch ($_GET['part']) +{ + case 'e': + if ( !$user['enabled_high'] ) + { + $deriv = new DerivativeImage(IMG_XXLARGE, new SrcImage($element_info)); + if ( !$deriv->same_as_source() ) + { + do_error(401, 'Access denied e'); + } + } + $file = get_element_path($element_info); + break; + case 'r': + $file = original_to_representative( get_element_path($element_info), $element_info['representative_ext'] ); + break; +} + +if ( empty($file) ) +{ + do_error(404, 'Requested file not found'); +} + +if ($_GET['part'] == 'e') { + pwg_log($_GET['id'], 'high'); +} +else if ($_GET['part'] == 'e') +{ + pwg_log($_GET['id'], 'other'); +} + +$http_headers = array(); + +$ctype = null; +if (!url_is_remote($file)) +{ + if ( !@is_readable($file) ) + { + do_error(404, "Requested file not found - $file"); + } + $http_headers[] = 'Content-Length: '.@filesize($file); + if ( function_exists('mime_content_type') ) + { + $ctype = mime_content_type($file); + } + + $gmt_mtime = gmdate('D, d M Y H:i:s', filemtime($file)).' GMT'; + $http_headers[] = 'Last-Modified: '.$gmt_mtime; + + // following lines would indicate how the client should handle the cache + /* $max_age=300; + $http_headers[] = 'Expires: '.gmdate('D, d M Y H:i:s', time()+$max_age).' GMT'; + // HTTP/1.1 only + $http_headers[] = 'Cache-Control: private, must-revalidate, max-age='.$max_age;*/ + + if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) ) + { + set_status_header(304); + foreach ($http_headers as $header) + { + header( $header ); + } + exit(); + } +} + +if (!isset($ctype)) +{ // give it a guess + $ctype = guess_mime_type( get_extension($file) ); +} + +$http_headers[] = 'Content-Type: '.$ctype; + +if (isset($_GET['download'])) +{ + $http_headers[] = 'Content-Disposition: attachment; filename="'.$element_info['file'].'";'; + $http_headers[] = 'Content-Transfer-Encoding: binary'; +} +else +{ + $http_headers[] = 'Content-Disposition: inline; filename="' + .basename($file).'";'; +} + +foreach ($http_headers as $header) +{ + header( $header ); +} + +// Looking at the safe_mode configuration for execution time +if (ini_get('safe_mode') == 0) +{ + @set_time_limit(0); +} + +@readfile($file); + +?> \ No newline at end of file diff --git a/sources/admin.php b/sources/admin.php new file mode 100644 index 0000000..cf36ce5 --- /dev/null +++ b/sources/admin.php @@ -0,0 +1,309 @@ + 0) + { + $redirect_url.= '?'.implode('&', $url_params); + } + + redirect($redirect_url); +} + +// +-----------------------------------------------------------------------+ +// | Synchronize user informations | +// +-----------------------------------------------------------------------+ + +// sync_user() is only useful when external authentication is activated +if ($conf['external_authentification']) +{ + sync_users(); +} + +// +-----------------------------------------------------------------------+ +// | Variables init | +// +-----------------------------------------------------------------------+ + +$change_theme_url = PHPWG_ROOT_PATH.'admin.php?'; +$test_get = $_GET; +unset($test_get['page']); +unset($test_get['section']); +unset($test_get['tag']); +if (count($test_get) == 0 and !empty($_SERVER['QUERY_STRING'])) +{ + $change_theme_url.= str_replace('&', '&', $_SERVER['QUERY_STRING']).'&'; +} +$change_theme_url.= 'change_theme=1'; + +// ?page=plugin-community-pendings is an clean alias of +// ?page=plugin§ion=community/admin.php&tab=pendings +if (isset($_GET['page']) and preg_match('/^plugin-([^-]*)(?:-(.*))?$/', $_GET['page'], $matches)) +{ + $_GET['page'] = 'plugin'; + $_GET['section'] = $matches[1].'/admin.php'; + if (isset($matches[2])) + { + $_GET['tab'] = $matches[2]; + } +} + +// ?page=album-134-properties is an clean alias of +// ?page=album&cat_id=134&tab=properties +if (isset($_GET['page']) and preg_match('/^album-(\d+)(?:-(.*))?$/', $_GET['page'], $matches)) +{ + $_GET['page'] = 'album'; + $_GET['cat_id'] = $matches[1]; + if (isset($matches[2])) + { + $_GET['tab'] = $matches[2]; + } +} + +// ?page=photo-1234-properties is an clean alias of +// ?page=photo&image_id=1234&tab=properties +if (isset($_GET['page']) and preg_match('/^photo-(\d+)(?:-(.*))?$/', $_GET['page'], $matches)) +{ + $_GET['page'] = 'photo'; + $_GET['image_id'] = $matches[1]; + if (isset($matches[2])) + { + $_GET['tab'] = $matches[2]; + } +} + +if (isset($_GET['page']) + and preg_match('/^[a-z_]*$/', $_GET['page']) + and is_file(PHPWG_ROOT_PATH.'admin/'.$_GET['page'].'.php')) +{ + $page['page'] = $_GET['page']; +} +else +{ + $page['page'] = 'intro'; +} + +$link_start = PHPWG_ROOT_PATH.'admin.php?page='; +$conf_link = $link_start.'configuration&section='; + +// +-----------------------------------------------------------------------+ +// | Template init | +// +-----------------------------------------------------------------------+ + +$title = l10n('Piwigo Administration'); // for include/page_header.php +$page['page_banner'] = '

'.l10n('Piwigo Administration').'

'; +$page['body_id'] = 'theAdminPage'; + +$template->set_filenames(array('admin' => 'admin.tpl')); + +$template->assign( + array( + 'USERNAME' => $user['username'], + 'ENABLE_SYNCHRONIZATION' => $conf['enable_synchronization'], + 'U_SITE_MANAGER'=> $link_start.'site_manager', + 'U_HISTORY_STAT'=> $link_start.'stats', + 'U_FAQ'=> $link_start.'help', + 'U_SITES'=> $link_start.'remote_site', + 'U_MAINTENANCE'=> $link_start.'maintenance', + 'U_NOTIFICATION_BY_MAIL'=> $link_start.'notification_by_mail', + 'U_CONFIG_GENERAL'=> $link_start.'configuration', + 'U_CONFIG_DISPLAY'=> $conf_link.'default', + 'U_CONFIG_EXTENTS'=> $link_start.'extend_for_templates', + 'U_CONFIG_MENUBAR'=> $link_start.'menubar', + 'U_CONFIG_LANGUAGES' => $link_start.'languages', + 'U_CONFIG_THEMES'=> $link_start.'themes', + 'U_CATEGORIES'=> $link_start.'cat_list', + 'U_CAT_OPTIONS'=> $link_start.'cat_options', + 'U_CAT_UPDATE'=> $link_start.'site_update&site=1', + 'U_RATING'=> $link_start.'rating', + 'U_RECENT_SET'=> $link_start.'batch_manager&filter=prefilter-last_import', + 'U_BATCH'=> $link_start.'batch_manager', + 'U_TAGS'=> $link_start.'tags', + 'U_USERS'=> $link_start.'user_list', + 'U_GROUPS'=> $link_start.'group_list', + 'U_RETURN'=> get_gallery_home_url(), + 'U_ADMIN'=> PHPWG_ROOT_PATH.'admin.php', + 'U_LOGOUT'=> PHPWG_ROOT_PATH.'index.php?act=logout', + 'U_PLUGINS'=> $link_start.'plugins', + 'U_ADD_PHOTOS' => $link_start.'photos_add', + 'U_CHANGE_THEME' => $change_theme_url, + 'U_UPDATES' => $link_start.'updates', + ) + ); + +if ($conf['activate_comments']) +{ + $template->assign('U_COMMENTS', $link_start.'comments'); + + // pending comments + $query = ' +SELECT COUNT(*) + FROM '.COMMENTS_TABLE.' + WHERE validated=\'false\' +;'; + list($nb_comments) = pwg_db_fetch_row(pwg_query($query)); + + if ($nb_comments > 0) + { + $template->assign('NB_PENDING_COMMENTS', $nb_comments); + } +} + +// any photo in the caddie? +$query = ' +SELECT COUNT(*) + FROM '.CADDIE_TABLE.' + WHERE user_id = '.$user['id'].' +;'; +list($nb_photos_in_caddie) = pwg_db_fetch_row(pwg_query($query)); + +if ($nb_photos_in_caddie > 0) +{ + $template->assign( + array( + 'NB_PHOTOS_IN_CADDIE' => $nb_photos_in_caddie, + 'U_CADDIE' => $link_start.'batch_manager&filter=prefilter-caddie', + ) + ); +} + +// +-----------------------------------------------------------------------+ +// | Plugin menu | +// +-----------------------------------------------------------------------+ + +$plugin_menu_links = trigger_event('get_admin_plugin_menu_links', array() ); + +function UC_name_compare($a, $b) +{ + return strcmp(strtolower($a['NAME']), strtolower($b['NAME'])); +} +usort($plugin_menu_links, 'UC_name_compare'); +$template->assign('plugin_menu_items', $plugin_menu_links); + +// +-----------------------------------------------------------------------+ +// | Refresh permissions | +// +-----------------------------------------------------------------------+ + +// Only for pages witch change permissions +if ( + in_array($page['page'], + array( + 'site_manager', // delete site + 'site_update', // ?only POST + ) + ) + or ( !empty($_POST) and in_array($page['page'], + array( + 'album', // public/private; lock/unlock, permissions + 'cat_move', + 'cat_options', // public/private; lock/unlock + 'batch_manager', // associate/dissociate; delete; set level + 'user_list', // group assoc; user level + 'user_perm', + ) + ) + ) + ) +{ + invalidate_user_cache(); +} + +// +-----------------------------------------------------------------------+ +// | Include specific page | +// +-----------------------------------------------------------------------+ + +trigger_action('loc_begin_admin_page'); +include(PHPWG_ROOT_PATH.'admin/'.$page['page'].'.php'); + +$template->assign('ACTIVE_MENU', get_active_menu($page['page'])); + +// +-----------------------------------------------------------------------+ +// | Sending html code | +// +-----------------------------------------------------------------------+ + +// Add the Piwigo Official menu +$template->assign( 'pwgmenu', pwg_URL() ); + +include(PHPWG_ROOT_PATH.'include/page_header.php'); + +trigger_action('loc_end_admin'); + +flush_page_messages(); + +$template->pparse('admin'); + +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> diff --git a/sources/admin/album.php b/sources/admin/album.php new file mode 100644 index 0000000..d1186aa --- /dev/null +++ b/sources/admin/album.php @@ -0,0 +1,90 @@ +set_id('album'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | Load the tab | +// +-----------------------------------------------------------------------+ + +if ('properties' == $page['tab']) +{ + include(PHPWG_ROOT_PATH.'admin/cat_modify.php'); +} +elseif ('sort_order' == $page['tab']) +{ + include(PHPWG_ROOT_PATH.'admin/element_set_ranks.php'); +} +elseif ('permissions' == $page['tab']) +{ + $_GET['cat'] = $_GET['cat_id']; + include(PHPWG_ROOT_PATH.'admin/cat_perm.php'); +} +else +{ + include(PHPWG_ROOT_PATH.'admin/album_'.$page['tab'].'.php'); +} +?> \ No newline at end of file diff --git a/sources/admin/album_notification.php b/sources/admin/album_notification.php new file mode 100644 index 0000000..d565b6c --- /dev/null +++ b/sources/admin/album_notification.php @@ -0,0 +1,197 @@ + 0) + { + $element = pwg_db_fetch_assoc($result); + + $img_url = ''; + } + } + + if (!isset($img_url)) + { + $img_url = ''; + } + + pwg_mail_group( + $_POST['group'], + array( + 'subject' => l10n('[%s] Visit album %s', $conf['gallery_title'], trigger_event('render_category_name', $category['name'], 'admin_cat_list')), + // TODO : change this language variable to 'Visit album %s' + // TODO : 'language_selected' => .... + ), + array( + 'filename' => 'cat_group_info', + 'assign' => array( + 'IMG_URL' => $img_url, + 'CAT_NAME' => trigger_event('render_category_name', $category['name'], 'admin_cat_list'), + 'LINK' => make_index_url(array( + 'category' => array( + 'id' => $category['id'], + 'name' => trigger_event('render_category_name', $category['name'], 'admin_cat_list'), + 'permalink' => $category['permalink'] + ) + )), + 'CPL_CONTENT' => empty($_POST['mail_content']) ? '' : stripslashes($_POST['mail_content']), + ) + ) + ); + + unset_make_full_url(); + + $query = ' +SELECT + name + FROM '.GROUPS_TABLE.' + WHERE id = '.$_POST['group'].' +;'; + list($group_name) = pwg_db_fetch_row(pwg_query($query)); + + $page['infos'][] = l10n('An information email was sent to group "%s"', $group_name); +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ + +$template->set_filename('album_notification', 'album_notification.tpl'); + +$template->assign( + array( + 'CATEGORIES_NAV' => + get_cat_display_name_from_id( + $page['cat'], + 'admin.php?page=album-' + ), + 'F_ACTION' => $admin_album_base_url.'-notification', + 'PWG_TOKEN' => get_pwg_token(), + ) + ); + +// +-----------------------------------------------------------------------+ +// | form construction | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT + id AS group_id + FROM '.GROUPS_TABLE.' +;'; +$all_group_ids = array_from_query($query, 'group_id'); + +if (count($all_group_ids) == 0) +{ + $template->assign('no_group_in_gallery', true); +} +else +{ + if ('private' == $category['status']) + { + $query = ' +SELECT + group_id + FROM '.GROUP_ACCESS_TABLE.' + WHERE cat_id = '.$category['id'].' +;'; + $group_ids = array_from_query($query, 'group_id'); + + if (count($group_ids) == 0) + { + $template->assign('permission_url', $admin_album_base_url.'-permissions'); + } + } + else + { + $group_ids = $all_group_ids; + } + + if (count($group_ids) > 0) + { + $query = ' +SELECT + id, + name + FROM '.GROUPS_TABLE.' + WHERE id IN ('.implode(',', $group_ids).') + ORDER BY name ASC +;'; + $template->assign( + 'group_mail_options', + simple_hash_from_query($query, 'id', 'name') + ); + } +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'album_notification'); +?> diff --git a/sources/admin/batch_manager.php b/sources/admin/batch_manager.php new file mode 100644 index 0000000..2cb76f7 --- /dev/null +++ b/sources/admin/batch_manager.php @@ -0,0 +1,564 @@ +'; print_r($_POST); echo ''; + unset($_REQUEST['start']); // new photo set must reset the page + $_SESSION['bulk_manager_filter'] = array(); + + if (isset($_POST['filter_prefilter_use'])) + { + $_SESSION['bulk_manager_filter']['prefilter'] = $_POST['filter_prefilter']; + } + + if (isset($_POST['filter_category_use'])) + { + $_SESSION['bulk_manager_filter']['category'] = $_POST['filter_category']; + + if (isset($_POST['filter_category_recursive'])) + { + $_SESSION['bulk_manager_filter']['category_recursive'] = true; + } + } + + if (isset($_POST['filter_tags_use'])) + { + $_SESSION['bulk_manager_filter']['tags'] = get_tag_ids($_POST['filter_tags'], false); + + if (isset($_POST['tag_mode']) and in_array($_POST['tag_mode'], array('AND', 'OR'))) + { + $_SESSION['bulk_manager_filter']['tag_mode'] = $_POST['tag_mode']; + } + } + + if (isset($_POST['filter_level_use'])) + { + if (in_array($_POST['filter_level'], $conf['available_permission_levels'])) + { + $_SESSION['bulk_manager_filter']['level'] = $_POST['filter_level']; + + if (isset($_POST['filter_level_include_lower'])) + { + $_SESSION['bulk_manager_filter']['level_include_lower'] = true; + } + } + } + + if (isset($_POST['filter_dimension_use'])) + { + foreach (array('min_width','max_width','min_height','max_height') as $type) + { + if ( preg_match('#^[0-9]+$#', $_POST['filter_dimension_'. $type ]) ) + { + $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ]; + } + } + foreach (array('min_ratio','max_ratio') as $type) + { + if ( preg_match('#^[0-9\.]+$#', $_POST['filter_dimension_'. $type ]) ) + { + $_SESSION['bulk_manager_filter']['dimension'][$type] = $_POST['filter_dimension_'. $type ]; + } + } + } +} +// filters from url +else if (isset($_GET['filter'])) +{ + if (!is_array($_GET['filter'])) + { + $_GET['filter'] = explode(',', $_GET['filter']); + } + + $_SESSION['bulk_manager_filter'] = array(); + + foreach ($_GET['filter'] as $filter) + { + list($type, $value) = explode('-', $filter); + + switch ($type) + { + case 'prefilter': + $_SESSION['bulk_manager_filter']['prefilter'] = $value; + break; + + case 'album': + if (is_numeric($value)) + { + $_SESSION['bulk_manager_filter']['category'] = $value; + } + break; + + case 'tag': + if (is_numeric($value)) + { + $_SESSION['bulk_manager_filter']['tags'] = array($value); + $_SESSION['bulk_manager_filter']['tag_mode'] = 'AND'; + } + break; + + case 'level': + if (is_numeric($value) && in_array($value, $conf['available_permission_levels'])) + { + $_SESSION['bulk_manager_filter']['level'] = $value; + } + break; + } + } +} + +if (empty($_SESSION['bulk_manager_filter'])) +{ + $_SESSION['bulk_manager_filter'] = array( + 'prefilter' => 'caddie' + ); +} + +// echo '
'; print_r($_SESSION['bulk_manager_filter']); echo '
'; + +// depending on the current filter (in session), we find the appropriate photos +$filter_sets = array(); +if (isset($_SESSION['bulk_manager_filter']['prefilter'])) +{ + switch ($_SESSION['bulk_manager_filter']['prefilter']) + { + case 'caddie': + $query = ' +SELECT element_id + FROM '.CADDIE_TABLE.' + WHERE user_id = '.$user['id'].' +;'; + $filter_sets[] = array_from_query($query, 'element_id'); + + break; + + case 'favorites': + $query = ' +SELECT image_id + FROM '.FAVORITES_TABLE.' + WHERE user_id = '.$user['id'].' +;'; + $filter_sets[] = array_from_query($query, 'image_id'); + + break; + + case 'last_import': + $query = ' +SELECT MAX(date_available) AS date + FROM '.IMAGES_TABLE.' +;'; + $row = pwg_db_fetch_assoc(pwg_query($query)); + if (!empty($row['date'])) + { + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' + WHERE date_available BETWEEN '.pwg_db_get_recent_period_expression(1, $row['date']).' AND \''.$row['date'].'\' +;'; + $filter_sets[] = array_from_query($query, 'id'); + } + + break; + + case 'no_virtual_album': + // we are searching elements not linked to any virtual category + $query = ' + SELECT id + FROM '.IMAGES_TABLE.' + ;'; + $all_elements = array_from_query($query, 'id'); + + $query = ' + SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NULL + ;'; + $virtual_categories = array_from_query($query, 'id'); + if (!empty($virtual_categories)) + { + $query = ' + SELECT DISTINCT(image_id) + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id IN ('.implode(',', $virtual_categories).') + ;'; + $linked_to_virtual = array_from_query($query, 'image_id'); + } + + $filter_sets[] = array_diff($all_elements, $linked_to_virtual); + + break; + + case 'no_album': + $query = ' +SELECT + id + FROM '.IMAGES_TABLE.' + LEFT JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id + WHERE category_id is null +;'; + $filter_sets[] = array_from_query($query, 'id'); + + break; + + case 'no_tag': + $query = ' +SELECT + id + FROM '.IMAGES_TABLE.' + LEFT JOIN '.IMAGE_TAG_TABLE.' ON id = image_id + WHERE tag_id is null +;'; + $filter_sets[] = array_from_query($query, 'id'); + + break; + + + case 'duplicates': + // we could use the group_concat MySQL function to retrieve the list of + // image_ids but it would not be compatible with PostgreSQL, so let's + // perform 2 queries instead. We hope there are not too many duplicates. + $query = ' +SELECT file + FROM '.IMAGES_TABLE.' + GROUP BY file + HAVING COUNT(*) > 1 +;'; + $duplicate_files = array_from_query($query, 'file'); + + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' + WHERE file IN (\''.implode("','", array_map('pwg_db_real_escape_string', $duplicate_files)).'\') +;'; + $filter_sets[] = array_from_query($query, 'id'); + + break; + + case 'all_photos': + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' + '.$conf['order_by']; + + $filter_sets[] = array_from_query($query, 'id'); + + break; + } + + $filter_sets = trigger_event('perform_batch_manager_prefilters', $filter_sets, $_SESSION['bulk_manager_filter']['prefilter']); +} + +if (isset($_SESSION['bulk_manager_filter']['category'])) +{ + $categories = array(); + + if (isset($_SESSION['bulk_manager_filter']['category_recursive'])) + { + $categories = get_subcat_ids(array($_SESSION['bulk_manager_filter']['category'])); + } + else + { + $categories = array($_SESSION['bulk_manager_filter']['category']); + } + + $query = ' + SELECT DISTINCT(image_id) + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id IN ('.implode(',', $categories).') + ;'; + $filter_sets[] = array_from_query($query, 'image_id'); +} + +if (isset($_SESSION['bulk_manager_filter']['level'])) +{ + $operator = '='; + if (isset($_SESSION['bulk_manager_filter']['level_include_lower'])) + { + $operator = '<='; + } + + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' + WHERE level '.$operator.' '.$_SESSION['bulk_manager_filter']['level'].' + '.$conf['order_by']; + + $filter_sets[] = array_from_query($query, 'id'); +} + +if (!empty($_SESSION['bulk_manager_filter']['tags'])) +{ + $filter_sets[] = get_image_ids_for_tags( + $_SESSION['bulk_manager_filter']['tags'], + $_SESSION['bulk_manager_filter']['tag_mode'], + null, + null, + false // we don't apply permissions in administration screens + ); +} + +if (isset($_SESSION['bulk_manager_filter']['dimension'])) +{ + $where_clauses = array(); + if (isset($_SESSION['bulk_manager_filter']['dimension']['min_width'])) + { + $where_clause[] = 'width >= '.$_SESSION['bulk_manager_filter']['dimension']['min_width']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['max_width'])) + { + $where_clause[] = 'width <= '.$_SESSION['bulk_manager_filter']['dimension']['max_width']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['min_height'])) + { + $where_clause[] = 'height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_height']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['max_height'])) + { + $where_clause[] = 'height <= '.$_SESSION['bulk_manager_filter']['dimension']['max_height']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['min_ratio'])) + { + $where_clause[] = 'width/height >= '.$_SESSION['bulk_manager_filter']['dimension']['min_ratio']; + } + if (isset($_SESSION['bulk_manager_filter']['dimension']['max_ratio'])) + { + // max_ratio is a floor value, so must be a bit increased + $where_clause[] = 'width/height < '.($_SESSION['bulk_manager_filter']['dimension']['max_ratio']+0.01); + } + + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' + WHERE '.implode(' AND ',$where_clause).' + '.$conf['order_by']; + + $filter_sets[] = array_from_query($query, 'id'); +} + +$current_set = array_shift($filter_sets); +foreach ($filter_sets as $set) +{ + $current_set = array_intersect($current_set, $set); +} +$page['cat_elements_id'] = $current_set; + + +// +-----------------------------------------------------------------------+ +// | first element to display | +// +-----------------------------------------------------------------------+ + +// $page['start'] contains the number of the first element in its +// category. For exampe, $page['start'] = 12 means we must show elements #12 +// and $page['nb_images'] next elements + +if (!isset($_REQUEST['start']) + or !is_numeric($_REQUEST['start']) + or $_REQUEST['start'] < 0 + or (isset($_REQUEST['display']) and 'all' == $_REQUEST['display'])) +{ + $page['start'] = 0; +} +else +{ + $page['start'] = $_REQUEST['start']; +} + + +// +-----------------------------------------------------------------------+ +// | Tabs | +// +-----------------------------------------------------------------------+ +$manager_link = get_root_url().'admin.php?page=batch_manager&mode='; + +if (isset($_GET['mode'])) +{ + $page['tab'] = $_GET['mode']; +} +else +{ + $page['tab'] = 'global'; +} + +$tabsheet = new tabsheet(); +$tabsheet->set_id('batch_manager'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + + +// +-----------------------------------------------------------------------+ +// | tags | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT id, name + FROM '.TAGS_TABLE.' +;'; +$template->assign('tags', get_taglist($query, false)); + + +// +-----------------------------------------------------------------------+ +// | dimensions | +// +-----------------------------------------------------------------------+ + +$widths = array(); +$heights = array(); +$ratios = array(); + +// get all width, height and ratios +$query = ' +SELECT + DISTINCT width, height + FROM '.IMAGES_TABLE.' + WHERE width IS NOT NULL + AND height IS NOT NULL +;'; +$result = pwg_query($query); + +if (pwg_db_num_rows($result)) +{ + while ($row = pwg_db_fetch_assoc($result)) + { + if ($row['width']>0 && $row['height']>0) + { + $widths[] = $row['width']; + $heights[] = $row['height']; + $ratios[] = floor($row['width'] / $row['height'] * 100) / 100; + } + } +} +if (empty($widths)) +{ // arbitrary values, only used when no photos on the gallery + $widths = array(600, 1920, 3500); + $heights = array(480, 1080, 2300); + $ratios = array(1.25, 1.52, 1.78); +} + + + +$widths = array_unique($widths); +sort($widths); + +$heights = array_unique($heights); +sort($heights); + +$ratios = array_unique($ratios); +sort($ratios); + +$dimensions['widths'] = implode(',', $widths); +$dimensions['heights'] = implode(',', $heights); +$dimensions['ratios'] = implode(',', $ratios); + +$dimensions['bounds'] = array( + 'min_width' => $widths[0], + 'max_width' => $widths[count($widths)-1], + 'min_height' => $heights[0], + 'max_height' => $heights[count($heights)-1], + 'min_ratio' => $ratios[0], + 'max_ratio' => $ratios[count($ratios)-1], + ); + +// find ratio categories +$ratio_categories = array( + 'portrait' => array(), + 'square' => array(), + 'landscape' => array(), + 'panorama' => array(), + ); + +foreach ($ratios as $ratio) +{ + if ($ratio < 0.95) + { + $ratio_categories['portrait'][] = $ratio; + } + else if ($ratio >= 0.95 and $ratio <= 1.05) + { + $ratio_categories['square'][] = $ratio; + } + else if ($ratio > 1.05 and $ratio < 2) + { + $ratio_categories['landscape'][] = $ratio; + } + else if ($ratio >= 2) + { + $ratio_categories['panorama'][] = $ratio; + } +} + +foreach (array_keys($ratio_categories) as $ratio_category) +{ + if (count($ratio_categories[$ratio_category]) > 0) + { + $dimensions['ratio_'.$ratio_category] = array( + 'min' => $ratio_categories[$ratio_category][0], + 'max' => array_pop($ratio_categories[$ratio_category]), + ); + } +} + +// selected=bound if nothing selected +foreach (array_keys($dimensions['bounds']) as $type) +{ + $dimensions['selected'][$type] = isset($_SESSION['bulk_manager_filter']['dimension'][$type]) + ? $_SESSION['bulk_manager_filter']['dimension'][$type] + : $dimensions['bounds'][$type] + ; +} + +$template->assign('dimensions', $dimensions); + + +// +-----------------------------------------------------------------------+ +// | open specific mode | +// +-----------------------------------------------------------------------+ + +include(PHPWG_ROOT_PATH.'admin/batch_manager_'.$page['tab'].'.php'); +?> \ No newline at end of file diff --git a/sources/admin/batch_manager_global.php b/sources/admin/batch_manager_global.php new file mode 100644 index 0000000..2828d8b --- /dev/null +++ b/sources/admin/batch_manager_global.php @@ -0,0 +1,734 @@ + 0) + { + $query = ' +DELETE + FROM '.IMAGE_TAG_TABLE.' + WHERE image_id IN ('.implode(',', $collection).') + AND tag_id IN ('.implode(',', $_POST['del_tags']).') +;'; + pwg_query($query); + } + else + { + $page['errors'][] = l10n('Select at least one tag'); + } + } + + if ('associate' == $action) + { + associate_images_to_categories( + $collection, + array($_POST['associate']) + ); + + $_SESSION['page_infos'] = array( + l10n('Information data registered in database') + ); + + // let's refresh the page because we the current set might be modified + if ('no_album' == $page['prefilter']) + { + redirect($redirect_url); + } + + if ('no_virtual_album' == $page['prefilter']) + { + $category_info = get_cat_info($_POST['associate']); + if (empty($category_info['dir'])) + { + redirect($redirect_url); + } + } + } + + if ('move' == $action) + { + move_images_to_categories($collection, array($_POST['move'])); + + $_SESSION['page_infos'] = array( + l10n('Information data registered in database') + ); + + // let's refresh the page because we the current set might be modified + if ('no_album' == $page['prefilter']) + { + redirect($redirect_url); + } + + if ('no_virtual_album' == $page['prefilter']) + { + $category_info = get_cat_info($_POST['move']); + if (empty($category_info['dir'])) + { + redirect($redirect_url); + } + } + + if (isset($_SESSION['bulk_manager_filter']['category']) + and $_POST['move'] != $_SESSION['bulk_manager_filter']['category']) + { + redirect($redirect_url); + } + } + + if ('dissociate' == $action) + { + // physical links must not be broken, so we must first retrieve image_id + // which create virtual links with the category to "dissociate from". + $query = ' +SELECT id + FROM '.IMAGE_CATEGORY_TABLE.' + INNER JOIN '.IMAGES_TABLE.' ON image_id = id + WHERE category_id = '.$_POST['dissociate'].' + AND id IN ('.implode(',', $collection).') + AND ( + category_id != storage_category_id + OR storage_category_id IS NULL + ) +;'; + $dissociables = array_from_query($query, 'id'); + + if (!empty($dissociables)) + { + $query = ' +DELETE + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id = '.$_POST['dissociate'].' + AND image_id IN ('.implode(',', $dissociables).') +'; + pwg_query($query); + + $_SESSION['page_infos'] = array( + l10n('Information data registered in database') + ); + + // let's refresh the page because the current set might be modified + redirect($redirect_url); + } + } + + // author + if ('author' == $action) + { + if (isset($_POST['remove_author'])) + { + $_POST['author'] = null; + } + + $datas = array(); + foreach ($collection as $image_id) + { + $datas[] = array( + 'id' => $image_id, + 'author' => $_POST['author'] + ); + } + + mass_updates( + IMAGES_TABLE, + array('primary' => array('id'), 'update' => array('author')), + $datas + ); + } + + // title + if ('title' == $action) + { + if (isset($_POST['remove_title'])) + { + $_POST['title'] = null; + } + + $datas = array(); + foreach ($collection as $image_id) + { + $datas[] = array( + 'id' => $image_id, + 'name' => $_POST['title'] + ); + } + + mass_updates( + IMAGES_TABLE, + array('primary' => array('id'), 'update' => array('name')), + $datas + ); + } + + // date_creation + if ('date_creation' == $action) + { + $date_creation = sprintf( + '%u-%u-%u', + $_POST['date_creation_year'], + $_POST['date_creation_month'], + $_POST['date_creation_day'] + ); + + if (isset($_POST['remove_date_creation'])) + { + $date_creation = null; + } + + $datas = array(); + foreach ($collection as $image_id) + { + $datas[] = array( + 'id' => $image_id, + 'date_creation' => $date_creation + ); + } + + mass_updates( + IMAGES_TABLE, + array('primary' => array('id'), 'update' => array('date_creation')), + $datas + ); + } + + // privacy_level + if ('level' == $action) + { + $datas = array(); + foreach ($collection as $image_id) + { + $datas[] = array( + 'id' => $image_id, + 'level' => $_POST['level'] + ); + } + + mass_updates( + IMAGES_TABLE, + array('primary' => array('id'), 'update' => array('level')), + $datas + ); + + if (isset($_SESSION['bulk_manager_filter']['level'])) + { + if ($_POST['level'] < $_SESSION['bulk_manager_filter']['level']) + { + redirect($redirect_url); + } + } + } + + // add_to_caddie + if ('add_to_caddie' == $action) + { + fill_caddie($collection); + } + + // delete + if ('delete' == $action) + { + if (isset($_POST['confirm_deletion']) and 1 == $_POST['confirm_deletion']) + { + $deleted_count = delete_elements($collection, true); + if ($deleted_count > 0) + { + $_SESSION['page_infos'][] = l10n_dec( + '%d photo was deleted', '%d photos were deleted', + $deleted_count + ); + + $redirect_url = get_root_url().'admin.php?page='.$_GET['page']; + redirect($redirect_url); + } + else + { + $page['errors'][] = l10n('No photo can be deleted'); + } + } + else + { + $page['errors'][] = l10n('You need to confirm deletion'); + } + } + + // synchronize metadata + if ('metadata' == $action) + { + sync_metadata($collection); + $page['infos'][] = l10n('Metadata synchronized from file'); + } + + if ('delete_derivatives' == $action) + { + $query='SELECT path,representative_ext FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $collection).')'; + $result = pwg_query($query); + while ($info = pwg_db_fetch_assoc($result)) + { + foreach( $_POST['del_derivatives_type'] as $type) + { + delete_element_derivatives($info, $type); + } + } + } + + if ('generate_derivatives' == $action) + { + if ($_POST['regenerateSuccess'] != '0') + { + $page['infos'][] = l10n('%s photos have been regenerated', $_POST['regenerateSuccess']); + } + if ($_POST['regenerateError'] != '0') + { + $page['warnings'][] = l10n('%s photos can not be regenerated', $_POST['regenerateError']); + } + } + + trigger_action('element_set_global_action', $action, $collection); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ +$template->set_filenames(array('batch_manager_global' => 'batch_manager_global.tpl')); + +$base_url = get_root_url().'admin.php'; + +$prefilters = array( + array('ID' => 'caddie', 'NAME' => l10n('Caddie')), + array('ID' => 'favorites', 'NAME' => l10n('Your favorites')), + array('ID' => 'last_import', 'NAME' => l10n('Last import')), + array('ID' => 'no_album', 'NAME' => l10n('With no album')), + array('ID' => 'no_tag', 'NAME' => l10n('With no tag')), + array('ID' => 'duplicates', 'NAME' => l10n('Duplicates')), + array('ID' => 'all_photos', 'NAME' => l10n('All')) +); + +if ($conf['enable_synchronization']) +{ + $prefilters[] = array('ID' => 'no_virtual_album', 'NAME' => l10n('With no virtual album')); +} + +$prefilters = trigger_event('get_batch_manager_prefilters', $prefilters); +usort($prefilters, 'UC_name_compare'); + +$template->assign( + array( + 'prefilters' => $prefilters, + 'filter' => $_SESSION['bulk_manager_filter'], + 'selection' => $collection, + 'all_elements' => $page['cat_elements_id'], + 'START' => $page['start'], + 'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')), + 'F_ACTION'=>$base_url.get_query_string_diff(array('cat','start','tag','filter')), + ) + ); + +// +-----------------------------------------------------------------------+ +// | caddie options | +// +-----------------------------------------------------------------------+ +$template->assign('IN_CADDIE', 'caddie' == $page['prefilter']); + + +// +-----------------------------------------------------------------------+ +// | global mode form | +// +-----------------------------------------------------------------------+ + +// privacy level +foreach ($conf['available_permission_levels'] as $level) +{ + $level_options[$level] = l10n(sprintf('Level %d', $level)); + + if (0 == $level) + { + $level_options[$level] = l10n('Everybody'); + } +} +$template->assign( + array( + 'filter_level_options'=> $level_options, + 'filter_level_options_selected' => isset($_SESSION['bulk_manager_filter']['level']) + ? $_SESSION['bulk_manager_filter']['level'] + : 0, + ) + ); + +// tags +if (!empty($_SESSION['bulk_manager_filter']['tags'])) +{ + $query = ' +SELECT + id, + name + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $_SESSION['bulk_manager_filter']['tags']).') +;'; + $template->assign('filter_tags', get_taglist($query)); +} + +// Virtualy associate a picture to a category +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' +;'; +$categories = array_from_query($query); +usort($categories, 'global_rank_compare'); +display_select_categories($categories, array(), 'category_full_name_options', true); + +display_select_cat_wrapper($query, array(), 'category_parent_options'); + +// in the filter box, which category to select by default +$selected_category = array(); + +if (isset($_SESSION['bulk_manager_filter']['category'])) +{ + $selected_category = array($_SESSION['bulk_manager_filter']['category']); +} +else +{ + // we need to know the category in which the last photo was added + $query = ' +SELECT + category_id, + id_uppercat + FROM '.IMAGES_TABLE.' AS i + JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = i.id + JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id + ORDER BY i.id DESC + LIMIT 1 +;'; + $result = pwg_query($query); + if (pwg_db_num_rows($result) > 0) + { + $row = pwg_db_fetch_assoc($result); + $selected_category = array($row['category_id']); + } +} + +$template->assign( 'filter_category_selected', $selected_category); + +// Dissociate from a category : categories listed for dissociation can only +// represent virtual links. We can't create orphans. Links to physical +// categories can't be broken. +if (count($page['cat_elements_id']) > 0) +{ + $query = ' +SELECT + DISTINCT(category_id) AS id, + c.name, + c.uppercats, + c.global_rank + FROM '.IMAGE_CATEGORY_TABLE.' AS ic + JOIN '.CATEGORIES_TABLE.' AS c ON c.id = ic.category_id + JOIN '.IMAGES_TABLE.' AS i ON i.id = ic.image_id + WHERE ic.image_id IN ('.implode(',', $page['cat_elements_id']).') + AND ( + ic.category_id != i.storage_category_id + OR i.storage_category_id IS NULL + ) +;'; + display_select_cat_wrapper($query, array(), 'dissociate_options', true); +} + +if (count($page['cat_elements_id']) > 0) +{ + // remove tags + $tags = get_common_tags($page['cat_elements_id'], -1); + + $template->assign( + array( + 'DEL_TAG_SELECTION' => get_html_tag_selection($tags, 'del_tags'), + ) + ); +} + +// creation date +$day = +empty($_POST['date_creation_day']) ? date('j') : $_POST['date_creation_day']; + +$month = +empty($_POST['date_creation_month']) ? date('n') : $_POST['date_creation_month']; + +$year = +empty($_POST['date_creation_year']) ? date('Y') : $_POST['date_creation_year']; + +$month_list = $lang['month']; +$month_list[0]='------------'; +ksort($month_list); +$template->assign( array( + 'month_list' => $month_list, + 'DATE_CREATION_DAY' => (int)$day, + 'DATE_CREATION_MONTH'=> (int)$month, + 'DATE_CREATION_YEAR' => (int)$year, + ) + ); + +// image level options +$template->assign( + array( + 'level_options'=> get_privacy_level_options(), + 'level_options_selected' => 0, + ) + ); + +// metadata +include_once( PHPWG_ROOT_PATH.'admin/site_reader_local.php'); +$site_reader = new LocalSiteReader('./'); +$used_metadata = implode( ', ', $site_reader->get_metadata_attributes()); + +$template->assign( + array( + 'used_metadata' => $used_metadata, + ) + ); + +//derivatives +$del_deriv_map = array(); +foreach(ImageStdParams::get_defined_type_map() as $params) +{ + $del_deriv_map[$params->type] = l10n($params->type); +} +$gen_deriv_map = $del_deriv_map; +$del_deriv_map[IMG_CUSTOM] = l10n(IMG_CUSTOM); +$template->assign( + array( + 'del_derivatives_types' => $del_deriv_map, + 'generate_derivatives_types' => $gen_deriv_map, + ) + ); + +// +-----------------------------------------------------------------------+ +// | global mode thumbnails | +// +-----------------------------------------------------------------------+ + +// how many items to display on this page +if (!empty($_GET['display'])) +{ + if ('all' == $_GET['display']) + { + $page['nb_images'] = count($page['cat_elements_id']); + } + else + { + $page['nb_images'] = intval($_GET['display']); + } +} +else +{ + $page['nb_images'] = 20; +} + +$nb_thumbs_page = 0; + +if (count($page['cat_elements_id']) > 0) +{ + $nav_bar = create_navigation_bar( + $base_url.get_query_string_diff(array('start')), + count($page['cat_elements_id']), + $page['start'], + $page['nb_images'] + ); + $template->assign('navbar', $nav_bar); + + $is_category = false; + if (isset($_SESSION['bulk_manager_filter']['category']) + and !isset($_SESSION['bulk_manager_filter']['category_recursive'])) + { + $is_category = true; + } + + if (isset($_SESSION['bulk_manager_filter']['prefilter']) + and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter']) + { + $conf['order_by'] = ' ORDER BY file, id'; + } + + $query = ' +SELECT id,path,representative_ext,file,filesize,level,name,width,height,rotation + FROM '.IMAGES_TABLE; + + if ($is_category) + { + $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']); + + $conf['order_by'] = $conf['order_by_inside_category']; + if (!empty($category_info['image_order'])) + { + $conf['order_by'] = ' ORDER BY '.$category_info['image_order']; + } + + $query.= ' + JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id'; + } + + $query.= ' + WHERE id IN ('.implode(',', $page['cat_elements_id']).')'; + + if ($is_category) + { + $query.= ' + AND category_id = '.$_SESSION['bulk_manager_filter']['category']; + } + + $query.= ' + '.$conf['order_by'].' + LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].' +;'; + $result = pwg_query($query); + + $thumb_params = ImageStdParams::get_by_type(IMG_THUMB); + // template thumbnail initialization + while ($row = pwg_db_fetch_assoc($result)) + { + $nb_thumbs_page++; + $src_image = new SrcImage($row); + + $ttitle = render_element_name($row); + if ($ttitle != get_name_from_file($row['file'])) + { + $ttitle.= ' ('.$row['file'].')'; + } + + $template->append( + 'thumbnails', array_merge($row, + array( + 'thumb' => new DerivativeImage($thumb_params, $src_image), + 'TITLE' => $ttitle, + 'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image), + 'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'], + ) + )); + } + $template->assign('thumb_params', $thumb_params); +} + +$template->assign( + array( + 'nb_thumbs_page' => $nb_thumbs_page, + 'nb_thumbs_set' => count($page['cat_elements_id']), + ) + ); + +trigger_action('loc_end_element_set_global'); + +//----------------------------------------------------------- sending html code +$template->assign_var_from_handle('ADMIN_CONTENT', 'batch_manager_global'); +?> diff --git a/sources/admin/batch_manager_unit.php b/sources/admin/batch_manager_unit.php new file mode 100644 index 0000000..ddf4206 --- /dev/null +++ b/sources/admin/batch_manager_unit.php @@ -0,0 +1,287 @@ + array('id'), + 'update' => array('name','author','level','comment','date_creation') + ), + $datas + ); + + $page['infos'][] = l10n('Photo informations updated'); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames( + array('batch_manager_unit' => 'batch_manager_unit.tpl')); + +$base_url = PHPWG_ROOT_PATH.'admin.php'; + +$month_list = $lang['month']; +$month_list[0]='------------'; +ksort($month_list); + +$template->assign( + array( + 'U_ELEMENTS_PAGE' => $base_url.get_query_string_diff(array('display','start')), + 'F_ACTION'=>$base_url.get_query_string_diff(array()), + 'month_list' => $month_list, + 'level_options' => get_privacy_level_options(), + ) + ); + +// +-----------------------------------------------------------------------+ +// | global mode thumbnails | +// +-----------------------------------------------------------------------+ + +// how many items to display on this page +if (!empty($_GET['display'])) +{ + if ('all' == $_GET['display']) + { + $page['nb_images'] = count($page['cat_elements_id']); + } + else + { + $page['nb_images'] = intval($_GET['display']); + } +} +else +{ + $page['nb_images'] = 5; +} + + + +if (count($page['cat_elements_id']) > 0) +{ + $nav_bar = create_navigation_bar( + $base_url.get_query_string_diff(array('start')), + count($page['cat_elements_id']), + $page['start'], + $page['nb_images'] + ); + $template->assign(array('navbar' => $nav_bar)); + + $element_ids = array(); + + $is_category = false; + if (isset($_SESSION['bulk_manager_filter']['category']) + and !isset($_SESSION['bulk_manager_filter']['category_recursive'])) + { + $is_category = true; + } + + if (isset($_SESSION['bulk_manager_filter']['prefilter']) + and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter']) + { + $conf['order_by'] = ' ORDER BY file, id'; + } + + + $query = ' +SELECT * + FROM '.IMAGES_TABLE; + + if ($is_category) + { + $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']); + + $conf['order_by'] = $conf['order_by_inside_category']; + if (!empty($category_info['image_order'])) + { + $conf['order_by'] = ' ORDER BY '.$category_info['image_order']; + } + + $query.= ' + JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id'; + } + + $query.= ' + WHERE id IN ('.implode(',', $page['cat_elements_id']).')'; + + if ($is_category) + { + $query.= ' + AND category_id = '.$_SESSION['bulk_manager_filter']['category']; + } + + $query.= ' + '.$conf['order_by'].' + LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].' +;'; + $result = pwg_query($query); + + while ($row = pwg_db_fetch_assoc($result)) + { + $element_ids[] = $row['id']; + + $src_image = new SrcImage($row); + + // creation date + if (!empty($row['date_creation'])) + { + list($year,$month,$day) = explode('-', $row['date_creation']); + } + else + { + list($year,$month,$day) = array('',0,0); + } + + $query = ' +SELECT + id, + name + FROM '.IMAGE_TAG_TABLE.' AS it + JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id + WHERE image_id = '.$row['id'].' +;'; + $tag_selection = get_taglist($query); + + $legend = render_element_name($row); + if ($legend != get_name_from_file($row['file'])) + { + $legend.= ' ('.$row['file'].')'; + } + + $template->append( + 'elements', array_merge($row, + array( + 'ID' => $row['id'], + 'TN_SRC' => DerivativeImage::url(IMG_THUMB, $src_image), + 'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image), + 'LEGEND' => $legend, + 'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'], + 'NAME' => htmlspecialchars(@$row['name']), + 'AUTHOR' => htmlspecialchars(@$row['author']), + 'LEVEL' => !empty($row['level'])?$row['level']:'0', + 'DESCRIPTION' => htmlspecialchars(@$row['comment']), + 'DATE_CREATION_YEAR' => $year, + 'DATE_CREATION_MONTH' => (int)$month, + 'DATE_CREATION_DAY' => (int)$day, + 'TAGS' => $tag_selection, + ) + )); + } + + $template->assign('ELEMENT_IDS', implode(',', $element_ids)); +} + +trigger_action('loc_end_element_set_unit'); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'batch_manager_unit'); +?> \ No newline at end of file diff --git a/sources/admin/cat_list.php b/sources/admin/cat_list.php new file mode 100644 index 0000000..729fe84 --- /dev/null +++ b/sources/admin/cat_list.php @@ -0,0 +1,372 @@ + $id, 'rank' => $current_rank); + } + $fields = array('primary' => array('id'), 'update' => array('rank')); + mass_updates(CATEGORIES_TABLE, $fields, $datas); + + update_global_rank(); +} + +// +-----------------------------------------------------------------------+ +// | initialization | +// +-----------------------------------------------------------------------+ + +check_input_parameter('parent_id', $_GET, false, PATTERN_ID); + +$categories = array(); + +$base_url = get_root_url().'admin.php?page=cat_list'; +$navigation = ''; +$navigation.= l10n('Home'); +$navigation.= ''; + +// +-----------------------------------------------------------------------+ +// | tabs | +// +-----------------------------------------------------------------------+ + +$page['tab'] = 'list'; +include(PHPWG_ROOT_PATH.'admin/include/albums_tab.inc.php'); + +// +-----------------------------------------------------------------------+ +// | virtual categories management | +// +-----------------------------------------------------------------------+ +// request to delete a virtual category +if (isset($_GET['delete']) and is_numeric($_GET['delete'])) +{ + delete_categories(array($_GET['delete'])); + $_SESSION['page_infos'] = array(l10n('Virtual album deleted')); + update_global_rank(); + invalidate_user_cache(); + + $redirect_url = get_root_url().'admin.php?page=cat_list'; + if (isset($_GET['parent_id'])) + { + $redirect_url.= '&parent_id='.$_GET['parent_id']; + } + redirect($redirect_url); +} +// request to add a virtual category +elseif (isset($_POST['submitAdd'])) +{ + $output_create = create_virtual_category( + $_POST['virtual_name'], + @$_GET['parent_id'] + ); + + invalidate_user_cache(); + if (isset($output_create['error'])) + { + $page['errors'][] = $output_create['error']; + } + else + { + $page['infos'][] = $output_create['info']; + } +} +// save manual category ordering +elseif (isset($_POST['submitManualOrder'])) +{ + asort($_POST['catOrd'], SORT_NUMERIC); + save_categories_order(array_keys($_POST['catOrd'])); + + $page['infos'][] = l10n('Album manual order was saved'); +} +elseif (isset($_POST['submitAutoOrder'])) +{ + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE id_uppercat '. + (!isset($_GET['parent_id']) ? 'IS NULL' : '= '.$_GET['parent_id']).' +;'; + $category_ids = array_from_query($query, 'id'); + + if (isset($_POST['recursive'])) + { + $category_ids = get_subcat_ids($category_ids); + } + + $categories = array(); + $names = array(); + $id_uppercats = array(); + + $query = ' +SELECT id, name, id_uppercat + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $category_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $categories[] = array( + 'id' => $row['id'], + 'id_uppercat' => $row['id_uppercat'], + ); + $names[] = $row['name']; + } + + array_multisort( + $names, + SORT_REGULAR, + 'asc' == $_POST['ascdesc'] ? SORT_ASC : SORT_DESC, + $categories + ); + save_categories_order($categories); + + $page['infos'][] = l10n('Albums automatically sorted'); +} + +// +-----------------------------------------------------------------------+ +// | Navigation path | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['parent_id'])) +{ + $navigation.= $conf['level_separator']; + + $navigation.= get_cat_display_name_from_id( + $_GET['parent_id'], + $base_url.'&parent_id=' + ); +} +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ +$template->set_filename('categories', 'cat_list.tpl'); + +$form_action = PHPWG_ROOT_PATH.'admin.php?page=cat_list'; +if (isset($_GET['parent_id'])) +{ + $form_action.= '&parent_id='.$_GET['parent_id']; +} + +$template->assign(array( + 'CATEGORIES_NAV'=>$navigation, + 'F_ACTION'=>$form_action, + 'PWG_TOKEN' => get_pwg_token(), + )); + +// +-----------------------------------------------------------------------+ +// | Categories display | +// +-----------------------------------------------------------------------+ + +$categories = array(); + +$query = ' +SELECT id, name, permalink, dir, rank, status + FROM '.CATEGORIES_TABLE; +if (!isset($_GET['parent_id'])) +{ + $query.= ' + WHERE id_uppercat IS NULL'; +} +else +{ + $query.= ' + WHERE id_uppercat = '.$_GET['parent_id']; +} +$query.= ' + ORDER BY rank ASC +;'; +$categories = hash_from_query($query, 'id'); + +// get the categories containing images directly +$categories_with_images = array(); +if (count($categories)) +{ + $query = ' +SELECT + category_id, + COUNT(*) AS nb_photos + FROM '.IMAGE_CATEGORY_TABLE.' + GROUP BY category_id +;'; + // WHERE category_id IN ('.implode(',', array_keys($categories)).') + + $nb_photos_in = query2array($query, 'category_id', 'nb_photos'); + + $query = ' +SELECT + id, + uppercats + FROM '.CATEGORIES_TABLE.' +;'; + $all_categories = query2array($query, 'id', 'uppercats'); + $subcats_of = array(); + + foreach (array_keys($categories) as $cat_id) + { + foreach ($all_categories as $id => $uppercats) + { + if (preg_match('/(^|,)'.$cat_id.',/', $uppercats)) + { + @$subcats_of[$cat_id][] = $id; + } + } + } + + $nb_sub_photos = array(); + foreach ($subcats_of as $cat_id => $subcat_ids) + { + $nb_photos = 0; + foreach ($subcat_ids as $id) + { + if (isset($nb_photos_in[$id])) + { + $nb_photos+= $nb_photos_in[$id]; + } + } + + $nb_sub_photos[$cat_id] = $nb_photos; + } +} + +$template->assign('categories', array()); +$base_url = get_root_url().'admin.php?page='; + +if (isset($_GET['parent_id'])) +{ + $template->assign( + 'PARENT_EDIT', + $base_url.'album-'.$_GET['parent_id'] + ); +} + +foreach ($categories as $category) +{ + $cat_list_url = $base_url.'cat_list'; + + $self_url = $cat_list_url; + if (isset($_GET['parent_id'])) + { + $self_url.= '&parent_id='.$_GET['parent_id']; + } + + $tpl_cat = + array( + 'NAME' => + trigger_event( + 'render_category_name', + $category['name'], + 'admin_cat_list' + ), + 'NB_PHOTOS' => isset($nb_photos_in[$category['id']]) ? $nb_photos_in[$category['id']] : 0, + 'NB_SUB_PHOTOS' => isset($nb_sub_photos[$category['id']]) ? $nb_sub_photos[$category['id']] : 0, + 'NB_SUB_ALBUMS' => isset($subcats_of[$category['id']]) ? count($subcats_of[$category['id']]) : 0, + 'ID' => $category['id'], + 'RANK' => $category['rank']*10, + + 'U_JUMPTO' => make_index_url( + array( + 'category' => $category + ) + ), + + 'U_CHILDREN' => $cat_list_url.'&parent_id='.$category['id'], + 'U_EDIT' => $base_url.'album-'.$category['id'], + + 'IS_VIRTUAL' => empty($category['dir']) + ); + + if (empty($category['dir'])) + { + $tpl_cat['U_DELETE'] = $self_url.'&delete='.$category['id']; + $tpl_cat['U_DELETE'].= '&pwg_token='.get_pwg_token(); + } + else + { + if ($conf['enable_synchronization']) + { + $tpl_cat['U_SYNC'] = $base_url.'site_update&site=1&cat_id='.$category['id']; + } + } + + $template->append('categories', $tpl_cat); +} + +trigger_action('loc_end_cat_list'); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ +$template->assign_var_from_handle('ADMIN_CONTENT', 'categories'); +?> diff --git a/sources/admin/cat_modify.php b/sources/admin/cat_modify.php new file mode 100644 index 0000000..4eeeffe --- /dev/null +++ b/sources/admin/cat_modify.php @@ -0,0 +1,390 @@ + rex > 1_year_old" is on the the same site as the +// Piwigo files and this category has 22 for identifier +// get_complete_dir(22) returns "./galleries/pets/rex/1_year_old/" +function get_complete_dir( $category_id ) +{ + return get_site_url($category_id).get_local_dir($category_id); +} + +// get_local_dir returns an array with complete path without the site url +// Example : "pets > rex > 1_year_old" is on the the same site as the +// Piwigo files and this category has 22 for identifier +// get_local_dir(22) returns "pets/rex/1_year_old/" +function get_local_dir( $category_id ) +{ + global $page; + + $uppercats = ''; + $local_dir = ''; + + if ( isset( $page['plain_structure'][$category_id]['uppercats'] ) ) + { + $uppercats = $page['plain_structure'][$category_id]['uppercats']; + } + else + { + $query = 'SELECT uppercats'; + $query.= ' FROM '.CATEGORIES_TABLE.' WHERE id = '.$category_id; + $query.= ';'; + $row = pwg_db_fetch_assoc( pwg_query( $query ) ); + $uppercats = $row['uppercats']; + } + + $upper_array = explode( ',', $uppercats ); + + $database_dirs = array(); + $query = 'SELECT id,dir'; + $query.= ' FROM '.CATEGORIES_TABLE.' WHERE id IN ('.$uppercats.')'; + $query.= ';'; + $result = pwg_query( $query ); + while( $row = pwg_db_fetch_assoc( $result ) ) + { + $database_dirs[$row['id']] = $row['dir']; + } + foreach ($upper_array as $id) + { + $local_dir.= $database_dirs[$id].'/'; + } + + return $local_dir; +} + +// retrieving the site url : "http://domain.com/gallery/" or +// simply "./galleries/" +function get_site_url($category_id) +{ + global $page; + + $query = ' +SELECT galleries_url + FROM '.SITES_TABLE.' AS s,'.CATEGORIES_TABLE.' AS c + WHERE s.id = c.site_id + AND c.id = '.$category_id.' +;'; + $row = pwg_db_fetch_assoc(pwg_query($query)); + return $row['galleries_url']; +} + +// +-----------------------------------------------------------------------+ +// | Check Access and exit when user status is not ok | +// +-----------------------------------------------------------------------+ +check_status(ACCESS_ADMINISTRATOR); + +trigger_action('loc_begin_cat_modify'); + +//---------------------------------------------------------------- verification +if ( !isset( $_GET['cat_id'] ) || !is_numeric( $_GET['cat_id'] ) ) +{ + trigger_error( 'missing cat_id param', E_USER_ERROR); +} + +//--------------------------------------------------------- form criteria check +if (isset($_POST['submit'])) +{ + $data = array( + 'id' => $_GET['cat_id'], + 'name' => @$_POST['name'], + 'comment' => + $conf['allow_html_descriptions'] ? + @$_POST['comment'] : strip_tags(@$_POST['comment']), + ); + + if ($conf['activate_comments']) + { + $data['commentable'] = isset($_POST['commentable'])?$_POST['commentable']:'false'; + } + + single_update( + CATEGORIES_TABLE, + $data, + array('id' => $data['id']) + ); + + // retrieve cat infos before continuing (following updates are expensive) + $cat_info = get_cat_info($_GET['cat_id']); + + if ($cat_info['visible'] != get_boolean( $_POST['visible'] ) ) + { + set_cat_visible(array($_GET['cat_id']), $_POST['visible']); + } + + // in case the use moves his album to the gallery root, we force + // $_POST['parent'] from 0 to null to be compared with + // $cat_info['id_uppercat'] + if (empty($_POST['parent'])) + { + $_POST['parent'] = null; + } + + // only move virtual albums + if (empty($cat_info['dir']) and $cat_info['id_uppercat'] != $_POST['parent']) + { + move_categories( array($_GET['cat_id']), $_POST['parent'] ); + } + + $_SESSION['page_infos'][] = l10n('Album updated successfully'); + $redirect = true; +} +elseif (isset($_POST['set_random_representant'])) +{ + set_random_representant(array($_GET['cat_id'])); + $redirect = true; +} +elseif (isset($_POST['delete_representant'])) +{ + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = NULL + WHERE id = '.$_GET['cat_id'].' +;'; + pwg_query($query); + $redirect = true; +} + +if (isset($redirect)) +{ + redirect($admin_album_base_url.'-properties'); +} + +// nullable fields +foreach (array('comment','dir','site_id', 'id_uppercat') as $nullable) +{ + if (!isset($category[$nullable])) + { + $category[$nullable] = ''; + } +} + +$category['is_virtual'] = empty($category['dir']) ? true : false; + +$query = 'SELECT DISTINCT category_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id = '.$_GET['cat_id'].' + LIMIT 1'; +$result = pwg_query($query); +$category['has_images'] = pwg_db_num_rows($result)>0 ? true : false; + +// Navigation path +$navigation = get_cat_display_name_cache( + $category['uppercats'], + get_root_url().'admin.php?page=album-' + ); + +$form_action = $admin_album_base_url.'-properties'; + +//----------------------------------------------------- template initialization +$template->set_filename( 'album_properties', 'cat_modify.tpl'); + +$base_url = get_root_url().'admin.php?page='; +$cat_list_url = $base_url.'cat_list'; + +$self_url = $cat_list_url; +if (!empty($category['id_uppercat'])) +{ + $self_url.= '&parent_id='.$category['id_uppercat']; +} + +$template->assign( + array( + 'CATEGORIES_NAV' => $navigation, + 'CAT_ID' => $category['id'], + 'CAT_NAME' => @htmlspecialchars($category['name']), + 'CAT_COMMENT' => @htmlspecialchars($category['comment']), + 'CAT_VISIBLE' => boolean_to_string($category['visible']), + + 'U_JUMPTO' => make_index_url( + array( + 'category' => $category + ) + ), + + 'U_ADD_PHOTOS_ALBUM' => $base_url.'photos_add&album='.$category['id'], + 'U_CHILDREN' => $cat_list_url.'&parent_id='.$category['id'], + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_modify', + + 'F_ACTION' => $form_action, + ) + ); + +if ($conf['activate_comments']) +{ + $template->assign('CAT_COMMENTABLE', boolean_to_string($category['commentable'])); +} + +// manage album elements link +if ($category['has_images']) +{ + $template->assign( + 'U_MANAGE_ELEMENTS', + $base_url.'batch_manager&filter=album-'.$category['id'] + ); + + $query = ' +SELECT + COUNT(image_id), + MIN(DATE(date_available)), + MAX(DATE(date_available)) + FROM '.IMAGES_TABLE.' + JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id + WHERE category_id = '.$category['id'].' +;'; + list($image_count, $min_date, $max_date) = pwg_db_fetch_row(pwg_query($query)); + + if ($min_date == $max_date) + { + $intro = l10n( + 'This album contains %d photos, added on %s.', + $image_count, + format_date($min_date) + ); + } + else + { + $intro = l10n( + 'This album contains %d photos, added between %s and %s.', + $image_count, + format_date($min_date), + format_date($max_date) + ); + } +} +else +{ + $intro = l10n('This album contains no photo.'); +} + +$intro.= '
'.l10n('Numeric identifier : %d', $category['id']); + +$template->assign('INTRO', $intro); + +$template->assign( + 'U_MANAGE_RANKS', + $base_url.'element_set_ranks&cat_id='.$category['id'] + ); + +if ($category['is_virtual']) +{ + $template->assign( + array( + 'U_DELETE' => $self_url.'&delete='.$category['id'].'&pwg_token='.get_pwg_token(), + ) + ); +} +else +{ + $category['cat_full_dir'] = get_complete_dir($_GET['cat_id']); + $template->assign( + array( + 'CAT_FULL_DIR' => preg_replace('/\/$/', '', $category['cat_full_dir']) + ) + ); + + if ($conf['enable_synchronization']) + { + $template->assign( + 'U_SYNC', + $base_url.'site_update&site=1&cat_id='.$category['id'] + ); + } + +} + +// representant management +if ($category['has_images'] + or !empty($category['representative_picture_id'])) +{ + $tpl_representant = array(); + + // picture to display : the identified representant or the generic random + // representant ? + if (!empty($category['representative_picture_id'])) + { + $query = ' +SELECT id,representative_ext,path + FROM '.IMAGES_TABLE.' + WHERE id = '.$category['representative_picture_id'].' +;'; + $row = pwg_db_fetch_assoc(pwg_query($query)); + $src = DerivativeImage::thumb_url($row); + $url = get_root_url().'admin.php?page=photo-'.$category['representative_picture_id']; + + $tpl_representant['picture'] = + array( + 'SRC' => $src, + 'URL' => $url + ); + } + + // can the admin choose to set a new random representant ? + $tpl_representant['ALLOW_SET_RANDOM'] = ($category['has_images']) ? true : false; + + // can the admin delete the current representant ? + if ( + ($category['has_images'] + and $conf['allow_random_representative']) + or + (!$category['has_images'] + and !empty($category['representative_picture_id']))) + { + $tpl_representant['ALLOW_DELETE'] = true; + } + $template->assign('representant', $tpl_representant); +} + +if ($category['is_virtual']) +{ + // the category can be moved in any category but in itself, in any + // sub-category + $unmovables = get_subcat_ids(array($category['id'])); + + $query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE id NOT IN ('.implode(',', $unmovables).') +;'; + + display_select_cat_wrapper( + $query, + empty($category['id_uppercat']) ? array() : array($category['id_uppercat']), + 'move_cat_options' + ); +} + +trigger_action('loc_end_cat_modify'); + +//----------------------------------------------------------- sending html code +$template->assign_var_from_handle('ADMIN_CONTENT', 'album_properties'); +?> diff --git a/sources/admin/cat_move.php b/sources/admin/cat_move.php new file mode 100644 index 0000000..d596d4e --- /dev/null +++ b/sources/admin/cat_move.php @@ -0,0 +1,108 @@ + 0) + { + // TODO: tests + move_categories($_POST['selection'], $_POST['parent']); + } + else + { + $page['errors'][] = l10n('Select at least one album'); + } +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ +$template->set_filename('cat_move', 'cat_move.tpl'); + +$template->assign( + array( + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_move', + 'F_ACTION' => get_root_url().'admin.php?page=cat_move', + ) + ); + +// +-----------------------------------------------------------------------+ +// | tabs | +// +-----------------------------------------------------------------------+ + +$page['tab'] = 'move'; +include(PHPWG_ROOT_PATH.'admin/include/albums_tab.inc.php'); + +// +-----------------------------------------------------------------------+ +// | Categories display | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NULL +;'; +display_select_cat_wrapper( + $query, + array(), + 'category_to_move_options' + ); + +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' +;'; + +display_select_cat_wrapper( + $query, + array(), + 'category_parent_options' + ); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_move'); +?> diff --git a/sources/admin/cat_options.php b/sources/admin/cat_options.php new file mode 100644 index 0000000..f191095 --- /dev/null +++ b/sources/admin/cat_options.php @@ -0,0 +1,256 @@ +'; +// print_r($_POST); +// print ''; +if (isset($_POST['falsify']) + and isset($_POST['cat_true']) + and count($_POST['cat_true']) > 0) +{ + switch ($_GET['section']) + { + case 'comments' : + { + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET commentable = \'false\' + WHERE id IN ('.implode(',', $_POST['cat_true']).') +;'; + pwg_query($query); + break; + } + case 'visible' : + { + set_cat_visible($_POST['cat_true'], 'false'); + break; + } + case 'status' : + { + set_cat_status($_POST['cat_true'], 'private'); + break; + } + case 'representative' : + { + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = NULL + WHERE id IN ('.implode(',', $_POST['cat_true']).') +;'; + pwg_query($query); + break; + } + } +} +else if (isset($_POST['trueify']) + and isset($_POST['cat_false']) + and count($_POST['cat_false']) > 0) +{ + switch ($_GET['section']) + { + case 'comments' : + { + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET commentable = \'true\' + WHERE id IN ('.implode(',', $_POST['cat_false']).') +;'; + pwg_query($query); + break; + } + case 'visible' : + { + set_cat_visible($_POST['cat_false'], 'true'); + break; + } + case 'status' : + { + set_cat_status($_POST['cat_false'], 'public'); + break; + } + case 'representative' : + { + // theoretically, all categories in $_POST['cat_false'] contain at + // least one element, so Piwigo can find a representant. + set_random_representant($_POST['cat_false']); + break; + } + } +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames( + array( + 'cat_options' => 'cat_options.tpl', + 'double_select' => 'double_select.tpl' + ) + ); + +$page['section'] = isset($_GET['section']) ? $_GET['section'] : 'status'; +$base_url = PHPWG_ROOT_PATH.'admin.php?page=cat_options&section='; + +$template->assign( + array( + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_options', + 'F_ACTION'=>$base_url.$page['section'] + ) + ); + +// TabSheet +$tabsheet = new tabsheet(); +$tabsheet->set_id('cat_options'); +$tabsheet->select($page['section']); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | form display | +// +-----------------------------------------------------------------------+ + +// for each section, categories in the multiselect field can be : +// +// - true : commentable for comment section +// - false : un-commentable for comment section +// - NA : (not applicable) for virtual categories +// +// for true and false status, we associates an array of category ids, +// function display_select_categories will use the given CSS class for each +// option +$cats_true = array(); +$cats_false = array(); +switch ($page['section']) +{ + case 'comments' : + { + $query_true = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE commentable = \'true\' +;'; + $query_false = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE commentable = \'false\' +;'; + $template->assign( + array( + 'L_SECTION' => l10n('Authorize users to add comments on selected albums'), + 'L_CAT_OPTIONS_TRUE' => l10n('Authorized'), + 'L_CAT_OPTIONS_FALSE' => l10n('Forbidden'), + ) + ); + break; + } + case 'visible' : + { + $query_true = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE visible = \'true\' +;'; + $query_false = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE visible = \'false\' +;'; + $template->assign( + array( + 'L_SECTION' => l10n('Lock albums'), + 'L_CAT_OPTIONS_TRUE' => l10n('Unlocked'), + 'L_CAT_OPTIONS_FALSE' => l10n('Locked'), + ) + ); + break; + } + case 'status' : + { + $query_true = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE status = \'public\' +;'; + $query_false = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE status = \'private\' +;'; + $template->assign( + array( + 'L_SECTION' => l10n('Manage authorizations for selected albums'), + 'L_CAT_OPTIONS_TRUE' => l10n('Public'), + 'L_CAT_OPTIONS_FALSE' => l10n('Private'), + ) + ); + break; + } + case 'representative' : + { + $query_true = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE representative_picture_id IS NOT NULL +;'; + $query_false = ' +SELECT DISTINCT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=category_id + WHERE representative_picture_id IS NULL +;'; + $template->assign( + array( + 'L_SECTION' => l10n('Representative'), + 'L_CAT_OPTIONS_TRUE' => l10n('singly represented'), + 'L_CAT_OPTIONS_FALSE' => l10n('randomly represented') + ) + ); + break; + } +} +display_select_cat_wrapper($query_true,array(),'category_option_true'); +display_select_cat_wrapper($query_false,array(),'category_option_false'); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('DOUBLE_SELECT', 'double_select'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_options'); +?> \ No newline at end of file diff --git a/sources/admin/cat_perm.php b/sources/admin/cat_perm.php new file mode 100644 index 0000000..71653d9 --- /dev/null +++ b/sources/admin/cat_perm.php @@ -0,0 +1,304 @@ + 0) + { + // if you forbid access to an album, all sub-albums become + // automatically forbidden + $query = ' +DELETE + FROM '.GROUP_ACCESS_TABLE.' + WHERE group_id IN ('.implode(',', $deny_groups).') + AND cat_id IN ('.implode(',', get_subcat_ids(array($page['cat']))).') +;'; + pwg_query($query); + } + + // + // add permissions to groups + // + $grant_groups = $_POST['groups']; + if (count($grant_groups) > 0) + { + $cat_ids = get_uppercat_ids(array($page['cat'])); + if (isset($_POST['apply_on_sub'])) + { + $cat_ids = array_merge($cat_ids, get_subcat_ids(array($page['cat']))); + } + + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $cat_ids).') + AND status = \'private\' +;'; + $private_cats = array_from_query($query, 'id'); + + $inserts = array(); + foreach ($private_cats as $cat_id) + { + foreach ($grant_groups as $group_id) + { + $inserts[] = array( + 'group_id' => $group_id, + 'cat_id' => $cat_id + ); + } + } + + mass_inserts( + GROUP_ACCESS_TABLE, + array('group_id','cat_id'), + $inserts, + array('ignore'=>true) + ); + } + + // + // users + // + $query = ' +SELECT user_id + FROM '.USER_ACCESS_TABLE.' + WHERE cat_id = '.$page['cat'].' +;'; + $users_granted = array_from_query($query, 'user_id'); + + if (!isset($_POST['users'])) + { + $_POST['users'] = array(); + } + + // + // remove permissions to users + // + $deny_users = array_diff($users_granted, $_POST['users']); + if (count($deny_users) > 0) + { + // if you forbid access to an album, all sub-album become automatically + // forbidden + $query = ' +DELETE + FROM '.USER_ACCESS_TABLE.' + WHERE user_id IN ('.implode(',', $deny_users).') + AND cat_id IN ('.implode(',', get_subcat_ids(array($page['cat']))).') +;'; + pwg_query($query); + } + + // + // add permissions to users + // + $grant_users = $_POST['users']; + if (count($grant_users) > 0) + { + add_permission_on_category($page['cat'], $grant_users); + } + } + + $page['infos'][] = l10n('Album updated successfully'); +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ + +$template->set_filename('cat_perm', 'cat_perm.tpl'); + +$template->assign( + array( + 'CATEGORIES_NAV' => + get_cat_display_name_from_id( + $page['cat'], + 'admin.php?page=album-' + ), + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=cat_perm', + 'F_ACTION' => $admin_album_base_url.'-permissions', + 'private' => ('private' == $category['status']), + ) + ); + +// +-----------------------------------------------------------------------+ +// | form construction | +// +-----------------------------------------------------------------------+ + +// groups denied are the groups not granted. So we need to find all groups +// minus groups granted to find groups denied. + +$groups = array(); + +$query = ' +SELECT id, name + FROM '.GROUPS_TABLE.' + ORDER BY name ASC +;'; +$groups = simple_hash_from_query($query, 'id', 'name'); +$template->assign('groups', $groups); + +// groups granted to access the category +$query = ' +SELECT group_id + FROM '.GROUP_ACCESS_TABLE.' + WHERE cat_id = '.$page['cat'].' +;'; +$group_granted_ids = array_from_query($query, 'group_id'); +$template->assign('groups_selected', $group_granted_ids); + +// users... +$users = array(); + +$query = ' +SELECT '.$conf['user_fields']['id'].' AS id, + '.$conf['user_fields']['username'].' AS username + FROM '.USERS_TABLE.' +;'; +$users = simple_hash_from_query($query, 'id', 'username'); +$template->assign('users', $users); + + +$query = ' +SELECT user_id + FROM '.USER_ACCESS_TABLE.' + WHERE cat_id = '.$page['cat'].' +;'; +$user_granted_direct_ids = array_from_query($query, 'user_id'); +$template->assign('users_selected', $user_granted_direct_ids); + + +$user_granted_indirect_ids = array(); +if (count($group_granted_ids) > 0) +{ + $granted_groups = array(); + + $query = ' +SELECT user_id, group_id + FROM '.USER_GROUP_TABLE.' + WHERE group_id IN ('.implode(',', $group_granted_ids).') +'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if (!isset($granted_groups[ $row['group_id'] ])) + { + $granted_groups[ $row['group_id'] ] = array(); + } + $granted_groups[ $row['group_id'] ][] = $row['user_id']; + } + + $user_granted_by_group_ids = array(); + + foreach ($granted_groups as $group_users) + { + $user_granted_by_group_ids = array_merge($user_granted_by_group_ids, $group_users); + } + + $user_granted_by_group_ids = array_unique($user_granted_by_group_ids); + + $user_granted_indirect_ids = array_diff( + $user_granted_by_group_ids, + $user_granted_direct_ids + ); + + $template->assign('nb_users_granted_indirect', count($user_granted_indirect_ids)); + + foreach ($granted_groups as $group_id => $group_users) + { + $group_usernames = array(); + foreach ($group_users as $user_id) + { + if (in_array($user_id, $user_granted_indirect_ids)) + { + $group_usernames[] = $users[$user_id]; + } + } + + $template->append( + 'user_granted_indirect_groups', + array( + 'group_name' => $groups[$group_id], + 'group_users' => implode(', ', $group_usernames), + ) + ); + } +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ +$template->assign(array('PWG_TOKEN' => get_pwg_token(), 'INHERIT' => $conf['inheritance_by_default'])); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_perm'); +?> diff --git a/sources/admin/comments.php b/sources/admin/comments.php new file mode 100644 index 0000000..2740d77 --- /dev/null +++ b/sources/admin/comments.php @@ -0,0 +1,232 @@ +set_filenames(array('comments'=>'comments.tpl')); + +$template->assign( + array( + 'F_ACTION' => get_root_url().'admin.php?page=comments' + ) + ); + +// +-----------------------------------------------------------------------+ +// | Tabs | +// +-----------------------------------------------------------------------+ + +include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php'); + +$tabsheet = new tabsheet(); +$tabsheet->set_id('comments'); +$tabsheet->select(''); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | comments display | +// +-----------------------------------------------------------------------+ + +$nb_total = 0; +$nb_pending = 0; + +$query = ' +SELECT + COUNT(*) AS counter, + validated + FROM '.COMMENTS_TABLE.' + GROUP BY validated +;'; +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $nb_total+= $row['counter']; + + if ('false' == $row['validated']) + { + $nb_pending = $row['counter']; + } +} + +if (!isset($_GET['filter']) and $nb_pending > 0) +{ + $page['filter'] = 'pending'; +} +else +{ + $page['filter'] = 'all'; +} + +if (isset($_GET['filter']) and 'pending' == $_GET['filter']) +{ + $page['filter'] = $_GET['filter']; +} + +$template->assign( + array( + 'nb_total' => $nb_total, + 'nb_pending' => $nb_pending, + 'filter' => $page['filter'], + ) + ); + +$where_clauses = array('1=1'); + +if ('pending' == $page['filter']) +{ + $where_clauses[] = 'validated=\'false\''; +} + +$query = ' +SELECT + c.id, + c.image_id, + c.date, + c.author, + '.$conf['user_fields']['username'].' AS username, + c.content, + i.path, + i.representative_ext, + validated + FROM '.COMMENTS_TABLE.' AS c + INNER JOIN '.IMAGES_TABLE.' AS i + ON i.id = c.image_id + LEFT JOIN '.USERS_TABLE.' AS u + ON u.'.$conf['user_fields']['id'].' = c.author_id + WHERE '.implode(' AND ', $where_clauses).' + ORDER BY c.date DESC + LIMIT '.$page['start'].', '.$conf['comments_page_nb_comments'].' +;'; +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $thumb = DerivativeImage::thumb_url( + array( + 'id'=>$row['image_id'], + 'path'=>$row['path'], + ) + ); + if (empty($row['author_id'])) + { + $author_name = $row['author']; + } + else + { + $author_name = stripslashes($row['username']); + } + $template->append( + 'comments', + array( + 'U_PICTURE' => get_root_url().'admin.php?page=photo-'.$row['image_id'], + 'ID' => $row['id'], + 'TN_SRC' => $thumb, + 'AUTHOR' => trigger_event('render_comment_author', $author_name), + 'DATE' => format_date($row['date'], true), + 'CONTENT' => trigger_event('render_comment_content',$row['content']), + 'IS_PENDING' => ('false' == $row['validated']), + ) + ); + + $list[] = $row['id']; +} + +// +-----------------------------------------------------------------------+ +// | navigation bar | +// +-----------------------------------------------------------------------+ + +$navbar = create_navigation_bar( + get_root_url().'admin.php'.get_query_string_diff(array('start')), + ('pending' == $page['filter'] ? $nb_pending : $nb_total), + $page['start'], + $conf['comments_page_nb_comments'] + ); + +$template->assign('navbar', $navbar); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'comments'); + +?> diff --git a/sources/admin/configuration.php b/sources/admin/configuration.php new file mode 100644 index 0000000..f1b943c --- /dev/null +++ b/sources/admin/configuration.php @@ -0,0 +1,605 @@ + '', + 'file ASC' => l10n('File name, A → Z'), + 'file DESC' => l10n('File name, Z → A'), + 'name ASC' => l10n('Photo title, A → Z'), + 'name DESC' => l10n('Photo title, Z → A'), + 'date_creation DESC' => l10n('Date created, new → old'), + 'date_creation ASC' => l10n('Date created, old → new'), + 'date_available DESC' => l10n('Date posted, new → old'), + 'date_available ASC' => l10n('Date posted, old → new'), + 'rating_score DESC' => l10n('Rating score, high → low'), + 'rating_score ASC' => l10n('Rating score, low → high'), + 'hit DESC' => l10n('Visits, high → low'), + 'hit ASC' => l10n('Visits, low → high'), + 'id ASC' => l10n('Numeric identifier, 1 → 9'), + 'id DESC' => l10n('Numeric identifier, 9 → 1'), + 'rank ASC' => l10n('Manual sort order'), + ); + +$comments_order = array( + 'ASC' => l10n('Show oldest comments first'), + 'DESC' => l10n('Show latest comments first'), + ); + +$mail_themes = array( + 'clear' => 'Clear', + 'dark' => 'Dark', + ); + +//------------------------------ verification and registration of modifications +if (isset($_POST['submit'])) +{ + $int_pattern = '/^\d+$/'; + + switch ($page['section']) + { + case 'main' : + { + if ( !isset($conf['order_by_custom']) and !isset($conf['order_by_inside_category_custom']) ) + { + if ( !empty($_POST['order_by']) ) + { + $used = array(); + foreach ($_POST['order_by'] as $i => $val) + { + if (empty($val) or isset($used[$val])) + { + unset($_POST['order_by'][$i]); + } + else + { + $used[$val] = true; + } + } + if ( !count($_POST['order_by']) ) + { + $page['errors'][] = l10n('No order field selected'); + } + else + { + // limit to the number of available parameters + $order_by = $order_by_inside_category = array_slice($_POST['order_by'], 0, ceil(count($sort_fields)/2)); + + // there is no rank outside categories + if ( ($i = array_search('rank ASC', $order_by)) !== false) + { + unset($order_by[$i]); + } + + // must define a default order_by if user want to order by rank only + if ( count($order_by) == 0 ) + { + $order_by = array('id ASC'); + } + + $_POST['order_by'] = 'ORDER BY '.implode(', ', $order_by); + $_POST['order_by_inside_category'] = 'ORDER BY '.implode(', ', $order_by_inside_category); + } + } + else + { + $page['errors'][] = l10n('No order field selected'); + } + } + + foreach( $main_checkboxes as $checkbox) + { + $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; + } + break; + } + case 'watermark' : + { + include(PHPWG_ROOT_PATH.'admin/include/configuration_watermark_process.inc.php'); + break; + } + case 'sizes' : + { + include(PHPWG_ROOT_PATH.'admin/include/configuration_sizes_process.inc.php'); + break; + } + case 'comments' : + { + // the number of comments per page must be an integer between 5 and 50 + // included + if (!preg_match($int_pattern, $_POST['nb_comment_page']) + or $_POST['nb_comment_page'] < 5 + or $_POST['nb_comment_page'] > 50) + { + $page['errors'][] = l10n('The number of comments a page must be between 5 and 50 included.'); + } + foreach( $comments_checkboxes as $checkbox) + { + $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; + } + break; + } + case 'default' : + { + // Never go here + break; + } + case 'display' : + { + if (!preg_match($int_pattern, $_POST['nb_categories_page']) + or $_POST['nb_categories_page'] < 4) + { + $page['errors'][] = l10n('The number of albums a page must be above 4.'); + } + foreach( $display_checkboxes as $checkbox) + { + $_POST[$checkbox] = empty($_POST[$checkbox])?'false':'true'; + } + foreach( $display_info_checkboxes as $checkbox) + { + $_POST['picture_informations'][$checkbox] = + empty($_POST['picture_informations'][$checkbox])? false : true; + } + $_POST['picture_informations'] = addslashes(serialize($_POST['picture_informations'])); + break; + } + } + + // updating configuration if no error found + if (!in_array($page['section'], array('sizes', 'watermark')) and count($page['errors']) == 0) + { + //echo '
'; print_r($_POST); echo '
'; + $result = pwg_query('SELECT param FROM '.CONFIG_TABLE); + while ($row = pwg_db_fetch_assoc($result)) + { + if (isset($_POST[$row['param']])) + { + $value = $_POST[$row['param']]; + + if ('gallery_title' == $row['param']) + { + if (!$conf['allow_html_descriptions']) + { + $value = strip_tags($value); + } + } + + $query = ' +UPDATE '.CONFIG_TABLE.' +SET value = \''. str_replace("\'", "''", $value).'\' +WHERE param = \''.$row['param'].'\' +;'; + pwg_query($query); + } + } + $page['infos'][] = l10n('Information data registered in database'); + } + + //------------------------------------------------------ $conf reinitialization + load_conf_from_db(); +} + +// restore default derivatives settings +if ('sizes' == $page['section'] and isset($_GET['action']) and 'restore_settings' == $_GET['action']) +{ + ImageStdParams::set_and_save( ImageStdParams::get_default_sizes() ); + pwg_query('DELETE FROM '.CONFIG_TABLE.' WHERE param = \'disabled_derivatives\''); + clear_derivative_cache(); + + $page['infos'][] = l10n('Your configuration settings are saved'); +} + +//----------------------------------------------------- template initialization +$template->set_filename('config', 'configuration.tpl'); + +// TabSheet +$tabsheet = new tabsheet(); +$tabsheet->set_id('configuration'); +$tabsheet->select($page['section']); +$tabsheet->assign(); + +$action = get_root_url().'admin.php?page=configuration'; +$action.= '&section='.$page['section']; + +$template->assign( + array( + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=configuration', + 'F_ACTION'=>$action + )); + +switch ($page['section']) +{ + case 'main' : + { + + function order_by_is_local() + { + @include(PHPWG_ROOT_PATH. 'local/config/config.inc.php'); + if (isset($conf['local_dir_site'])) + { + @include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR. 'config/config.inc.php'); + } + + return isset($conf['order_by']) or isset($conf['order_by_inside_category']); + } + + if (order_by_is_local()) + { + $page['warnings'][] = l10n('You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'); + } + + if ( isset($conf['order_by_custom']) or isset($conf['order_by_inside_category_custom']) ) + { + $order_by = array(''); + $template->assign('ORDER_BY_IS_CUSTOM', true); + } + else + { + $out = array(); + $order_by = trim($conf['order_by_inside_category']); + $order_by = str_replace('ORDER BY ', null, $order_by); + $order_by = explode(', ', $order_by); + } + + $template->assign( + 'main', + array( + 'CONF_GALLERY_TITLE' => htmlspecialchars($conf['gallery_title']), + 'CONF_PAGE_BANNER' => htmlspecialchars($conf['page_banner']), + 'week_starts_on_options' => array( + 'sunday' => $lang['day'][0], + 'monday' => $lang['day'][1], + ), + 'week_starts_on_options_selected' => $conf['week_starts_on'], + 'mail_theme' => $conf['mail_theme'], + 'mail_theme_options' => $mail_themes, + 'order_by' => $order_by, + 'order_by_options' => $sort_fields, + ) + ); + + foreach ($main_checkboxes as $checkbox) + { + $template->append( + 'main', + array( + $checkbox => $conf[$checkbox] + ), + true + ); + } + break; + } + case 'comments' : + { + $template->assign( + 'comments', + array( + 'NB_COMMENTS_PAGE'=>$conf['nb_comment_page'], + 'comments_order'=>$conf['comments_order'], + 'comments_order_options'=> $comments_order + ) + ); + + foreach ($comments_checkboxes as $checkbox) + { + $template->append( + 'comments', + array( + $checkbox => $conf[$checkbox] + ), + true + ); + } + break; + } + case 'default' : + { + $edit_user = build_user($conf['guest_id'], false); + include_once(PHPWG_ROOT_PATH.'profile.php'); + + $errors = array(); + if (save_profile_from_post($edit_user, $errors)) + { + // Reload user + $edit_user = build_user($conf['guest_id'], false); + $page['infos'][] = l10n('Information data registered in database'); + } + $page['errors'] = array_merge($page['errors'], $errors); + + load_profile_in_template( + $action, + '', + $edit_user + ); + $template->assign('default', array()); + break; + } + case 'display' : + { + foreach ($display_checkboxes as $checkbox) + { + $template->append( + 'display', + array( + $checkbox => $conf[$checkbox] + ), + true + ); + } + $template->append( + 'display', + array( + 'picture_informations' => unserialize($conf['picture_informations']), + 'NB_CATEGORIES_PAGE' => $conf['nb_categories_page'], + ), + true + ); + break; + } + case 'sizes' : + { + // we only load the derivatives if it was not already loaded: it occurs + // when submitting the form and an error remains + if (!isset($page['sizes_loaded_in_tpl'])) + { + $is_gd = (pwg_image::get_library()=='gd')? true : false; + $template->assign('is_gd', $is_gd); + $template->assign( + 'sizes', + array( + 'original_resize_maxwidth' => $conf['original_resize_maxwidth'], + 'original_resize_maxheight' => $conf['original_resize_maxheight'], + 'original_resize_quality' => $conf['original_resize_quality'], + ) + ); + + foreach ($sizes_checkboxes as $checkbox) + { + $template->append( + 'sizes', + array( + $checkbox => $conf[$checkbox] + ), + true + ); + } + + // derivatives = multiple size + $enabled = ImageStdParams::get_defined_type_map(); + $disabled = @unserialize(@$conf['disabled_derivatives']); + if ($disabled === false) + { + $disabled = array(); + } + + $tpl_vars = array(); + foreach(ImageStdParams::get_all_types() as $type) + { + $tpl_var = array(); + + $tpl_var['must_square'] = ($type==IMG_SQUARE ? true : false); + $tpl_var['must_enable'] = ($type==IMG_SQUARE || $type==IMG_THUMB)? true : false; + + if ($params = @$enabled[$type]) + { + $tpl_var['enabled'] = true; + } + else + { + $tpl_var['enabled']=false; + $params=@$disabled[$type]; + } + + if ($params) + { + list($tpl_var['w'],$tpl_var['h']) = $params->sizing->ideal_size; + if ( ($tpl_var['crop'] = round(100*$params->sizing->max_crop)) > 0) + { + list($tpl_var['minw'],$tpl_var['minh']) = $params->sizing->min_size; + } + else + { + $tpl_var['minw'] = $tpl_var['minh'] = ""; + } + $tpl_var['sharpen'] = $params->sharpen; + } + $tpl_vars[$type]=$tpl_var; + } + $template->assign('derivatives', $tpl_vars); + $template->assign('resize_quality', ImageStdParams::$quality); + + $tpl_vars = array(); + $now = time(); + foreach(ImageStdParams::$custom as $custom=>$time) + { + $tpl_vars[$custom] = ($now-$time<=24*3600) ? l10n('today') : time_since($time, 'day'); + } + $template->assign('custom_derivatives', $tpl_vars); + } + + break; + } + case 'watermark' : + { + $watermark_files = array(); + foreach (glob(PHPWG_ROOT_PATH.'themes/default/watermarks/*.png') as $file) + { + $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH)); + } + if ( ($glob=glob(PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'watermarks/*.png')) !== false) + { + foreach ($glob as $file) + { + $watermark_files[] = substr($file, strlen(PHPWG_ROOT_PATH)); + } + } + $watermark_filemap = array( '' => '---' ); + foreach( $watermark_files as $file) + { + $display = basename($file); + $watermark_filemap[$file] = $display; + } + $template->assign('watermark_files', $watermark_filemap); + + if ($template->get_template_vars('watermark') === null) + { + $wm = ImageStdParams::get_watermark(); + + $position = 'custom'; + if ($wm->xpos == 0 and $wm->ypos == 0) + { + $position = 'topleft'; + } + if ($wm->xpos == 100 and $wm->ypos == 0) + { + $position = 'topright'; + } + if ($wm->xpos == 50 and $wm->ypos == 50) + { + $position = 'middle'; + } + if ($wm->xpos == 0 and $wm->ypos == 100) + { + $position = 'bottomleft'; + } + if ($wm->xpos == 100 and $wm->ypos == 100) + { + $position = 'bottomright'; + } + + if ($wm->xrepeat != 0) + { + $position = 'custom'; + } + + $template->assign( + 'watermark', + array( + 'file' => $wm->file, + 'minw' => $wm->min_size[0], + 'minh' => $wm->min_size[1], + 'xpos' => $wm->xpos, + 'ypos' => $wm->ypos, + 'xrepeat' => $wm->xrepeat, + 'opacity' => $wm->opacity, + 'position' => $position, + ) + ); + } + + break; + } +} + +//----------------------------------------------------------- sending html code +$template->assign_var_from_handle('ADMIN_CONTENT', 'config'); +?> diff --git a/sources/admin/element_set_ranks.php b/sources/admin/element_set_ranks.php new file mode 100644 index 0000000..289cc2a --- /dev/null +++ b/sources/admin/element_set_ranks.php @@ -0,0 +1,275 @@ + $category_id, + 'image_id' => $id, + 'rank' => ++$current_rank, + ); + } + $fields = array( + 'primary' => array('image_id', 'category_id'), + 'update' => array('rank') + ); + mass_updates(IMAGE_CATEGORY_TABLE, $fields, $datas); +} + +// +-----------------------------------------------------------------------+ +// | global mode form submission | +// +-----------------------------------------------------------------------+ + +$image_order_choices = array('default', 'rank', 'user_define'); +$image_order_choice = 'default'; + +if (isset($_POST['submit'])) +{ + if (isset($_POST['rank_of_image'])) + { + asort($_POST['rank_of_image'], SORT_NUMERIC); + + save_images_order( + $page['category_id'], + array_keys($_POST['rank_of_image']) + ); + + $page['infos'][] = l10n('Images manual order was saved'); + } + + if (!empty($_POST['image_order_choice']) + && in_array($_POST['image_order_choice'], $image_order_choices)) + { + $image_order_choice = $_POST['image_order_choice']; + } + + $image_order = null; + if ($image_order_choice=='user_define') + { + for ($i=0; $i<3; $i++) + { + if (!empty($_POST['image_order'][$i])) + { + if (!empty($image_order)) $image_order.= ','; + $image_order.= $_POST['image_order'][$i]; + } + } + } + elseif ($image_order_choice=='rank') + { + $image_order = 'rank ASC'; + } + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET image_order = '.(isset($image_order) ? '\''.$image_order.'\'' : 'NULL').' + WHERE id='.$page['category_id']; + pwg_query($query); + + if (isset($_POST['image_order_subcats'])) + { + $cat_info = get_cat_info($page['category_id']); + + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET image_order = '.(isset($image_order) ? '\''.$image_order.'\'' : 'NULL').' + WHERE uppercats LIKE \''.$cat_info['uppercats'].',%\''; + pwg_query($query); + } + + $page['infos'][] = l10n('Your configuration settings are saved'); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ +$template->set_filenames( + array('element_set_ranks' => 'element_set_ranks.tpl') + ); + +$base_url = get_root_url().'admin.php'; + +$query = ' +SELECT * + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$page['category_id'].' +;'; +$category = pwg_db_fetch_assoc(pwg_query($query)); + +if ($category['image_order']=='rank') +{ + $image_order_choice = 'rank'; +} +elseif ($category['image_order']!='') +{ + $image_order_choice = 'user_define'; +} + +// Navigation path +$navigation = get_cat_display_name_cache( + $category['uppercats'], + get_root_url().'admin.php?page=album-' + ); + +$template->assign( + array( + 'CATEGORIES_NAV' => $navigation, + 'F_ACTION' => $base_url.get_query_string_diff(array()), + ) + ); + +// +-----------------------------------------------------------------------+ +// | thumbnails | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT + id, + file, + path, + representative_ext, + width, height, rotation, + name, + rank + FROM '.IMAGES_TABLE.' + JOIN '.IMAGE_CATEGORY_TABLE.' ON image_id = id + WHERE category_id = '.$page['category_id'].' + ORDER BY rank +;'; +$result = pwg_query($query); +if (pwg_db_num_rows($result) > 0) +{ + // template thumbnail initialization + $current_rank = 1; + $derivativeParams = ImageStdParams::get_by_type(IMG_SQUARE); + while ($row = pwg_db_fetch_assoc($result)) + { + $derivative = new DerivativeImage($derivativeParams, new SrcImage($row)); + + if ( !empty( $row['name'] ) ) + { + $thumbnail_name = $row['name']; + } + else + { + $file_wo_ext = get_filename_wo_extension($row['file']); + $thumbnail_name = str_replace('_', ' ', $file_wo_ext); + } + $current_rank++; + $template->append( + 'thumbnails', + array( + 'ID' => $row['id'], + 'NAME' => $thumbnail_name, + 'TN_SRC' => $derivative->get_url(), + 'RANK' => $current_rank * 10, + 'SIZE' => $derivative->get_size(), + ) + ); + } +} +// image order management +$sort_fields = array( + '' => '', + 'file ASC' => l10n('File name, A → Z'), + 'file DESC' => l10n('File name, Z → A'), + 'name ASC' => l10n('Photo title, A → Z'), + 'name DESC' => l10n('Photo title, Z → A'), + 'date_creation DESC' => l10n('Date created, new → old'), + 'date_creation ASC' => l10n('Date created, old → new'), + 'date_available DESC' => l10n('Date posted, new → old'), + 'date_available ASC' => l10n('Date posted, old → new'), + 'rating_score DESC' => l10n('Rating score, high → low'), + 'rating_score ASC' => l10n('Rating score, low → high'), + 'hit DESC' => l10n('Visits, high → low'), + 'hit ASC' => l10n('Visits, low → high'), + 'id ASC' => l10n('Numeric identifier, 1 → 9'), + 'id DESC' => l10n('Numeric identifier, 9 → 1'), + 'rank ASC' => l10n('Manual sort order'), + ); + +$template->assign('image_order_options', $sort_fields); + +$image_order = explode(',', $category['image_order']); + +for ($i=0; $i<3; $i++) // 3 fields +{ + if ( isset($image_order[$i]) ) + { + $template->append('image_order', $image_order[$i]); + } + else + { + $template->append('image_order', ''); + } +} + +$template->assign('image_order_choice', $image_order_choice); + + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'element_set_ranks'); +?> diff --git a/sources/admin/extend_for_templates.php b/sources/admin/extend_for_templates.php new file mode 100644 index 0000000..0bab121 --- /dev/null +++ b/sources/admin/extend_for_templates.php @@ -0,0 +1,204 @@ + Random */ + 'tags', + ); + $query = ' +SELECT permalink + FROM '.CATEGORIES_TABLE.' + WHERE permalink IS NOT NULL +'; + +/* Add active permalinks */ +$permalinks = array_from_query($query, 'permalink'); +$relevant_parameters = array_merge($relevant_parameters, $permalinks); + +/* Link all supported templates to their respective handle */ +$eligible_templates = array( + '----------' => 'N/A', + 'about.tpl' => 'about', + 'comments.tpl' => 'comments', + 'comment_list.tpl' => 'comment_list', + 'footer.tpl' => 'tail', + 'header.tpl' => 'header', + 'identification.tpl' => 'identification', + 'index.tpl' => 'index', + 'mainpage_categories.tpl' => 'index_category_thumbnails', + 'menubar.tpl' => 'menubar', + 'menubar_categories.tpl' => 'mbCategories', + 'menubar_identification.tpl' => 'mbIdentification', + 'menubar_links.tpl' => 'mbLinks', + 'menubar_menu.tpl' => 'mbMenu', + 'menubar_specials.tpl' => 'mbSpecials', + 'menubar_tags.tpl' => 'mbTags', + 'month_calendar.tpl' => 'month_calendar', + 'navigation_bar.tpl' => 'navbar', + 'nbm.tpl' => 'nbm', + 'notification.tpl' => 'notification', + 'password.tpl' => 'password', + 'picture.tpl' => 'picture', + 'picture_content.tpl' => 'default_content', + 'picture_nav_buttons.tpl' => 'picture_nav_buttons', + 'popuphelp.tpl' => 'popuphelp', + 'profile.tpl' => 'profile', + 'profile_content.tpl' => 'profile_content', + 'redirect.tpl' => 'redirect', + 'register.tpl' => 'register', + 'search.tpl' => 'search', + 'search_rules.tpl' => 'search_rules', + 'slideshow.tpl' => 'slideshow', + 'tags.tpl' => 'tags', + 'thumbnails.tpl' => 'index_thumbnails', +); + +$flip_templates = array_flip($eligible_templates); + +$available_templates = array_merge( + array('N/A' => '----------'), + get_dirs(PHPWG_ROOT_PATH.'themes')); + +// +-----------------------------------------------------------------------+ +// | selected templates | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['submit'])) +{ + $replacements = array(); + $i = 0; + while (isset($_POST['reptpl'][$i])) + { + $newtpl = $_POST['reptpl'][$i]; + $original = $_POST['original'][$i]; + $handle = $eligible_templates[$original]; + $url_keyword = $_POST['url'][$i]; + if ($url_keyword == '----------') $url_keyword = 'N/A'; + $bound_tpl = $_POST['bound'][$i]; + if ($bound_tpl == '----------') $bound_tpl = 'N/A'; + if ($handle != 'N/A') + { + $replacements[$newtpl] = array($handle, $url_keyword, $bound_tpl); + } + $i++; + } + $conf['extents_for_templates'] = serialize($replacements); + $tpl_extension = $replacements; + /* ecrire la nouvelle conf */ + $query = ' +UPDATE '.CONFIG_TABLE.' + SET value = \''. $conf['extents_for_templates'] .'\' +WHERE param = \'extents_for_templates\';'; + if (pwg_query($query)) + { + $page['infos'][] = l10n('Templates configuration has been recorded.'); + } +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +/* Clearing (remove old extents, add new ones) */ +foreach ($tpl_extension as $file => $conditions) +{ + if ( !in_array($file,$new_extensions) ) unset($tpl_extension[$file]); + else $new_extensions = array_diff($new_extensions,array($file)); +} +foreach ($new_extensions as $file) +{ + $tpl_extension[$file] = array('N/A', 'N/A', 'N/A'); +} + +$template->set_filenames(array('extend_for_templates' + => 'extend_for_templates.tpl')); + +$base_url = PHPWG_ROOT_PATH.'admin.php?page=extend_for_templates'; + +$template->assign( + array( + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=extend_for_templates', + )); +ksort($tpl_extension); +foreach ($tpl_extension as $file => $conditions) +{ + $handle = $conditions[0]; + $url_keyword = $conditions[1]; + $bound_tpl = $conditions[2]; + { + $template->append('extents', + array( + 'replacer' => $file, + 'url_parameter' => $relevant_parameters, + 'original_tpl' => array_keys($eligible_templates), + 'bound_tpl' => $available_templates, + 'selected_tpl' => $flip_templates[$handle], + 'selected_url' => $url_keyword, + 'selected_bound' => $bound_tpl,) + ); + } +} +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'extend_for_templates'); +?> \ No newline at end of file diff --git a/sources/admin/group_list.php b/sources/admin/group_list.php new file mode 100644 index 0000000..5c53a8b --- /dev/null +++ b/sources/admin/group_list.php @@ -0,0 +1,431 @@ +set_id('groups'); +$tabsheet->select('group_list'); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | Check Access and exit when user status is not ok | +// +-----------------------------------------------------------------------+ +check_status(ACCESS_ADMINISTRATOR); + +if (!empty($_POST) or isset($_GET['delete']) or isset($_GET['toggle_is_default'])) +{ + check_pwg_token(); +} +// +-----------------------------------------------------------------------+ +// | add a group | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['submit_add'])) +{ + if (empty($_POST['groupname'])) + { + $page['errors'][] = l10n('The name of a group must not contain " or \' or be empty.'); + } + if (count($page['errors']) == 0) + { + // is the group not already existing ? + $query = ' +SELECT COUNT(*) + FROM '.GROUPS_TABLE.' + WHERE name = \''.$_POST['groupname'].'\' +;'; + list($count) = pwg_db_fetch_row(pwg_query($query)); + if ($count != 0) + { + $page['errors'][] = l10n('This name is already used by another group.'); + } + } + if (count($page['errors']) == 0) + { + // creating the group + $query = ' +INSERT INTO '.GROUPS_TABLE.' + (name) + VALUES + (\''.pwg_db_real_escape_string($_POST['groupname']).'\') +;'; + pwg_query($query); + + $page['infos'][] = l10n('group "%s" added', $_POST['groupname']); + } +} + +// +-----------------------------------------------------------------------+ +// | action send | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) and isset($_POST['selectAction']) and isset($_POST['group_selection'])) +{ + // if the user tries to apply an action, it means that there is at least 1 + // photo in the selection + $groups = $_POST['group_selection']; + if (count($groups) == 0) + { + $page['errors'][] = l10n('Select at least one group'); + } + + $action = $_POST['selectAction']; + + // + + // |rename a group + // + + + if ($action=="rename") + { + // is the group not already existing ? + $query = ' +SELECT name + FROM '.GROUPS_TABLE.' +;'; + $group_names = array_from_query($query, 'name'); + foreach($groups as $group) + { + if ( in_array($_POST['rename_'.$group.''], $group_names)) + { + $page['errors'][] = $_POST['rename_'.$group.''].' | '.l10n('This name is already used by another group.'); + } + elseif ( !empty($_POST['rename_'.$group.''])) + { + $query = ' + UPDATE '.GROUPS_TABLE.' + SET name = \''.pwg_db_real_escape_string($_POST['rename_'.$group.'']).'\' + WHERE id = '.$group.' + ;'; + pwg_query($query); + } + } + } + + // + + // |delete a group + // + + + if ($action=="delete" and isset($_POST['confirm_deletion']) and $_POST['confirm_deletion']) + { + foreach($groups as $group) + { + // destruction of the access linked to the group + $query = ' + DELETE + FROM '.GROUP_ACCESS_TABLE.' + WHERE group_id = '.$group.' + ;'; + pwg_query($query); + + // destruction of the users links for this group + $query = ' + DELETE + FROM '.USER_GROUP_TABLE.' + WHERE group_id = '.$group.' + ;'; + pwg_query($query); + + $query = ' + SELECT name + FROM '.GROUPS_TABLE.' + WHERE id = '.$group.' + ;'; + list($groupname) = pwg_db_fetch_row(pwg_query($query)); + + // destruction of the group + $query = ' + DELETE + FROM '.GROUPS_TABLE.' + WHERE id = '.$group.' + ;'; + pwg_query($query); + + $page['infos'][] = l10n('group "%s" deleted', $groupname); + } + } + + // + + // |merge groups into a new one + // + + + if ($action=="merge" and count($groups) > 1) + { + // is the group not already existing ? + $query = ' +SELECT COUNT(*) + FROM '.GROUPS_TABLE.' + WHERE name = \''.pwg_db_real_escape_string($_POST['merge']).'\' +;'; + list($count) = pwg_db_fetch_row(pwg_query($query)); + if ($count != 0) + { + $page['errors'][] = l10n('This name is already used by another group.'); + } + else + { + // creating the group + $query = ' + INSERT INTO '.GROUPS_TABLE.' + (name) + VALUES + (\''.pwg_db_real_escape_string($_POST['merge']).'\') + ;'; + pwg_query($query); + $query = ' + SELECT id + FROM '.GROUPS_TABLE.' + WHERE name = \''.pwg_db_real_escape_string($_POST['merge']).'\' + ;'; + list($groupid) = pwg_db_fetch_row(pwg_query($query)); + } + $grp_access = array(); + $usr_grp = array(); + foreach($groups as $group) + { + $query = ' + SELECT * + FROM '.GROUP_ACCESS_TABLE.' + WHERE group_id = '.$group.' + ;'; + $res=pwg_query($query); + while ($row = pwg_db_fetch_assoc($res)) + { + $new_grp_access= array( + 'cat_id' => $row['cat_id'], + 'group_id' => $groupid + ); + if (!in_array($new_grp_access,$grp_access)) + { + $grp_access[]=$new_grp_access; + } + } + + $query = ' + SELECT * + FROM '.USER_GROUP_TABLE.' + WHERE group_id = '.$group.' + ;'; + $res=pwg_query($query); + while ($row = pwg_db_fetch_assoc($res)) + { + $new_usr_grp= array( + 'user_id' => $row['user_id'], + 'group_id' => $groupid + ); + if (!in_array($new_usr_grp,$usr_grp)) + { + $usr_grp[]=$new_usr_grp; + } + } + } + mass_inserts(USER_GROUP_TABLE, array('user_id','group_id'), $usr_grp); + mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $grp_access); + + $page['infos'][] = l10n('group "%s" added', $_POST['merge']); + } + + // + + // |duplicate a group + // + + + if ($action=="duplicate" ) + { + foreach($groups as $group) + { + if ( empty($_POST['duplicate_'.$group.'']) ) + { + break; + } + // is the group not already existing ? + $query = ' + SELECT COUNT(*) + FROM '.GROUPS_TABLE.' + WHERE name = \''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\' + ;'; + list($count) = pwg_db_fetch_row(pwg_query($query)); + if ($count != 0) + { + $page['errors'][] = l10n('This name is already used by another group.'); + break; + } + // creating the group + $query = ' + INSERT INTO '.GROUPS_TABLE.' + (name) + VALUES + (\''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\') + ;'; + pwg_query($query); + $query = ' + SELECT id + FROM '.GROUPS_TABLE.' + WHERE name = \''.pwg_db_real_escape_string($_POST['duplicate_'.$group.'']).'\' + ;'; + + list($groupid) = pwg_db_fetch_row(pwg_query($query)); + $query = ' + SELECT * + FROM '.GROUP_ACCESS_TABLE.' + WHERE group_id = '.$group.' + ;'; + $grp_access = array(); + $res=pwg_query($query); + while ($row = pwg_db_fetch_assoc($res)) + { + $grp_access[] = array( + 'cat_id' => $row['cat_id'], + 'group_id' => $groupid + ); + } + mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $grp_access); + + $query = ' + SELECT * + FROM '.USER_GROUP_TABLE.' + WHERE group_id = '.$group.' + ;'; + $usr_grp = array(); + $res=pwg_query($query); + while ($row = pwg_db_fetch_assoc($res)) + { + $usr_grp[] = array( + 'user_id' => $row['user_id'], + 'group_id' => $groupid + ); + } + mass_inserts(USER_GROUP_TABLE, array('user_id','group_id'), $usr_grp); + + $page['infos'][] = l10n('group "%s" added', $_POST['duplicate_'.$group.'']); + } + } + + + // + + // | toggle_default + // + + + if ($action=="toggle_default") + { + foreach($groups as $group) + { + $query = ' + SELECT name, is_default + FROM '.GROUPS_TABLE.' + WHERE id = '.$group.' + ;'; + list($groupname, $is_default) = pwg_db_fetch_row(pwg_query($query)); + + // update of the group + $query = ' + UPDATE '.GROUPS_TABLE.' + SET is_default = \''.boolean_to_string(!get_boolean($is_default)).'\' + WHERE id = '.$group.' + ;'; + pwg_query($query); + + $page['infos'][] = l10n('group "%s" updated', $groupname); + } + } + invalidate_user_cache(); +} +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames(array('group_list' => 'group_list.tpl')); + +$template->assign( + array( + 'F_ADD_ACTION' => get_root_url().'admin.php?page=group_list', + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=group_list', + 'PWG_TOKEN' => get_pwg_token(), + ) + ); + +// +-----------------------------------------------------------------------+ +// | group list | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT id, name, is_default + FROM '.GROUPS_TABLE.' + ORDER BY name ASC +;'; +$result = pwg_query($query); + +$admin_url = get_root_url().'admin.php?page='; +$perm_url = $admin_url.'group_perm&group_id='; +$del_url = $admin_url.'group_list&delete='; +$toggle_is_default_url = $admin_url.'group_list&toggle_is_default='; + +while ($row = pwg_db_fetch_assoc($result)) +{ + $query = ' +SELECT u.'. $conf['user_fields']['username'].' AS username + FROM '.USERS_TABLE.' AS u + INNER JOIN '.USER_GROUP_TABLE.' AS ug + ON u.'.$conf['user_fields']['id'].' = ug.user_id + WHERE ug.group_id = '.$row['id'].' +;'; + $members=array(); + $res=pwg_query($query); + while ($us= pwg_db_fetch_assoc($res)) + { + $members[]=$us['username']; + } + $template->append( + 'groups', + array( + 'NAME' => $row['name'], + 'ID' => $row['id'], + 'IS_DEFAULT' => (get_boolean($row['is_default']) ? ' ['.l10n('default').']' : ''), + 'NB_MEMBERS' => count($members), + 'L_MEMBERS' => implode(' · ', $members), + 'MEMBERS' => l10n_dec('%d member', '%d members', count($members)), + 'U_DELETE' => $del_url.$row['id'].'&pwg_token='.get_pwg_token(), + 'U_PERM' => $perm_url.$row['id'], + 'U_ISDEFAULT' => $toggle_is_default_url.$row['id'].'&pwg_token='.get_pwg_token(), + ) + ); +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'group_list'); + +?> \ No newline at end of file diff --git a/sources/admin/group_perm.php b/sources/admin/group_perm.php new file mode 100644 index 0000000..28ea481 --- /dev/null +++ b/sources/admin/group_perm.php @@ -0,0 +1,182 @@ + 0) +{ + // if you forbid access to a category, all sub-categories become + // automatically forbidden + $subcats = get_subcat_ids($_POST['cat_true']); + $query = ' +DELETE + FROM '.GROUP_ACCESS_TABLE.' + WHERE group_id = '.$page['group'].' + AND cat_id IN ('.implode(',', $subcats).') +;'; + pwg_query($query); +} +else if (isset($_POST['trueify']) + and isset($_POST['cat_false']) + and count($_POST['cat_false']) > 0) +{ + $uppercats = get_uppercat_ids($_POST['cat_false']); + $private_uppercats = array(); + + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $uppercats).') + AND status = \'private\' +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $private_uppercats[] = $row['id']; + } + + // retrying to authorize a category which is already authorized may cause + // an error (in SQL statement), so we need to know which categories are + // accesible + $authorized_ids = array(); + + $query = ' +SELECT cat_id + FROM '.GROUP_ACCESS_TABLE.' + WHERE group_id = '.$page['group'].' +;'; + $result = pwg_query($query); + + while ($row = pwg_db_fetch_assoc($result)) + { + $authorized_ids[] = $row['cat_id']; + } + + $inserts = array(); + $to_autorize_ids = array_diff($private_uppercats, $authorized_ids); + foreach ($to_autorize_ids as $to_autorize_id) + { + $inserts[] = array( + 'group_id' => $page['group'], + 'cat_id' => $to_autorize_id + ); + } + + mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $inserts); + invalidate_user_cache(); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames( + array( + 'group_perm' => 'group_perm.tpl', + 'double_select' => 'double_select.tpl' + ) + ); + +$template->assign( + array( + 'TITLE' => + l10n( + 'Manage permissions for group "%s"', + get_groupname($page['group']) + ), + 'L_CAT_OPTIONS_TRUE'=>l10n('Authorized'), + 'L_CAT_OPTIONS_FALSE'=>l10n('Forbidden'), + + 'F_ACTION' => + get_root_url(). + 'admin.php?page=group_perm&group_id='. + $page['group'] + ) + ); + +// only private categories are listed +$query_true = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' INNER JOIN '.GROUP_ACCESS_TABLE.' ON cat_id = id + WHERE status = \'private\' + AND group_id = '.$page['group'].' +;'; +display_select_cat_wrapper($query_true,array(),'category_option_true'); + +$result = pwg_query($query_true); +$authorized_ids = array(); +while ($row = pwg_db_fetch_assoc($result)) +{ + $authorized_ids[] = $row['id']; +} + +$query_false = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE status = \'private\''; +if (count($authorized_ids) > 0) +{ + $query_false.= ' + AND id NOT IN ('.implode(',', $authorized_ids).')'; +} +$query_false.= ' +;'; +display_select_cat_wrapper($query_false,array(),'category_option_false'); + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('DOUBLE_SELECT', 'double_select'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'group_perm'); + +?> diff --git a/sources/admin/help.php b/sources/admin/help.php new file mode 100644 index 0000000..97d8d05 --- /dev/null +++ b/sources/admin/help.php @@ -0,0 +1,67 @@ +set_id('help'); +$tabsheet->select($selected); +$tabsheet->assign(); + +$template->set_filenames(array('help' => 'help.tpl')); + +$template->assign( + array( + 'HELP_CONTENT' => load_language( + 'help/help_'.$tabsheet->selected.'.html', + '', + array('return'=>true) + ), + 'HELP_SECTION_TITLE' => $tabsheet->sheets[ $tabsheet->selected ]['caption'], + ) + ); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'help'); +?> diff --git a/sources/admin/history.php b/sources/admin/history.php new file mode 100644 index 0000000..7d52f80 --- /dev/null +++ b/sources/admin/history.php @@ -0,0 +1,675 @@ + l10n('No display'), + 'display_thumbnail_classic' => l10n('Classic display'), + 'display_thumbnail_hoverbox' => l10n('Hoverbox display') + ); + +// +-----------------------------------------------------------------------+ +// | Check Access and exit when user status is not ok | +// +-----------------------------------------------------------------------+ + +check_status(ACCESS_ADMINISTRATOR); + +// +-----------------------------------------------------------------------+ +// | Build search criteria and redirect to results | +// +-----------------------------------------------------------------------+ + +$page['errors'] = array(); +$search = array(); + +if (isset($_POST['submit'])) +{ + // dates + if (!empty($_POST['start_year'])) + { + $search['fields']['date-after'] = sprintf( + '%d-%02d-%02d', + $_POST['start_year'], + $_POST['start_month'], + $_POST['start_day'] + ); + } + + if (!empty($_POST['end_year'])) + { + $search['fields']['date-before'] = sprintf( + '%d-%02d-%02d', + $_POST['end_year'], + $_POST['end_month'], + $_POST['end_day'] + ); + } + + if (empty($_POST['types'])) + { + $search['fields']['types'] = $types; + } + else + { + $search['fields']['types'] = $_POST['types']; + } + + $search['fields']['user'] = $_POST['user']; + + if (!empty($_POST['image_id'])) + { + $search['fields']['image_id'] = intval($_POST['image_id']); + } + + if (!empty($_POST['filename'])) + { + $search['fields']['filename'] = str_replace( + '*', + '%', + pwg_db_real_escape_string($_POST['filename']) + ); + } + + if (!empty($_POST['ip'])) + { + $search['fields']['ip'] = str_replace( + '*', + '%', + pwg_db_real_escape_string($_POST['ip']) + ); + } + + $search['fields']['display_thumbnail'] = $_POST['display_thumbnail']; + // Display choise are also save to one cookie + if (!empty($_POST['display_thumbnail']) + and isset($display_thumbnails[$_POST['display_thumbnail']])) + { + $cookie_val = $_POST['display_thumbnail']; + } + else + { + $cookie_val = null; + } + + pwg_set_cookie_var('display_thumbnail', $cookie_val, strtotime('+1 month') ); + + // TODO manage inconsistency of having $_POST['image_id'] and + // $_POST['filename'] simultaneously + + if (!empty($search)) + { + // register search rules in database, then they will be available on + // thumbnails page and picture page. + $query =' +INSERT INTO '.SEARCH_TABLE.' + (rules) + VALUES + (\''.serialize($search).'\') +;'; + pwg_query($query); + + $search_id = pwg_db_insert_id(SEARCH_TABLE); + + redirect( + PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id + ); + } + else + { + $page['errors'][] = l10n('Empty query. No criteria has been entered.'); + } +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filename('history', 'history.tpl'); + +// TabSheet initialization +history_tabsheet(); + +$template->assign( + array( + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=history', + 'F_ACTION' => get_root_url().'admin.php?page=history' + ) + ); + +// +-----------------------------------------------------------------------+ +// | history lines | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['search_id']) + and $page['search_id'] = (int)$_GET['search_id']) +{ + // what are the lines to display in reality ? + $query = ' +SELECT rules + FROM '.SEARCH_TABLE.' + WHERE id = '.$page['search_id'].' +;'; + list($serialized_rules) = pwg_db_fetch_row(pwg_query($query)); + + $page['search'] = unserialize($serialized_rules); + + if (isset($_GET['user_id'])) + { + if (!is_numeric($_GET['user_id'])) + { + die('user_id GET parameter must be an integer value'); + } + + $page['search']['fields']['user'] = $_GET['user_id']; + + $query =' +INSERT INTO '.SEARCH_TABLE.' + (rules) + VALUES + (\''.serialize($page['search']).'\') +;'; + pwg_query($query); + + $search_id = pwg_db_insert_id(SEARCH_TABLE); + + redirect( + PHPWG_ROOT_PATH.'admin.php?page=history&search_id='.$search_id + ); + } + + $data = trigger_event('get_history', array(), $page['search'], $types); + usort($data, 'history_compare'); + + $page['nb_lines'] = count($data); + + $history_lines = array(); + $user_ids = array(); + $username_of = array(); + $category_ids = array(); + $image_ids = array(); + $has_tags = false; + + foreach ($data as $row) + { + $user_ids[$row['user_id']] = 1; + + if (isset($row['category_id'])) + { + $category_ids[$row['category_id']] = 1; + } + + if (isset($row['image_id'])) + { + $image_ids[$row['image_id']] = 1; + } + + if (isset($row['tag_ids'])) + { + $has_tags = true; + } + + $history_lines[] = $row; + } + + // prepare reference data (users, tags, categories...) + if (count($user_ids) > 0) + { + $query = ' +SELECT '.$conf['user_fields']['id'].' AS id + , '.$conf['user_fields']['username'].' AS username + FROM '.USERS_TABLE.' + WHERE id IN ('.implode(',', array_keys($user_ids)).') +;'; + $result = pwg_query($query); + + $username_of = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $username_of[$row['id']] = stripslashes($row['username']); + } + } + + if (count($category_ids) > 0) + { + $query = ' +SELECT id, uppercats + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', array_keys($category_ids)).') +;'; + $uppercats_of = simple_hash_from_query($query, 'id', 'uppercats'); + + $name_of_category = array(); + + foreach ($uppercats_of as $category_id => $uppercats) + { + $name_of_category[$category_id] = get_cat_display_name_cache( + $uppercats + ); + } + } + + if (count($image_ids) > 0) + { + $query = ' +SELECT + id, + IF(name IS NULL, file, name) AS label, + filesize, + file, + path, + representative_ext + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', array_keys($image_ids)).') +;'; + // $label_of_image = simple_hash_from_query($query, 'id', 'label'); + $label_of_image = array(); + $filesize_of_image = array(); + $file_of_image = array(); + $path_of_image = array(); + $representative_ext_of_image = array(); + + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $label_of_image[ $row['id'] ] = trigger_event('render_element_description', $row['label']); + + if (isset($row['filesize'])) + { + $filesize_of_image[ $row['id'] ] = $row['filesize']; + } + + $file_of_image[ $row['id'] ] = $row['file']; + $path_of_image[ $row['id'] ] = $row['path']; + $representative_ext_of_image[ $row['id'] ] = $row['representative_ext']; + } + } + + if ($has_tags > 0) + { + $query = ' +SELECT + id, + name, url_name + FROM '.TAGS_TABLE; + + global $name_of_tag; // used for preg_replace + $name_of_tag = array(); + $result = pwg_query($query); + while ($row=pwg_db_fetch_assoc($result)) + { + $name_of_tag[ $row['id'] ] = ''.trigger_event("render_tag_name", $row['name'], $row).''; + } + } + + $i = 0; + $first_line = $page['start'] + 1; + $last_line = $page['start'] + $conf['nb_logs_page']; + + $summary['total_filesize'] = 0; + $summary['guests_IP'] = array(); + + foreach ($history_lines as $line) + { + if (isset($line['image_type']) and $line['image_type'] == 'high') + { + if (isset($filesize_of_image[$line['image_id']])) + { + $summary['total_filesize'] += $filesize_of_image[$line['image_id']]; + } + } + + if ($line['user_id'] == $conf['guest_id']) + { + if (!isset($summary['guests_IP'][ $line['IP'] ])) + { + $summary['guests_IP'][ $line['IP'] ] = 0; + } + + $summary['guests_IP'][ $line['IP'] ]++; + } + + $i++; + + if ($i < $first_line or $i > $last_line) + { + continue; + } + + $user_string = ''; + if (isset($username_of[$line['user_id']])) + { + $user_string.= $username_of[$line['user_id']]; + } + else + { + $user_string.= $line['user_id']; + } + $user_string.= ' +'; + + $tags_string = ''; + if (isset($line['tag_ids'])) + { + $tags_string = preg_replace_callback( + '/(\d+)/', + create_function('$m', 'global $name_of_tag; return isset($name_of_tag[$m[1]]) ? $name_of_tag[$m[1]] : $m[1];'), + str_replace( + ',', + ', ', + $line['tag_ids'] + ) + ); + } + + $image_string = ''; + if (isset($line['image_id'])) + { + $picture_url = make_picture_url( + array( + 'image_id' => $line['image_id'], + ) + ); + + if (isset($file_of_image[$line['image_id']])) + { + $element = array( + 'id' => $line['image_id'], + 'file' => $file_of_image[$line['image_id']], + 'path' => $path_of_image[$line['image_id']], + 'representative_ext' => $representative_ext_of_image[$line['image_id']], + ); + $thumbnail_display = $page['search']['fields']['display_thumbnail']; + } + else + { + $thumbnail_display = 'no_display_thumbnail'; + } + + $image_title = '('.$line['image_id'].')'; + + if (isset($label_of_image[$line['image_id']])) + { + $image_title.= ' '.$label_of_image[$line['image_id']]; + } + else + { + $image_title.= ' unknown filename'; + } + + $image_string = ''; + + switch ($thumbnail_display) + { + case 'no_display_thumbnail': + { + $image_string= ''.$image_title.''; + break; + } + case 'display_thumbnail_classic': + { + $image_string = + '' + .''.$image_title.'' + .''; + break; + } + case 'display_thumbnail_hoverbox': + { + $image_string = + '' + .''.$image_title.'' + .''.$image_title.''; + break; + } + } + } + + $template->append( + 'search_results', + array( + 'DATE' => $line['date'], + 'TIME' => $line['time'], + 'USER' => $user_string, + 'IP' => $line['IP'], + 'IMAGE' => $image_string, + 'TYPE' => $line['image_type'], + 'SECTION' => $line['section'], + 'CATEGORY' => isset($line['category_id']) + ? ( isset($name_of_category[$line['category_id']]) + ? $name_of_category[$line['category_id']] + : 'deleted '.$line['category_id'] ) + : '', + 'TAGS' => $tags_string, + ) + ); + } + + $summary['nb_guests'] = 0; + if (count(array_keys($summary['guests_IP'])) > 0) + { + $summary['nb_guests'] = count(array_keys($summary['guests_IP'])); + + // we delete the "guest" from the $username_of hash so that it is + // avoided in next steps + unset($username_of[ $conf['guest_id'] ]); + } + + $summary['nb_members'] = count($username_of); + + $member_strings = array(); + foreach ($username_of as $user_id => $user_name) + { + $member_string = $user_name.' +'; + + $member_strings[] = $member_string; + } + + $template->assign( + 'search_summary', + array( + 'NB_LINES' => l10n_dec( + '%d line filtered', '%d lines filtered', + $page['nb_lines'] + ), + 'FILESIZE' => $summary['total_filesize'] != 0 ? ceil($summary['total_filesize']/1024).' MB' : '', + 'USERS' => l10n_dec( + '%d user', '%d users', + $summary['nb_members'] + $summary['nb_guests'] + ), + 'MEMBERS' => sprintf( + l10n_dec('%d member', '%d members', $summary['nb_members']).': %s', + implode(', ', $member_strings) + ), + 'GUESTS' => l10n_dec( + '%d guest', '%d guests', + $summary['nb_guests'] + ), + ) + ); + + unset($name_of_tag); +} + +// +-----------------------------------------------------------------------+ +// | navigation bar | +// +-----------------------------------------------------------------------+ + +if (isset($page['search_id'])) +{ + $navbar = create_navigation_bar( + get_root_url().'admin.php'.get_query_string_diff(array('start')), + $page['nb_lines'], + $page['start'], + $conf['nb_logs_page'] + ); + + $template->assign('navbar', $navbar); +} + +// +-----------------------------------------------------------------------+ +// | filter form | +// +-----------------------------------------------------------------------+ + +$form = array(); + +if (isset($page['search'])) +{ + if (isset($page['search']['fields']['date-after'])) + { + $tokens = explode('-', $page['search']['fields']['date-after']); + + $form['start_year'] = (int)$tokens[0]; + $form['start_month'] = (int)$tokens[1]; + $form['start_day'] = (int)$tokens[2]; + } + + if (isset($page['search']['fields']['date-before'])) + { + $tokens = explode('-', $page['search']['fields']['date-before']); + + $form['end_year'] = (int)$tokens[0]; + $form['end_month'] = (int)$tokens[1]; + $form['end_day'] = (int)$tokens[2]; + } + + $form['types'] = $page['search']['fields']['types']; + + if (isset($page['search']['fields']['user'])) + { + $form['user'] = $page['search']['fields']['user']; + } + else + { + $form['user'] = null; + } + + $form['image_id'] = @$page['search']['fields']['image_id']; + $form['filename'] = @$page['search']['fields']['filename']; + $form['ip'] = @$page['search']['fields']['ip']; + + $form['display_thumbnail'] = @$page['search']['fields']['display_thumbnail']; +} +else +{ + // by default, at page load, we want the selected date to be the current + // date + $form['start_year'] = $form['end_year'] = date('Y'); + $form['start_month'] = $form['end_month'] = date('n'); + $form['start_day'] = $form['end_day'] = date('j'); + $form['types'] = $types; + // Hoverbox by default + $form['display_thumbnail'] = + pwg_get_cookie_var('display_thumbnail', 'no_display_thumbnail'); +} + + +$month_list = $lang['month']; +$month_list[0]='------------'; +ksort($month_list); + +$template->assign( + array( + 'IMAGE_ID' => @$form['image_id'], + 'FILENAME' => @$form['filename'], + 'IP' => @$form['ip'], + + 'month_list' => $month_list, + + 'START_DAY_SELECTED' => @$form['start_day'], + 'START_MONTH_SELECTED' => @$form['start_month'], + 'START_YEAR' => @$form['start_year'], + + 'END_DAY_SELECTED' => @$form['end_day'], + 'END_MONTH_SELECTED' => @$form['end_month'], + 'END_YEAR' => @$form['end_year'], + ) + ); + +$template->assign( + array( + 'type_option_values' => $types, + 'type_option_selected' => $form['types'] + ) + ); + + +$query = ' +SELECT + '.$conf['user_fields']['id'].' AS id, + '.$conf['user_fields']['username'].' AS username + FROM '.USERS_TABLE.' + ORDER BY username ASC +;'; +$template->assign( + array( + 'user_options' => simple_hash_from_query($query, 'id','username'), + 'user_options_selected' => array(@$form['user']) + ) +); + +$template->assign('display_thumbnails', $display_thumbnails); +$template->assign('display_thumbnail_selected', $form['display_thumbnail']); + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'history'); +?> \ No newline at end of file diff --git a/sources/admin/include/add_core_tabs.inc.php b/sources/admin/include/add_core_tabs.inc.php new file mode 100644 index 0000000..efc9cd0 --- /dev/null +++ b/sources/admin/include/add_core_tabs.inc.php @@ -0,0 +1,155 @@ + ''.l10n('Properties'), 'url' => $admin_album_base_url.'-properties'); + $sheets['sort_order'] = array('caption' => ''.l10n('Manage photo ranks'), 'url' => $admin_album_base_url.'-sort_order'); + $sheets['permissions'] = array('caption' => ''.l10n('Permissions'), 'url' => $admin_album_base_url.'-permissions'); + $sheets['notification'] = array('caption' => ''.l10n('Notification'), 'url' => $admin_album_base_url.'-notification'); + break; + + case 'albums': + global $my_base_url; + $sheets['list'] = array('caption' => ''.l10n('List'), 'url' => $my_base_url.'cat_list'); + $sheets['move'] = array('caption' => ''.l10n('Move'), 'url' => $my_base_url.'cat_move'); + $sheets['permalinks'] = array('caption' => ''.l10n('Permalinks'), 'url' => $my_base_url.'permalinks'); + break; + + case 'batch_manager': + global $manager_link; + $sheets['global'] = array('caption' => l10n('global mode'), 'url' => $manager_link.'global'); + $sheets['unit'] = array('caption' => l10n('unit mode'), 'url' => $manager_link.'unit'); + break; + + case 'cat_options': + global $link_start, $conf; + $sheets['status'] = array('caption' => ''.l10n('Public / Private'), 'url' => $link_start.'cat_options&section=status'); + $sheets['visible'] = array('caption' => ''.l10n('Lock'), 'url' => $link_start.'cat_options&section=visible'); + if ($conf['activate_comments']) + $sheets['comments'] = array('caption' => ''.l10n('Comments'), 'url' => $link_start.'cat_options&section=comments'); + if ($conf['allow_random_representative']) + $sheets['representative'] = array('caption' => l10n('Representative'), 'url' => $link_start.'cat_options&section=representative'); + break; + + case 'comments': + $sheets[''] = array('caption' => l10n('User comments'), 'url' => ''); + break; + + case 'users': + $sheets[''] = array('caption' => ' '.l10n('User list'), 'url' => ''); + break; + + case 'groups': + $sheets[''] = array('caption' => ' '.l10n('Groups'), 'url' => ''); + break; + + case 'configuration': + global $conf_link; + $sheets['main'] = array('caption' => l10n('General'), 'url' => $conf_link.'main'); + $sheets['sizes'] = array('caption' => l10n('Photo sizes'), 'url' => $conf_link.'sizes'); + $sheets['watermark'] = array('caption' => l10n('Watermark'), 'url' => $conf_link.'watermark'); + $sheets['display'] = array('caption' => l10n('Display'), 'url' => $conf_link.'display'); + $sheets['comments'] = array('caption' => l10n('Comments'), 'url' => $conf_link.'comments'); + $sheets['default'] = array('caption' => l10n('Guest Settings'), 'url' => $conf_link.'default'); + break; + + case 'help': + global $help_link; + $sheets['add_photos'] = array('caption' => l10n('Add Photos'), 'url' => $help_link.'add_photos'); + $sheets['permissions'] = array('caption' => l10n('Permissions'), 'url' => $help_link.'permissions'); + $sheets['groups'] = array('caption' => l10n('Groups'), 'url' => $help_link.'groups'); + $sheets['virtual_links'] = array('caption' => l10n('Virtual Links'), 'url' => $help_link.'virtual_links'); + $sheets['misc'] = array('caption' => l10n('Miscellaneous'), 'url' => $help_link.'misc'); + break; + + case 'history': + global $link_start; + $sheets['stats'] = array('caption' => ''.l10n('Statistics'), 'url' => $link_start.'stats'); + $sheets['history'] = array('caption' => ''.l10n('Search'), 'url' => $link_start.'history'); + break; + + case 'languages': + global $my_base_url; + $sheets['installed'] = array('caption' => ''.l10n('Installed Languages'), 'url' => $my_base_url.'&tab=installed'); + $sheets['update'] = array('caption' => ''.l10n('Check for updates'), 'url' => $my_base_url.'&tab=update'); + $sheets['new'] = array('caption' => ''.l10n('Add New Language'), 'url' => $my_base_url.'&tab=new'); + break; + + case 'nbm': + global $base_url; + $sheets['param'] = array('caption' => l10n('Parameter'), 'url' => $base_url.'?page=notification_by_mail&mode=param'); + $sheets['subscribe'] = array('caption' => l10n('Subscribe'), 'url' => $base_url.'?page=notification_by_mail&mode=subscribe'); + $sheets['send'] = array('caption' => l10n('Send'), 'url' => $base_url.'?page=notification_by_mail&mode=send'); + break; + + case 'photo': + global $admin_photo_base_url; + $sheets['properties'] = array('caption' => l10n('Properties'), 'url' => $admin_photo_base_url.'-properties'); + $sheets['coi'] = array('caption' => ''.l10n('Center of interest'), 'url' => $admin_photo_base_url.'-coi'); + break; + + case 'photos_add': + global $conf; + $sheets['direct'] = array('caption' => ''.l10n('Web Form'), 'url' => PHOTOS_ADD_BASE_URL.'&section=direct'); + $sheets['applications'] = array('caption' => ''.l10n('Applications'), 'url' => PHOTOS_ADD_BASE_URL.'&section=applications'); + if ($conf['enable_synchronization']) + $sheets['ftp'] = array('caption' => ''.l10n('FTP + Synchronization'), 'url' => PHOTOS_ADD_BASE_URL.'&section=ftp'); + break; + + case 'plugins': + global $my_base_url; + $sheets['installed'] = array('caption' => ''.l10n('Plugin list'), 'url' => $my_base_url.'&tab=installed'); + $sheets['update'] = array('caption' => ''.l10n('Check for updates'), 'url' => $my_base_url.'&tab=update'); + $sheets['new'] = array('caption' => ''.l10n('Other plugins'), 'url' => $my_base_url.'&tab=new'); + break; + + case 'rating': + $sheets['rating'] = array('caption' => l10n('Photos'), 'url' => get_root_url().'admin.php?page=rating'); + $sheets['rating_user'] = array('caption' => l10n('Users'), 'url' => get_root_url().'admin.php?page=rating_user'); + break; + + case 'themes': + global $my_base_url; + $sheets['installed'] = array('caption' => ''.l10n('Installed Themes'), 'url' => $my_base_url.'&tab=installed'); + $sheets['update'] = array('caption' => ''.l10n('Check for updates'), 'url' => $my_base_url.'&tab=update'); + $sheets['new'] = array('caption' => ''.l10n('Add New Theme'), 'url' => $my_base_url.'&tab=new'); + break; + + case 'updates': + global $my_base_url; + $sheets['pwg'] = array('caption' => l10n('Piwigo Update'), 'url' => $my_base_url); + $sheets['ext'] = array('caption' => l10n('Extensions Update'), 'url' => $my_base_url.'&tab=ext'); + break; + } + + return $sheets; +} + +?> \ No newline at end of file diff --git a/sources/admin/include/albums_tab.inc.php b/sources/admin/include/albums_tab.inc.php new file mode 100644 index 0000000..399778d --- /dev/null +++ b/sources/admin/include/albums_tab.inc.php @@ -0,0 +1,33 @@ +set_id('albums'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +?> \ No newline at end of file diff --git a/sources/admin/include/c13y_internal.class.php b/sources/admin/include/c13y_internal.class.php new file mode 100644 index 0000000..1037509 --- /dev/null +++ b/sources/admin/include/c13y_internal.class.php @@ -0,0 +1,258 @@ + 'PHP', + 'current' => phpversion(), + 'required' => REQUIRED_PHP_VERSION, + ); + + $check_list[] = array( + 'type' => 'MySQL', + 'current' => pwg_get_db_version(), + 'required' => REQUIRED_MYSQL_VERSION, + ); + + foreach ($check_list as $elem) + { + if (version_compare($elem['current'], $elem['required'], '<')) + { + $c13y->add_anomaly( + sprintf(l10n('The version of %s [%s] installed is not compatible with the version required [%s]'), $elem['type'], $elem['current'], $elem['required']), + null, + null, + l10n('You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all') + .'
'. + $c13y->get_htlm_links_more_info()); + } + } + } + + /** + * Check exif + * + * @param c13y object + * @return void + */ + function c13y_exif($c13y) + { + global $conf; + + foreach (array('show_exif', 'use_exif') as $value) + { + if (($conf[$value]) and (!function_exists('read_exif_data'))) + { + $c13y->add_anomaly( + sprintf(l10n('%s value is not correct file because exif are not supported'), '$conf[\''.$value.'\']'), + null, + null, + sprintf(l10n('%s must be to set to false in your local/config/config.inc.php file'), '$conf[\''.$value.'\']') + .'
'. + $c13y->get_htlm_links_more_info()); + } + } + } + + /** + * Check user + * + * @param c13y object + * @return void + */ + function c13y_user($c13y) + { + global $conf; + + $c13y_users = array(); + $c13y_users[$conf['guest_id']] = array( + 'status' => 'guest', + 'l10n_non_existent' => 'Main "guest" user does not exist', + 'l10n_bad_status' => 'Main "guest" user status is incorrect'); + + if ($conf['guest_id'] != $conf['default_user_id']) + { + $c13y_users[$conf['default_user_id']] = array( + 'password' => null, + 'l10n_non_existent' => 'Default user does not exist'); + } + + $c13y_users[$conf['webmaster_id']] = array( + 'status' => 'webmaster', + 'l10n_non_existent' => 'Main "webmaster" user does not exist', + 'l10n_bad_status' => 'Main "webmaster" user status is incorrect'); + + $query = ' + select u.'.$conf['user_fields']['id'].' as id, ui.status + from '.USERS_TABLE.' as u + left join '.USER_INFOS_TABLE.' as ui + on u.'.$conf['user_fields']['id'].' = ui.user_id + where + u.'.$conf['user_fields']['id'].' in ('.implode(',', array_keys($c13y_users)).') + ;'; + + + $status = array(); + + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $status[$row['id']] = $row['status']; + } + + foreach ($c13y_users as $id => $data) + { + if (!array_key_exists($id, $status)) + { + $c13y->add_anomaly(l10n($data['l10n_non_existent']), 'c13y_correction_user', + array('id' => $id, 'action' => 'creation')); + } + else + if (!empty($data['status']) and $status[$id] != $data['status']) + { + $c13y->add_anomaly(l10n($data['l10n_bad_status']), 'c13y_correction_user', + array('id' => $id, 'action' => 'status')); + } + } + } + + /** + * Do correction user + * + * @param user_id, action + * @return boolean true if ok else false + */ + function c13y_correction_user($id, $action) + { + global $conf, $page; + + $result = false; + + if (!empty($id)) + { + switch ($action) + { + case 'creation': + if ($id == $conf['guest_id']) + { + $name = 'guest'; + $password = null; + } + else if ($id == $conf['default_user_id']) + { + $name = 'guest'; + $password = null; + } + else if ($id == $conf['webmaster_id']) + { + $name = 'webmaster'; + $password = generate_key(6); + } + + if (isset($name)) + { + $name_ok = false; + while (!$name_ok) + { + $name_ok = (get_userid($name) === false); + if (!$name_ok) + { + $name .= generate_key(1); + } + } + + $inserts = array( + array( + 'id' => $id, + 'username' => addslashes($name), + 'password' => $password + ), + ); + mass_inserts(USERS_TABLE, array_keys($inserts[0]), $inserts); + + create_user_infos($id); + + $page['infos'][] = sprintf(l10n('User "%s" created with "%s" like password'), $name, $password); + + $result = true; + } + break; + case 'status': + if ($id == $conf['guest_id']) + { + $status = 'guest'; + } + else if ($id == $conf['default_user_id']) + { + $status = 'guest'; + } + else if ($id == $conf['webmaster_id']) + { + $status = 'webmaster'; + } + + if (isset($status)) + { + $updates = array( + array( + 'user_id' => $id, + 'status' => $status + ), + ); + mass_updates(USER_INFOS_TABLE, + array('primary' => array('user_id'),'update' => array('status')), + $updates); + + $page['infos'][] = sprintf(l10n('Status of user "%s" updated'), get_username($id)); + + $result = true; + } + break; + } + } + + return $result; + } +} + +?> diff --git a/sources/admin/include/check_integrity.class.php b/sources/admin/include/check_integrity.class.php new file mode 100644 index 0000000..da549d7 --- /dev/null +++ b/sources/admin/include/check_integrity.class.php @@ -0,0 +1,346 @@ +ignore_list = array(); + $this->retrieve_list = array(); + $this->build_ignore_list = array(); + } + + /** + * Check integrities + * + * @param void + * @return void + */ + function check() + { + global $page, $header_notes, $conf; + + // Ignore list + $conf_c13y_ignore = unserialize($conf['c13y_ignore']); + if ( + is_array($conf_c13y_ignore) and + isset($conf_c13y_ignore['version']) and + ($conf_c13y_ignore['version'] == PHPWG_VERSION) and + is_array($conf_c13y_ignore['list']) + ) + { + $ignore_list_changed = false; + $this->ignore_list = $conf_c13y_ignore['list']; + } + else + { + $ignore_list_changed = true; + $this->ignore_list = array(); + } + + // Retrieve list + $this->retrieve_list = array(); + $this->build_ignore_list = array(); + + trigger_action('list_check_integrity', $this); + + // Information + if (count($this->retrieve_list) > 0) + { + $header_notes[] = l10n_dec( + '%d anomaly has been detected.', '%d anomalies have been detected.', + count($this->retrieve_list) + ); + } + + // Treatments + if (isset($_POST['c13y_submit_correction']) and isset($_POST['c13y_selection'])) + { + $corrected_count = 0; + $not_corrected_count = 0; + + foreach ($this->retrieve_list as $i => $c13y) + { + if (!empty($c13y['correction_fct']) and + $c13y['is_callable'] and + in_array($c13y['id'], $_POST['c13y_selection'])) + { + if (is_array($c13y['correction_fct_args'])) + { + $args = $c13y['correction_fct_args']; + } + else + if (!is_null($c13y['correction_fct_args'])) + { + $args = array($c13y['correction_fct_args']); + } + else + { + $args = array(); + } + $this->retrieve_list[$i]['corrected'] = call_user_func_array($c13y['correction_fct'], $args); + + if ($this->retrieve_list[$i]['corrected']) + { + $corrected_count += 1; + } + else + { + $not_corrected_count += 1; + } + } + } + + if ($corrected_count > 0) + { + $page['infos'][] = l10n_dec( + '%d anomaly has been corrected.', '%d anomalies have been detected corrected.', + $corrected_count + ); + } + if ($not_corrected_count > 0) + { + $page['errors'][] = l10n_dec( + '%d anomaly has not been corrected.', '%d anomalies have not been corrected.', + $not_corrected_count + ); + } + } + else + { + if (isset($_POST['c13y_submit_ignore']) and isset($_POST['c13y_selection'])) + { + $ignored_count = 0; + + foreach ($this->retrieve_list as $i => $c13y) + { + if (in_array($c13y['id'], $_POST['c13y_selection'])) + { + $this->build_ignore_list[] = $c13y['id']; + $this->retrieve_list[$i]['ignored'] = true; + $ignored_count += 1; + } + } + + if ($ignored_count > 0) + { + $page['infos'][] = l10n_dec( + '%d anomaly has been ignored.', '%d anomalies have been ignored.', + $ignored_count + ); + } + } + } + + $ignore_list_changed = + ( + ($ignore_list_changed) or + (count(array_diff($this->ignore_list, $this->build_ignore_list)) > 0) or + (count(array_diff($this->build_ignore_list, $this->ignore_list)) > 0) + ); + + if ($ignore_list_changed) + { + $this->update_conf($this->build_ignore_list); + } + } + + /** + * Display anomalies list + * + * @param void + * @return void + */ + function display() + { + global $template; + + $check_automatic_correction = false; + $submit_automatic_correction = false; + $submit_ignore = false; + + if (isset($this->retrieve_list) and count($this->retrieve_list) > 0) + { + $template->set_filenames(array('check_integrity' => 'check_integrity.tpl')); + + foreach ($this->retrieve_list as $i => $c13y) + { + $can_select = false; + $c13y_display = array( + 'id' => $c13y['id'], + 'anomaly' => $c13y['anomaly'], + 'show_ignore_msg' => false, + 'show_correction_success_fct' => false, + 'correction_error_fct' => '', + 'show_correction_fct' => false, + 'correction_error_fct' => '', + 'show_correction_bad_fct' => false, + 'correction_msg' => '' + ); + + if (isset($c13y['ignored'])) + { + if ($c13y['ignored']) + { + $c13y_display['show_ignore_msg'] = true; + } + else + { + die('$c13y[\'ignored\'] cannot be false'); + } + } + else + { + if (!empty($c13y['correction_fct'])) + { + if (isset($c13y['corrected'])) + { + if ($c13y['corrected']) + { + $c13y_display['show_correction_success_fct'] = true; + } + else + { + $c13y_display['correction_error_fct'] = $this->get_htlm_links_more_info(); + } + } + else if ($c13y['is_callable']) + { + $c13y_display['show_correction_fct'] = true; + $template->append('c13y_do_check', $c13y['id']); + $submit_automatic_correction = true; + $can_select = true; + } + else + { + $c13y_display['show_correction_bad_fct'] = true; + $can_select = true; + } + } + else + { + $can_select = true; + } + + if (!empty($c13y['correction_msg']) and !isset($c13y['corrected'])) + { + $c13y_display['correction_msg'] = $c13y['correction_msg']; + } + } + + $c13y_display['can_select'] = $can_select; + if ($can_select) + { + $submit_ignore = true; + } + + $template->append('c13y_list', $c13y_display); + } + + $template->assign('c13y_show_submit_automatic_correction', $submit_automatic_correction); + $template->assign('c13y_show_submit_ignore', $submit_ignore); + + $template->concat('ADMIN_CONTENT', $template->parse('check_integrity', true)); + + } + } + + /** + * Add anomaly data + * + * @param anomaly arguments + * @return void + */ + function add_anomaly($anomaly, $correction_fct = null, $correction_fct_args = null, $correction_msg = null) + { + $id = md5($anomaly.$correction_fct.serialize($correction_fct_args).$correction_msg); + + if (in_array($id, $this->ignore_list)) + { + $this->build_ignore_list[] = $id; + } + else + { + $this->retrieve_list[] = + array( + 'id' => $id, + 'anomaly' => $anomaly, + 'correction_fct' => $correction_fct, + 'correction_fct_args' => $correction_fct_args, + 'correction_msg' => $correction_msg, + 'is_callable' => is_callable($correction_fct)); + } + } + + /** + * Update table config + * + * @param ignore list array + * @return void + */ + function update_conf($conf_ignore_list = array()) + { + $conf_c13y_ignore = array(); + $conf_c13y_ignore['version'] = PHPWG_VERSION; + $conf_c13y_ignore['list'] = $conf_ignore_list; + $query = 'update '.CONFIG_TABLE.' set value =\''.serialize($conf_c13y_ignore).'\'where param = \'c13y_ignore\';'; + pwg_query($query); + } + + /** + * Apply maintenance + * + * @param void + * @return void + */ + function maintenance() + { + $this->update_conf(); + } + + /** + * Returns links more informations + * + * @param void + * @return html links + */ + function get_htlm_links_more_info() + { + $pwg_links = pwg_URL(); + $link_fmt = '%s'; + return + sprintf + ( + l10n('Go to %s or %s for more informations'), + sprintf($link_fmt, $pwg_links['FORUM'], l10n('the forum')), + sprintf($link_fmt, $pwg_links['WIKI'], l10n('the wiki')) + ); + } + +} + +?> diff --git a/sources/admin/include/configuration_sizes_process.inc.php b/sources/admin/include/configuration_sizes_process.inc.php new file mode 100644 index 0000000..47cfaf3 --- /dev/null +++ b/sources/admin/include/configuration_sizes_process.inc.php @@ -0,0 +1,280 @@ + 98) +{ + $errors['resize_quality'] = '[50..98]'; +} + +$pderivatives = $_POST['d']; + +// step 1 - sanitize HTML input +foreach ($pderivatives as $type => &$pderivative) +{ + if ($pderivative['must_square'] = ($type==IMG_SQUARE ? true : false)) + { + $pderivative['h'] = $pderivative['w']; + $pderivative['minh'] = $pderivative['minw'] = $pderivative['w']; + $pderivative['crop'] = 100; + } + $pderivative['must_enable'] = ($type==IMG_SQUARE || $type==IMG_THUMB)? true : false; + $pderivative['enabled'] = isset($pderivative['enabled']) || $pderivative['must_enable'] ? true : false; + + if (isset($pderivative['crop'])) + { + $pderivative['crop'] = 100; + $pderivative['minw'] = $pderivative['w']; + $pderivative['minh'] = $pderivative['h']; + } + else + { + $pderivative['crop'] = 0; + $pderivative['minw'] = null; + $pderivative['minh'] = null; + } +} +unset($pderivative); + +// step 2 - check validity +$prev_w = $prev_h = 0; +foreach(ImageStdParams::get_all_types() as $type) +{ + $pderivative = $pderivatives[$type]; + if (!$pderivative['enabled']) + { + continue; + } + + if ($type == IMG_THUMB) + { + $w = intval($pderivative['w']); + if ($w <= 0) + { + $errors[$type]['w'] = '>0'; + } + + $h = intval($pderivative['h']); + if ($h <= 0) + { + $errors[$type]['h'] = '>0'; + } + + if (max($w,$h) <= $prev_w) + { + $errors[$type]['w'] = $errors[$type]['h'] = '>'.$prev_w; + } + } + else + { + $v = intval($pderivative['w']); + if ($v <= 0 or $v <= $prev_w) + { + $errors[$type]['w'] = '>'.$prev_w; + } + + $v = intval($pderivative['h']); + if ($v <= 0 or $v <= $prev_h) + { + $errors[$type]['h'] = '>'.$prev_h; + } + } + + if (count($errors) == 0) + { + $prev_w = intval($pderivative['w']); + $prev_h = intval($pderivative['h']); + } + + $v = intval($pderivative['sharpen']); + if ($v<0 || $v>100) + { + $errors[$type]['sharpen'] = '[0..100]'; + } +} + +// step 3 - save data +if (count($errors) == 0) +{ + $quality_changed = ImageStdParams::$quality != intval($_POST['resize_quality']); + ImageStdParams::$quality = intval($_POST['resize_quality']); + + $enabled = ImageStdParams::get_defined_type_map(); + $disabled = @unserialize( @$conf['disabled_derivatives'] ); + if ($disabled === false) + { + $disabled = array(); + } + $changed_types = array(); + + foreach (ImageStdParams::get_all_types() as $type) + { + $pderivative = $pderivatives[$type]; + + if ($pderivative['enabled']) + { + $new_params = new DerivativeParams( + new SizingParams( + array(intval($pderivative['w']), intval($pderivative['h'])), + round($pderivative['crop'] / 100, 2), + array(intval($pderivative['minw']), intval($pderivative['minh'])) + ) + ); + $new_params->sharpen = intval($pderivative['sharpen']); + + ImageStdParams::apply_global($new_params); + + if (isset($enabled[$type])) + { + $old_params = $enabled[$type]; + $same = true; + if (!size_equals($old_params->sizing->ideal_size, $new_params->sizing->ideal_size) + or $old_params->sizing->max_crop != $new_params->sizing->max_crop) + { + $same = false; + } + + if ($same + and $new_params->sizing->max_crop != 0 + and !size_equals($old_params->sizing->min_size, $new_params->sizing->min_size)) + { + $same = false; + } + + if ($quality_changed + || $new_params->sharpen != $old_params->sharpen) + { + $same = false; + } + + if (!$same) + { + $new_params->last_mod_time = time(); + $changed_types[] = $type; + } + else + { + $new_params->last_mod_time = $old_params->last_mod_time; + } + $enabled[$type] = $new_params; + } + else + {// now enabled, before was disabled + $enabled[$type] = $new_params; + unset($disabled[$type]); + } + } + else + {// disabled + if (isset($enabled[$type])) + {// now disabled, before was enabled + $changed_types[] = $type; + $disabled[$type] = $enabled[$type]; + unset($enabled[$type]); + } + } + } + + $enabled_by = array(); // keys ordered by all types + foreach(ImageStdParams::get_all_types() as $type) + { + if (isset($enabled[$type])) + { + $enabled_by[$type] = $enabled[$type]; + } + } + + foreach( array_keys(ImageStdParams::$custom) as $custom) + { + if (isset($_POST['delete_custom_derivative_'.$custom])) + { + $changed_types[] = $custom; + unset(ImageStdParams::$custom[$custom]); + } + } + + ImageStdParams::set_and_save($enabled_by); + if (count($disabled) == 0) + { + $query='DELETE FROM '.CONFIG_TABLE.' WHERE param = \'disabled_derivatives\''; + pwg_query($query); + } + else + { + conf_update_param('disabled_derivatives', addslashes(serialize($disabled)) ); + } + $conf['disabled_derivatives'] = serialize($disabled); + + if (count($changed_types)) + { + clear_derivative_cache($changed_types); + } + + $page['infos'][] = l10n('Your configuration settings are saved'); +} +else +{ + foreach ($original_fields as $field) + { + if (isset($_POST[$field])) + { + $template->append( + 'sizes', + array( + $field => $_POST[$field] + ), + true + ); + } + } + + $template->assign('derivatives', $pderivatives); + $template->assign('ferrors', $errors); + $template->assign('resize_quality', $_POST['resize_quality']); + $page['sizes_loaded_in_tpl'] = true; +} +?> \ No newline at end of file diff --git a/sources/admin/include/configuration_watermark_process.inc.php b/sources/admin/include/configuration_watermark_process.inc.php new file mode 100644 index 0000000..ad23d92 --- /dev/null +++ b/sources/admin/include/configuration_watermark_process.inc.php @@ -0,0 +1,184 @@ + 100) +{ + $errors['watermark']['xpos'] = '[0..100]'; +} + +$v = intval($pwatermark['ypos']); +if ($v < 0 or $v > 100) +{ + $errors['watermark']['ypos'] = '[0..100]'; +} + +$v = intval($pwatermark['opacity']); +if ($v <= 0 or $v > 100) +{ + $errors['watermark']['opacity'] = '(0..100]'; +} + +// step 3 - save data +if (count($errors) == 0) +{ + $watermark = new WatermarkParams(); + $watermark->file = $pwatermark['file']; + $watermark->xpos = intval($pwatermark['xpos']); + $watermark->ypos = intval($pwatermark['ypos']); + $watermark->xrepeat = intval($pwatermark['xrepeat']); + $watermark->opacity = intval($pwatermark['opacity']); + $watermark->min_size = array(intval($pwatermark['minw']),intval($pwatermark['minh'])); + + $old_watermark = ImageStdParams::get_watermark(); + $watermark_changed = + $watermark->file != $old_watermark->file + || $watermark->xpos != $old_watermark->xpos + || $watermark->ypos != $old_watermark->ypos + || $watermark->xrepeat != $old_watermark->xrepeat + || $watermark->opacity != $old_watermark->opacity; + + // save the new watermark configuration + ImageStdParams::set_watermark($watermark); + + // do we have to regenerate the derivatives (and which types)? + $changed_types = array(); + + foreach (ImageStdParams::get_defined_type_map() as $type => $params) + { + $old_use_watermark = $params->use_watermark; + ImageStdParams::apply_global($params); + + $changed = $params->use_watermark != $old_use_watermark; + if (!$changed and $params->use_watermark) + { + $changed = $watermark_changed; + } + if (!$changed and $params->use_watermark) + { + // if thresholds change and before/after the threshold is lower than the corresponding derivative side -> some derivatives might switch the watermark + $changed |= $watermark->min_size[0]!=$old_watermark->min_size[0] and ($watermark->min_size[0]<$params->max_width() or $old_watermark->min_size[0]<$params->max_width()); + $changed |= $watermark->min_size[1]!=$old_watermark->min_size[1] and ($watermark->min_size[1]<$params->max_height() or $old_watermark->min_size[1]<$params->max_height()); + } + + if ($changed) + { + $params->last_mod_time = time(); + $changed_types[] = $type; + } + } + + ImageStdParams::save(); + + if (count($changed_types)) + { + clear_derivative_cache($changed_types); + } + + $page['infos'][] = l10n('Your configuration settings are saved'); +} +else +{ + $template->assign('watermark', $pwatermark); + $template->assign('ferrors', $errors); +} +?> \ No newline at end of file diff --git a/sources/admin/include/functions.php b/sources/admin/include/functions.php new file mode 100644 index 0000000..ac59d2d --- /dev/null +++ b/sources/admin/include/functions.php @@ -0,0 +1,2730 @@ + 0) + { + if ('delete_orphans' == $photo_deletion_mode) + { + $query = ' +SELECT + DISTINCT(image_id) + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE image_id IN ('.implode(',', $image_ids_linked).') + AND category_id NOT IN ('.implode(',', $ids).') +;'; + $image_ids_not_orphans = array_from_query($query, 'image_id'); + $image_ids_to_delete = array_diff($image_ids_linked, $image_ids_not_orphans); + } + + if ('force_delete' == $photo_deletion_mode) + { + $image_ids_to_delete = $image_ids_linked; + } + + delete_elements($image_ids_to_delete, true); + } + } + + // destruction of the links between images and this category + $query = ' +DELETE FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id IN ( +'.wordwrap(implode(', ', $ids), 80, "\n").') +;'; + pwg_query($query); + + // destruction of the access linked to the category + $query = ' +DELETE FROM '.USER_ACCESS_TABLE.' + WHERE cat_id IN ( +'.wordwrap(implode(', ', $ids), 80, "\n").') +;'; + pwg_query($query); + + $query = ' +DELETE FROM '.GROUP_ACCESS_TABLE.' + WHERE cat_id IN ( +'.wordwrap(implode(', ', $ids), 80, "\n").') +;'; + pwg_query($query); + + // destruction of the category + $query = ' +DELETE FROM '.CATEGORIES_TABLE.' + WHERE id IN ( +'.wordwrap(implode(', ', $ids), 80, "\n").') +;'; + pwg_query($query); + + $query=' +DELETE FROM '.OLD_PERMALINKS_TABLE.' + WHERE cat_id IN ('.implode(',',$ids).')'; + pwg_query($query); + + $query=' +DELETE FROM '.USER_CACHE_CATEGORIES_TABLE.' + WHERE cat_id IN ('.implode(',',$ids).')'; + pwg_query($query); + + trigger_action('delete_categories', $ids); +} + +/** + * Deletes all files (on disk) related to given image ids. + * + * @param int[] $ids + * @return 0|int[] image ids where files were successfully deleted + */ +function delete_element_files($ids) +{ + global $conf; + if (count($ids) == 0) + { + return 0; + } + + $new_ids = array(); + + $query = ' +SELECT + id, + path, + representative_ext + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if (url_is_remote($row['path'])) + { + continue; + } + + $files = array(); + $files[] = get_element_path($row); + + if (!empty($row['representative_ext'])) + { + $files[] = original_to_representative( $files[0], $row['representative_ext']); + } + + $ok = true; + if (!isset($conf['never_delete_originals'])) + { + foreach ($files as $path) + { + if (is_file($path) and !unlink($path)) + { + $ok = false; + trigger_error('"'.$path.'" cannot be removed', E_USER_WARNING); + break; + } + } + } + + if ($ok) + { + delete_element_derivatives($row); + $new_ids[] = $row['id']; + } + else + { + break; + } + } + return $new_ids; +} + +/** + * Deletes elements from database. + * It also deletes : + * - all the comments related to elements + * - all the links between categories/tags and elements + * - all the favorites/rates associated to elements + * - removes elements from caddie + * + * @param int[] $ids + * @param bool $physical_deletion + * @return int number of deleted elements + */ +function delete_elements($ids, $physical_deletion=false) +{ + if (count($ids) == 0) + { + return 0; + } + trigger_action('begin_delete_elements', $ids); + + if ($physical_deletion) + { + $ids = delete_element_files($ids); + if (count($ids)==0) + { + return 0; + } + } + + $ids_str = wordwrap(implode(', ', $ids), 80, "\n"); + + // destruction of the comments on the image + $query = ' +DELETE FROM '.COMMENTS_TABLE.' + WHERE image_id IN ('. $ids_str .') +;'; + pwg_query($query); + + // destruction of the links between images and categories + $query = ' +DELETE FROM '.IMAGE_CATEGORY_TABLE.' + WHERE image_id IN ('. $ids_str .') +;'; + pwg_query($query); + + // destruction of the links between images and tags + $query = ' +DELETE FROM '.IMAGE_TAG_TABLE.' + WHERE image_id IN ('. $ids_str .') +;'; + pwg_query($query); + + // destruction of the favorites associated with the picture + $query = ' +DELETE FROM '.FAVORITES_TABLE.' + WHERE image_id IN ('. $ids_str .') +;'; + pwg_query($query); + + // destruction of the rates associated to this element + $query = ' +DELETE FROM '.RATE_TABLE.' + WHERE element_id IN ('. $ids_str .') +;'; + pwg_query($query); + + // destruction of the caddie associated to this element + $query = ' +DELETE FROM '.CADDIE_TABLE.' + WHERE element_id IN ('. $ids_str .') +;'; + pwg_query($query); + + // destruction of the image + $query = ' +DELETE FROM '.IMAGES_TABLE.' + WHERE id IN ('. $ids_str .') +;'; + pwg_query($query); + + // are the photo used as category representant? + $query = ' +SELECT + id + FROM '.CATEGORIES_TABLE.' + WHERE representative_picture_id IN ('. $ids_str .') +;'; + $category_ids = array_from_query($query, 'id'); + if (count($category_ids) > 0) + { + update_category($category_ids); + } + + trigger_action('delete_elements', $ids); + return count($ids); +} + +/** + * Deletes an user. + * It also deletes all related data (accesses, favorites, permissions, etc.) + * @todo : accept array input + * + * @param int $user_id + */ +function delete_user($user_id) +{ + global $conf; + $tables = array( + // destruction of the access linked to the user + USER_ACCESS_TABLE, + // destruction of data notification by mail for this user + USER_MAIL_NOTIFICATION_TABLE, + // destruction of data RSS notification for this user + USER_FEED_TABLE, + // deletion of calculated permissions linked to the user + USER_CACHE_TABLE, + // deletion of computed cache data linked to the user + USER_CACHE_CATEGORIES_TABLE, + // destruction of the group links for this user + USER_GROUP_TABLE, + // destruction of the favorites associated with the user + FAVORITES_TABLE, + // destruction of the caddie associated with the user + CADDIE_TABLE, + // deletion of piwigo specific informations + USER_INFOS_TABLE, + ); + + foreach ($tables as $table) + { + $query = ' +DELETE FROM '.$table.' + WHERE user_id = '.$user_id.' +;'; + pwg_query($query); + } + + // purge of sessions + $query = ' +DELETE FROM '.SESSIONS_TABLE.' + WHERE data LIKE \'pwg_uid|i:'.(int)$user_id.';%\' +;'; + pwg_query($query); + + // destruction of the user + $query = ' +DELETE FROM '.USERS_TABLE.' + WHERE '.$conf['user_fields']['id'].' = '.$user_id.' +;'; + pwg_query($query); + + trigger_action('delete_user', $user_id); +} + +/** + * Deletes all tags linked to no photo + */ +function delete_orphan_tags() +{ + $orphan_tags = get_orphan_tags(); + + if (count($orphan_tags) > 0) + { + $orphan_tag_ids = array(); + foreach ($orphan_tags as $tag) + { + $orphan_tag_ids[] = $tag['id']; + } + + $query = ' +DELETE + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $orphan_tag_ids).') +;'; + pwg_query($query); + } +} + +/** + * Get all tags (id + name) linked to no photo + */ +function get_orphan_tags() +{ + $query = ' +SELECT + id, + name + FROM '.TAGS_TABLE.' + LEFT JOIN '.IMAGE_TAG_TABLE.' ON id = tag_id + WHERE tag_id IS NULL +;'; + return array_from_query($query); +} + +/** + * Verifies that the representative picture really exists in the db and + * picks up a random representative if possible and based on config. + * + * @param 'all'|int|int[] $ids + */ +function update_category($ids = 'all') +{ + global $conf; + + if ($ids=='all') + { + $where_cats = '1=1'; + } + elseif ( !is_array($ids) ) + { + $where_cats = '%s='.$ids; + } + else + { + if (count($ids) == 0) + { + return false; + } + $where_cats = '%s IN('.wordwrap(implode(', ', $ids), 120, "\n").')'; + } + + // find all categories where the setted representative is not possible : + // the picture does not exist + $query = ' +SELECT DISTINCT c.id + FROM '.CATEGORIES_TABLE.' AS c LEFT JOIN '.IMAGES_TABLE.' AS i + ON c.representative_picture_id = i.id + WHERE representative_picture_id IS NOT NULL + AND '.sprintf($where_cats, 'c.id').' + AND i.id IS NULL +;'; + $wrong_representant = array_from_query($query, 'id'); + + if (count($wrong_representant) > 0) + { + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = NULL + WHERE id IN ('.wordwrap(implode(', ', $wrong_representant), 120, "\n").') +;'; + pwg_query($query); + } + + if (!$conf['allow_random_representative']) + { + // If the random representant is not allowed, we need to find + // categories with elements and with no representant. Those categories + // must be added to the list of categories to set to a random + // representant. + $query = ' +SELECT DISTINCT id + FROM '.CATEGORIES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' + ON id = category_id + WHERE representative_picture_id IS NULL + AND '.sprintf($where_cats, 'category_id').' +;'; + $to_rand = array_from_query($query, 'id'); + if (count($to_rand) > 0) + { + set_random_representant($to_rand); + } + } +} + +/** + * Checks and repairs IMAGE_CATEGORY_TABLE integrity. + * Removes all entries from the table which correspond to a deleted image. + */ +function images_integrity() +{ + $query = ' +SELECT + image_id + FROM '.IMAGE_CATEGORY_TABLE.' + LEFT JOIN '.IMAGES_TABLE.' ON id = image_id + WHERE id IS NULL +;'; + $result = pwg_query($query); + $orphan_image_ids = array_from_query($query, 'image_id'); + + if (count($orphan_image_ids) > 0) + { + $query = ' +DELETE + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE image_id IN ('.implode(',', $orphan_image_ids).') +;'; + pwg_query($query); + } +} + +/** + * Returns an array containing sub-directories which are potentially + * a category. + * Directories named ".svn", "thumbnail", "pwg_high" or "pwg_representative" + * are omitted. + * + * @param string $basedir (eg: ./galleries) + * @return string[] + */ +function get_fs_directories($path, $recursive = true) +{ + $dirs = array(); + $path = rtrim($path, '/'); + + if (is_dir($path)) + { + if ($contents = opendir($path)) + { + while (($node = readdir($contents)) !== false) + { + if ($node != '.' + and $node != '..' + and $node != '.svn' + and $node != 'thumbnail' + and $node != 'pwg_high' + and $node != 'pwg_representative' + and is_dir($path.'/'.$node)) + { + $dirs[] = $path.'/'.$node; + if ($recursive) + { + $dirs = array_merge($dirs, get_fs_directories($path.'/'.$node)); + } + } + } + closedir($contents); + } + } + + return $dirs; +} + +/** + * Orders categories (update categories.rank and global_rank database fields) + * so that rank field are consecutive integers starting at 1 for each child. + */ +function update_global_rank() +{ + $query = ' +SELECT id, id_uppercat, uppercats, rank, global_rank + FROM '.CATEGORIES_TABLE.' + ORDER BY id_uppercat,rank,name'; + + global $cat_map; // used in preg_replace callback + $cat_map = array(); + + $current_rank = 0; + $current_uppercat = ''; + + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if ($row['id_uppercat'] != $current_uppercat) + { + $current_rank = 0; + $current_uppercat = $row['id_uppercat']; + } + ++$current_rank; + $cat = + array( + 'rank' => $current_rank, + 'rank_changed' =>$current_rank!=$row['rank'], + 'global_rank' => $row['global_rank'], + 'uppercats' => $row['uppercats'], + ); + $cat_map[ $row['id'] ] = $cat; + } + + $datas = array(); + + $cat_map_callback = create_function('$m', 'global $cat_map; return $cat_map[$m[1]]["rank"];'); + + foreach( $cat_map as $id=>$cat ) + { + $new_global_rank = preg_replace_callback( + '/(\d+)/', + $cat_map_callback, + str_replace(',', '.', $cat['uppercats'] ) + ); + + if ( $cat['rank_changed'] + or $new_global_rank!=$cat['global_rank'] + ) + { + $datas[] = array( + 'id' => $id, + 'rank' => $cat['rank'], + 'global_rank' => $new_global_rank, + ); + } + } + + unset($cat_map); + + mass_updates( + CATEGORIES_TABLE, + array( + 'primary' => array('id'), + 'update' => array('rank', 'global_rank') + ), + $datas + ); + return count($datas); +} + +/** + * Change the **visible** property on a set of categories. + * + * @param int[] $categories + * @param boolean|string $value + */ +function set_cat_visible($categories, $value) +{ + if ( ($value = filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE)) === null ) + { + trigger_error("set_cat_visible invalid param $value", E_USER_WARNING); + return false; + } + + // unlocking a category => all its parent categories become unlocked + if ($value) + { + $uppercats = get_uppercat_ids($categories); + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET visible = \'true\' + WHERE id IN ('.implode(',', $uppercats).')'; + pwg_query($query); + } + // locking a category => all its child categories become locked + else + { + $subcats = get_subcat_ids($categories); + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET visible = \'false\' + WHERE id IN ('.implode(',', $subcats).')'; + pwg_query($query); + } +} + +/** + * Change the **status** property on a set of categories : private or public. + * + * @param int[] $categories + * @param string $value + */ +function set_cat_status($categories, $value) +{ + if (!in_array($value, array('public', 'private'))) + { + trigger_error("set_cat_status invalid param $value", E_USER_WARNING); + return false; + } + + // make public a category => all its parent categories become public + if ($value == 'public') + { + $uppercats = get_uppercat_ids($categories); + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET status = \'public\' + WHERE id IN ('.implode(',', $uppercats).') +;'; + pwg_query($query); + } + + // make a category private => all its child categories become private + if ($value == 'private') + { + $subcats = get_subcat_ids($categories); + + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET status = \'private\' + WHERE id IN ('.implode(',', $subcats).')'; + pwg_query($query); + + // We have to keep permissions consistant: a sub-album can't be + // permitted to a user or group if its parent album is not permitted to + // the same user or group. Let's remove all permissions on sub-albums if + // it is not consistant. Let's take the following example: + // + // A1 permitted to U1,G1 + // A1/A2 permitted to U1,U2,G1,G2 + // A1/A2/A3 permitted to U3,G1 + // A1/A2/A4 permitted to U2 + // A1/A5 permitted to U4 + // A6 permitted to U4 + // A6/A7 permitted to G1 + // + // (we consider that it can be possible to start with inconsistant + // permission, given that public albums can have hidden permissions, + // revealed once the album returns to private status) + // + // The admin selects A2,A3,A4,A5,A6,A7 to become private (all but A1, + // which is private, which can be true if we're moving A2 into A1). The + // result must be: + // + // A2 permission removed to U2,G2 + // A3 permission removed to U3 + // A4 permission removed to U2 + // A5 permission removed to U2 + // A6 permission removed to U4 + // A7 no permission removed + // + // 1) we must extract "top albums": A2, A5 and A6 + // 2) for each top album, decide which album is the reference for permissions + // 3) remove all inconsistant permissions from sub-albums of each top-album + + // step 1, search top albums + $all_categories = array(); + $top_categories = array(); + $parent_ids = array(); + + $query = ' +SELECT + id, + name, + id_uppercat, + uppercats, + global_rank + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $categories).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $all_categories[] = $row; + } + + usort($all_categories, 'global_rank_compare'); + + foreach ($all_categories as $cat) + { + $is_top = true; + + if (!empty($cat['id_uppercat'])) + { + foreach (explode(',', $cat['uppercats']) as $id_uppercat) + { + if (isset($top_categories[$id_uppercat])) + { + $is_top = false; + break; + } + } + } + + if ($is_top) + { + $top_categories[$cat['id']] = $cat; + + if (!empty($cat['id_uppercat'])) + { + $parent_ids[] = $cat['id_uppercat']; + } + } + } + + // step 2, search the reference album for permissions + // + // to find the reference of each top album, we will need the parent albums + $parent_cats = array(); + + if (count($parent_ids) > 0) + { + $query = ' +SELECT + id, + status + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $parent_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $parent_cats[$row['id']] = $row; + } + } + + $tables = array( + USER_ACCESS_TABLE => 'user_id', + GROUP_ACCESS_TABLE => 'group_id' + ); + + foreach ($top_categories as $top_category) + { + // what is the "reference" for list of permissions? The parent album + // if it is private, else the album itself + $ref_cat_id = $top_category['id']; + + if (!empty($top_category['id_uppercat']) + and isset($parent_cats[ $top_category['id_uppercat'] ]) + and 'private' == $parent_cats[ $top_category['id_uppercat'] ]['status']) + { + $ref_cat_id = $top_category['id_uppercat']; + } + + $subcats = get_subcat_ids(array($top_category['id'])); + + foreach ($tables as $table => $field) + { + // what are the permissions user/group of the reference album + $query = ' +SELECT '.$field.' + FROM '.$table.' + WHERE cat_id = '.$ref_cat_id.' +;'; + $ref_access = array_from_query($query, $field); + + if (count($ref_access) == 0) + { + $ref_access[] = -1; + } + + // step 3, remove the inconsistant permissions from sub-albums + $query = ' +DELETE + FROM '.$table.' + WHERE '.$field.' NOT IN ('.implode(',', $ref_access).') + AND cat_id IN ('.implode(',', $subcats).') +;'; + pwg_query($query); + } + } + } +} + +/** + * Returns all uppercats category ids of the given category ids. + * + * @param int[] $cat_ids + * @return int[] + */ +function get_uppercat_ids($cat_ids) +{ + if (!is_array($cat_ids) or count($cat_ids) < 1) + { + return array(); + } + + $uppercats = array(); + + $query = ' +SELECT uppercats + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $cat_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $uppercats = array_merge($uppercats, + explode(',', $row['uppercats'])); + } + $uppercats = array_unique($uppercats); + + return $uppercats; +} + +/** + * Set a new random representant to the categories. + * + * @param int[] $categories + */ +function set_random_representant($categories) +{ + $datas = array(); + foreach ($categories as $category_id) + { + $query = ' +SELECT image_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id = '.$category_id.' + ORDER BY '.DB_RANDOM_FUNCTION.'() + LIMIT 1 +;'; + list($representative) = pwg_db_fetch_row(pwg_query($query)); + + $datas[] = array( + 'id' => $category_id, + 'representative_picture_id' => $representative, + ); + } + + mass_updates( + CATEGORIES_TABLE, + array( + 'primary' => array('id'), + 'update' => array('representative_picture_id') + ), + $datas + ); +} + +/** + * Returns the fulldir for each given category id. + * + * @param int[] intcat_ids + * @return string[] + */ +function get_fulldirs($cat_ids) +{ + if (count($cat_ids) == 0) + { + return array(); + } + + // caching directories of existing categories + global $cat_dirs; // used in preg_replace callback + $query = ' +SELECT id, dir + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NOT NULL +;'; + $cat_dirs = simple_hash_from_query($query, 'id', 'dir'); + + // caching galleries_url + $query = ' +SELECT id, galleries_url + FROM '.SITES_TABLE.' +;'; + $galleries_url = simple_hash_from_query($query, 'id', 'galleries_url'); + + // categories : id, site_id, uppercats + $query = ' +SELECT id, uppercats, site_id + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NOT NULL + AND id IN ( +'.wordwrap(implode(', ', $cat_ids), 80, "\n").') +;'; + $categories = array_from_query($query); + + // filling $cat_fulldirs + $cat_dirs_callback = create_function('$m', 'global $cat_dirs; return $cat_dirs[$m[1]];'); + + $cat_fulldirs = array(); + foreach ($categories as $category) + { + $uppercats = str_replace(',', '/', $category['uppercats']); + $cat_fulldirs[$category['id']] = $galleries_url[$category['site_id']]; + $cat_fulldirs[$category['id']].= preg_replace_callback( + '/(\d+)/', + $cat_dirs_callback, + $uppercats + ); + } + + unset($cat_dirs); + + return $cat_fulldirs; +} + +/** + * Returns an array with all file system files according to $conf['file_ext'] + * + * @param string $path + * @param bool $recursive + * @return array + */ +function get_fs($path, $recursive = true) +{ + global $conf; + + // because isset is faster than in_array... + if (!isset($conf['flip_picture_ext'])) + { + $conf['flip_picture_ext'] = array_flip($conf['picture_ext']); + } + if (!isset($conf['flip_file_ext'])) + { + $conf['flip_file_ext'] = array_flip($conf['file_ext']); + } + + $fs['elements'] = array(); + $fs['thumbnails'] = array(); + $fs['representatives'] = array(); + $subdirs = array(); + + if (is_dir($path)) + { + if ($contents = opendir($path)) + { + while (($node = readdir($contents)) !== false) + { + if ($node == '.' or $node == '..') continue; + + if (is_file($path.'/'.$node)) + { + $extension = get_extension($node); + +// if (in_array($extension, $conf['picture_ext'])) + if (isset($conf['flip_picture_ext'][$extension])) + { + if (basename($path) == 'thumbnail') + { + $fs['thumbnails'][] = $path.'/'.$node; + } + else if (basename($path) == 'pwg_representative') + { + $fs['representatives'][] = $path.'/'.$node; + } + else + { + $fs['elements'][] = $path.'/'.$node; + } + } +// else if (in_array($extension, $conf['file_ext'])) + else if (isset($conf['flip_file_ext'][$extension])) + { + $fs['elements'][] = $path.'/'.$node; + } + } + else if (is_dir($path.'/'.$node) and $node != 'pwg_high' and $recursive) + { + $subdirs[] = $node; + } + } + } + closedir($contents); + + foreach ($subdirs as $subdir) + { + $tmp_fs = get_fs($path.'/'.$subdir); + + $fs['elements'] = array_merge($fs['elements'], + $tmp_fs['elements']); + + $fs['thumbnails'] = array_merge($fs['thumbnails'], + $tmp_fs['thumbnails']); + + $fs['representatives'] = array_merge($fs['representatives'], + $tmp_fs['representatives']); + } + } + return $fs; +} + +/** + * Synchronize base users list and related users list. + * + * Compares and synchronizes base users table (USERS_TABLE) with its child + * tables (USER_INFOS_TABLE, USER_ACCESS, USER_CACHE, USER_GROUP) : each + * base user must be present in child tables, users in child tables not + * present in base table must be deleted. + */ +function sync_users() +{ + global $conf; + + $query = ' +SELECT '.$conf['user_fields']['id'].' AS id + FROM '.USERS_TABLE.' +;'; + $base_users = array_from_query($query, 'id'); + + $query = ' +SELECT user_id + FROM '.USER_INFOS_TABLE.' +;'; + $infos_users = array_from_query($query, 'user_id'); + + // users present in $base_users and not in $infos_users must be added + $to_create = array_diff($base_users, $infos_users); + + if (count($to_create) > 0) + { + create_user_infos($to_create); + } + + // users present in user related tables must be present in the base user + // table + $tables = array( + USER_MAIL_NOTIFICATION_TABLE, + USER_FEED_TABLE, + USER_INFOS_TABLE, + USER_ACCESS_TABLE, + USER_CACHE_TABLE, + USER_CACHE_CATEGORIES_TABLE, + USER_GROUP_TABLE + ); + + foreach ($tables as $table) + { + $query = ' +SELECT DISTINCT user_id + FROM '.$table.' +;'; + $to_delete = array_diff( + array_from_query($query, 'user_id'), + $base_users + ); + + if (count($to_delete) > 0) + { + $query = ' +DELETE + FROM '.$table.' + WHERE user_id in ('.implode(',', $to_delete).') +;'; + pwg_query($query); + } + } +} + +/** + * Updates categories.uppercats field based on categories.id + categories.id_uppercat + */ +function update_uppercats() +{ + $query = ' +SELECT id, id_uppercat, uppercats + FROM '.CATEGORIES_TABLE.' +;'; + $cat_map = hash_from_query($query, 'id'); + + $datas = array(); + foreach ($cat_map as $id => $cat) + { + $upper_list = array(); + + $uppercat = $id; + while ($uppercat) + { + $upper_list[] = $uppercat; + $uppercat = $cat_map[$uppercat]['id_uppercat']; + } + + $new_uppercats = implode(',', array_reverse($upper_list)); + if ($new_uppercats != $cat['uppercats']) + { + $datas[] = array( + 'id' => $id, + 'uppercats' => $new_uppercats + ); + } + } + $fields = array('primary' => array('id'), 'update' => array('uppercats')); + mass_updates(CATEGORIES_TABLE, $fields, $datas); +} + +/** + * Update images.path field base on images.file and storage categories fulldirs. + */ +function update_path() +{ + $query = ' +SELECT DISTINCT(storage_category_id) + FROM '.IMAGES_TABLE.' + WHERE storage_category_id IS NOT NULL +;'; + $cat_ids = array_from_query($query, 'storage_category_id'); + $fulldirs = get_fulldirs($cat_ids); + + foreach ($cat_ids as $cat_id) + { + $query = ' +UPDATE '.IMAGES_TABLE.' + SET path = '.pwg_db_concat(array("'".$fulldirs[$cat_id]."/'",'file')).' + WHERE storage_category_id = '.$cat_id.' +;'; + pwg_query($query); + } +} + +/** + * Change the parent category of the given categories. The categories are + * supposed virtual. + * + * @param int[] $category_ids + * @param int $new_parent (-1 for root) + */ +function move_categories($category_ids, $new_parent = -1) +{ + global $page; + + if (count($category_ids) == 0) + { + return; + } + + $new_parent = $new_parent < 1 ? 'NULL' : $new_parent; + + $categories = array(); + + $query = ' +SELECT id, id_uppercat, status, uppercats + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $category_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $categories[$row['id']] = + array( + 'parent' => empty($row['id_uppercat']) ? 'NULL' : $row['id_uppercat'], + 'status' => $row['status'], + 'uppercats' => $row['uppercats'] + ); + } + + // is the movement possible? The movement is impossible if you try to move + // a category in a sub-category or itself + if ('NULL' != $new_parent) + { + $query = ' +SELECT uppercats + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$new_parent.' +;'; + list($new_parent_uppercats) = pwg_db_fetch_row(pwg_query($query)); + + foreach ($categories as $category) + { + // technically, you can't move a category with uppercats 12,125,13,14 + // into a new parent category with uppercats 12,125,13,14,24 + if (preg_match('/^'.$category['uppercats'].'(,|$)/', $new_parent_uppercats)) + { + $page['errors'][] = l10n('You cannot move an album in its own sub album'); + return; + } + } + } + + $tables = array( + USER_ACCESS_TABLE => 'user_id', + GROUP_ACCESS_TABLE => 'group_id' + ); + + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET id_uppercat = '.$new_parent.' + WHERE id IN ('.implode(',', $category_ids).') +;'; + pwg_query($query); + + update_uppercats(); + update_global_rank(); + + // status and related permissions management + if ('NULL' == $new_parent) + { + $parent_status = 'public'; + } + else + { + $query = ' +SELECT status + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$new_parent.' +;'; + list($parent_status) = pwg_db_fetch_row(pwg_query($query)); + } + + if ('private' == $parent_status) + { + set_cat_status(array_keys($categories), 'private'); + } + + $page['infos'][] = l10n_dec( + '%d album moved', '%d albums moved', + count($categories) + ); +} + +/** + * Create a virtual category. + * + * @param string $category_name + * @param int $parent_id + * @param array $options + * - boolean commentable + * - boolean visible + * - string status + * - string comment + * - boolean inherit + * @return array ('info', 'id') or ('error') + */ +function create_virtual_category($category_name, $parent_id=null, $options=array()) +{ + global $conf, $user; + + // is the given category name only containing blank spaces ? + if (preg_match('/^\s*$/', $category_name)) + { + return array('error' => l10n('The name of an album must not be empty')); + } + + $insert = array( + 'name' => $category_name, + 'rank' => 0, + 'global_rank' => 0, + ); + + // is the album commentable? + if (isset($options['commentable']) and is_bool($options['commentable'])) + { + $insert['commentable'] = $options['commentable']; + } + else + { + $insert['commentable'] = $conf['newcat_default_commentable']; + } + $insert['commentable'] = boolean_to_string($insert['commentable']); + + // is the album temporarily locked? (only visible by administrators, + // whatever permissions) (may be overwritten if parent album is not + // visible) + if (isset($options['visible']) and is_bool($options['visible'])) + { + $insert['visible'] = $options['visible']; + } + else + { + $insert['visible'] = $conf['newcat_default_visible']; + } + $insert['visible'] = boolean_to_string($insert['visible']); + + // is the album private? (may be overwritten if parent album is private) + if (isset($options['status']) and 'private' == $options['status']) + { + $insert['status'] = 'private'; + } + else + { + $insert['status'] = $conf['newcat_default_status']; + } + + // any description for this album? + if (isset($options['comment'])) + { + $insert['comment'] = $conf['allow_html_descriptions'] ? $options['comment'] : strip_tags($options['comment']); + } + + if (!empty($parent_id) and is_numeric($parent_id)) + { + $query = ' +SELECT id, uppercats, global_rank, visible, status + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$parent_id.' +;'; + $parent = pwg_db_fetch_assoc(pwg_query($query)); + + $insert['id_uppercat'] = $parent['id']; + $insert['global_rank'] = $parent['global_rank'].'.'.$insert['rank']; + + // at creation, must a category be visible or not ? Warning : if the + // parent category is invisible, the category is automatically create + // invisible. (invisible = locked) + if ('false' == $parent['visible']) + { + $insert['visible'] = 'false'; + } + + // at creation, must a category be public or private ? Warning : if the + // parent category is private, the category is automatically create + // private. + if ('private' == $parent['status']) + { + $insert['status'] = 'private'; + } + + $uppercats_prefix = $parent['uppercats'].','; + } + else + { + $uppercats_prefix = ''; + } + + // we have then to add the virtual category + single_insert(CATEGORIES_TABLE, $insert); + $inserted_id = pwg_db_insert_id(CATEGORIES_TABLE); + + single_update( + CATEGORIES_TABLE, + array('uppercats' => $uppercats_prefix.$inserted_id), + array('id' => $inserted_id) + ); + + update_global_rank(); + + if ('private' == $insert['status'] and !empty($insert['id_uppercat']) and ((isset($options['inherit']) and $options['inherit']) or $conf['inheritance_by_default']) ) + { + $query = ' + SELECT group_id + FROM '.GROUP_ACCESS_TABLE.' + WHERE cat_id = '.$insert['id_uppercat'].' + ;'; + $granted_grps = array_from_query($query, 'group_id'); + $inserts = array(); + foreach ($granted_grps as $granted_grp) + { + $inserts[] = array( + 'group_id' => $granted_grp, + 'cat_id' => $inserted_id + ); + } + mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $inserts); + + $query = ' + SELECT user_id + FROM '.USER_ACCESS_TABLE.' + WHERE cat_id = '.$insert['id_uppercat'].' + ;'; + $granted_users = array_from_query($query, 'user_id'); + add_permission_on_category($inserted_id, array_unique(array_merge(get_admins(), array($user['id']), $granted_users))); + } + else if ('private' == $insert['status']) + { + add_permission_on_category($inserted_id, array_unique(array_merge(get_admins(), array($user['id'])))); + } + + return array( + 'info' => l10n('Virtual album added'), + 'id' => $inserted_id, + ); +} + +/** + * Set tags to an image. + * Warning: given tags are all tags associated to the image, not additionnal tags. + * + * @param int[] $tags + * @param int $image_id + */ +function set_tags($tags, $image_id) +{ + set_tags_of( array($image_id=>$tags) ); +} + +/** + * Add new tags to a set of images. + * + * @param int[] $tags + * @param int[] $images + */ +function add_tags($tags, $images) +{ + if (count($tags) == 0 or count($images) == 0) + { + return; + } + + // we can't insert twice the same {image_id,tag_id} so we must first + // delete lines we'll insert later + $query = ' +DELETE + FROM '.IMAGE_TAG_TABLE.' + WHERE image_id IN ('.implode(',', $images).') + AND tag_id IN ('.implode(',', $tags).') +;'; + pwg_query($query); + + $inserts = array(); + foreach ($images as $image_id) + { + foreach ( array_unique($tags) as $tag_id) + { + $inserts[] = array( + 'image_id' => $image_id, + 'tag_id' => $tag_id, + ); + } + } + mass_inserts( + IMAGE_TAG_TABLE, + array_keys($inserts[0]), + $inserts + ); + invalidate_user_cache_nb_tags(); +} + +/** + * Delete tags and tags associations. + * + * @param int[] $tag_ids + */ +function delete_tags($tag_ids) +{ + if (is_numeric($tag_ids)) + { + $tag_ids = array($tag_ids); + } + + if (!is_array($tag_ids)) + { + return false; + } + + $query = ' +DELETE + FROM '.IMAGE_TAG_TABLE.' + WHERE tag_id IN ('.implode(',', $tag_ids).') +;'; + pwg_query($query); + + $query = ' +DELETE + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $tag_ids).') +;'; + pwg_query($query); + + invalidate_user_cache_nb_tags(); +} + +/** + * Returns a tag id from its name. If nothing found, create a new tag. + * + * @param string $tag_name + * @return int + */ +function tag_id_from_tag_name($tag_name) +{ + global $page; + + $tag_name = trim($tag_name); + if (isset($page['tag_id_from_tag_name_cache'][$tag_name])) + { + return $page['tag_id_from_tag_name_cache'][$tag_name]; + } + + // search existing by exact name + $query = ' +SELECT id + FROM '.TAGS_TABLE.' + WHERE name = \''.$tag_name.'\' +;'; + if (count($existing_tags = array_from_query($query, 'id')) == 0) + { + // search existing by case insensitive name + $query = ' +SELECT id + FROM '.TAGS_TABLE.' + WHERE CONVERT(name, CHAR) = \''.$tag_name.'\' +;'; + if (count($existing_tags = array_from_query($query, 'id')) == 0) + { + $url_name = trigger_event('render_tag_url', $tag_name); + // search existing by url name + $query = ' +SELECT id + FROM '.TAGS_TABLE.' + WHERE url_name = \''.$url_name.'\' +;'; + if (count($existing_tags = array_from_query($query, 'id')) == 0) + { + mass_inserts( + TAGS_TABLE, + array('name', 'url_name'), + array( + array( + 'name' => $tag_name, + 'url_name' => $url_name, + ) + ) + ); + + $page['tag_id_from_tag_name_cache'][$tag_name] = pwg_db_insert_id(TAGS_TABLE); + + invalidate_user_cache_nb_tags(); + + return $page['tag_id_from_tag_name_cache'][$tag_name]; + } + } + } + + $page['tag_id_from_tag_name_cache'][$tag_name] = $existing_tags[0]; + return $page['tag_id_from_tag_name_cache'][$tag_name]; +} + +/** + * Set tags of images. Overwrites all existing associations. + * + * @param array $tags_of - keys are image ids, values are array of tag ids + */ +function set_tags_of($tags_of) +{ + if (count($tags_of) > 0) + { + $query = ' +DELETE + FROM '.IMAGE_TAG_TABLE.' + WHERE image_id IN ('.implode(',', array_keys($tags_of)).') +;'; + pwg_query($query); + + $inserts = array(); + + foreach ($tags_of as $image_id => $tag_ids) + { + foreach (array_unique($tag_ids) as $tag_id) + { + $inserts[] = array( + 'image_id' => $image_id, + 'tag_id' => $tag_id, + ); + } + } + + if (count($inserts)) + { + mass_inserts( + IMAGE_TAG_TABLE, + array_keys($inserts[0]), + $inserts + ); + } + + invalidate_user_cache_nb_tags(); + } +} + +/** + * Associate a list of images to a list of categories. + * The function will not duplicate links and will preserve ranks. + * + * @param int[] $images + * @param int[] $categories + */ +function associate_images_to_categories($images, $categories) +{ + if (count($images) == 0 + or count($categories) == 0) + { + return false; + } + + // get existing associations + $query = ' +SELECT + image_id, + category_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE image_id IN ('.implode(',', $images).') + AND category_id IN ('.implode(',', $categories).') +;'; + $result = pwg_query($query); + + $existing = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $existing[ $row['category_id'] ][] = $row['image_id']; + } + + // get max rank of each categories + $query = ' +SELECT + category_id, + MAX(rank) AS max_rank + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE rank IS NOT NULL + AND category_id IN ('.implode(',', $categories).') + GROUP BY category_id +;'; + + $current_rank_of = simple_hash_from_query( + $query, + 'category_id', + 'max_rank' + ); + + // associate only not already associated images + $inserts = array(); + foreach ($categories as $category_id) + { + if (!isset($current_rank_of[$category_id])) + { + $current_rank_of[$category_id] = 0; + } + if (!isset($existing[$category_id])) + { + $existing[$category_id] = array(); + } + + foreach ($images as $image_id) + { + if (!in_array($image_id, $existing[$category_id])) + { + $rank = ++$current_rank_of[$category_id]; + + $inserts[] = array( + 'image_id' => $image_id, + 'category_id' => $category_id, + 'rank' => $rank, + ); + } + } + } + + if (count($inserts)) + { + mass_inserts( + IMAGE_CATEGORY_TABLE, + array_keys($inserts[0]), + $inserts + ); + + update_category($categories); + } +} + +/** + * Dissociate images from all old categories except their storage category and + * associate to new categories. + * This function will preserve ranks. + * + * @param int[] $images + * @param int[] $categories + */ +function move_images_to_categories($images, $categories) +{ + if (count($images) == 0) + { + return false; + } + + // let's first break links with all old albums but their "storage album" + $query = ' +DELETE '.IMAGE_CATEGORY_TABLE.'.* + FROM '.IMAGE_CATEGORY_TABLE.' + JOIN '.IMAGES_TABLE.' ON image_id=id + WHERE id IN ('.implode(',', $images).') +'; + + if (is_array($categories) and count($categories) > 0) + { + $query.= ' + AND category_id NOT IN ('.implode(',', $categories).') +'; + } + + $query.= ' + AND (storage_category_id IS NULL OR storage_category_id != category_id) +;'; + pwg_query($query); + + if (is_array($categories) and count($categories) > 0) + { + associate_images_to_categories($images, $categories); + } +} + +/** + * Associate images associated to a list of source categories to a list of + * destination categories. + * + * @param int[] $sources + * @param int[] $destinations + */ +function associate_categories_to_categories($sources, $destinations) +{ + if (count($sources) == 0) + { + return false; + } + + $query = ' +SELECT image_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id IN ('.implode(',', $sources).') +;'; + $images = array_from_query($query, 'image_id'); + + associate_images_to_categories($images, $destinations); +} + +/** + * Refer main Piwigo URLs (currently PHPWG_DOMAIN domain) + * + * @return string[] + */ +function pwg_URL() +{ + $urls = array( + 'HOME' => PHPWG_URL, + 'WIKI' => PHPWG_URL.'/doc', + 'DEMO' => PHPWG_URL.'/demo', + 'FORUM' => PHPWG_URL.'/forum', + 'BUGS' => PHPWG_URL.'/bugs', + 'EXTENSIONS' => PHPWG_URL.'/ext', + ); + return $urls; +} + +/** + * Invalidates cached data (permissions and category counts) for all users. + */ +function invalidate_user_cache($full = true) +{ + if ($full) + { + $query = ' +TRUNCATE TABLE '.USER_CACHE_CATEGORIES_TABLE.';'; + pwg_query($query); + $query = ' +TRUNCATE TABLE '.USER_CACHE_TABLE.';'; + pwg_query($query); + } + else + { + $query = ' +UPDATE '.USER_CACHE_TABLE.' + SET need_update = \'true\';'; + pwg_query($query); + } + trigger_action('invalidate_user_cache', $full); +} + +/** + * Invalidates cached tags counter for all users. + */ +function invalidate_user_cache_nb_tags() +{ + global $user; + unset($user['nb_available_tags']); + + $query = ' +UPDATE '.USER_CACHE_TABLE.' + SET nb_available_tags = NULL'; + pwg_query($query); +} + +/** + * Adds the caracter set to a create table sql query. + * All CREATE TABLE queries must call this function + * + * @param string $query + * @return string + */ +function create_table_add_character_set($query) +{ + defined('DB_CHARSET') or fatal_error('create_table_add_character_set DB_CHARSET undefined'); + if ('DB_CHARSET'!='') + { + if ( version_compare(pwg_get_db_version(), '4.1.0', '<') ) + { + return $query; + } + $charset_collate = " DEFAULT CHARACTER SET ".DB_CHARSET; + if (DB_COLLATE!='') + { + $charset_collate .= " COLLATE ".DB_COLLATE; + } + if ( is_array($query) ) + { + foreach( $query as $id=>$q) + { + $q=trim($q); + $q=trim($q, ';'); + if (preg_match('/^CREATE\s+TABLE/i',$q)) + { + $q.=$charset_collate; + } + $q .= ';'; + $query[$id] = $q; + } + } + else + { + $query=trim($query); + $query=trim($query, ';'); + if (preg_match('/^CREATE\s+TABLE/i',$query)) + { + $query.=$charset_collate; + } + $query .= ';'; + } + } + return $query; +} + +/** + * Returns access levels as array used on template with html_options functions. + * + * @param int $MinLevelAccess + * @param int $MaxLevelAccess + * @return array + */ +function get_user_access_level_html_options($MinLevelAccess = ACCESS_FREE, $MaxLevelAccess = ACCESS_CLOSED) +{ + $tpl_options = array(); + for ($level = $MinLevelAccess; $level <= $MaxLevelAccess; $level++) + { + $tpl_options[$level] = l10n(sprintf('ACCESS_%d', $level)); + } + return $tpl_options; +} + +/** + * returns a list of templates currently available in template-extension. + * Each .tpl file is extracted from template-extension. + * + * @param string $start (internal use) + * @return string[] + */ +function get_extents($start='') +{ + if ($start == '') { $start = './template-extension'; } + $dir = opendir($start); + $extents = array(); + + while (($file = readdir($dir)) !== false) + { + if ( $file == '.' or $file == '..' or $file == '.svn') continue; + $path = $start . '/' . $file; + if (is_dir($path)) + { + $extents = array_merge($extents, get_extents($path)); + } + elseif ( !is_link($path) and file_exists($path) + and get_extension($path) == 'tpl' ) + { + $extents[] = substr($path, 21); + } + } + return $extents; +} + +/** + * Create a new tag. + * + * @param string $tag_name + * @return array ('id', info') or ('error') + */ +function create_tag($tag_name) +{ + // does the tag already exists? + $query = ' +SELECT id + FROM '.TAGS_TABLE.' + WHERE name = \''.$tag_name.'\' +;'; + $existing_tags = array_from_query($query, 'id'); + + if (count($existing_tags) == 0) + { + single_insert( + TAGS_TABLE, + array( + 'name' => $tag_name, + 'url_name' => trigger_event('render_tag_url', $tag_name), + ) + ); + + $inserted_id = pwg_db_insert_id(TAGS_TABLE); + + return array( + 'info' => l10n('Tag "%s" was added', stripslashes($tag_name)), + 'id' => $inserted_id, + ); + } + else + { + return array( + 'error' => l10n('Tag "%s" already exists', stripslashes($tag_name)) + ); + } +} + +/** + * Is the category accessible to the (Admin) user ? + * Note : if the user is not authorized to see this category, category jump + * will be replaced by admin cat_modify page + * + * @param int $category_id + * @return bool + */ +function cat_admin_access($category_id) +{ + global $user; + + // $filter['visible_categories'] and $filter['visible_images'] + // are not used because it's not necessary (filter <> restriction) + if (in_array($category_id, explode(',', $user['forbidden_categories']))) + { + return false; + } + return true; +} + +/** + * Retrieve data from external URL. + * + * @param string $src + * @param string|Ressource $dest - can be a file ressource or string + * @param array $get_data - data added to request url + * @param array $post_data - data transmitted with POST + * @param string $user_agent + * @param int $step (internal use) + * @return bool + */ +function fetchRemote($src, &$dest, $get_data=array(), $post_data=array(), $user_agent='Piwigo', $step=0) +{ + // Try to retrieve data from local file? + if (!url_is_remote($src)) + { + $content = @file_get_contents($src); + if ($content !== false) + { + is_resource($dest) ? @fwrite($dest, $content) : $dest = $content; + return true; + } + else + { + return false; + } + } + + // After 3 redirections, return false + if ($step > 3) return false; + + // Initialization + $method = empty($post_data) ? 'GET' : 'POST'; + $request = empty($post_data) ? '' : http_build_query($post_data, '', '&'); + if (!empty($get_data)) + { + $src .= strpos($src, '?') === false ? '?' : '&'; + $src .= http_build_query($get_data, '', '&'); + } + + // Initialize $dest + is_resource($dest) or $dest = ''; + + // Try curl to read remote file + if (function_exists('curl_init')) + { + $ch = @curl_init(); + @curl_setopt($ch, CURLOPT_URL, $src); + @curl_setopt($ch, CURLOPT_HEADER, 1); + @curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); + @curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); + if ($method == 'POST') + { + @curl_setopt($ch, CURLOPT_POST, 1); + @curl_setopt($ch, CURLOPT_POSTFIELDS, $request); + } + $content = @curl_exec($ch); + $header_length = @curl_getinfo($ch, CURLINFO_HEADER_SIZE); + $status = @curl_getinfo($ch, CURLINFO_HTTP_CODE); + @curl_close($ch); + if ($content !== false and $status >= 200 and $status < 400) + { + if (preg_match('/Location:\s+?(.+)/', substr($content, 0, $header_length), $m)) + { + return fetchRemote($m[1], $dest, array(), array(), $user_agent, $step+1); + } + $content = substr($content, $header_length); + is_resource($dest) ? @fwrite($dest, $content) : $dest = $content; + return true; + } + } + + // Try file_get_contents to read remote file + if (ini_get('allow_url_fopen')) + { + $opts = array( + 'http' => array( + 'method' => $method, + 'user_agent' => $user_agent, + ) + ); + if ($method == 'POST') + { + $opts['http']['content'] = $request; + } + $context = @stream_context_create($opts); + $content = @file_get_contents($src, false, $context); + if ($content !== false) + { + is_resource($dest) ? @fwrite($dest, $content) : $dest = $content; + return true; + } + } + + // Try fsockopen to read remote file + $src = parse_url($src); + $host = $src['host']; + $path = isset($src['path']) ? $src['path'] : '/'; + $path .= isset($src['query']) ? '?'.$src['query'] : ''; + + if (($s = @fsockopen($host,80,$errno,$errstr,5)) === false) + { + return false; + } + + $http_request = $method." ".$path." HTTP/1.0\r\n"; + $http_request .= "Host: ".$host."\r\n"; + if ($method == 'POST') + { + $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n"; + $http_request .= "Content-Length: ".strlen($request)."\r\n"; + } + $http_request .= "User-Agent: ".$user_agent."\r\n"; + $http_request .= "Accept: */*\r\n"; + $http_request .= "\r\n"; + $http_request .= $request; + + fwrite($s, $http_request); + + $i = 0; + $in_content = false; + while (!feof($s)) + { + $line = fgets($s); + + if (rtrim($line,"\r\n") == '' && !$in_content) + { + $in_content = true; + $i++; + continue; + } + if ($i == 0) + { + if (!preg_match('/HTTP\/(\\d\\.\\d)\\s*(\\d+)\\s*(.*)/',rtrim($line,"\r\n"), $m)) + { + fclose($s); + return false; + } + $status = (integer) $m[2]; + if ($status < 200 || $status >= 400) + { + fclose($s); + return false; + } + } + if (!$in_content) + { + if (preg_match('/Location:\s+?(.+)$/',rtrim($line,"\r\n"),$m)) + { + fclose($s); + return fetchRemote(trim($m[1]),$dest,array(),array(),$user_agent,$step+1); + } + $i++; + continue; + } + is_resource($dest) ? @fwrite($dest, $line) : $dest .= $line; + $i++; + } + fclose($s); + return true; +} + +/** + * Returns the groupname corresponding to the given group identifier if exists. + * + * @param int $group_id + * @return string|false + */ +function get_groupname($group_id) +{ + $query = ' +SELECT name + FROM '.GROUPS_TABLE.' + WHERE id = '.intval($group_id).' +;'; + $result = pwg_query($query); + if (pwg_db_num_rows($result) > 0) + { + list($groupname) = pwg_db_fetch_row($result); + } + else + { + return false; + } + + return $groupname; +} + +/** + * Returns the username corresponding to the given user identifier if exists. + * + * @param int $user_id + * @return string|false + */ +function get_username($user_id) +{ + global $conf; + + $query = ' +SELECT '.$conf['user_fields']['username'].' + FROM '.USERS_TABLE.' + WHERE '.$conf['user_fields']['id'].' = '.intval($user_id).' +;'; + $result = pwg_query($query); + if (pwg_db_num_rows($result) > 0) + { + list($username) = pwg_db_fetch_row($result); + } + else + { + return false; + } + + return stripslashes($username); +} + +/** + * Get url on piwigo.org for newsletter subscription + * + * @param string $language (unused) + * @return string + */ +function get_newsletter_subscribe_base_url($language='en_UK') +{ + return PHPWG_URL.'/announcement/subscribe/'; +} + +/** + * Return admin menu id for accordion. + * + * @param string $menu_page + * @return int + */ +function get_active_menu($menu_page) +{ + global $page; + + if (isset($page['active_menu'])) + { + return $page['active_menu']; + } + + switch ($menu_page) + { + case 'photo': + case 'photos_add': + case 'rating': + case 'tags': + case 'batch_manager': + return 0; + + case 'album': + case 'cat_list': + case 'cat_move': + case 'cat_options': + case 'permalinks': + return 1; + + case 'user_list': + case 'user_perm': + case 'group_list': + case 'group_perm': + case 'notification_by_mail': + return 2; + + case 'plugins': + case 'plugin': + return 3; + + case 'site_manager': + case 'site_update': + case 'stats': + case 'history': + case 'maintenance': + case 'comments': + case 'updates': + return 4; + + case 'configuration': + case 'derivatives': + case 'extend_for_templates': + case 'menubar': + case 'themes': + case 'theme': + case 'languages': + return 5; + + default: + return 0; + } +} + +/** + * Get tags list from SQL query (ids are surrounded by ~~, for get_tag_ids()). + * + * @param string $query + * @param boolean $only_user_language - if true, only local name is returned for + * multilingual tags (if ExtendedDescription plugin is active) + * @return array[] ('id', 'name') + */ +function get_taglist($query, $only_user_language=true) +{ + $result = pwg_query($query); + + $taglist = array(); + $altlist = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $raw_name = $row['name']; + $name = trigger_event('render_tag_name', $raw_name, $row); + + $taglist[] = array( + 'name' => $name, + 'id' => '~~'.$row['id'].'~~', + ); + + if (!$only_user_language) + { + $alt_names = trigger_event('get_tag_alt_names', array(), $raw_name); + + foreach( array_diff( array_unique($alt_names), array($name) ) as $alt) + { + $altlist[] = array( + 'name' => $alt, + 'id' => '~~'.$row['id'].'~~', + ); + } + } + } + + usort($taglist, 'tag_alpha_compare'); + if (count($altlist)) + { + usort($altlist, 'tag_alpha_compare'); + $taglist = array_merge($taglist, $altlist); + } + + return $taglist; +} + +/** + * Get tags ids from a list of raw tags (existing tags or new tags). + * + * In $raw_tags we receive something like array('~~6~~', '~~59~~', 'New + * tag', 'Another new tag') The ~~34~~ means that it is an existing + * tag. We added the surrounding ~~ to permit creation of tags like "10" + * or "1234" (numeric characters only) + * + * @param string|string[] $raw_tags - array or comma separated string + * @param boolean $allow_create + * @return int[] + */ +function get_tag_ids($raw_tags, $allow_create=true) +{ + $tag_ids = array(); + if (!is_array($raw_tags)) + { + $raw_tags = explode(',',$raw_tags); + } + + foreach ($raw_tags as $raw_tag) + { + if (preg_match('/^~~(\d+)~~$/', $raw_tag, $matches)) + { + $tag_ids[] = $matches[1]; + } + elseif ($allow_create) + { + // we have to create a new tag + $tag_ids[] = tag_id_from_tag_name($raw_tag); + } + } + + return $tag_ids; +} + +/** + * Returns the argument_ids array with new sequenced keys based on related + * names. Sequence is not case sensitive. + * Warning: By definition, this function breaks original keys. + * + * @param int[] $elements_ids + * @param string[] $name - names of elements, indexed by ids + * @return int[] + */ +function order_by_name($element_ids, $name) +{ + $ordered_element_ids = array(); + foreach ($element_ids as $k_id => $element_id) + { + $key = strtolower($name[$element_id]) .'-'. $name[$element_id] .'-'. $k_id; + $ordered_element_ids[$key] = $element_id; + } + ksort($ordered_element_ids); + return $ordered_element_ids; +} + +/** + * Grant access to a list of categories for a list of users. + * + * @param int[] $category_ids + * @param int[] $user_ids + */ +function add_permission_on_category($category_ids, $user_ids) +{ + if (!is_array($category_ids)) + { + $category_ids = array($category_ids); + } + if (!is_array($user_ids)) + { + $user_ids = array($user_ids); + } + + // check for emptiness + if (count($category_ids) == 0 or count($user_ids) == 0) + { + return; + } + + // make sure categories are private and select uppercats or subcats + $cat_ids = get_uppercat_ids($category_ids); + if (isset($_POST['apply_on_sub'])) + { + $cat_ids = array_merge($cat_ids, get_subcat_ids($category_ids)); + } + + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $cat_ids).') + AND status = \'private\' +;'; + $private_cats = array_from_query($query, 'id'); + + if (count($private_cats) == 0) + { + return; + } + + $inserts = array(); + foreach ($private_cats as $cat_id) + { + foreach ($user_ids as $user_id) + { + $inserts[] = array( + 'user_id' => $user_id, + 'cat_id' => $cat_id + ); + } + } + + mass_inserts( + USER_ACCESS_TABLE, + array('user_id','cat_id'), + $inserts, + array('ignore'=>true) + ); +} + +/** + * Returns the list of admin users. + * + * @param boolean $include_webmaster + * @return int[] + */ +function get_admins($include_webmaster=true) +{ + $status_list = array('admin'); + + if ($include_webmaster) + { + $status_list[] = 'webmaster'; + } + + $query = ' +SELECT + user_id + FROM '.USER_INFOS_TABLE.' + WHERE status in (\''.implode("','", $status_list).'\') +;'; + + return array_from_query($query, 'user_id'); +} + +/** + * Delete all derivative files for one or several types + * + * @param 'all'|int[] $types + */ +function clear_derivative_cache($types='all') +{ + if ($types === 'all') + { + $types = ImageStdParams::get_all_types(); + $types[] = IMG_CUSTOM; + } + elseif (!is_array($types)) + { + $types = array($types); + } + + for ($i=0; $i1) + { + $pattern .= '(' . implode('|',$types) . ')'; + } + else + { + $pattern .= $types[0]; + } + $pattern.='\.[a-zA-Z0-9]{3,4}$#'; + + if ($contents = @opendir(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR)) + { + while (($node = readdir($contents)) !== false) + { + if ($node != '.' + and $node != '..' + and is_dir(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$node)) + { + clear_derivative_cache_rec(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$node, $pattern); + } + } + closedir($contents); + } +} + +/** + * Used by clear_derivative_cache() + * @ignore + */ +function clear_derivative_cache_rec($path, $pattern) +{ + $rmdir = true; + $rm_index = false; + + if ($contents = opendir($path)) + { + while (($node = readdir($contents)) !== false) + { + if ($node == '.' or $node == '..') + continue; + if (is_dir($path.'/'.$node)) + { + $rmdir &= clear_derivative_cache_rec($path.'/'.$node, $pattern); + } + else + { + if (preg_match($pattern, $node)) + { + unlink($path.'/'.$node); + } + elseif ($node=='index.htm') + { + $rm_index = true; + } + else + { + $rmdir = false; + } + } + } + closedir($contents); + + if ($rmdir) + { + if ($rm_index) + { + unlink($path.'/index.htm'); + } + clearstatcache(); + @rmdir($path); + } + return $rmdir; + } +} + +/** + * Deletes derivatives of a particular element + * + * @param array $infos ('path'[, 'representative_ext']) + * @param 'all'|int $type + */ +function delete_element_derivatives($infos, $type='all') +{ + $path = $infos['path']; + if (!empty($infos['representative_ext'])) + { + $path = original_to_representative( $path, $infos['representative_ext']); + } + if (substr_compare($path, '../', 0, 3)==0) + { + $path = substr($path, 3); + } + $dot = strrpos($path, '.'); + if ($type=='all') + { + $pattern = '-*'; + } + else + { + $pattern = '-'.derivative_to_url($type).'*'; + } + $path = substr_replace($path, $pattern, $dot, 0); + if ( ($glob=glob(PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$path)) !== false) + { + foreach( $glob as $file) + { + @unlink($file); + } + } +} + +/** + * Returns an array containing sub-directories, excluding ".svn" + * + * @param string $directory + * @return string[] + */ +function get_dirs($directory) +{ + $sub_dirs = array(); + if ($opendir = opendir($directory)) + { + while ($file = readdir($opendir)) + { + if ($file != '.' + and $file != '..' + and is_dir($directory.'/'.$file) + and $file != '.svn') + { + $sub_dirs[] = $file; + } + } + closedir($opendir); + } + return $sub_dirs; +} + +/** + * Recursively delete a directory. + * + * @param string $path + * @param string $trash_path, try to move the directory to this path if it cannot be delete + */ +function deltree($path, $trash_path=null) +{ + if (is_dir($path)) + { + $fh = opendir($path); + while ($file = readdir($fh)) + { + if ($file != '.' and $file != '..') + { + $pathfile = $path . '/' . $file; + if (is_dir($pathfile)) + { + deltree($pathfile, $trash_path); + } + else + { + @unlink($pathfile); + } + } + } + closedir($fh); + + if (@rmdir($path)) + { + return true; + } + elseif (!empty($trash_path)) + { + if (!is_dir($trash_path)) + { + @mkgetdir($trash_path, MKGETDIR_RECURSIVE|MKGETDIR_DIE_ON_ERROR|MKGETDIR_PROTECT_HTACCESS); + } + while ($r = $trash_path . '/' . md5(uniqid(rand(), true))) + { + if (!is_dir($r)) + { + @rename($path, $r); + break; + } + } + } + else + { + return false; + } + } +} + +?> \ No newline at end of file diff --git a/sources/admin/include/functions_history.inc.php b/sources/admin/include/functions_history.inc.php new file mode 100644 index 0000000..61d6765 --- /dev/null +++ b/sources/admin/include/functions_history.inc.php @@ -0,0 +1,162 @@ +set_id('history'); + $tabsheet->select($page['page']); + $tabsheet->assign(); +} + +function history_compare($a, $b) +{ + return strcmp($a['date'].$a['time'], $b['date'].$b['time']); +} + +function get_history($data, $search, $types) +{ + if (isset($search['fields']['filename'])) + { + $query = ' +SELECT + id + FROM '.IMAGES_TABLE.' + WHERE file LIKE \''.$search['fields']['filename'].'\' +;'; + $search['image_ids'] = array_from_query($query, 'id'); + } + + // echo '
'; print_r($search); echo '
'; + + $clauses = array(); + + if (isset($search['fields']['date-after'])) + { + $clauses[] = "date >= '".$search['fields']['date-after']."'"; + } + + if (isset($search['fields']['date-before'])) + { + $clauses[] = "date <= '".$search['fields']['date-before']."'"; + } + + if (isset($search['fields']['types'])) + { + $local_clauses = array(); + + foreach ($types as $type) { + if (in_array($type, $search['fields']['types'])) { + $clause = 'image_type '; + if ($type == 'none') + { + $clause.= 'IS NULL'; + } + else + { + $clause.= "= '".$type."'"; + } + + $local_clauses[] = $clause; + } + } + + if (count($local_clauses) > 0) + { + $clauses[] = implode(' OR ', $local_clauses); + } + } + + if (isset($search['fields']['user']) + and $search['fields']['user'] != -1) + { + $clauses[] = 'user_id = '.$search['fields']['user']; + } + + if (isset($search['fields']['image_id'])) + { + $clauses[] = 'image_id = '.$search['fields']['image_id']; + } + + if (isset($search['fields']['filename'])) + { + if (count($search['image_ids']) == 0) + { + // a clause that is always false + $clauses[] = '1 = 2 '; + } + else + { + $clauses[] = 'image_id IN ('.implode(', ', $search['image_ids']).')'; + } + } + + if (isset($search['fields']['ip'])) + { + $clauses[] = 'IP LIKE "'.$search['fields']['ip'].'"'; + } + + $clauses = prepend_append_array_items($clauses, '(', ')'); + + $where_separator = + implode( + "\n AND ", + $clauses + ); + + $query = ' +SELECT + date, + time, + user_id, + IP, + section, + category_id, + tag_ids, + image_id, + image_type + FROM '.HISTORY_TABLE.' + WHERE '.$where_separator.' +;'; + + // LIMIT '.$conf['nb_logs_page'].' OFFSET '.$page['start'].' + + $result = pwg_query($query); + + while ($row = pwg_db_fetch_assoc($result)) + { + $data[] = $row; + } + + return $data; +} + +add_event_handler('get_history', 'get_history', EVENT_HANDLER_PRIORITY_NEUTRAL, 3); +trigger_action('functions_history_included'); + +?> \ No newline at end of file diff --git a/sources/admin/include/functions_install.inc.php b/sources/admin/include/functions_install.inc.php new file mode 100644 index 0000000..9e479f5 --- /dev/null +++ b/sources/admin/include/functions_install.inc.php @@ -0,0 +1,102 @@ +fs_themes as $theme_id => $fs_theme) + { + if (in_array($theme_id, array('elegant', 'smartpocket'))) + { + $themes->perform_action('activate', $theme_id); + } + } +} + +function install_db_connect(&$infos, &$errors) +{ + try + { + pwg_db_connect($_POST['dbhost'], $_POST['dbuser'], + $_POST['dbpasswd'], $_POST['dbname']); + pwg_db_check_version(); + } + catch (Exception $e) + { + $errors[] = l10n($e->getMessage()); + } +} +?> \ No newline at end of file diff --git a/sources/admin/include/functions_metadata.php b/sources/admin/include/functions_metadata.php new file mode 100644 index 0000000..5bcbb12 --- /dev/null +++ b/sources/admin/include/functions_metadata.php @@ -0,0 +1,320 @@ + $value) + { + if (in_array($pwg_key, array('date_creation', 'date_available'))) + { + if (preg_match('/(\d{4})(\d{2})(\d{2})/', $value, $matches)) + { + $year = $matches[1]; + $month = $matches[2]; + $day = $matches[3]; + + if (!checkdate($month, $day, $year)) + { + // we suppose the year is correct + $month = 1; + $day = 1; + } + + $iptc[$pwg_key] = $year.'-'.$month.'-'.$day; + } + } + } + + if (isset($iptc['keywords'])) + { + // official keywords separator is the comma + $iptc['keywords'] = preg_replace('/[.;]/', ',', $iptc['keywords']); + $iptc['keywords'] = preg_replace('/,+/', ',', $iptc['keywords']); + $iptc['keywords'] = preg_replace('/^,+|,+$/', '', $iptc['keywords']); + + $iptc['keywords'] = implode( + ',', + array_unique( + explode( + ',', + $iptc['keywords'] + ) + ) + ); + } + + foreach ($iptc as $pwg_key => $value) + { + $iptc[$pwg_key] = addslashes($iptc[$pwg_key]); + } + + return $iptc; +} + +function get_sync_exif_data($file) +{ + global $conf; + + $exif = get_exif_data($file, $conf['use_exif_mapping']); + + foreach ($exif as $pwg_key => $value) + { + if (in_array($pwg_key, array('date_creation', 'date_available'))) + { + if (preg_match('/^(\d{4}).(\d{2}).(\d{2}) (\d{2}).(\d{2}).(\d{2})/', $value, $matches)) + { + $exif[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3].' '.$matches[4].':'.$matches[5].':'.$matches[6]; + } + elseif (preg_match('/^(\d{4}).(\d{2}).(\d{2})/', $value, $matches)) + { + $exif[$pwg_key] = $matches[1].'-'.$matches[2].'-'.$matches[3]; + } + else + { + unset($exif[$pwg_key]); + continue; + } + } + $exif[$pwg_key] = addslashes($exif[$pwg_key]); + } + + return $exif; +} + + +function get_sync_metadata_attributes() +{ + global $conf; + + $update_fields = array('filesize', 'width', 'height'); + + if ($conf['use_exif']) + { + $update_fields = + array_merge( + $update_fields, + array_keys($conf['use_exif_mapping']), + array('latitude', 'longitude') + ); + } + + if ($conf['use_iptc']) + { + $update_fields = + array_merge( + $update_fields, + array_keys($conf['use_iptc_mapping']) + ); + } + + return array_unique($update_fields); +} + +function get_sync_metadata($infos) +{ + global $conf; + $file = PHPWG_ROOT_PATH.$infos['path']; + $fs = @filesize($file); + + if ($fs===false) + { + return false; + } + + $infos['filesize'] = floor($fs/1024); + + if (isset($infos['representative_ext'])) + { + $file = original_to_representative($file, $infos['representative_ext']); + } + + if ($image_size = @getimagesize($file)) + { + $infos['width'] = $image_size[0]; + $infos['height'] = $image_size[1]; + } + + if ($conf['use_exif']) + { + $exif = get_sync_exif_data($file); + $infos = array_merge($infos, $exif); + } + + if ($conf['use_iptc']) + { + $iptc = get_sync_iptc_data($file); + $infos = array_merge($infos, $iptc); + } + + return $infos; +} + + +function sync_metadata($ids) +{ + global $conf; + + if (!defined('CURRENT_DATE')) + { + define('CURRENT_DATE', date('Y-m-d')); + } + + $datas = array(); + $tags_of = array(); + + $query = ' +SELECT id, path, representative_ext + FROM '.IMAGES_TABLE.' + WHERE id IN ( +'.wordwrap(implode(', ', $ids), 160, "\n").' +) +;'; + + $result = pwg_query($query); + while ($data = pwg_db_fetch_assoc($result)) + { + $data = get_sync_metadata($data); + if ($data === false) + { + continue; + } + + $id = $data['id']; + foreach (array('keywords', 'tags') as $key) + { + if (isset($data[$key])) + { + if (!isset($tags_of[$id])) + { + $tags_of[$id] = array(); + } + + foreach (explode(',', $data[$key]) as $tag_name) + { + $tags_of[$id][] = tag_id_from_tag_name($tag_name); + } + } + } + + $data['date_metadata_update'] = CURRENT_DATE; + + $datas[] = $data; + } + + if (count($datas) > 0) + { + $update_fields = get_sync_metadata_attributes(); + $update_fields[] = 'date_metadata_update'; + + $update_fields = array_diff( + $update_fields, + array('tags', 'keywords') + ); + + mass_updates( + IMAGES_TABLE, + array( + 'primary' => array('id'), + 'update' => $update_fields + ), + $datas, + MASS_UPDATES_SKIP_EMPTY + ); + } + + set_tags_of($tags_of); +} + +/** + * returns an array associating element id (images.id) with its complete + * path in the filesystem + * + * @param int id_uppercat + * @param int site_id + * @param boolean recursive ? + * @param boolean only newly added files ? + * @return array + */ +function get_filelist($category_id = '', $site_id=1, $recursive = false, + $only_new = false) +{ + // filling $cat_ids : all categories required + $cat_ids = array(); + + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE site_id = '.$site_id.' + AND dir IS NOT NULL'; + if (is_numeric($category_id)) + { + if ($recursive) + { + $query.= ' + AND uppercats '.DB_REGEX_OPERATOR.' \'(^|,)'.$category_id.'(,|$)\' +'; + } + else + { + $query.= ' + AND id = '.$category_id.' +'; + } + } + $query.= ' +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $cat_ids[] = $row['id']; + } + + if (count($cat_ids) == 0) + { + return array(); + } + + $query = ' +SELECT id, path, representative_ext + FROM '.IMAGES_TABLE.' + WHERE storage_category_id IN ('.implode(',', $cat_ids).')'; + if ($only_new) + { + $query.= ' + AND date_metadata_update IS NULL +'; + } + $query.= ' +;'; + return hash_from_query($query, 'id'); +} +?> \ No newline at end of file diff --git a/sources/admin/include/functions_notification_by_mail.inc.php b/sources/admin/include/functions_notification_by_mail.inc.php new file mode 100644 index 0000000..8d0fe26 --- /dev/null +++ b/sources/admin/include/functions_notification_by_mail.inc.php @@ -0,0 +1,546 @@ + get_moment(), + 'sendmail_timeout' => (intval(ini_get('max_execution_time')) * $conf['nbm_max_treatment_timeout_percent']), + 'is_sendmail_timeout' => false + ); + +if + ( + (!isset($env_nbm['sendmail_timeout'])) or + (!is_numeric($env_nbm['sendmail_timeout'])) or + ($env_nbm['sendmail_timeout'] <= 0) + ) +{ + $env_nbm['sendmail_timeout'] = $conf['nbm_treatment_timeout_default']; +} + +/* + * Search an available check_key + * + * It's a copy of function find_available_feed_id + * + * @return string nbm identifier + */ +function find_available_check_key() +{ + while (true) + { + $key = generate_key(16); + $query = ' +select + count(*) +from + '.USER_MAIL_NOTIFICATION_TABLE.' +where + check_key = \''.$key.'\';'; + + list($count) = pwg_db_fetch_row(pwg_query($query)); + if ($count == 0) + { + return $key; + } + } +} + +/* + * Check sendmail timeout state + * + * @return true, if it's timeout + */ +function check_sendmail_timeout() +{ + global $env_nbm; + + $env_nbm['is_sendmail_timeout'] = ((get_moment() - $env_nbm['start_time']) > $env_nbm['sendmail_timeout']); + + return $env_nbm['is_sendmail_timeout']; +} + + +/* + * Add quote to all elements of check_key_list + * + * @return quoted check key list + */ +function quote_check_key_list($check_key_list = array()) +{ + return array_map(create_function('$s', 'return \'\\\'\'.$s.\'\\\'\';'), $check_key_list); +} + +/* + * Execute all main queries to get list of user + * + * Type are the type of list 'subscribe', 'send' + * + * return array of users + */ +function get_user_notifications($action, $check_key_list = array(), $enabled_filter_value = '') +{ + global $conf; + + $data_users = array(); + + if (in_array($action, array('subscribe', 'send'))) + { + $quoted_check_key_list = quote_check_key_list($check_key_list); + if (count($quoted_check_key_list) != 0 ) + { + $query_and_check_key = ' and + check_key in ('.implode(",", $quoted_check_key_list).') '; + } + else + { + $query_and_check_key = ''; + } + + $query = ' +select + N.user_id, + N.check_key, + U.'.$conf['user_fields']['username'].' as username, + U.'.$conf['user_fields']['email'].' as mail_address, + N.enabled, + N.last_send +from + '.USER_MAIL_NOTIFICATION_TABLE.' as N, + '.USERS_TABLE.' as U +where + N.user_id = U.'.$conf['user_fields']['id']; + + if ($action == 'send') + { + // No mail empty and all users enabled + $query .= ' and + N.enabled = \'true\' and + U.'.$conf['user_fields']['email'].' is not null'; + } + + $query .= $query_and_check_key; + + if (isset($enabled_filter_value) and ($enabled_filter_value != '')) + { + $query .= ' and + N.enabled = \''.boolean_to_string($enabled_filter_value).'\''; + } + + $query .= ' +order by'; + + if ($action == 'send') + { + $query .= ' + last_send, username;'; + } + else + { + $query .= ' + username;'; + } + + $query .= ';'; + + $result = pwg_query($query); + if (!empty($result)) + { + while ($nbm_user = pwg_db_fetch_assoc($result)) + { + $data_users[] = $nbm_user; + } + } + } + return $data_users; +} + +/* + * Begin of use nbm environment + * Prepare and save current environment and initialize data in order to send mail + * + * Return none + */ +function begin_users_env_nbm($is_to_send_mail = false) +{ + global $user, $lang, $lang_info, $conf, $env_nbm; + + // Save $user, $lang_info and $lang arrays (include/user.inc.php has been executed) + $env_nbm['save_user'] = $user; + // Save current language to stack, necessary because $user change during NBM + switch_lang_to($user['language']); + + $env_nbm['is_to_send_mail'] = $is_to_send_mail; + + if ($is_to_send_mail) + { + // Init mail configuration + $env_nbm['email_format'] = get_str_email_format($conf['nbm_send_html_mail']); + $env_nbm['send_as_name'] = ((isset($conf['nbm_send_mail_as']) and !empty($conf['nbm_send_mail_as'])) ? $conf['nbm_send_mail_as'] : get_mail_sender_name()); + $env_nbm['send_as_mail_address'] = get_webmaster_mail_address(); + $env_nbm['send_as_mail_formated'] = format_email($env_nbm['send_as_name'], $env_nbm['send_as_mail_address']); + // Init mail counter + $env_nbm['error_on_mail_count'] = 0; + $env_nbm['sent_mail_count'] = 0; + // Save sendmail message info and error in the original language + $env_nbm['msg_info'] = l10n('Mail sent to %s [%s].'); + $env_nbm['msg_error'] = l10n('Error when sending email to %s [%s].'); + } +} + +/* + * End of use nbm environment + * Restore environment + * + * Return none + */ +function end_users_env_nbm() +{ + global $user, $lang, $lang_info, $env_nbm; + + // Restore $user, $lang_info and $lang arrays (include/user.inc.php has been executed) + $user = $env_nbm['save_user']; + // Restore current language to stack, necessary because $user change during NBM + switch_lang_back(); + + if ($env_nbm['is_to_send_mail']) + { + unset($env_nbm['email_format']); + unset($env_nbm['send_as_name']); + unset($env_nbm['send_as_mail_address']); + unset($env_nbm['send_as_mail_formated']); + // Don t unset counter + //unset($env_nbm['error_on_mail_count']); + //unset($env_nbm['sent_mail_count']); + unset($env_nbm['msg_info']); + unset($env_nbm['msg_error']); + } + + unset($env_nbm['save_user']); + unset($env_nbm['is_to_send_mail']); +} + +/* + * Set user on nbm enviromnent + * + * Return none + */ +function set_user_on_env_nbm(&$nbm_user, $is_action_send) +{ + global $user, $lang, $lang_info, $env_nbm; + + $user = build_user( $nbm_user['user_id'], true ); + + switch_lang_to($user['language']); + + if ($is_action_send) + { + $env_nbm['mail_template'] = get_mail_template($env_nbm['email_format']); + $env_nbm['mail_template']->set_filename('notification_by_mail', 'notification_by_mail.tpl'); + } +} + +/* + * Unset user on nbm enviromnent + * + * Return none + */ +function unset_user_on_env_nbm() +{ + global $env_nbm; + + switch_lang_back(); + unset($env_nbm['mail_template']); +} + +/* + * Inc Counter success + * + * Return none + */ +function inc_mail_sent_success($nbm_user) +{ + global $page, $env_nbm; + + $env_nbm['sent_mail_count'] += 1; + $page['infos'][] = sprintf($env_nbm['msg_info'], stripslashes($nbm_user['username']), $nbm_user['mail_address']); +} + +/* + * Inc Counter failed + * + * Return none + */ +function inc_mail_sent_failed($nbm_user) +{ + global $page, $env_nbm; + + $env_nbm['error_on_mail_count'] += 1; + $page['errors'][] = sprintf($env_nbm['msg_error'], stripslashes($nbm_user['username']), $nbm_user['mail_address']); +} + +/* + * Display Counter Info + * + * Return none + */ +function display_counter_info() +{ + global $page, $env_nbm; + + if ($env_nbm['error_on_mail_count'] != 0) + { + $page['errors'][] = l10n_dec( + '%d mail was not sent.', '%d mails were not sent.', + $env_nbm['error_on_mail_count'] + ); + + if ($env_nbm['sent_mail_count'] != 0) + { + $page['infos'][] = l10n_dec( + '%d mail was sent.', '%d mails were sent.', + $env_nbm['sent_mail_count'] + ); + } + } + else + { + if ($env_nbm['sent_mail_count'] == 0) + { + $page['infos'][] = l10n('No mail to send.'); + } + else + { + $page['infos'][] = l10n_dec( + '%d mail was sent.', '%d mails were sent.', + $env_nbm['sent_mail_count'] + ); + } + } +} + +function assign_vars_nbm_mail_content($nbm_user) +{ + global $env_nbm; + + set_make_full_url(); + + $env_nbm['mail_template']->assign + ( + array + ( + 'USERNAME' => stripslashes($nbm_user['username']), + + 'SEND_AS_NAME' => $env_nbm['send_as_name'], + + 'UNSUBSCRIBE_LINK' => add_url_params(get_gallery_home_url().'/nbm.php', array('unsubscribe' => $nbm_user['check_key'])), + 'SUBSCRIBE_LINK' => add_url_params(get_gallery_home_url().'/nbm.php', array('subscribe' => $nbm_user['check_key'])), + 'CONTACT_EMAIL' => $env_nbm['send_as_mail_address'] + ) + ); + + unset_make_full_url(); +} + +/* + * Subscribe or unsubscribe notification by mail + * + * is_subscribe define if action=subscribe or unsubscribe + * check_key list where action will be done + * + * @return check_key list treated + */ +function do_subscribe_unsubscribe_notification_by_mail($is_admin_request, $is_subscribe = false, $check_key_list = array()) +{ + global $conf, $page, $env_nbm, $conf; + + set_make_full_url(); + + $check_key_treated = array(); + $updated_data_count = 0; + $error_on_updated_data_count = 0; + + if ($is_subscribe) + { + $msg_info = l10n('User %s [%s] was added to the subscription list.'); + $msg_error = l10n('User %s [%s] was not added to the subscription list.'); + } + else + { + $msg_info = l10n('User %s [%s] was removed from the subscription list.'); + $msg_error = l10n('User %s [%s] was not removed from the subscription list.'); + } + + if (count($check_key_list) != 0) + { + $updates = array(); + $enabled_value = boolean_to_string($is_subscribe); + $data_users = get_user_notifications('subscribe', $check_key_list, !$is_subscribe); + + // Prepare message after change language + $msg_break_timeout = l10n('Time to send mail is limited. Others mails are skipped.'); + + // Begin nbm users environment + begin_users_env_nbm(true); + + foreach ($data_users as $nbm_user) + { + if (check_sendmail_timeout()) + { + // Stop fill list on 'send', if the quota is override + $page['errors'][] = $msg_break_timeout; + break; + } + + // Fill return list + $check_key_treated[] = $nbm_user['check_key']; + + $do_update = true; + if ($nbm_user['mail_address'] != '') + { + // set env nbm user + set_user_on_env_nbm($nbm_user, true); + + $subject = '['.$conf['gallery_title'].'] '.($is_subscribe ? l10n('Subscribe to notification by mail'): l10n('Unsubscribe from notification by mail')); + + // Assign current var for nbm mail + assign_vars_nbm_mail_content($nbm_user); + + $section_action_by = ($is_subscribe ? 'subscribe_by_' : 'unsubscribe_by_'); + $section_action_by .= ($is_admin_request ? 'admin' : 'himself'); + $env_nbm['mail_template']->assign + ( + array + ( + $section_action_by => true, + 'GOTO_GALLERY_TITLE' => $conf['gallery_title'], + 'GOTO_GALLERY_URL' => get_gallery_home_url(), + ) + ); + + $ret = pwg_mail( + array( + 'name' => stripslashes($nbm_user['username']), + 'email' => $nbm_user['mail_address'], + ), + array( + 'from' => $env_nbm['send_as_mail_formated'], + 'subject' => $subject, + 'email_format' => $env_nbm['email_format'], + 'content' => $env_nbm['mail_template']->parse('notification_by_mail', true), + 'content_format' => $env_nbm['email_format'], + ) + ); + + if ($ret) + { + inc_mail_sent_success($nbm_user); + } + else + { + inc_mail_sent_failed($nbm_user); + $do_update = false; + } + + // unset env nbm user + unset_user_on_env_nbm(); + + } + + if ($do_update) + { + $updates[] = array( + 'check_key' => $nbm_user['check_key'], + 'enabled' => $enabled_value + ); + $updated_data_count += 1; + $page['infos'][] = sprintf($msg_info, stripslashes($nbm_user['username']), $nbm_user['mail_address']); + } + else + { + $error_on_updated_data_count += 1; + $page['errors'][] = sprintf($msg_error, stripslashes($nbm_user['username']), $nbm_user['mail_address']); + } + + } + + // Restore nbm environment + end_users_env_nbm(); + + display_counter_info(); + + mass_updates( + USER_MAIL_NOTIFICATION_TABLE, + array( + 'primary' => array('check_key'), + 'update' => array('enabled') + ), + $updates + ); + + } + + $page['infos'][] = l10n_dec( + '%d user was updated.', '%d users were updated.', + $updated_data_count + ); + + if ($error_on_updated_data_count != 0) + { + $page['errors'][] = l10n_dec( + '%d user was not updated.', '%d users were not updated.', + $error_on_updated_data_count + ); + } + + unset_make_full_url(); + + return $check_key_treated; +} + +/* + * Unsubscribe notification by mail + * + * check_key list where action will be done + * + * @return check_key list treated + */ +function unsubscribe_notification_by_mail($is_admin_request, $check_key_list = array()) +{ + return do_subscribe_unsubscribe_notification_by_mail($is_admin_request, false, $check_key_list); +} + +/* + * Subscribe notification by mail + * + * check_key list where action will be done + * + * @return check_key list treated + */ +function subscribe_notification_by_mail($is_admin_request, $check_key_list = array()) +{ + return do_subscribe_unsubscribe_notification_by_mail($is_admin_request, true, $check_key_list); +} + +?> \ No newline at end of file diff --git a/sources/admin/include/functions_permalinks.php b/sources/admin/include/functions_permalinks.php new file mode 100644 index 0000000..6c8ae4a --- /dev/null +++ b/sources/admin/include/functions_permalinks.php @@ -0,0 +1,204 @@ + diff --git a/sources/admin/include/functions_plugins.inc.php b/sources/admin/include/functions_plugins.inc.php new file mode 100644 index 0000000..fb98c79 --- /dev/null +++ b/sources/admin/include/functions_plugins.inc.php @@ -0,0 +1,46 @@ + \ No newline at end of file diff --git a/sources/admin/include/functions_upgrade.php b/sources/admin/include/functions_upgrade.php new file mode 100644 index 0000000..4bd639f --- /dev/null +++ b/sources/admin/include/functions_upgrade.php @@ -0,0 +1,326 @@ +'.implode(', ', $plugins).'

'; + } +} + +// Deactivate all non-standard themes +function deactivate_non_standard_themes() +{ + global $page, $conf; + + $standard_themes = array( + 'clear', + 'Sylvia', + 'dark', + 'elegant', + 'smartpocket', + ); + + $query = ' +SELECT + id, + name + FROM '.PREFIX_TABLE.'themes + WHERE id NOT IN (\''.implode("','", $standard_themes).'\') +;'; + $result = pwg_query($query); + $theme_ids = array(); + $theme_names = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $theme_ids[] = $row['id']; + $theme_names[] = $row['name']; + } + + if (!empty($theme_ids)) + { + $query = ' +DELETE + FROM '.PREFIX_TABLE.'themes + WHERE id IN (\''.implode("','", $theme_ids).'\') +;'; + pwg_query($query); + + $page['infos'][] = l10n('As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:') + .'

'.implode(', ', $theme_names).'

'; + + // what is the default theme? + $query = ' +SELECT theme + FROM '.PREFIX_TABLE.'user_infos + WHERE user_id = '.$conf['default_user_id'].' +;'; + list($default_theme) = pwg_db_fetch_row(pwg_query($query)); + + // if the default theme has just been deactivated, let's set another core theme as default + if (in_array($default_theme, $theme_ids)) + { + $query = ' +UPDATE '.PREFIX_TABLE.'user_infos + SET theme = \'elegant\' + WHERE user_id = '.$conf['default_user_id'].' +;'; + pwg_query($query); + } + } +} + +// Deactivate all templates +function deactivate_templates() +{ + $query = ' + UPDATE '.PREFIX_TABLE.'config + SET value = \''. array() .'\' + WHERE param = \'extents_for_templates\';'; +} + +// Check access rights +function check_upgrade_access_rights() +{ + global $conf, $page, $current_release; + + if (version_compare($current_release, '2.0', '>=') and isset($_COOKIE[session_name()])) + { + // Check if user is already connected as webmaster + session_start(); + if (!empty($_SESSION['pwg_uid'])) + { + $query = ' +SELECT status + FROM '.USER_INFOS_TABLE.' + WHERE user_id = '.$_SESSION['pwg_uid'].' +;'; + pwg_query($query); + + $row = pwg_db_fetch_assoc(pwg_query($query)); + if (isset($row['status']) and $row['status'] == 'webmaster') + { + define('PHPWG_IN_UPGRADE', true); + return; + } + } + } + + if (!isset($_POST['username']) or !isset($_POST['password'])) + { + return; + } + + $username = $_POST['username']; + $password = $_POST['password']; + + if(!@get_magic_quotes_gpc()) + { + $username = pwg_db_real_escape_string($username); + } + + if (version_compare($current_release, '2.0', '<')) + { + $username = utf8_decode($username); + $password = utf8_decode($password); + } + + if (version_compare($current_release, '1.5', '<')) + { + $query = ' +SELECT password, status +FROM '.USERS_TABLE.' +WHERE username = \''.$username.'\' +;'; + } + else + { + $query = ' +SELECT u.password, ui.status +FROM '.USERS_TABLE.' AS u +INNER JOIN '.USER_INFOS_TABLE.' AS ui +ON u.'.$conf['user_fields']['id'].'=ui.user_id +WHERE '.$conf['user_fields']['username'].'=\''.$username.'\' +;'; + } + $row = pwg_db_fetch_assoc(pwg_query($query)); + + if (!$conf['password_verify']($password, $row['password'])) + { + $page['errors'][] = l10n('Invalid password!'); + } + elseif ($row['status'] != 'admin' and $row['status'] != 'webmaster') + { + $page['errors'][] = l10n('You do not have access rights to run upgrade'); + } + else + { + define('PHPWG_IN_UPGRADE', true); + } +} + +/** + * which upgrades are available ? + * + * @return array + */ +function get_available_upgrade_ids() +{ + $upgrades_path = PHPWG_ROOT_PATH.'install/db'; + + $available_upgrade_ids = array(); + + if ($contents = opendir($upgrades_path)) + { + while (($node = readdir($contents)) !== false) + { + if (is_file($upgrades_path.'/'.$node) + and preg_match('/^(.*?)-database\.php$/', $node, $match)) + { + $available_upgrade_ids[] = $match[1]; + } + } + } + natcasesort($available_upgrade_ids); + + return $available_upgrade_ids; +} + + +/** + * returns true if there are available upgrade files + */ +function check_upgrade_feed() +{ + // retrieve already applied upgrades + $query = ' +SELECT id + FROM '.UPGRADE_TABLE.' +;'; + $applied = array_from_query($query, 'id'); + + // retrieve existing upgrades + $existing = get_available_upgrade_ids(); + + // which upgrades need to be applied? + return (count(array_diff($existing, $applied)) > 0); +} + +function upgrade_db_connect() +{ + global $conf; + + try + { + pwg_db_connect($conf['db_host'], $conf['db_user'], + $conf['db_password'], $conf['db_base']); + pwg_db_check_version(); + } + catch (Exception $e) + { + my_error(l10n($e->getMessage()), true); + } +} +?> \ No newline at end of file diff --git a/sources/admin/include/functions_upload.inc.php b/sources/admin/include/functions_upload.inc.php new file mode 100644 index 0000000..40a53ad --- /dev/null +++ b/sources/admin/include/functions_upload.inc.php @@ -0,0 +1,585 @@ + array( + 'default' => false, + 'can_be_null' => false, + ), + + 'original_resize_maxwidth' => array( + 'default' => 2000, + 'min' => 500, + 'max' => 20000, + 'pattern' => '/^\d+$/', + 'can_be_null' => false, + 'error_message' => l10n('The original maximum width must be a number between %d and %d'), + ), + + 'original_resize_maxheight' => array( + 'default' => 2000, + 'min' => 300, + 'max' => 20000, + 'pattern' => '/^\d+$/', + 'can_be_null' => false, + 'error_message' => l10n('The original maximum height must be a number between %d and %d'), + ), + + 'original_resize_quality' => array( + 'default' => 95, + 'min' => 50, + 'max' => 98, + 'pattern' => '/^\d+$/', + 'can_be_null' => false, + 'error_message' => l10n('The original image quality must be a number between %d and %d'), + ), + ); + + return $upload_form_config; +} + +function save_upload_form_config($data, &$errors=array(), &$form_errors=array()) +{ + if (!is_array($data) or empty($data)) + { + return false; + } + + $upload_form_config = get_upload_form_config(); + $updates = array(); + + foreach ($data as $field => $value) + { + if (!isset($upload_form_config[$field])) + { + continue; + } + if (is_bool($upload_form_config[$field]['default'])) + { + if (isset($value)) + { + $value = true; + } + else + { + $value = false; + } + + $updates[] = array( + 'param' => $field, + 'value' => boolean_to_string($value) + ); + } + elseif ($upload_form_config[$field]['can_be_null'] and empty($value)) + { + $updates[] = array( + 'param' => $field, + 'value' => 'false' + ); + } + else + { + $min = $upload_form_config[$field]['min']; + $max = $upload_form_config[$field]['max']; + $pattern = $upload_form_config[$field]['pattern']; + + if (preg_match($pattern, $value) and $value >= $min and $value <= $max) + { + $updates[] = array( + 'param' => $field, + 'value' => $value + ); + } + else + { + $errors[] = sprintf( + $upload_form_config[$field]['error_message'], + $min, $max + ); + + $form_errors[$field] = '['.$min.' .. '.$max.']'; + } + } + } + + if (count($errors) == 0) + { + mass_updates( + CONFIG_TABLE, + array( + 'primary' => array('param'), + 'update' => array('value') + ), + $updates + ); + return true; + } + + return false; +} + +function add_uploaded_file($source_filepath, $original_filename=null, $categories=null, $level=null, $image_id=null, $original_md5sum=null) +{ + // 1) move uploaded file to upload/2010/01/22/20100122003814-449ada00.jpg + // + // 2) keep/resize original + // + // 3) register in database + + // TODO + // * check md5sum (already exists?) + + global $conf, $user; + + if (isset($original_md5sum)) + { + $md5sum = $original_md5sum; + } + else + { + $md5sum = md5_file($source_filepath); + } + + $file_path = null; + $is_tiff = false; + + if (isset($image_id)) + { + // this photo already exists, we update it + $query = ' +SELECT + path + FROM '.IMAGES_TABLE.' + WHERE id = '.$image_id.' +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $file_path = $row['path']; + } + + if (!isset($file_path)) + { + die('['.__FUNCTION__.'] this photo does not exist in the database'); + } + + // delete all physical files related to the photo (thumbnail, web site, HD) + delete_element_files(array($image_id)); + } + else + { + // this photo is new + + // current date + list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();')); + list($year, $month, $day) = preg_split('/[^\d]/', $dbnow, 4); + + // upload directory hierarchy + $upload_dir = sprintf( + PHPWG_ROOT_PATH.$conf['upload_dir'].'/%s/%s/%s', + $year, + $month, + $day + ); + + // compute file path + $date_string = preg_replace('/[^\d]/', '', $dbnow); + $random_string = substr($md5sum, 0, 8); + $filename_wo_ext = $date_string.'-'.$random_string; + $file_path = $upload_dir.'/'.$filename_wo_ext.'.'; + + list($width, $height, $type) = getimagesize($source_filepath); + if (IMAGETYPE_PNG == $type) + { + $file_path.= 'png'; + } + elseif (IMAGETYPE_GIF == $type) + { + $file_path.= 'gif'; + } + elseif (IMAGETYPE_TIFF_MM == $type or IMAGETYPE_TIFF_II == $type) + { + $is_tiff = true; + $file_path.= 'tif'; + } + else + { + $file_path.= 'jpg'; + } + + prepare_directory($upload_dir); + } + + if (is_uploaded_file($source_filepath)) + { + move_uploaded_file($source_filepath, $file_path); + } + else + { + rename($source_filepath, $file_path); + } + @chmod($file_path, 0644); + + if ($is_tiff and pwg_image::get_library() == 'ext_imagick') + { + // move the uploaded file to pwg_representative sub-directory + $representative_file_path = dirname($file_path).'/pwg_representative/'; + $representative_file_path.= get_filename_wo_extension(basename($file_path)).'.'; + + $representative_ext = $conf['tiff_representative_ext']; + $representative_file_path.= $representative_ext; + + prepare_directory(dirname($representative_file_path)); + + $exec = $conf['ext_imagick_dir'].'convert'; + + if ('jpg' == $conf['tiff_representative_ext']) + { + $exec .= ' -quality 98'; + } + + $exec .= ' "'.realpath($file_path).'"'; + + $dest = pathinfo($representative_file_path); + $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'"'; + + $exec .= ' 2>&1'; + @exec($exec, $returnarray); + + // sometimes ImageMagick creates file-0.jpg (full size) + file-1.jpg + // (thumbnail). I don't know how to avoid it. + $representative_file_abspath = realpath($dest['dirname']).'/'.$dest['basename']; + if (!file_exists($representative_file_abspath)) + { + $first_file_abspath = preg_replace( + '/\.'.$representative_ext.'$/', + '-0.'.$representative_ext, + $representative_file_abspath + ); + + if (file_exists($first_file_abspath)) + { + rename($first_file_abspath, $representative_file_abspath); + } + } + } + + if (pwg_image::get_library() != 'gd') + { + if ($conf['original_resize']) + { + $need_resize = need_resize($file_path, $conf['original_resize_maxwidth'], $conf['original_resize_maxheight']); + + if ($need_resize) + { + $img = new pwg_image($file_path); + + $img->pwg_resize( + $file_path, + $conf['original_resize_maxwidth'], + $conf['original_resize_maxheight'], + $conf['original_resize_quality'], + $conf['upload_form_automatic_rotation'], + false + ); + + $img->destroy(); + } + } + } + + // we need to save the rotation angle in the database to compute + // width/height of "multisizes" + $rotation_angle = pwg_image::get_rotation_angle($file_path); + $rotation = pwg_image::get_rotation_code_from_angle($rotation_angle); + + $file_infos = pwg_image_infos($file_path); + + if (isset($image_id)) + { + $update = array( + 'file' => pwg_db_real_escape_string(isset($original_filename) ? $original_filename : basename($file_path)), + 'filesize' => $file_infos['filesize'], + 'width' => $file_infos['width'], + 'height' => $file_infos['height'], + 'md5sum' => $md5sum, + 'added_by' => $user['id'], + 'rotation' => $rotation, + ); + + if (isset($level)) + { + $update['level'] = $level; + } + + single_update( + IMAGES_TABLE, + $update, + array('id' => $image_id) + ); + } + else + { + // database registration + $file = pwg_db_real_escape_string(isset($original_filename) ? $original_filename : basename($file_path)); + $insert = array( + 'file' => $file, + 'name' => get_name_from_file($file), + 'date_available' => $dbnow, + 'path' => preg_replace('#^'.preg_quote(PHPWG_ROOT_PATH).'#', '', $file_path), + 'filesize' => $file_infos['filesize'], + 'width' => $file_infos['width'], + 'height' => $file_infos['height'], + 'md5sum' => $md5sum, + 'added_by' => $user['id'], + 'rotation' => $rotation, + ); + + if (isset($level)) + { + $insert['level'] = $level; + } + + if (isset($representative_ext)) + { + $insert['representative_ext'] = $representative_ext; + } + + single_insert(IMAGES_TABLE, $insert); + + $image_id = pwg_db_insert_id(IMAGES_TABLE); + } + + if (isset($categories) and count($categories) > 0) + { + associate_images_to_categories( + array($image_id), + $categories + ); + } + + // update metadata from the uploaded file (exif/iptc) + if ($conf['use_exif'] and !function_exists('read_exif_data')) + { + $conf['use_exif'] = false; + } + sync_metadata(array($image_id)); + + invalidate_user_cache(); + + // cache thumbnail + $query = ' +SELECT + id, + path + FROM '.IMAGES_TABLE.' + WHERE id = '.$image_id.' +;'; + $image_infos = pwg_db_fetch_assoc(pwg_query($query)); + + set_make_full_url(); + // in case we are on uploadify.php, we have to replace the false path + $thumb_url = preg_replace('#admin/include/i#', 'i', DerivativeImage::thumb_url($image_infos)); + unset_make_full_url(); + + fetchRemote($thumb_url, $dest); + + + return $image_id; +} + +function prepare_directory($directory) +{ + if (!is_dir($directory)) { + if (substr(PHP_OS, 0, 3) == 'WIN') + { + $directory = str_replace('/', DIRECTORY_SEPARATOR, $directory); + } + umask(0000); + $recursive = true; + if (!@mkdir($directory, 0777, $recursive)) + { + die('[prepare_directory] cannot create directory "'.$directory.'"'); + } + } + + if (!is_writable($directory)) + { + // last chance to make the directory writable + @chmod($directory, 0777); + + if (!is_writable($directory)) + { + die('[prepare_directory] directory "'.$directory.'" has no write access'); + } + } + + secure_directory($directory); +} + +function need_resize($image_filepath, $max_width, $max_height) +{ + // TODO : the resize check should take the orientation into account. If a + // rotation must be applied to the resized photo, then we should test + // invert width and height. + list($width, $height) = getimagesize($image_filepath); + + if ($width > $max_width or $height > $max_height) + { + return true; + } + + return false; +} + +function pwg_image_infos($path) +{ + list($width, $height) = getimagesize($path); + $filesize = floor(filesize($path)/1024); + + return array( + 'width' => $width, + 'height' => $height, + 'filesize' => $filesize, + ); +} + +function is_valid_image_extension($extension) +{ + return in_array(strtolower($extension), array('jpg', 'jpeg', 'png', 'gif')); +} + +function file_upload_error_message($error_code) +{ + switch ($error_code) { + case UPLOAD_ERR_INI_SIZE: + return sprintf( + l10n('The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'), + get_ini_size('upload_max_filesize', false) + ); + case UPLOAD_ERR_FORM_SIZE: + return l10n('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'); + case UPLOAD_ERR_PARTIAL: + return l10n('The uploaded file was only partially uploaded'); + case UPLOAD_ERR_NO_FILE: + return l10n('No file was uploaded'); + case UPLOAD_ERR_NO_TMP_DIR: + return l10n('Missing a temporary folder'); + case UPLOAD_ERR_CANT_WRITE: + return l10n('Failed to write file to disk'); + case UPLOAD_ERR_EXTENSION: + return l10n('File upload stopped by extension'); + default: + return l10n('Unknown upload error'); + } +} + +function get_ini_size($ini_key, $in_bytes=true) +{ + $size = ini_get($ini_key); + + if ($in_bytes) + { + $size = convert_shorthand_notation_to_bytes($size); + } + + return $size; +} + +function convert_shorthand_notation_to_bytes($value) +{ + $suffix = substr($value, -1); + $multiply_by = null; + + if ('K' == $suffix) + { + $multiply_by = 1024; + } + else if ('M' == $suffix) + { + $multiply_by = 1024*1024; + } + else if ('G' == $suffix) + { + $multiply_by = 1024*1024*1024; + } + + if (isset($multiply_by)) + { + $value = substr($value, 0, -1); + $value*= $multiply_by; + } + + return $value; +} + +function add_upload_error($upload_id, $error_message) +{ + $_SESSION['uploads_error'][$upload_id][] = $error_message; +} + +function ready_for_upload_message() +{ + global $conf; + + $relative_dir = preg_replace('#^'.PHPWG_ROOT_PATH.'#', '', $conf['upload_dir']); + + if (!is_dir($conf['upload_dir'])) + { + if (!is_writable(dirname($conf['upload_dir']))) + { + return sprintf( + l10n('Create the "%s" directory at the root of your Piwigo installation'), + $relative_dir + ); + } + } + else + { + if (!is_writable($conf['upload_dir'])) + { + @chmod($conf['upload_dir'], 0777); + + if (!is_writable($conf['upload_dir'])) + { + return sprintf( + l10n('Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'), + $relative_dir + ); + } + } + } + + return null; +} +?> \ No newline at end of file diff --git a/sources/admin/include/image.class.php b/sources/admin/include/image.class.php new file mode 100644 index 0000000..1013099 --- /dev/null +++ b/sources/admin/include/image.class.php @@ -0,0 +1,821 @@ +source_filepath = $source_filepath; + + trigger_action('load_image_library', array(&$this) ); + + if (is_object($this->image)) + { + return; // A plugin may have load its own library + } + + $extension = strtolower(get_extension($source_filepath)); + + if (!in_array($extension, array('jpg', 'jpeg', 'png', 'gif'))) + { + die('[Image] unsupported file extension'); + } + + if (!($this->library = self::get_library($library, $extension))) + { + die('No image library available on your server.'); + } + + $class = 'image_'.$this->library; + $this->image = new $class($source_filepath); + } + + // Unknow methods will be redirected to image object + function __call($method, $arguments) + { + return call_user_func_array(array($this->image, $method), $arguments); + } + + // Piwigo resize function + function pwg_resize($destination_filepath, $max_width, $max_height, $quality, $automatic_rotation=true, $strip_metadata=false, $crop=false, $follow_orientation=true) + { + $starttime = get_moment(); + + // width/height + $source_width = $this->image->get_width(); + $source_height = $this->image->get_height(); + + $rotation = null; + if ($automatic_rotation) + { + $rotation = self::get_rotation_angle($this->source_filepath); + } + $resize_dimensions = self::get_resize_dimensions($source_width, $source_height, $max_width, $max_height, $rotation, $crop, $follow_orientation); + + // testing on height is useless in theory: if width is unchanged, there + // should be no resize, because width/height ratio is not modified. + if ($resize_dimensions['width'] == $source_width and $resize_dimensions['height'] == $source_height) + { + // the image doesn't need any resize! We just copy it to the destination + copy($this->source_filepath, $destination_filepath); + return $this->get_resize_result($destination_filepath, $resize_dimensions['width'], $resize_dimensions['height'], $starttime); + } + + $this->image->set_compression_quality($quality); + + if ($strip_metadata) + { + // we save a few kilobytes. For example a thumbnail with metadata weights 25KB, without metadata 7KB. + $this->image->strip(); + } + + if (isset($resize_dimensions['crop'])) + { + $this->image->crop($resize_dimensions['crop']['width'], $resize_dimensions['crop']['height'], $resize_dimensions['crop']['x'], $resize_dimensions['crop']['y']); + } + + $this->image->resize($resize_dimensions['width'], $resize_dimensions['height']); + + if (!empty($rotation)) + { + $this->image->rotate($rotation); + } + + $this->image->write($destination_filepath); + + // everything should be OK if we are here! + return $this->get_resize_result($destination_filepath, $resize_dimensions['width'], $resize_dimensions['height'], $starttime); + } + + static function get_resize_dimensions($width, $height, $max_width, $max_height, $rotation=null, $crop=false, $follow_orientation=true) + { + $rotate_for_dimensions = false; + if (isset($rotation) and in_array(abs($rotation), array(90, 270))) + { + $rotate_for_dimensions = true; + } + + if ($rotate_for_dimensions) + { + list($width, $height) = array($height, $width); + } + + if ($crop) + { + $x = 0; + $y = 0; + + if ($width < $height and $follow_orientation) + { + list($max_width, $max_height) = array($max_height, $max_width); + } + + $img_ratio = $width / $height; + $dest_ratio = $max_width / $max_height; + + if($dest_ratio > $img_ratio) + { + $destHeight = round($width * $max_height / $max_width); + $y = round(($height - $destHeight) / 2 ); + $height = $destHeight; + } + elseif ($dest_ratio < $img_ratio) + { + $destWidth = round($height * $max_width / $max_height); + $x = round(($width - $destWidth) / 2 ); + $width = $destWidth; + } + } + + $ratio_width = $width / $max_width; + $ratio_height = $height / $max_height; + $destination_width = $width; + $destination_height = $height; + + // maximal size exceeded ? + if ($ratio_width > 1 or $ratio_height > 1) + { + if ($ratio_width < $ratio_height) + { + $destination_width = round($width / $ratio_height); + $destination_height = $max_height; + } + else + { + $destination_width = $max_width; + $destination_height = round($height / $ratio_width); + } + } + + if ($rotate_for_dimensions) + { + list($destination_width, $destination_height) = array($destination_height, $destination_width); + } + + $result = array( + 'width' => $destination_width, + 'height'=> $destination_height, + ); + + if ($crop and ($x or $y)) + { + $result['crop'] = array( + 'width' => $width, + 'height' => $height, + 'x' => $x, + 'y' => $y, + ); + } + return $result; + } + + static function get_rotation_angle($source_filepath) + { + list($width, $height, $type) = getimagesize($source_filepath); + if (IMAGETYPE_JPEG != $type) + { + return null; + } + + if (!function_exists('exif_read_data')) + { + return null; + } + + $rotation = 0; + + $exif = exif_read_data($source_filepath); + + if (isset($exif['Orientation']) and preg_match('/^\s*(\d)/', $exif['Orientation'], $matches)) + { + $orientation = $matches[1]; + if (in_array($orientation, array(3, 4))) + { + $rotation = 180; + } + elseif (in_array($orientation, array(5, 6))) + { + $rotation = 270; + } + elseif (in_array($orientation, array(7, 8))) + { + $rotation = 90; + } + } + + return $rotation; + } + + static function get_rotation_code_from_angle($rotation_angle) + { + switch($rotation_angle) + { + case 0: return 0; + case 90: return 1; + case 180: return 2; + case 270: return 3; + } + } + + static function get_rotation_angle_from_code($rotation_code) + { + switch($rotation_code%4) + { + case 0: return 0; + case 1: return 90; + case 2: return 180; + case 3: return 270; + } + } + + /** Returns a normalized convolution kernel for sharpening*/ + static function get_sharpen_matrix($amount) + { + // Amount should be in the range of 48-10 + $amount = round(abs(-48 + ($amount * 0.38)), 2); + + $matrix = array( + array(-1, -1, -1), + array(-1, $amount, -1), + array(-1, -1, -1), + ); + + $norm = array_sum(array_map('array_sum', $matrix)); + + for ($i=0; $i<3; $i++) + { + $line = & $matrix[$i]; + for ($j=0; $j<3; $j++) + { + $line[$j] /= $norm; + } + } + + return $matrix; + } + + private function get_resize_result($destination_filepath, $width, $height, $time=null) + { + return array( + 'source' => $this->source_filepath, + 'destination' => $destination_filepath, + 'width' => $width, + 'height' => $height, + 'size' => floor(filesize($destination_filepath) / 1024).' KB', + 'time' => $time ? number_format((get_moment() - $time) * 1000, 2, '.', ' ').' ms' : null, + 'library' => $this->library, + ); + } + + static function is_imagick() + { + return (extension_loaded('imagick') and class_exists('Imagick')); + } + + static function is_ext_imagick() + { + global $conf; + + if (!function_exists('exec')) + { + return false; + } + @exec($conf['ext_imagick_dir'].'convert -version', $returnarray); + if (is_array($returnarray) and !empty($returnarray[0]) and preg_match('/ImageMagick/i', $returnarray[0])) + { + if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match)) + { + self::$ext_imagick_version = $match[1]; + } + return true; + } + return false; + } + + static function is_gd() + { + return function_exists('gd_info'); + } + + static function get_library($library=null, $extension=null) + { + global $conf; + + if (is_null($library)) + { + $library = $conf['graphics_library']; + } + + // Choose image library + switch (strtolower($library)) + { + case 'auto': + case 'imagick': + if ($extension != 'gif' and self::is_imagick()) + { + return 'imagick'; + } + case 'ext_imagick': + if ($extension != 'gif' and self::is_ext_imagick()) + { + return 'ext_imagick'; + } + case 'gd': + if (self::is_gd()) + { + return 'gd'; + } + default: + if ($library != 'auto') + { + // Requested library not available. Try another library + return self::get_library('auto', $extension); + } + } + return false; + } + + function destroy() + { + if (method_exists($this->image, 'destroy')) + { + return $this->image->destroy(); + } + return true; + } +} + +// +-----------------------------------------------------------------------+ +// | Class for Imagick extension | +// +-----------------------------------------------------------------------+ + +class image_imagick implements imageInterface +{ + var $image; + + function __construct($source_filepath) + { + // A bug cause that Imagick class can not be extended + $this->image = new Imagick($source_filepath); + } + + function get_width() + { + return $this->image->getImageWidth(); + } + + function get_height() + { + return $this->image->getImageHeight(); + } + + function set_compression_quality($quality) + { + return $this->image->setImageCompressionQuality($quality); + } + + function crop($width, $height, $x, $y) + { + return $this->image->cropImage($width, $height, $x, $y); + } + + function strip() + { + return $this->image->stripImage(); + } + + function rotate($rotation) + { + $this->image->rotateImage(new ImagickPixel(), -$rotation); + $this->image->setImageOrientation(Imagick::ORIENTATION_TOPLEFT); + return true; + } + + function resize($width, $height) + { + $this->image->setInterlaceScheme(Imagick::INTERLACE_LINE); + + // TODO need to explain this condition + if ($this->get_width()%2 == 0 + && $this->get_height()%2 == 0 + && $this->get_width() > 3*$width) + { + $this->image->scaleImage($this->get_width()/2, $this->get_height()/2); + } + + return $this->image->resizeImage($width, $height, Imagick::FILTER_LANCZOS, 0.9); + } + + function sharpen($amount) + { + $m = pwg_image::get_sharpen_matrix($amount); + return $this->image->convolveImage($m); + } + + function compose($overlay, $x, $y, $opacity) + { + $ioverlay = $overlay->image->image; + /*if ($ioverlay->getImageAlphaChannel() !== Imagick::ALPHACHANNEL_OPAQUE) + { + // Force the image to have an alpha channel + $ioverlay->setImageAlphaChannel(Imagick::ALPHACHANNEL_OPAQUE); + }*/ + + global $dirty_trick_xrepeat; + if ( !isset($dirty_trick_xrepeat) && $opacity < 100) + {// NOTE: Using setImageOpacity will destroy current alpha channels! + $ioverlay->evaluateImage(Imagick::EVALUATE_MULTIPLY, $opacity / 100, Imagick::CHANNEL_ALPHA); + $dirty_trick_xrepeat = true; + } + + return $this->image->compositeImage($ioverlay, Imagick::COMPOSITE_DISSOLVE, $x, $y); + } + + function write($destination_filepath) + { + // use 4:2:2 chroma subsampling (reduce file size by 20-30% with "almost" no human perception) + $this->image->setSamplingFactors( array(2,1) ); + return $this->image->writeImage($destination_filepath); + } +} + +// +-----------------------------------------------------------------------+ +// | Class for ImageMagick external installation | +// +-----------------------------------------------------------------------+ + +class image_ext_imagick implements imageInterface +{ + var $imagickdir = ''; + var $source_filepath = ''; + var $width = ''; + var $height = ''; + var $commands = array(); + + function __construct($source_filepath) + { + global $conf; + $this->source_filepath = $source_filepath; + $this->imagickdir = $conf['ext_imagick_dir']; + + if (strpos(@$_SERVER['SCRIPT_FILENAME'], '/kunden/') === 0) // 1and1 + { + @putenv('MAGICK_THREAD_LIMIT=1'); + } + + $command = $this->imagickdir.'identify -format "%wx%h" "'.realpath($source_filepath).'"'; + @exec($command, $returnarray); + if(!is_array($returnarray) or empty($returnarray[0]) or !preg_match('/^(\d+)x(\d+)$/', $returnarray[0], $match)) + { + die("[External ImageMagick] Corrupt image\n" . var_export($returnarray, true)); + } + + $this->width = $match[1]; + $this->height = $match[2]; + } + + function add_command($command, $params=null) + { + $this->commands[$command] = $params; + } + + function get_width() + { + return $this->width; + } + + function get_height() + { + return $this->height; + } + + function crop($width, $height, $x, $y) + { + $this->add_command('crop', $width.'x'.$height.'+'.$x.'+'.$y); + return true; + } + + function strip() + { + $this->add_command('strip'); + return true; + } + + function rotate($rotation) + { + if (empty($rotation)) + { + return true; + } + + if ($rotation==90 || $rotation==270) + { + $tmp = $this->width; + $this->width = $this->height; + $this->height = $tmp; + } + $this->add_command('rotate', -$rotation); + $this->add_command('orient', 'top-left'); + return true; + } + + function set_compression_quality($quality) + { + $this->add_command('quality', $quality); + return true; + } + + function resize($width, $height) + { + $this->add_command('filter', 'Lanczos'); + $this->add_command('resize', $width.'x'.$height.'!'); + return true; + } + + function sharpen($amount) + { + $m = pwg_image::get_sharpen_matrix($amount); + + $param ='convolve "'.count($m).':'; + foreach ($m as $line) + { + $param .= ' '; + $param .= implode(',', $line); + } + $param .= '"'; + $this->add_command('morphology', $param); + return true; + } + + function compose($overlay, $x, $y, $opacity) + { + $param = 'compose dissolve -define compose:args='.$opacity; + $param .= ' '.escapeshellarg(realpath($overlay->image->source_filepath)); + $param .= ' -gravity NorthWest -geometry +'.$x.'+'.$y; + $param .= ' -composite'; + $this->add_command($param); + return true; + } + + function write($destination_filepath) + { + $this->add_command('interlace', 'line'); // progressive rendering + // use 4:2:2 chroma subsampling (reduce file size by 20-30% with "almost" no human perception) + // + // option deactivated for Piwigo 2.4.1, it doesn't work fo old versions + // of ImageMagick, see bug:2672. To reactivate once we have a better way + // to detect IM version and when we know which version supports this + // option + // + if (version_compare(pwg_image::$ext_imagick_version, '6.6') > 0) + { + $this->add_command('sampling-factor', '4:2:2' ); + } + + $exec = $this->imagickdir.'convert'; + $exec .= ' "'.realpath($this->source_filepath).'"'; + + foreach ($this->commands as $command => $params) + { + $exec .= ' -'.$command; + if (!empty($params)) + { + $exec .= ' '.$params; + } + } + + $dest = pathinfo($destination_filepath); + $exec .= ' "'.realpath($dest['dirname']).'/'.$dest['basename'].'" 2>&1'; + @exec($exec, $returnarray); + + if (function_exists('ilog')) ilog($exec); + if (is_array($returnarray) && (count($returnarray)>0) ) + { + if (function_exists('ilog')) ilog('ERROR', $returnarray); + foreach($returnarray as $line) + trigger_error($line, E_USER_WARNING); + } + return is_array($returnarray); + } +} + +// +-----------------------------------------------------------------------+ +// | Class for GD library | +// +-----------------------------------------------------------------------+ + +class image_gd implements imageInterface +{ + var $image; + var $quality = 95; + + function __construct($source_filepath) + { + $gd_info = gd_info(); + $extension = strtolower(get_extension($source_filepath)); + + if (in_array($extension, array('jpg', 'jpeg'))) + { + $this->image = imagecreatefromjpeg($source_filepath); + } + else if ($extension == 'png') + { + $this->image = imagecreatefrompng($source_filepath); + } + elseif ($extension == 'gif' and $gd_info['GIF Read Support'] and $gd_info['GIF Create Support']) + { + $this->image = imagecreatefromgif($source_filepath); + } + else + { + die('[Image GD] unsupported file extension'); + } + } + + function get_width() + { + return imagesx($this->image); + } + + function get_height() + { + return imagesy($this->image); + } + + function crop($width, $height, $x, $y) + { + $dest = imagecreatetruecolor($width, $height); + + imagealphablending($dest, false); + imagesavealpha($dest, true); + if (function_exists('imageantialias')) + { + imageantialias($dest, true); + } + + $result = imagecopymerge($dest, $this->image, 0, 0, $x, $y, $width, $height, 100); + + if ($result !== false) + { + imagedestroy($this->image); + $this->image = $dest; + } + else + { + imagedestroy($dest); + } + return $result; + } + + function strip() + { + return true; + } + + function rotate($rotation) + { + $dest = imagerotate($this->image, $rotation, 0); + imagedestroy($this->image); + $this->image = $dest; + return true; + } + + function set_compression_quality($quality) + { + $this->quality = $quality; + return true; + } + + function resize($width, $height) + { + $dest = imagecreatetruecolor($width, $height); + + imagealphablending($dest, false); + imagesavealpha($dest, true); + if (function_exists('imageantialias')) + { + imageantialias($dest, true); + } + + $result = imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $width, $height, $this->get_width(), $this->get_height()); + + if ($result !== false) + { + imagedestroy($this->image); + $this->image = $dest; + } + else + { + imagedestroy($dest); + } + return $result; + } + + function sharpen($amount) + { + $m = pwg_image::get_sharpen_matrix($amount); + return imageconvolution($this->image, $m, 1, 0); + } + + function compose($overlay, $x, $y, $opacity) + { + $ioverlay = $overlay->image->image; + /* A replacement for php's imagecopymerge() function that supports the alpha channel + See php bug #23815: http://bugs.php.net/bug.php?id=23815 */ + + $ow = imagesx($ioverlay); + $oh = imagesy($ioverlay); + + // Create a new blank image the site of our source image + $cut = imagecreatetruecolor($ow, $oh); + + // Copy the blank image into the destination image where the source goes + imagecopy($cut, $this->image, 0, 0, $x, $y, $ow, $oh); + + // Place the source image in the destination image + imagecopy($cut, $ioverlay, 0, 0, 0, 0, $ow, $oh); + imagecopymerge($this->image, $cut, $x, $y, 0, 0, $ow, $oh, $opacity); + imagedestroy($cut); + return true; + } + + function write($destination_filepath) + { + $extension = strtolower(get_extension($destination_filepath)); + + if ($extension == 'png') + { + imagepng($this->image, $destination_filepath); + } + elseif ($extension == 'gif') + { + imagegif($this->image, $destination_filepath); + } + else + { + imagejpeg($this->image, $destination_filepath, $this->quality); + } + } + + function destroy() + { + imagedestroy($this->image); + } +} + +?> \ No newline at end of file diff --git a/sources/admin/include/index.php b/sources/admin/include/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/admin/include/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/admin/include/languages.class.php b/sources/admin/include/languages.class.php new file mode 100644 index 0000000..c4caa2d --- /dev/null +++ b/sources/admin/include/languages.class.php @@ -0,0 +1,410 @@ +get_fs_languages($target_charset); + } + + /** + * Perform requested actions + * @param string - action + * @param string - language id + * @param array - errors + */ + function perform_action($action, $language_id) + { + global $conf; + + if (isset($this->db_languages[$language_id])) + { + $crt_db_language = $this->db_languages[$language_id]; + } + + $errors = array(); + + switch ($action) + { + case 'activate': + if (isset($crt_db_language)) + { + $errors[] = 'CANNOT ACTIVATE - LANGUAGE IS ALREADY ACTIVATED'; + break; + } + + $query = ' +INSERT INTO '.LANGUAGES_TABLE.' + (id, version, name) + VALUES(\''.$language_id.'\', + \''.$this->fs_languages[$language_id]['version'].'\', + \''.$this->fs_languages[$language_id]['name'].'\') +;'; + pwg_query($query); + break; + + case 'deactivate': + if (!isset($crt_db_language)) + { + $errors[] = 'CANNOT DEACTIVATE - LANGUAGE IS ALREADY DEACTIVATED'; + break; + } + + if ($language_id == get_default_language()) + { + $errors[] = 'CANNOT DEACTIVATE - LANGUAGE IS DEFAULT LANGUAGE'; + break; + } + + $query = ' +DELETE + FROM '.LANGUAGES_TABLE.' + WHERE id= \''.$language_id.'\' +;'; + pwg_query($query); + break; + + case 'delete': + if (!empty($crt_db_language)) + { + $errors[] = 'CANNOT DELETE - LANGUAGE IS ACTIVATED'; + break; + } + if (!isset($this->fs_languages[$language_id])) + { + $errors[] = 'CANNOT DELETE - LANGUAGE DOES NOT EXIST'; + break; + } + + // Set default language to user who are using this language + $query = ' +UPDATE '.USER_INFOS_TABLE.' + SET language = \''.get_default_language().'\' + WHERE language = \''.$language_id.'\' +;'; + pwg_query($query); + + deltree(PHPWG_ROOT_PATH.'language/'.$language_id, PHPWG_ROOT_PATH.'language/trash'); + break; + + case 'set_default': + $query = ' +UPDATE '.USER_INFOS_TABLE.' + SET language = \''.$language_id.'\' + WHERE user_id IN ('.$conf['default_user_id'].', '.$conf['guest_id'].') +;'; + pwg_query($query); + break; + } + return $errors; + } + + /** + * Get languages defined in the language directory + */ + function get_fs_languages($target_charset = null) + { + if ( empty($target_charset) ) + { + $target_charset = get_pwg_charset(); + } + $target_charset = strtolower($target_charset); + + $dir = opendir(PHPWG_ROOT_PATH.'language'); + while ($file = readdir($dir)) + { + if ($file!='.' and $file!='..') + { + $path = PHPWG_ROOT_PATH.'language/'.$file; + if (is_dir($path) and !is_link($path) + and preg_match('/^[a-zA-Z0-9-_]+$/', $file ) + and file_exists($path.'/common.lang.php') + ) + { + $language = array( + 'name'=>$file, + 'code'=>$file, + 'version'=>'0', + 'uri'=>'', + 'author'=>'', + ); + $plg_data = implode( '', file($path.'/common.lang.php') ); + + if ( preg_match("|Language Name: (.*)|", $plg_data, $val) ) + { + $language['name'] = trim( $val[1] ); + $language['name'] = convert_charset($language['name'], 'utf-8', $target_charset); + } + if (preg_match("|Version: (.*)|", $plg_data, $val)) + { + $language['version'] = trim($val[1]); + } + if ( preg_match("|Language URI: (.*)|", $plg_data, $val) ) + { + $language['uri'] = trim($val[1]); + } + if ( preg_match("|Author: (.*)|", $plg_data, $val) ) + { + $language['author'] = trim($val[1]); + } + if ( preg_match("|Author URI: (.*)|", $plg_data, $val) ) + { + $language['author uri'] = trim($val[1]); + } + if (!empty($language['uri']) and strpos($language['uri'] , 'extension_view.php?eid=')) + { + list( , $extension) = explode('extension_view.php?eid=', $language['uri']); + if (is_numeric($extension)) $language['extension'] = $extension; + } + // IMPORTANT SECURITY ! + $language = array_map('htmlspecialchars', $language); + $this->fs_languages[$file] = $language; + } + } + } + closedir($dir); + @uasort($this->fs_languages, 'name_compare'); + } + + function get_db_languages() + { + $query = ' + SELECT id, name + FROM '.LANGUAGES_TABLE.' + ORDER BY name ASC + ;'; + $result = pwg_query($query); + + while ($row = pwg_db_fetch_assoc($result)) + { + $this->db_languages[ $row['id'] ] = $row['name']; + } + } + + /** + * Retrieve PEM server datas to $server_languages + */ + function get_server_languages($new=false) + { + global $user, $conf; + + $get_data = array( + 'category_id' => $conf['pem_languages_category'], + 'format' => 'php', + ); + + // Retrieve PEM versions + $version = PHPWG_VERSION; + $versions_to_check = array(); + $url = PEM_URL . '/api/get_version_list.php'; + if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result)) + { + if (!preg_match('/^\d+\.\d+\.\d+$/', $version)) + { + $version = $pem_versions[0]['name']; + } + $branch = get_branch_from_version($version); + foreach ($pem_versions as $pem_version) + { + if (strpos($pem_version['name'], $branch) === 0) + { + $versions_to_check[] = $pem_version['id']; + } + } + } + if (empty($versions_to_check)) + { + return false; + } + + // Languages to check + $languages_to_check = array(); + foreach($this->fs_languages as $fs_language) + { + if (isset($fs_language['extension'])) + { + $languages_to_check[] = $fs_language['extension']; + } + } + + // Retrieve PEM languages infos + $url = PEM_URL . '/api/get_revision_list.php'; + $get_data = array_merge($get_data, array( + 'last_revision_only' => 'true', + 'version' => implode(',', $versions_to_check), + 'lang' => $user['language'], + 'get_nb_downloads' => 'true', + ) + ); + if (!empty($languages_to_check)) + { + if ($new) + { + $get_data['extension_exclude'] = implode(',', $languages_to_check); + } + else + { + $get_data['extension_include'] = implode(',', $languages_to_check); + } + } + + if (fetchRemote($url, $result, $get_data)) + { + $pem_languages = @unserialize($result); + if (!is_array($pem_languages)) + { + return false; + } + foreach ($pem_languages as $language) + { + if (preg_match('/^.*? \[[A-Z]{2}\]$/', $language['extension_name'])) + { + $this->server_languages[$language['extension_id']] = $language; + } + } + @uasort($this->server_languages, array($this, 'extension_name_compare')); + return true; + } + return false; + } + + /** + * Extract language files from archive + * + * @param string - install or upgrade + * @param string - remote revision identifier (numeric) + * @param string - language id or extension id + */ + function extract_language_files($action, $revision, $dest='') + { + if ($archive = tempnam( PHPWG_ROOT_PATH.'language', 'zip')) + { + $url = PEM_URL . '/download.php'; + $get_data = array( + 'rid' => $revision, + 'origin' => 'piwigo_'.$action, + ); + + if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data)) + { + fclose($handle); + include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php'); + $zip = new PclZip($archive); + if ($list = $zip->listContent()) + { + foreach ($list as $file) + { + // we search common.lang.php in archive + if (basename($file['filename']) == 'common.lang.php' + and (!isset($main_filepath) + or strlen($file['filename']) < strlen($main_filepath))) + { + $main_filepath = $file['filename']; + } + } + if (isset($main_filepath)) + { + $root = basename(dirname($main_filepath)); // common.lang.php path in archive + if (preg_match('/^[a-z]{2}_[A-Z]{2}$/', $root)) + { + if ($action == 'install') + { + $dest = $root; + } + $extract_path = PHPWG_ROOT_PATH.'language/'.$dest; + if ( + $result = $zip->extract( + PCLZIP_OPT_PATH, $extract_path, + PCLZIP_OPT_REMOVE_PATH, $root, + PCLZIP_OPT_REPLACE_NEWER + ) + ) + { + foreach ($result as $file) + { + if ($file['stored_filename'] == $main_filepath) + { + $status = $file['status']; + break; + } + } + if ($status == 'ok') + { + $this->get_fs_languages(); + if ($action == 'install') + { + $this->perform_action('activate', $dest); + } + } + if (file_exists($extract_path.'/obsolete.list') + and $old_files = file($extract_path.'/obsolete.list', FILE_IGNORE_NEW_LINES) + and !empty($old_files)) + { + $old_files[] = 'obsolete.list'; + foreach($old_files as $old_file) + { + $path = $extract_path.'/'.$old_file; + if (is_file($path)) + { + @unlink($path); + } + elseif (is_dir($path)) + { + deltree($path, PHPWG_ROOT_PATH.'language/trash'); + } + } + } + } + else $status = 'extract_error'; + } + else $status = 'archive_error'; + } + else $status = 'archive_error'; + } + else $status = 'archive_error'; + } + else $status = 'dl_archive_error'; + } + else $status = 'temp_path_error'; + + @unlink($archive); + return $status; + } + + /** + * Sort functions + */ + function extension_name_compare($a, $b) + { + return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name'])); + } +} +?> \ No newline at end of file diff --git a/sources/admin/include/mysqldump.php b/sources/admin/include/mysqldump.php new file mode 100644 index 0000000..515d86a --- /dev/null +++ b/sources/admin/include/mysqldump.php @@ -0,0 +1,421 @@ + +* $connection = @mysql_connect($dbhost,$dbuser,$dbpsw); +* $dumper = new MySQLDump($dbname,'filename.sql',false,false); +* $dumper->doDump(); +* +* +* Special thanks to: +* - Andrea Ingaglio helping in development of all class code +* - Dylan Pugh for precious advices halfing the size of the output file and for helping in debug +* +* @name MySQLDump +* @author Daniele Vigan - CreativeFactory.it +* @version 2.20 - 02/11/2007 +* @license http://opensource.org/licenses/gpl-license.php GNU Public License +*/ + +class MySQLDump { + /** + * @access private + */ + var $database = null; + + /** + * @access private + */ + var $compress = false; + + /** + * @access private + */ + var $hexValue = false; + + /** + * The output filename + * @access private + */ + var $filename = null; + + /** + * The pointer of the output file + * @access private + */ + var $file = null; + + /** + * @access private + */ + var $isWritten = false; + + /** + * Class constructor + * @param string $db The database name + * @param string $filepath The file where the dump will be written + * @param boolean $compress It defines if the output file is compress (gzip) or not + * @param boolean $hexValue It defines if the outup values are base-16 or not + */ + function MYSQLDump($db = null, $filepath = 'dump.sql', $compress = false, $hexValue = false){ + $this->compress = $compress; + if ( !$this->setOutputFile($filepath) ) + return false; + return $this->setDatabase($db); + } + + /** + * Sets the database to work on + * @param string $db The database name + */ + function setDatabase($db){ + $this->database = $db; + if ( !@mysql_select_db($this->database) ) + return false; + return true; + } + + /** + * Returns the database where the class is working on + * @return string + */ + function getDatabase(){ + return $this->database; + } + + /** + * Sets the output file type (It can be made only if the file hasn't been already written) + * @param boolean $compress If it's true, the output file will be compressed + */ + function setCompress($compress){ + if ( $this->isWritten ) + return false; + $this->compress = $compress; + $this->openFile($this->filename); + return true; + } + + /** + * Returns if the output file is or not compressed + * @return boolean + */ + function getCompress(){ + return $this->compress; + } + + /** + * Sets the output file + * @param string $filepath The file where the dump will be written + */ + function setOutputFile($filepath){ + if ( $this->isWritten ) + return false; + $this->filename = $filepath; + $this->file = $this->openFile($this->filename); + return $this->file; + } + + /** + * Returns the output filename + * @return string + */ + function getOutputFile(){ + return $this->filename; + } + + /** + * Writes to file the $table's structure + * @param string $table The table name + */ + function getTableStructure($table){ + if ( !$this->setDatabase($this->database) ) + return false; + // Structure Header + $structure = "-- \n"; + $structure .= "-- Table structure for table `{$table}` \n"; + $structure .= "-- \n\n"; + // Dump Structure + $structure .= 'DROP TABLE IF EXISTS `'.$table.'`;'."\n"; + $structure .= "CREATE TABLE `".$table."` (\n"; + $records = @mysql_query('SHOW FIELDS FROM `'.$table.'`'); + if ( @mysql_num_rows($records) == 0 ) + return false; + while ( $record = mysql_fetch_assoc($records) ) { + $structure .= '`'.$record['Field'].'` '.$record['Type']; + if ( isset($record['Default']) ) + $structure .= ' DEFAULT \''.$record['Default'].'\''; + if ( @strcmp($record['Null'],'YES') != 0 ) + $structure .= ' NOT NULL'; + elseif ( is_null($record['Default']) ) + $structure .= ' DEFAULT NULL'; + if ( !empty($record['Extra']) ) + $structure .= ' '.$record['Extra']; + $structure .= ",\n"; + } + $structure = @ereg_replace(",\n$", null, $structure); + + // Save all Column Indexes + $structure .= $this->getSqlKeysTable($table); + $structure .= "\n)"; + + //Save table engine + $records = @mysql_query("SHOW TABLE STATUS LIKE '".$table."'"); + + if ( $record = @mysql_fetch_assoc($records) ) { + if ( !empty($record['Engine']) ) + $structure .= ' ENGINE='.$record['Engine']; + if ( !empty($record['Auto_increment']) ) + $structure .= ' AUTO_INCREMENT='.$record['Auto_increment']; + } + + $structure .= ";\n\n-- --------------------------------------------------------\n\n"; + $this->saveToFile($this->file,$structure); + } + + /** + * Writes to file the $table's data + * @param string $table The table name + * @param boolean $hexValue It defines if the output is base 16 or not + */ + function getTableData($table,$hexValue = true) { + if ( !$this->setDatabase($this->database) ) + return false; + // Header + $data = "-- \n"; + $data .= "-- Dumping data for table `$table` \n"; + $data .= "-- \n\n"; + + $records = mysql_query('SHOW FIELDS FROM `'.$table.'`'); + $num_fields = @mysql_num_rows($records); + if ( $num_fields == 0 ) + return false; + // Field names + $selectStatement = "SELECT "; + $insertStatement = "INSERT INTO `$table` ("; + $hexField = array(); + for ($x = 0; $x < $num_fields; $x++) { + $record = @mysql_fetch_assoc($records); + if ( ($hexValue) && ($this->isTextValue($record['Type'])) ) { + $selectStatement .= 'HEX(`'.$record['Field'].'`)'; + $hexField [$x] = true; + } + else + $selectStatement .= '`'.$record['Field'].'`'; + $insertStatement .= '`'.$record['Field'].'`'; + $insertStatement .= ", "; + $selectStatement .= ", "; + } + $insertStatement = @substr($insertStatement,0,-2).') VALUES'."\n"; + $selectStatement = @substr($selectStatement,0,-2).' FROM `'.$table.'`'; + + $records = @mysql_query($selectStatement); + $num_rows = @mysql_num_rows($records); + $num_fields = @mysql_num_fields($records); + // Dump data + if ( $num_rows > 0 ) { + $data .= $insertStatement; + for ($i = 0; $i < $num_rows; $i++) { + $record = @mysql_fetch_assoc($records); + $data .= ' ('; + for ($j = 0; $j < $num_fields; $j++) { + $field_name = @mysql_field_name($records, $j); + if ( @$hexField[$j] && (@strlen($record[$field_name]) > 0) ) + $data .= "0x".$record[$field_name]; + elseif (is_null($record[$field_name])) + $data .= "NULL"; + else + $data .= "'".@str_replace('\"','"',@mysql_real_escape_string($record[$field_name]))."'"; + $data .= ','; + } + $data = @substr($data,0,-1).")"; + $data .= ( $i < ($num_rows-1) ) ? ',' : ';'; + $data .= "\n"; + //if data in greather than 1MB save + if (strlen($data) > 1048576) { + $this->saveToFile($this->file,$data); + $data = ''; + } + } + $data .= "\n-- --------------------------------------------------------\n\n"; + $this->saveToFile($this->file,$data); + } + } + + /** + * Writes to file all the selected database tables structure + * @return boolean + */ + function getDatabaseStructure(){ + $records = @mysql_query('SHOW TABLES'); + if ( @mysql_num_rows($records) == 0 ) + return false; + $structure = ''; + while ( $record = @mysql_fetch_row($records) ) { + $structure .= $this->getTableStructure($record[0]); + } + return true; + } + + /** + * Writes to file all the selected database tables data + * @param boolean $hexValue It defines if the output is base-16 or not + */ + function getDatabaseData($hexValue = true){ + $records = @mysql_query('SHOW TABLES'); + if ( @mysql_num_rows($records) == 0 ) + return false; + while ( $record = @mysql_fetch_row($records) ) { + $this->getTableData($record[0],$hexValue); + } + } + + /** + * Writes to file the selected database dump + */ + function doDump() { + $this->saveToFile($this->file,"SET FOREIGN_KEY_CHECKS = 0;\n\n"); + $this->getDatabaseStructure(); + $this->getDatabaseData($this->hexValue); + $this->saveToFile($this->file,"SET FOREIGN_KEY_CHECKS = 1;\n\n"); + $this->closeFile($this->file); + return true; + } + + /** + * @deprecated Look at the doDump() method + */ + function writeDump($filename) { + if ( !$this->setOutputFile($filename) ) + return false; + $this->doDump(); + $this->closeFile($this->file); + return true; + } + + /** + * @access private + */ + function getSqlKeysTable ($table) { + $primary = ""; + $unique = array(); + $index = array(); + $fulltext = array(); + $results = mysql_query("SHOW KEYS FROM `{$table}`"); + if ( @mysql_num_rows($results) == 0 ) + return false; + while($row = mysql_fetch_object($results)) { + if (($row->Key_name == 'PRIMARY') AND ($row->Index_type == 'BTREE')) { + if ( $primary == "" ) + $primary = " PRIMARY KEY (`{$row->Column_name}`"; + else + $primary .= ", `{$row->Column_name}`"; + } + if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '0') AND ($row->Index_type == 'BTREE')) { + if ( (empty($unique)) OR (empty($unique[$row->Key_name])) ) + $unique[$row->Key_name] = " UNIQUE KEY `{$row->Key_name}` (`{$row->Column_name}`"; + else + $unique[$row->Key_name] .= ", `{$row->Column_name}`"; + } + if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'BTREE')) { + if ( (empty($index)) OR (empty($index[$row->Key_name])) ) + $index[$row->Key_name] = " KEY `{$row->Key_name}` (`{$row->Column_name}`"; + else + $index[$row->Key_name] .= ", `{$row->Column_name}`"; + } + if (($row->Key_name != 'PRIMARY') AND ($row->Non_unique == '1') AND ($row->Index_type == 'FULLTEXT')) { + if ( (empty($fulltext)) OR (empty($fulltext[$row->Key_name])) ) + $fulltext[$row->Key_name] = " FULLTEXT `{$row->Key_name}` (`{$row->Column_name}`"; + else + $fulltext[$row->Key_name] .= ", `{$row->Column_name}`"; + } + } + $sqlKeyStatement = ''; + // generate primary, unique, key and fulltext + if ( $primary != "" ) { + $sqlKeyStatement .= ",\n"; + $primary .= ")"; + $sqlKeyStatement .= $primary; + } + if (!empty($unique)) { + foreach ($unique as $keyName => $keyDef) { + $sqlKeyStatement .= ",\n"; + $keyDef .= ")"; + $sqlKeyStatement .= $keyDef; + + } + } + if (!empty($index)) { + foreach ($index as $keyName => $keyDef) { + $sqlKeyStatement .= ",\n"; + $keyDef .= ")"; + $sqlKeyStatement .= $keyDef; + } + } + if (!empty($fulltext)) { + foreach ($fulltext as $keyName => $keyDef) { + $sqlKeyStatement .= ",\n"; + $keyDef .= ")"; + $sqlKeyStatement .= $keyDef; + } + } + return $sqlKeyStatement; + } + + /** + * @access private + */ + function isTextValue($field_type) { + switch ($field_type) { + case "tinytext": + case "text": + case "mediumtext": + case "longtext": + case "binary": + case "varbinary": + case "tinyblob": + case "blob": + case "mediumblob": + case "longblob": + return True; + break; + default: + return False; + } + } + + /** + * @access private + */ + function openFile($filename) { + $file = false; + if ( $this->compress ) + $file = @gzopen($filename, "w9"); + else + $file = @fopen($filename, "w"); + return $file; + } + + /** + * @access private + */ + function saveToFile($file, $data) { + if ( $this->compress ) + @gzwrite($file, $data); + else + @fwrite($file, $data); + $this->isWritten = true; + } + + /** + * @access private + */ + function closeFile($file) { + if ( $this->compress ) + @gzclose($file); + else + @fclose($file); + } +} +?> \ No newline at end of file diff --git a/sources/admin/include/pclzip.lib.php b/sources/admin/include/pclzip.lib.php new file mode 100644 index 0000000..e7facc1 --- /dev/null +++ b/sources/admin/include/pclzip.lib.php @@ -0,0 +1,5694 @@ +zipname = $p_zipname; + $this->zip_fd = 0; + $this->magic_quotes_status = -1; + + // ----- Return + return; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // create($p_filelist, $p_add_dir="", $p_remove_dir="") + // create($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two different synopsis. The first one is historical. + // This method creates a Zip Archive. The Zip file is created in the + // filesystem. The files and directories indicated in $p_filelist + // are added in the archive. See the parameters description for the + // supported format of $p_filelist. + // When a directory is in the list, the directory and its content is added + // in the archive. + // In this synopsis, the function takes an optional variable list of + // options. See bellow the supported options. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function create($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove from the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Invalid number / type of arguments"); + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + if ($v_string != '') { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + else { + } + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privCreate($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // add($p_filelist, $p_add_dir="", $p_remove_dir="") + // add($p_filelist, $p_option, $p_option_value, ...) + // Description : + // This method supports two synopsis. The first one is historical. + // This methods add the list of files in an existing archive. + // If a file with the same name already exists, it is added at the end of the + // archive, the first one is still present. + // If the archive does not exist, it is created. + // Parameters : + // $p_filelist : An array containing file or directory names, or + // a string containing one filename or one directory name, or + // a string containing a list of filenames and/or directory + // names separated by spaces. + // $p_add_dir : A path to add before the real path of the archived file, + // in order to have it memorized in the archive. + // $p_remove_dir : A path to remove from the real path of the file to archive, + // in order to have a shorter path memorized in the archive. + // When $p_add_dir and $p_remove_dir are set, $p_remove_dir + // is removed first, before $p_add_dir is added. + // Options : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_COMMENT : + // PCLZIP_OPT_ADD_COMMENT : + // PCLZIP_OPT_PREPEND_COMMENT : + // PCLZIP_CB_PRE_ADD : + // PCLZIP_CB_POST_ADD : + // Return Values : + // 0 on failure, + // The list of the added files, with a status of the add action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function add($p_filelist) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Set default values + $v_options = array(); + $v_options[PCLZIP_OPT_NO_COMPRESSION] = FALSE; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_ADD => 'optional', + PCLZIP_CB_POST_ADD => 'optional', + PCLZIP_OPT_NO_COMPRESSION => 'optional', + PCLZIP_OPT_COMMENT => 'optional', + PCLZIP_OPT_ADD_COMMENT => 'optional', + PCLZIP_OPT_PREPEND_COMMENT => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + //, PCLZIP_OPT_CRYPT => 'optional' + )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_options[PCLZIP_OPT_ADD_PATH] = $v_add_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_options[PCLZIP_OPT_REMOVE_PATH] = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Init + $v_string_list = array(); + $v_att_list = array(); + $v_filedescr_list = array(); + $p_result_list = array(); + + // ----- Look if the $p_filelist is really an array + if (is_array($p_filelist)) { + + // ----- Look if the first element is also an array + // This will mean that this is a file description entry + if (isset($p_filelist[0]) && is_array($p_filelist[0])) { + $v_att_list = $p_filelist; + } + + // ----- The list is a list of string names + else { + $v_string_list = $p_filelist; + } + } + + // ----- Look if the $p_filelist is a string + else if (is_string($p_filelist)) { + // ----- Create a list from the string + $v_string_list = explode(PCLZIP_SEPARATOR, $p_filelist); + } + + // ----- Invalid variable type for $p_filelist + else { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); + return 0; + } + + // ----- Reformat the string list + if (sizeof($v_string_list) != 0) { + foreach ($v_string_list as $v_string) { + $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; + } + } + + // ----- For each file in the list check the attributes + $v_supported_attributes + = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' + ,PCLZIP_ATT_FILE_NEW_SHORT_NAME => 'optional' + ,PCLZIP_ATT_FILE_NEW_FULL_NAME => 'optional' + ,PCLZIP_ATT_FILE_MTIME => 'optional' + ,PCLZIP_ATT_FILE_CONTENT => 'optional' + ,PCLZIP_ATT_FILE_COMMENT => 'optional' + ); + foreach ($v_att_list as $v_entry) { + $v_result = $this->privFileDescrParseAtt($v_entry, + $v_filedescr_list[], + $v_options, + $v_supported_attributes); + if ($v_result != 1) { + return 0; + } + } + + // ----- Expand the filelist (expand directories) + $v_result = $this->privFileDescrExpand($v_filedescr_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Call the create fct + $v_result = $this->privAdd($v_filedescr_list, $p_result_list, $v_options); + if ($v_result != 1) { + return 0; + } + + // ----- Return + return $p_result_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : listContent() + // Description : + // This public method, gives the list of the files and directories, with their + // properties. + // The properties of each entries in the list are (used also in other functions) : + // filename : Name of the file. For a create or add action it is the filename + // given by the user. For an extract function it is the filename + // of the extracted file. + // stored_filename : Name of the file / directory stored in the archive. + // size : Size of the stored file. + // compressed_size : Size of the file's data compressed in the archive + // (without the headers overhead) + // mtime : Last known modification date of the file (UNIX timestamp) + // comment : Comment associated with the file + // folder : true | false + // index : index of the file in the archive + // status : status of the action (depending of the action) : + // Values are : + // ok : OK ! + // filtered : the file / dir is not extracted (filtered by user) + // already_a_directory : the file can not be extracted because a + // directory with the same name already exists + // write_protected : the file can not be extracted because a file + // with the same name already exists and is + // write protected + // newer_exist : the file was not extracted because a newer file exists + // path_creation_fail : the file is not extracted because the folder + // does not exist and can not be created + // write_error : the file was not extracted because there was a + // error while writing the file + // read_error : the file was not extracted because there was a error + // while reading the file + // invalid_header : the file was not extracted because of an archive + // format error (bad file header) + // Note that each time a method can continue operating when there + // is an action error on a file, the error is only logged in the file status. + // Return Values : + // 0 on an unrecoverable failure, + // The list of the files in the archive. + // -------------------------------------------------------------------------------- + function listContent() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Call the extracting fct + $p_list = array(); + if (($v_result = $this->privList($p_list)) != 1) + { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // extract($p_path="./", $p_remove_path="") + // extract([$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method extract all the files / directories from the archive to the + // folder indicated in $p_path. + // If you want to ignore the 'root' part of path of the memorized files + // you can indicate this in the optional $p_remove_path parameter. + // By default, if a newer file with the same name already exists, the + // file is not extracted. + // + // If both PCLZIP_OPT_PATH and PCLZIP_OPT_ADD_PATH aoptions + // are used, the path indicated in PCLZIP_OPT_ADD_PATH is append + // at the end of the path value of PCLZIP_OPT_PATH. + // Parameters : + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 or a negative value on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function extract() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_EXTRACT_IN_OUTPUT => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Trace + + // ----- Call the extracting fct + $p_list = array(); + $v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, + $v_remove_all_path, $v_options); + if ($v_result < 1) { + unset($p_list); + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + + // -------------------------------------------------------------------------------- + // Function : + // extractByIndex($p_index, $p_path="./", $p_remove_path="") + // extractByIndex($p_index, [$p_option, $p_option_value, ...]) + // Description : + // This method supports two synopsis. The first one is historical. + // This method is doing a partial extract of the archive. + // The extracted files or folders are identified by their index in the + // archive (from 0 to n). + // Note that if the index identify a folder, only the folder entry is + // extracted, not all the files included in the archive. + // Parameters : + // $p_index : A single index (integer) or a string of indexes of files to + // extract. The form of the string is "0,4-6,8-12" with only numbers + // and '-' for range or ',' to separate ranges. No spaces or ';' + // are allowed. + // $p_path : Path where the files and directories are to be extracted + // $p_remove_path : First part ('root' part) of the memorized path + // (if any similar) to remove while extracting. + // Options : + // PCLZIP_OPT_PATH : + // PCLZIP_OPT_ADD_PATH : + // PCLZIP_OPT_REMOVE_PATH : + // PCLZIP_OPT_REMOVE_ALL_PATH : + // PCLZIP_OPT_EXTRACT_AS_STRING : The files are extracted as strings and + // not as files. + // The resulting content is in a new field 'content' in the file + // structure. + // This option must be used alone (any other options are ignored). + // PCLZIP_CB_PRE_EXTRACT : + // PCLZIP_CB_POST_EXTRACT : + // Return Values : + // 0 on failure, + // The list of the extracted files, with a status of the action. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + //function extractByIndex($p_index, options...) + function extractByIndex($p_index) + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); +// $v_path = "./"; + $v_path = ''; + $v_remove_path = ""; + $v_remove_all_path = false; + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Default values for option + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + + // ----- Look for arguments + if ($v_size > 1) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Remove form the options list the first argument + array_shift($v_arg_list); + $v_size--; + + // ----- Look for first arg + if ((is_integer($v_arg_list[0])) && ($v_arg_list[0] > 77000)) { + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_PATH => 'optional', + PCLZIP_OPT_REMOVE_PATH => 'optional', + PCLZIP_OPT_REMOVE_ALL_PATH => 'optional', + PCLZIP_OPT_EXTRACT_AS_STRING => 'optional', + PCLZIP_OPT_ADD_PATH => 'optional', + PCLZIP_CB_PRE_EXTRACT => 'optional', + PCLZIP_CB_POST_EXTRACT => 'optional', + PCLZIP_OPT_SET_CHMOD => 'optional', + PCLZIP_OPT_REPLACE_NEWER => 'optional' + ,PCLZIP_OPT_STOP_ON_ERROR => 'optional' + ,PCLZIP_OPT_EXTRACT_DIR_RESTRICTION => 'optional', + PCLZIP_OPT_TEMP_FILE_THRESHOLD => 'optional', + PCLZIP_OPT_TEMP_FILE_ON => 'optional', + PCLZIP_OPT_TEMP_FILE_OFF => 'optional' + )); + if ($v_result != 1) { + return 0; + } + + // ----- Set the arguments + if (isset($v_options[PCLZIP_OPT_PATH])) { + $v_path = $v_options[PCLZIP_OPT_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_PATH])) { + $v_remove_path = $v_options[PCLZIP_OPT_REMOVE_PATH]; + } + if (isset($v_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $v_remove_all_path = $v_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + if (isset($v_options[PCLZIP_OPT_ADD_PATH])) { + // ----- Check for '/' in last path char + if ((strlen($v_path) > 0) && (substr($v_path, -1) != '/')) { + $v_path .= '/'; + } + $v_path .= $v_options[PCLZIP_OPT_ADD_PATH]; + } + if (!isset($v_options[PCLZIP_OPT_EXTRACT_AS_STRING])) { + $v_options[PCLZIP_OPT_EXTRACT_AS_STRING] = FALSE; + } + else { + } + } + + // ----- Look for 2 args + // Here we need to support the first historic synopsis of the + // method. + else { + + // ----- Get the first argument + $v_path = $v_arg_list[0]; + + // ----- Look for the optional second argument + if ($v_size == 2) { + $v_remove_path = $v_arg_list[1]; + } + else if ($v_size > 2) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid number / type of arguments"); + + // ----- Return + return 0; + } + } + } + + // ----- Trace + + // ----- Trick + // Here I want to reuse extractByRule(), so I need to parse the $p_index + // with privParseOptions() + $v_arg_trick = array (PCLZIP_OPT_BY_INDEX, $p_index); + $v_options_trick = array(); + $v_result = $this->privParseOptions($v_arg_trick, sizeof($v_arg_trick), $v_options_trick, + array (PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + $v_options[PCLZIP_OPT_BY_INDEX] = $v_options_trick[PCLZIP_OPT_BY_INDEX]; + + // ----- Look for default option values + $this->privOptionDefaultThreshold($v_options); + + // ----- Call the extracting fct + if (($v_result = $this->privExtractByRule($p_list, $v_path, $v_remove_path, $v_remove_all_path, $v_options)) < 1) { + return(0); + } + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : + // delete([$p_option, $p_option_value, ...]) + // Description : + // This method removes files from the archive. + // If no parameters are given, then all the archive is emptied. + // Parameters : + // None or optional arguments. + // Options : + // PCLZIP_OPT_BY_INDEX : + // PCLZIP_OPT_BY_NAME : + // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_PREG : + // Return Values : + // 0 on failure, + // The list of the files which are still present in the archive. + // (see PclZip::listContent() for list entry format) + // -------------------------------------------------------------------------------- + function delete() + { + $v_result=1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Set default values + $v_options = array(); + + // ----- Look for variable options arguments + $v_size = func_num_args(); + + // ----- Look for arguments + if ($v_size > 0) { + // ----- Get the arguments + $v_arg_list = func_get_args(); + + // ----- Parse the options + $v_result = $this->privParseOptions($v_arg_list, $v_size, $v_options, + array (PCLZIP_OPT_BY_NAME => 'optional', + PCLZIP_OPT_BY_EREG => 'optional', + PCLZIP_OPT_BY_PREG => 'optional', + PCLZIP_OPT_BY_INDEX => 'optional' )); + if ($v_result != 1) { + return 0; + } + } + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Call the delete fct + $v_list = array(); + if (($v_result = $this->privDeleteByRule($v_list, $v_options)) != 1) { + $this->privSwapBackMagicQuotes(); + unset($v_list); + return(0); + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : deleteByIndex() + // Description : + // ***** Deprecated ***** + // delete(PCLZIP_OPT_BY_INDEX, $p_index) should be prefered. + // -------------------------------------------------------------------------------- + function deleteByIndex($p_index) + { + + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); + + // ----- Return + return $p_list; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : properties() + // Description : + // This method gives the properties of the archive. + // The properties are : + // nb : Number of files in the archive + // comment : Comment associated with the archive file + // status : not_exist, ok + // Parameters : + // None + // Return Values : + // 0 on failure, + // An array with the archive properties. + // -------------------------------------------------------------------------------- + function properties() + { + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + $this->privSwapBackMagicQuotes(); + return(0); + } + + // ----- Default properties + $v_prop = array(); + $v_prop['comment'] = ''; + $v_prop['nb'] = 0; + $v_prop['status'] = 'not_exist'; + + // ----- Look if file exists + if (@is_file($this->zipname)) + { + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return 0; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return 0; + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Set the user attributes + $v_prop['comment'] = $v_central_dir['comment']; + $v_prop['nb'] = $v_central_dir['entries']; + $v_prop['status'] = 'ok'; + } + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_prop; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : duplicate() + // Description : + // This method creates an archive by copying the content of an other one. If + // the archive already exist, it is replaced by the new one without any warning. + // Parameters : + // $p_archive : The filename of a valid archive, or + // a valid PclZip object. + // Return Values : + // 1 on success. + // 0 or a negative value on error (error code). + // -------------------------------------------------------------------------------- + function duplicate($p_archive) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the $p_archive is a PclZip object + if ((is_object($p_archive)) && (get_class($p_archive) == 'pclzip')) + { + + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive->zipname); + } + + // ----- Look if the $p_archive is a string (so a filename) + else if (is_string($p_archive)) + { + + // ----- Check that $p_archive is a valid zip file + // TBC : Should also check the archive format + if (!is_file($p_archive)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "No file with filename '".$p_archive."'"); + $v_result = PCLZIP_ERR_MISSING_FILE; + } + else { + // ----- Duplicate the archive + $v_result = $this->privDuplicate($p_archive); + } + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : merge() + // Description : + // This method merge the $p_archive_to_add archive at the end of the current + // one ($this). + // If the archive ($this) does not exist, the merge becomes a duplicate. + // If the $p_archive_to_add archive does not exist, the merge is a success. + // Parameters : + // $p_archive_to_add : It can be directly the filename of a valid zip archive, + // or a PclZip object archive. + // Return Values : + // 1 on success, + // 0 or negative values on error (see below). + // -------------------------------------------------------------------------------- + function merge($p_archive_to_add) + { + $v_result = 1; + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Check archive + if (!$this->privCheckFormat()) { + return(0); + } + + // ----- Look if the $p_archive_to_add is a PclZip object + if ((is_object($p_archive_to_add)) && (get_class($p_archive_to_add) == 'pclzip')) + { + + // ----- Merge the archive + $v_result = $this->privMerge($p_archive_to_add); + } + + // ----- Look if the $p_archive_to_add is a string (so a filename) + else if (is_string($p_archive_to_add)) + { + + // ----- Create a temporary archive + $v_object_archive = new PclZip($p_archive_to_add); + + // ----- Merge the archive + $v_result = $this->privMerge($v_object_archive); + } + + // ----- Invalid variable + else + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_archive_to_add"); + $v_result = PCLZIP_ERR_INVALID_PARAMETER; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : errorCode() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorCode() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorCode()); + } + else { + return($this->error_code); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorName() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorName($p_with_code=false) + { + $v_name = array ( PCLZIP_ERR_NO_ERROR => 'PCLZIP_ERR_NO_ERROR', + PCLZIP_ERR_WRITE_OPEN_FAIL => 'PCLZIP_ERR_WRITE_OPEN_FAIL', + PCLZIP_ERR_READ_OPEN_FAIL => 'PCLZIP_ERR_READ_OPEN_FAIL', + PCLZIP_ERR_INVALID_PARAMETER => 'PCLZIP_ERR_INVALID_PARAMETER', + PCLZIP_ERR_MISSING_FILE => 'PCLZIP_ERR_MISSING_FILE', + PCLZIP_ERR_FILENAME_TOO_LONG => 'PCLZIP_ERR_FILENAME_TOO_LONG', + PCLZIP_ERR_INVALID_ZIP => 'PCLZIP_ERR_INVALID_ZIP', + PCLZIP_ERR_BAD_EXTRACTED_FILE => 'PCLZIP_ERR_BAD_EXTRACTED_FILE', + PCLZIP_ERR_DIR_CREATE_FAIL => 'PCLZIP_ERR_DIR_CREATE_FAIL', + PCLZIP_ERR_BAD_EXTENSION => 'PCLZIP_ERR_BAD_EXTENSION', + PCLZIP_ERR_BAD_FORMAT => 'PCLZIP_ERR_BAD_FORMAT', + PCLZIP_ERR_DELETE_FILE_FAIL => 'PCLZIP_ERR_DELETE_FILE_FAIL', + PCLZIP_ERR_RENAME_FILE_FAIL => 'PCLZIP_ERR_RENAME_FILE_FAIL', + PCLZIP_ERR_BAD_CHECKSUM => 'PCLZIP_ERR_BAD_CHECKSUM', + PCLZIP_ERR_INVALID_ARCHIVE_ZIP => 'PCLZIP_ERR_INVALID_ARCHIVE_ZIP', + PCLZIP_ERR_MISSING_OPTION_VALUE => 'PCLZIP_ERR_MISSING_OPTION_VALUE', + PCLZIP_ERR_INVALID_OPTION_VALUE => 'PCLZIP_ERR_INVALID_OPTION_VALUE', + PCLZIP_ERR_UNSUPPORTED_COMPRESSION => 'PCLZIP_ERR_UNSUPPORTED_COMPRESSION', + PCLZIP_ERR_UNSUPPORTED_ENCRYPTION => 'PCLZIP_ERR_UNSUPPORTED_ENCRYPTION' + ,PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE => 'PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE' + ,PCLZIP_ERR_DIRECTORY_RESTRICTION => 'PCLZIP_ERR_DIRECTORY_RESTRICTION' + ); + + if (isset($v_name[$this->error_code])) { + $v_value = $v_name[$this->error_code]; + } + else { + $v_value = 'NoName'; + } + + if ($p_with_code) { + return($v_value.' ('.$this->error_code.')'); + } + else { + return($v_value); + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : errorInfo() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function errorInfo($p_full=false) + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + return(PclErrorString()); + } + else { + if ($p_full) { + return($this->errorName(true)." : ".$this->error_string); + } + else { + return($this->error_string." [code ".$this->error_code."]"); + } + } + } + // -------------------------------------------------------------------------------- + + +// -------------------------------------------------------------------------------- +// ***** UNDER THIS LINE ARE DEFINED PRIVATE INTERNAL FUNCTIONS ***** +// ***** ***** +// ***** THESES FUNCTIONS MUST NOT BE USED DIRECTLY ***** +// -------------------------------------------------------------------------------- + + + + // -------------------------------------------------------------------------------- + // Function : privCheckFormat() + // Description : + // This method check that the archive exists and is a valid zip archive. + // Several level of check exists. (futur) + // Parameters : + // $p_level : Level of check. Default 0. + // 0 : Check the first bytes (magic codes) (default value)) + // 1 : 0 + Check the central directory (futur) + // 2 : 1 + Check each file header (futur) + // Return Values : + // true on success, + // false on error, the error code is set. + // -------------------------------------------------------------------------------- + function privCheckFormat($p_level=0) + { + $v_result = true; + + // ----- Reset the file system cache + clearstatcache(); + + // ----- Reset the error handler + $this->privErrorReset(); + + // ----- Look if the file exits + if (!is_file($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_FILE, "Missing archive file '".$this->zipname."'"); + return(false); + } + + // ----- Check that the file is readeable + if (!is_readable($this->zipname)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to read archive '".$this->zipname."'"); + return(false); + } + + // ----- Check the magic code + // TBC + + // ----- Check the central header + // TBC + + // ----- Check each file header + // TBC + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privParseOptions() + // Description : + // This internal methods reads the variable list of arguments ($p_options_list, + // $p_size) and generate an array with the options and values ($v_result_list). + // $v_requested_options contains the options that can be present and those that + // must be present. + // $v_requested_options is an array, with the option value as key, and 'optional', + // or 'mandatory' as value. + // Parameters : + // See above. + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) + { + $v_result=1; + + // ----- Read the options + $i=0; + while ($i<$p_size) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$p_options_list[$i]])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid optional parameter '".$p_options_list[$i]."' for this method"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for next option + switch ($p_options_list[$i]) { + // ----- Look for options that request a path value + case PCLZIP_OPT_PATH : + case PCLZIP_OPT_REMOVE_PATH : + case PCLZIP_OPT_ADD_PATH : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_THRESHOLD : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + // ----- Check the value + $v_value = $p_options_list[$i+1]; + if ((!is_integer($v_value)) || ($v_value<0)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Integer expected for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + return PclZip::errorCode(); + } + + // ----- Get the value (and convert it in bytes) + $v_result_list[$p_options_list[$i]] = $v_value*1048576; + $i++; + break; + + case PCLZIP_OPT_TEMP_FILE_ON : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_TEMP_FILE_OFF : + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_ON])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_ON'"); + return PclZip::errorCode(); + } + // ----- Check for incompatible options + if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); + return PclZip::errorCode(); + } + + $v_result_list[$p_options_list[$i]] = true; + break; + + case PCLZIP_OPT_EXTRACT_DIR_RESTRICTION : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if ( is_string($p_options_list[$i+1]) + && ($p_options_list[$i+1] != '')) { + $v_result_list[$p_options_list[$i]] = PclZipUtilTranslateWinPath($p_options_list[$i+1], FALSE); + $i++; + } + else { + } + break; + + // ----- Look for options that request an array of string for value + case PCLZIP_OPT_BY_NAME : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]][0] = $p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an EREG or PREG expression + case PCLZIP_OPT_BY_EREG : + // ereg() is deprecated starting with PHP 5.3. Move PCLZIP_OPT_BY_EREG + // to PCLZIP_OPT_BY_PREG + $p_options_list[$i] = PCLZIP_OPT_BY_PREG; + case PCLZIP_OPT_BY_PREG : + //case PCLZIP_OPT_CRYPT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Wrong parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that takes a string + case PCLZIP_OPT_COMMENT : + case PCLZIP_OPT_ADD_COMMENT : + case PCLZIP_OPT_PREPEND_COMMENT : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, + "Missing parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + if (is_string($p_options_list[$i+1])) { + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, + "Wrong parameter value for option '" + .PclZipUtilOptionText($p_options_list[$i]) + ."'"); + + // ----- Return + return PclZip::errorCode(); + } + $i++; + break; + + // ----- Look for options that request an array of index + case PCLZIP_OPT_BY_INDEX : + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_work_list = array(); + if (is_string($p_options_list[$i+1])) { + + // ----- Remove spaces + $p_options_list[$i+1] = strtr($p_options_list[$i+1], ' ', ''); + + // ----- Parse items + $v_work_list = explode(",", $p_options_list[$i+1]); + } + else if (is_integer($p_options_list[$i+1])) { + $v_work_list[0] = $p_options_list[$i+1].'-'.$p_options_list[$i+1]; + } + else if (is_array($p_options_list[$i+1])) { + $v_work_list = $p_options_list[$i+1]; + } + else { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Value must be integer, string or array for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Reduce the index list + // each index item in the list must be a couple with a start and + // an end value : [0,3], [5-5], [8-10], ... + // ----- Check the format of each item + $v_sort_flag=false; + $v_sort_value=0; + for ($j=0; $j= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_result_list[$p_options_list[$i]] = $p_options_list[$i+1]; + $i++; + break; + + // ----- Look for options that request a call-back + case PCLZIP_CB_PRE_EXTRACT : + case PCLZIP_CB_POST_EXTRACT : + case PCLZIP_CB_PRE_ADD : + case PCLZIP_CB_POST_ADD : + /* for futur use + case PCLZIP_CB_PRE_DELETE : + case PCLZIP_CB_POST_DELETE : + case PCLZIP_CB_PRE_LIST : + case PCLZIP_CB_POST_LIST : + */ + // ----- Check the number of parameters + if (($i+1) >= $p_size) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Get the value + $v_function_name = $p_options_list[$i+1]; + + // ----- Check that the value is a valid existing function + if (!function_exists($v_function_name)) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_OPTION_VALUE, "Function '".$v_function_name."()' is not an existing function for option '".PclZipUtilOptionText($p_options_list[$i])."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Set the attribute + $v_result_list[$p_options_list[$i]] = $v_function_name; + $i++; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '" + .$p_options_list[$i]."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Next options + $i++; + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($v_result_list[$key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + + // ----- Return + return PclZip::errorCode(); + } + } + } + } + + // ----- Look for default values + if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { + + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOptionDefaultThreshold() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privOptionDefaultThreshold(&$p_options) + { + $v_result=1; + + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { + return $v_result; + } + + // ----- Get 'memory_limit' configuration value + $v_memory_limit = ini_get('memory_limit'); + $v_memory_limit = trim($v_memory_limit); + $last = strtolower(substr($v_memory_limit, -1)); + + if($last == 'g') + //$v_memory_limit = $v_memory_limit*1024*1024*1024; + $v_memory_limit = $v_memory_limit*1073741824; + if($last == 'm') + //$v_memory_limit = $v_memory_limit*1024*1024; + $v_memory_limit = $v_memory_limit*1048576; + if($last == 'k') + $v_memory_limit = $v_memory_limit*1024; + + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); + + + // ----- Sanity check : No threshold if value lower than 1M + if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { + unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrParseAtt() + // Description : + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) + { + $v_result=1; + + // ----- For each file in the list check the attributes + foreach ($p_file_list as $v_key => $v_value) { + + // ----- Check if the option is supported + if (!isset($v_requested_options[$v_key])) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file attribute '".$v_key."' for this file"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for attribute + switch ($v_key) { + case PCLZIP_ATT_FILE_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['filename'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + break; + + case PCLZIP_ATT_FILE_NEW_SHORT_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_short_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_short_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty short filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + case PCLZIP_ATT_FILE_NEW_FULL_NAME : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['new_full_name'] = PclZipUtilPathReduction($v_value); + + if ($p_filedescr['new_full_name'] == '') { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty full filename for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + break; + + // ----- Look for options that takes a string + case PCLZIP_ATT_FILE_COMMENT : + if (!is_string($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". String expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['comment'] = $v_value; + break; + + case PCLZIP_ATT_FILE_MTIME : + if (!is_integer($v_value)) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid type ".gettype($v_value).". Integer expected for attribute '".PclZipUtilOptionText($v_key)."'"); + return PclZip::errorCode(); + } + + $p_filedescr['mtime'] = $v_value; + break; + + case PCLZIP_ATT_FILE_CONTENT : + $p_filedescr['content'] = $v_value; + break; + + default : + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, + "Unknown parameter '".$v_key."'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for mandatory options + if ($v_requested_options !== false) { + for ($key=reset($v_requested_options); $key=key($v_requested_options); $key=next($v_requested_options)) { + // ----- Look for mandatory option + if ($v_requested_options[$key] == 'mandatory') { + // ----- Look if present + if (!isset($p_file_list[$key])) { + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Missing mandatory parameter ".PclZipUtilOptionText($key)."(".$key.")"); + return PclZip::errorCode(); + } + } + } + } + + // end foreach + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privFileDescrExpand() + // Description : + // This method look for each item of the list to see if its a file, a folder + // or a string to be added as file. For any other type of files (link, other) + // just ignore the item. + // Then prepare the information that will be stored for that file. + // When its a folder, expand the folder with all the files that are in that + // folder (recursively). + // Parameters : + // Return Values : + // 1 on success. + // 0 on failure. + // -------------------------------------------------------------------------------- + function privFileDescrExpand(&$p_filedescr_list, &$p_options) + { + $v_result=1; + + // ----- Create a result list + $v_result_list = array(); + + // ----- Look each entry + for ($i=0; $iprivCalculateStoredFilename($v_descr, $p_options); + + // ----- Add the descriptor in result list + $v_result_list[sizeof($v_result_list)] = $v_descr; + + // ----- Look for folder + if ($v_descr['type'] == 'folder') { + // ----- List of items in folder + $v_dirlist_descr = array(); + $v_dirlist_nb = 0; + if ($v_folder_handler = @opendir($v_descr['filename'])) { + while (($v_item_handler = @readdir($v_folder_handler)) !== false) { + + // ----- Skip '.' and '..' + if (($v_item_handler == '.') || ($v_item_handler == '..')) { + continue; + } + + // ----- Compose the full filename + $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; + + // ----- Look for different stored filename + // Because the name of the folder was changed, the name of the + // files/sub-folders also change + if (($v_descr['stored_filename'] != $v_descr['filename']) + && (!isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH]))) { + if ($v_descr['stored_filename'] != '') { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_descr['stored_filename'].'/'.$v_item_handler; + } + else { + $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; + } + } + + $v_dirlist_nb++; + } + + @closedir($v_folder_handler); + } + else { + // TBC : unable to open folder in read mode + } + + // ----- Expand each element of the list + if ($v_dirlist_nb != 0) { + // ----- Expand + if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { + return $v_result; + } + + // ----- Concat the resulting list + $v_result_list = array_merge($v_result_list, $v_dirlist_descr); + } + else { + } + + // ----- Free local array + unset($v_dirlist_descr); + } + } + + // ----- Get the result list + $p_filedescr_list = $v_result_list; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCreate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCreate($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the file in write mode + if (($v_result = $this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Add the list of files + $v_result = $this->privAddList($p_filedescr_list, $p_result_list, $p_options); + + // ----- Close + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAdd() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAdd($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Look if the archive exists or is empty + if ((!is_file($this->zipname)) || (filesize($this->zipname) == 0)) + { + + // ----- Do a create + $v_result = $this->privCreate($p_filedescr_list, $p_result_list, $p_options); + + // ----- Return + return $v_result; + } + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Create the Central Dir files header + for ($i=0, $v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + fclose($v_zip_temp_fd); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = $v_central_dir['comment']; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_ADD_COMMENT])) { + $v_comment = $v_comment.$p_options[PCLZIP_OPT_ADD_COMMENT]; + } + if (isset($p_options[PCLZIP_OPT_PREPEND_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_PREPEND_COMMENT].$v_comment; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count+$v_central_dir['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privOpenFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privOpenFd($p_mode) + { + $v_result=1; + + // ----- Look if already open + if ($this->zip_fd != 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Zip file \''.$this->zipname.'\' already open'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, $p_mode)) == 0) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in '.$p_mode.' mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCloseFd() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privCloseFd() + { + $v_result=1; + + if ($this->zip_fd != 0) + @fclose($this->zip_fd); + $this->zip_fd = 0; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddList() + // Description : + // $p_add_dir and $p_remove_dir will give the ability to memorize a path which is + // different from the real path of the file. This is usefull if you want to have PclTar + // running in any directory, and memorize relative path from an other directory. + // Parameters : + // $p_list : An array containing the file or directory names to add in the tar + // $p_result_list : list of added files with their properties (specially the status field) + // $p_add_dir : Path to add in the filename path archived + // $p_remove_dir : Path to remove in the filename path archived + // Return Values : + // -------------------------------------------------------------------------------- +// function privAddList($p_list, &$p_result_list, $p_add_dir, $p_remove_dir, $p_remove_all_dir, &$p_options) + function privAddList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + + // ----- Add the files + $v_header_list = array(); + if (($v_result = $this->privAddFileList($p_filedescr_list, $v_header_list, $p_options)) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($this->zip_fd); + + // ----- Create the Central Dir files header + for ($i=0,$v_count=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + // ----- Return + return $v_result; + } + $v_count++; + } + + // ----- Transform the header to a 'usable' info + $this->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($this->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_count, $v_size, $v_offset, $v_comment)) != 1) + { + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileList() + // Description : + // Parameters : + // $p_filedescr_list : An array containing the file description + // or directory names to add in the zip + // $p_result_list : list of added files with their properties (specially the status field) + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileList($p_filedescr_list, &$p_result_list, &$p_options) + { + $v_result=1; + $v_header = array(); + + // ----- Recuperate the current number of elt in list + $v_nb = sizeof($p_result_list); + + // ----- Loop on the files + for ($j=0; ($jprivAddFile($p_filedescr_list[$j], $v_header, + $p_options); + if ($v_result != 1) { + return $v_result; + } + + // ----- Store the file infos + $p_result_list[$v_nb++] = $v_header; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=1; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + // TBC : Already done in the fileAtt check ... ? + if ($p_filename == "") { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid file list parameter (invalid or empty list)"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for a stored different filename + /* TBC : Removed + if (isset($p_filedescr['stored_filename'])) { + $v_stored_filename = $p_filedescr['stored_filename']; + } + else { + $v_stored_filename = $p_filedescr['stored_filename']; + } + */ + + // ----- Set the file properties + clearstatcache(); + $p_header['version'] = 20; + $p_header['version_extracted'] = 10; + $p_header['flag'] = 0; + $p_header['compression'] = 0; + $p_header['crc'] = 0; + $p_header['compressed_size'] = 0; + $p_header['filename_len'] = strlen($p_filename); + $p_header['extra_len'] = 0; + $p_header['disk'] = 0; + $p_header['internal'] = 0; + $p_header['offset'] = 0; + $p_header['filename'] = $p_filename; +// TBC : Removed $p_header['stored_filename'] = $v_stored_filename; + $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['extra'] = ''; + $p_header['status'] = 'ok'; + $p_header['index'] = -1; + + // ----- Look for regular file + if ($p_filedescr['type']=='file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for regular folder + else if ($p_filedescr['type']=='folder') { + $p_header['external'] = 0x00000010; + $p_header['mtime'] = filemtime($p_filename); + $p_header['size'] = filesize($p_filename); + } + + // ----- Look for virtual file + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['external'] = 0x00000000; + $p_header['size'] = strlen($p_filedescr['content']); + } + + + // ----- Look for filetime + if (isset($p_filedescr['mtime'])) { + $p_header['mtime'] = $p_filedescr['mtime']; + } + else if ($p_filedescr['type'] == 'virtual_file') { + $p_header['mtime'] = time(); + } + else { + $p_header['mtime'] = filemtime($p_filename); + } + + // ------ Look for file comment + if (isset($p_filedescr['comment'])) { + $p_header['comment_len'] = strlen($p_filedescr['comment']); + $p_header['comment'] = $p_filedescr['comment']; + } + else { + $p_header['comment_len'] = 0; + $p_header['comment'] = ''; + } + + // ----- Look for pre-add callback + if (isset($p_options[PCLZIP_CB_PRE_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_ADD].'(PCLZIP_CB_PRE_ADD, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_ADD](PCLZIP_CB_PRE_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_header['status'] = "skipped"; + $v_result = 1; + } + + // ----- Update the informations + // Only some fields can be modified + if ($p_header['stored_filename'] != $v_local_header['stored_filename']) { + $p_header['stored_filename'] = PclZipUtilPathReduction($v_local_header['stored_filename']); + } + } + + // ----- Look for empty stored filename + if ($p_header['stored_filename'] == "") { + $p_header['status'] = "filtered"; + } + + // ----- Check the path length + if (strlen($p_header['stored_filename']) > 0xFF) { + $p_header['status'] = 'filename_too_long'; + } + + // ----- Look if no error, or file not skipped + if ($p_header['status'] == 'ok') { + + // ----- Look for a file + if ($p_filedescr['type'] == 'file') { + // ----- Look for using temporary file to zip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { + $v_result = $this->privAddFileUsingTempFile($p_filedescr, $p_header, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Use "in memory" zip algo + else { + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Read the file content + $v_content = @fread($v_file, $p_header['size']); + + // ----- Close the file + @fclose($v_file); + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + + } + + } + + // ----- Look for a virtual file (a file from string) + else if ($p_filedescr['type'] == 'virtual_file') { + + $v_content = $p_filedescr['content']; + + // ----- Calculate the CRC + $p_header['crc'] = @crc32($v_content); + + // ----- Look for no compression + if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { + // ----- Set header parameters + $p_header['compressed_size'] = $p_header['size']; + $p_header['compression'] = 0; + } + + // ----- Look for normal compression + else { + // ----- Compress the content + $v_content = @gzdeflate($v_content); + + // ----- Set header parameters + $p_header['compressed_size'] = strlen($v_content); + $p_header['compression'] = 8; + } + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + @fclose($v_file); + return $v_result; + } + + // ----- Write the compressed (or not) content + @fwrite($this->zip_fd, $v_content, $p_header['compressed_size']); + } + + // ----- Look for a directory + else if ($p_filedescr['type'] == 'folder') { + // ----- Look for directory last '/' + if (@substr($p_header['stored_filename'], -1) != '/') { + $p_header['stored_filename'] .= '/'; + } + + // ----- Set the file properties + $p_header['size'] = 0; + //$p_header['external'] = 0x41FF0010; // Value for a folder : to be checked + $p_header['external'] = 0x00000010; // Value for a folder : to be checked + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) + { + return $v_result; + } + } + } + + // ----- Look for post-add callback + if (isset($p_options[PCLZIP_CB_POST_ADD])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_header, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_POST_ADD].'(PCLZIP_CB_POST_ADD, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_ADD](PCLZIP_CB_POST_ADD, $v_local_header); + if ($v_result == 0) { + // ----- Ignored + $v_result = 1; + } + + // ----- Update the informations + // Nothing can be modified + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privAddFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) + { + $v_result=PCLZIP_ERR_NO_ERROR; + + // ----- Working variable + $p_filename = $p_filedescr['filename']; + + + // ----- Open the source file + if (($v_file = @fopen($p_filename, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, "Unable to open file '$p_filename' in binary read mode"); + return PclZip::errorCode(); + } + + // ----- Creates a compressed temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_file_compressed = @gzopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = filesize($p_filename); + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @gzputs($v_file_compressed, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file); + @gzclose($v_file_compressed); + + // ----- Check the minimum file size + if (filesize($v_gzip_temp_name) < 18) { + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'gzip temporary file \''.$v_gzip_temp_name.'\' has invalid filesize - should be minimum 18 bytes'); + return PclZip::errorCode(); + } + + // ----- Extract the compressed attributes + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the gzip file header + $v_binary_data = @fread($v_file_compressed, 10); + $v_data_header = unpack('a1id1/a1id2/a1cm/a1flag/Vmtime/a1xfl/a1os', $v_binary_data); + + // ----- Check some parameters + $v_data_header['os'] = bin2hex($v_data_header['os']); + + // ----- Read the gzip file footer + @fseek($v_file_compressed, filesize($v_gzip_temp_name)-8); + $v_binary_data = @fread($v_file_compressed, 8); + $v_data_footer = unpack('Vcrc/Vcompressed_size', $v_binary_data); + + // ----- Set the attributes + $p_header['compression'] = ord($v_data_header['cm']); + //$p_header['mtime'] = $v_data_header['mtime']; + $p_header['crc'] = $v_data_footer['crc']; + $p_header['compressed_size'] = filesize($v_gzip_temp_name)-18; + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Call the header generation + if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { + return $v_result; + } + + // ----- Add the compressed data + if (($v_file_compressed = @fopen($v_gzip_temp_name, "rb")) == 0) + { + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + fseek($v_file_compressed, 10); + $v_size = $p_header['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($v_file_compressed, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close the file + @fclose($v_file_compressed); + + // ----- Unlink the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCalculateStoredFilename() + // Description : + // Based on file descriptor properties and global options, this method + // calculate the filename that will be stored in the archive. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privCalculateStoredFilename(&$p_filedescr, &$p_options) + { + $v_result=1; + + // ----- Working variables + $p_filename = $p_filedescr['filename']; + if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { + $p_add_dir = $p_options[PCLZIP_OPT_ADD_PATH]; + } + else { + $p_add_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_PATH])) { + $p_remove_dir = $p_options[PCLZIP_OPT_REMOVE_PATH]; + } + else { + $p_remove_dir = ''; + } + if (isset($p_options[PCLZIP_OPT_REMOVE_ALL_PATH])) { + $p_remove_all_dir = $p_options[PCLZIP_OPT_REMOVE_ALL_PATH]; + } + else { + $p_remove_all_dir = 0; + } + + + // ----- Look for full name change + if (isset($p_filedescr['new_full_name'])) { + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); + } + + // ----- Look for path and/or short name change + else { + + // ----- Look for short name change + // Its when we cahnge just the filename but not the path + if (isset($p_filedescr['new_short_name'])) { + $v_path_info = pathinfo($p_filename); + $v_dir = ''; + if ($v_path_info['dirname'] != '') { + $v_dir = $v_path_info['dirname'].'/'; + } + $v_stored_filename = $v_dir.$p_filedescr['new_short_name']; + } + else { + // ----- Calculate the stored filename + $v_stored_filename = $p_filename; + } + + // ----- Look for all path to remove + if ($p_remove_all_dir) { + $v_stored_filename = basename($p_filename); + } + // ----- Look for partial path remove + else if ($p_remove_dir != "") { + if (substr($p_remove_dir, -1) != '/') + $p_remove_dir .= "/"; + + if ( (substr($p_filename, 0, 2) == "./") + || (substr($p_remove_dir, 0, 2) == "./")) { + + if ( (substr($p_filename, 0, 2) == "./") + && (substr($p_remove_dir, 0, 2) != "./")) { + $p_remove_dir = "./".$p_remove_dir; + } + if ( (substr($p_filename, 0, 2) != "./") + && (substr($p_remove_dir, 0, 2) == "./")) { + $p_remove_dir = substr($p_remove_dir, 2); + } + } + + $v_compare = PclZipUtilPathInclusion($p_remove_dir, + $v_stored_filename); + if ($v_compare > 0) { + if ($v_compare == 2) { + $v_stored_filename = ""; + } + else { + $v_stored_filename = substr($v_stored_filename, + strlen($p_remove_dir)); + } + } + } + + // ----- Remove drive letter if any + $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); + + // ----- Look for path to add + if ($p_add_dir != "") { + if (substr($p_add_dir, -1) == "/") + $v_stored_filename = $p_add_dir.$v_stored_filename; + else + $v_stored_filename = $p_add_dir."/".$v_stored_filename; + } + } + + // ----- Filename (reduce the path of stored name) + $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); + $p_filedescr['stored_filename'] = $v_stored_filename; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteFileHeader(&$p_header) + { + $v_result=1; + + // ----- Store the offset position of the file + $p_header['offset'] = ftell($this->zip_fd); + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + // ----- Packed data + $v_binary_data = pack("VvvvvvVVVvv", 0x04034b50, + $p_header['version_extracted'], $p_header['flag'], + $p_header['compression'], $v_mtime, $v_mdate, + $p_header['crc'], $p_header['compressed_size'], + $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len']); + + // ----- Write the first 148 bytes of the header in the archive + fputs($this->zip_fd, $v_binary_data, 30); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralFileHeader(&$p_header) + { + $v_result=1; + + // TBC + //for(reset($p_header); $key = key($p_header); next($p_header)) { + //} + + // ----- Transform UNIX mtime to DOS format mdate/mtime + $v_date = getdate($p_header['mtime']); + $v_mtime = ($v_date['hours']<<11) + ($v_date['minutes']<<5) + $v_date['seconds']/2; + $v_mdate = (($v_date['year']-1980)<<9) + ($v_date['mon']<<5) + $v_date['mday']; + + + // ----- Packed data + $v_binary_data = pack("VvvvvvvVVVvvvvvVV", 0x02014b50, + $p_header['version'], $p_header['version_extracted'], + $p_header['flag'], $p_header['compression'], + $v_mtime, $v_mdate, $p_header['crc'], + $p_header['compressed_size'], $p_header['size'], + strlen($p_header['stored_filename']), + $p_header['extra_len'], $p_header['comment_len'], + $p_header['disk'], $p_header['internal'], + $p_header['external'], $p_header['offset']); + + // ----- Write the 42 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 46); + + // ----- Write the variable fields + if (strlen($p_header['stored_filename']) != 0) + { + fputs($this->zip_fd, $p_header['stored_filename'], strlen($p_header['stored_filename'])); + } + if ($p_header['extra_len'] != 0) + { + fputs($this->zip_fd, $p_header['extra'], $p_header['extra_len']); + } + if ($p_header['comment_len'] != 0) + { + fputs($this->zip_fd, $p_header['comment'], $p_header['comment_len']); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privWriteCentralHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privWriteCentralHeader($p_nb_entries, $p_size, $p_offset, $p_comment) + { + $v_result=1; + + // ----- Packed data + $v_binary_data = pack("VvvvvVVv", 0x06054b50, 0, 0, $p_nb_entries, + $p_nb_entries, $p_size, + $p_offset, strlen($p_comment)); + + // ----- Write the 22 bytes of the header in the zip file + fputs($this->zip_fd, $v_binary_data, 22); + + // ----- Write the variable fields + if (strlen($p_comment) != 0) + { + fputs($this->zip_fd, $p_comment, strlen($p_comment)); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privList() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privList(&$p_list) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Open the zip file + if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) + { + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Go to beginning of Central Dir + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_central_dir['offset'])) + { + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + for ($i=0; $i<$v_central_dir['entries']; $i++) + { + // ----- Read the file header + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + $v_header['index'] = $i; + + // ----- Get the only interesting attributes + $this->privConvertHeader2FileInfo($v_header, $p_list[$i]); + unset($v_header); + } + + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Magic quotes trick + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privConvertHeader2FileInfo() + // Description : + // This function takes the file informations from the central directory + // entries and extract the interesting parameters that will be given back. + // The resulting file infos are set in the array $p_info + // $p_info['filename'] : Filename with full path. Given by user (add), + // extracted in the filesystem (extract). + // $p_info['stored_filename'] : Stored filename in the archive. + // $p_info['size'] = Size of the file. + // $p_info['compressed_size'] = Compressed size of the file. + // $p_info['mtime'] = Last modification date of the file. + // $p_info['comment'] = Comment associated with the file. + // $p_info['folder'] = true/false : indicates if the entry is a folder or not. + // $p_info['status'] = status of the action on the file. + // $p_info['crc'] = CRC of the file content. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privConvertHeader2FileInfo($p_header, &$p_info) + { + $v_result=1; + + // ----- Get the interesting attributes + $v_temp_path = PclZipUtilPathReduction($p_header['filename']); + $p_info['filename'] = $v_temp_path; + $v_temp_path = PclZipUtilPathReduction($p_header['stored_filename']); + $p_info['stored_filename'] = $v_temp_path; + $p_info['size'] = $p_header['size']; + $p_info['compressed_size'] = $p_header['compressed_size']; + $p_info['mtime'] = $p_header['mtime']; + $p_info['comment'] = $p_header['comment']; + $p_info['folder'] = (($p_header['external']&0x00000010)==0x00000010); + $p_info['index'] = $p_header['index']; + $p_info['status'] = $p_header['status']; + $p_info['crc'] = $p_header['crc']; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractByRule() + // Description : + // Extract a file or directory depending of rules (by index, by name, ...) + // Parameters : + // $p_file_list : An array where will be placed the properties of each + // extracted file + // $p_path : Path to add while writing the extracted files + // $p_remove_path : Path to remove (from the file memorized path) while writing the + // extracted files. If the path does not match the file path, + // the file is extracted with its memorized path. + // $p_remove_path does not apply to 'list' mode. + // $p_path and $p_remove_path are commulative. + // Return Values : + // 1 on success,0 or less on error (see error code list) + // -------------------------------------------------------------------------------- + function privExtractByRule(&$p_file_list, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Magic quotes trick + $this->privDisableMagicQuotes(); + + // ----- Check the path + if ( ($p_path == "") + || ( (substr($p_path, 0, 1) != "/") + && (substr($p_path, 0, 3) != "../") + && (substr($p_path,1,2)!=":/"))) + $p_path = "./".$p_path; + + // ----- Reduce the path last (and duplicated) '/' + if (($p_path != "./") && ($p_path != "/")) + { + // ----- Look for the path end '/' + while (substr($p_path, -1) == "/") + { + $p_path = substr($p_path, 0, strlen($p_path)-1); + } + } + + // ----- Look for path to remove format (should end by /) + if (($p_remove_path != "") && (substr($p_remove_path, -1) != '/')) + { + $p_remove_path .= '/'; + } + $p_remove_path_size = strlen($p_remove_path); + + // ----- Open the zip file + if (($v_result = $this->privOpenFd('rb')) != 1) + { + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + + // ----- Read each entry + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read next Central dir entry + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header)) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Store the index + $v_header['index'] = $i; + + // ----- Store the file position + $v_pos_entry = ftell($this->zip_fd); + + // ----- Look for the specific extract rules + $v_extract = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_extract = true; + } + } + // ----- Look for a filename + elseif ($v_header['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_extract = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header['stored_filename'])) { + $v_extract = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_extract = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + + // ----- Look for no rule, which means extract all the archive + else { + $v_extract = true; + } + + // ----- Check compression method + if ( ($v_extract) + && ( ($v_header['compression'] != 8) + && ($v_header['compression'] != 0))) { + $v_header['status'] = 'unsupported_compression'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, + "Filename '".$v_header['stored_filename']."' is " + ."compressed by an unsupported compression " + ."method (".$v_header['compression'].") "); + + return PclZip::errorCode(); + } + } + + // ----- Check encrypted files + if (($v_extract) && (($v_header['flag'] & 1) == 1)) { + $v_header['status'] = 'unsupported_encryption'; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + $this->privSwapBackMagicQuotes(); + + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, + "Unsupported encryption for " + ." filename '".$v_header['stored_filename'] + ."'"); + + return PclZip::errorCode(); + } + } + + // ----- Look for real extraction + if (($v_extract) && ($v_header['status'] != 'ok')) { + $v_result = $this->privConvertHeader2FileInfo($v_header, + $p_file_list[$v_nb_extracted++]); + if ($v_result != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + $v_extract = false; + } + + // ----- Look for real extraction + if ($v_extract) + { + + // ----- Go to the file position + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_header['offset'])) + { + // ----- Close the zip file + $this->privCloseFd(); + + $this->privSwapBackMagicQuotes(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Look for extraction as string + if ($p_options[PCLZIP_OPT_EXTRACT_AS_STRING]) { + + $v_string = ''; + + // ----- Extracting the file + $v_result1 = $this->privExtractFileAsString($v_header, $v_string, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Set the file content + $p_file_list[$v_nb_extracted]['content'] = $v_string; + + // ----- Next extracted file + $v_nb_extracted++; + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for extraction in standard output + elseif ( (isset($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) + && ($p_options[PCLZIP_OPT_EXTRACT_IN_OUTPUT])) { + // ----- Extracting the file in standard output + $v_result1 = $this->privExtractFileInOutput($v_header, $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + // ----- Look for normal extraction + else { + // ----- Extracting the file + $v_result1 = $this->privExtractFile($v_header, + $p_path, $p_remove_path, + $p_remove_all_path, + $p_options); + if ($v_result1 < 1) { + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + return $v_result1; + } + + // ----- Get the only interesting attributes + if (($v_result = $this->privConvertHeader2FileInfo($v_header, $p_file_list[$v_nb_extracted++])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + return $v_result; + } + + // ----- Look for user callback abort + if ($v_result1 == 2) { + break; + } + } + } + } + + // ----- Close the zip file + $this->privCloseFd(); + $this->privSwapBackMagicQuotes(); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFile() + // Description : + // Parameters : + // Return Values : + // + // 1 : ... ? + // PCLZIP_ERR_USER_ABORTED(2) : User ask for extraction stop in callback + // -------------------------------------------------------------------------------- + function privExtractFile(&$p_entry, $p_path, $p_remove_path, $p_remove_all_path, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for all path to remove + if ($p_remove_all_path == true) { + // ----- Look for folder entry that not need to be extracted + if (($p_entry['external']&0x00000010)==0x00000010) { + + $p_entry['status'] = "filtered"; + + return $v_result; + } + + // ----- Get the basename of the path + $p_entry['filename'] = basename($p_entry['filename']); + } + + // ----- Look for path to remove + else if ($p_remove_path != "") + { + if (PclZipUtilPathInclusion($p_remove_path, $p_entry['filename']) == 2) + { + + // ----- Change the file status + $p_entry['status'] = "filtered"; + + // ----- Return + return $v_result; + } + + $p_remove_path_size = strlen($p_remove_path); + if (substr($p_entry['filename'], 0, $p_remove_path_size) == $p_remove_path) + { + + // ----- Remove the path + $p_entry['filename'] = substr($p_entry['filename'], $p_remove_path_size); + + } + } + + // ----- Add the path + if ($p_path != '') { + $p_entry['filename'] = $p_path."/".$p_entry['filename']; + } + + // ----- Check a base_dir_restriction + if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { + $v_inclusion + = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], + $p_entry['filename']); + if ($v_inclusion == 0) { + + PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, + "Filename '".$p_entry['filename']."' is " + ."outside PCLZIP_OPT_EXTRACT_DIR_RESTRICTION"); + + return PclZip::errorCode(); + } + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Look for specific actions while the file exist + if (file_exists($p_entry['filename'])) + { + + // ----- Look if file is a directory + if (is_dir($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "already_a_directory"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_ALREADY_A_DIRECTORY, + "Filename '".$p_entry['filename']."' is " + ."already used by an existing directory"); + + return PclZip::errorCode(); + } + } + // ----- Look if file is write protected + else if (!is_writeable($p_entry['filename'])) + { + + // ----- Change the file status + $p_entry['status'] = "write_protected"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Filename '".$p_entry['filename']."' exists " + ."and is write protected"); + + return PclZip::errorCode(); + } + } + + // ----- Look if the extracted file is older + else if (filemtime($p_entry['filename']) > $p_entry['mtime']) + { + // ----- Change the file status + if ( (isset($p_options[PCLZIP_OPT_REPLACE_NEWER])) + && ($p_options[PCLZIP_OPT_REPLACE_NEWER]===true)) { + } + else { + $p_entry['status'] = "newer_exist"; + + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR + // For historical reason first PclZip implementation does not stop + // when this kind of error occurs. + if ( (isset($p_options[PCLZIP_OPT_STOP_ON_ERROR])) + && ($p_options[PCLZIP_OPT_STOP_ON_ERROR]===true)) { + + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, + "Newer version of '".$p_entry['filename']."' exists " + ."and option PCLZIP_OPT_REPLACE_NEWER is not selected"); + + return PclZip::errorCode(); + } + } + } + else { + } + } + + // ----- Check the directory availability and create it if necessary + else { + if ((($p_entry['external']&0x00000010)==0x00000010) || (substr($p_entry['filename'], -1) == '/')) + $v_dir_to_check = $p_entry['filename']; + else if (!strstr($p_entry['filename'], "/")) + $v_dir_to_check = ""; + else + $v_dir_to_check = dirname($p_entry['filename']); + + if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { + + // ----- Change the file status + $p_entry['status'] = "path_creation_fail"; + + // ----- Return + //return $v_result; + $v_result = 1; + } + } + } + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) + { + // ----- Look for not compressed file + if ($p_entry['compression'] == 0) { + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) + { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + // ----- Return + return $v_result; + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + /* Try to speed up the code + $v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_binary_data, $v_read_size); + */ + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Closing the destination file + fclose($v_dest_file); + + // ----- Change the file mtime + touch($p_entry['filename'], $p_entry['mtime']); + + + } + else { + // ----- TBC + // Need to be finished + if (($p_entry['flag'] & 1) == 1) { + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_ENCRYPTION, 'File \''.$p_entry['filename'].'\' is encrypted. Encrypted files are not supported.'); + return PclZip::errorCode(); + } + + + // ----- Look for using temporary file to unzip + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) + || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) + && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { + $v_result = $this->privExtractFileUsingTempFile($p_entry, $p_options); + if ($v_result < PCLZIP_ERR_NO_ERROR) { + return $v_result; + } + } + + // ----- Look for extract in memory + else { + + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = @gzinflate($v_buffer); + unset($v_buffer); + if ($v_file_content === FALSE) { + + // ----- Change the file status + // TBC + $p_entry['status'] = "error"; + + return $v_result; + } + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + + // ----- Change the file status + $p_entry['status'] = "write_error"; + + return $v_result; + } + + // ----- Write the uncompressed data + @fwrite($v_dest_file, $v_file_content, $p_entry['size']); + unset($v_file_content); + + // ----- Closing the destination file + @fclose($v_dest_file); + + } + + // ----- Change the file mtime + @touch($p_entry['filename'], $p_entry['mtime']); + } + + // ----- Look for chmod option + if (isset($p_options[PCLZIP_OPT_SET_CHMOD])) { + + // ----- Change the mode of the file + @chmod($p_entry['filename'], $p_options[PCLZIP_OPT_SET_CHMOD]); + } + + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileUsingTempFile() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileUsingTempFile(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Creates a temporary file + $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; + if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { + fclose($v_file); + PclZip::privErrorLog(PCLZIP_ERR_WRITE_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary write mode'); + return PclZip::errorCode(); + } + + + // ----- Write gz file format header + $v_binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($p_entry['compression']), Chr(0x00), time(), Chr(0x00), Chr(3)); + @fwrite($v_dest_file, $v_binary_data, 10); + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['compressed_size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Write gz file format footer + $v_binary_data = pack('VV', $p_entry['crc'], $p_entry['size']); + @fwrite($v_dest_file, $v_binary_data, 8); + + // ----- Close the temporary file + @fclose($v_dest_file); + + // ----- Opening destination file + if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { + $p_entry['status'] = "write_error"; + return $v_result; + } + + // ----- Open the temporary gz file + if (($v_src_file = @gzopen($v_gzip_temp_name, 'rb')) == 0) { + @fclose($v_dest_file); + $p_entry['status'] = "read_error"; + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_gzip_temp_name.'\' in binary read mode'); + return PclZip::errorCode(); + } + + + // ----- Read the file by PCLZIP_READ_BLOCK_SIZE octets blocks + $v_size = $p_entry['size']; + while ($v_size != 0) { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($v_src_file, $v_read_size); + //$v_binary_data = pack('a'.$v_read_size, $v_buffer); + @fwrite($v_dest_file, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + @fclose($v_dest_file); + @gzclose($v_src_file); + + // ----- Delete the temporary file + @unlink($v_gzip_temp_name); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileInOutput() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileInOutput(&$p_entry, &$p_options) + { + $v_result=1; + + // ----- Read the file header + if (($v_result = $this->privReadFileHeader($v_header)) != 1) { + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + // ----- Trace + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + if ($p_entry['compressed_size'] == $p_entry['size']) { + + // ----- Read the file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Send the file to the output + echo $v_buffer; + unset($v_buffer); + } + else { + + // ----- Read the compressed file in a buffer (one shot) + $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + $v_file_content = gzinflate($v_buffer); + unset($v_buffer); + + // ----- Send the file to the output + echo $v_file_content; + unset($v_file_content); + } + } + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privExtractFileAsString() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privExtractFileAsString(&$p_entry, &$p_string, &$p_options) + { + $v_result=1; + + // ----- Read the file header + $v_header = array(); + if (($v_result = $this->privReadFileHeader($v_header)) != 1) + { + // ----- Return + return $v_result; + } + + + // ----- Check that the file header is coherent with $p_entry info + if ($this->privCheckFileHeaders($v_header, $p_entry) != 1) { + // TBC + } + + // ----- Look for pre-extract callback + if (isset($p_options[PCLZIP_CB_PRE_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_PRE_EXTRACT].'(PCLZIP_CB_PRE_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_PRE_EXTRACT](PCLZIP_CB_PRE_EXTRACT, $v_local_header); + if ($v_result == 0) { + // ----- Change the file status + $p_entry['status'] = "skipped"; + $v_result = 1; + } + + // ----- Look for abort result + if ($v_result == 2) { + // ----- This status is internal and will be changed in 'skipped' + $p_entry['status'] = "aborted"; + $v_result = PCLZIP_ERR_USER_ABORTED; + } + + // ----- Update the informations + // Only some fields can be modified + $p_entry['filename'] = $v_local_header['filename']; + } + + + // ----- Look if extraction should be done + if ($p_entry['status'] == 'ok') { + + // ----- Do the extraction (if not a folder) + if (!(($p_entry['external']&0x00000010)==0x00000010)) { + // ----- Look for not compressed file + // if ($p_entry['compressed_size'] == $p_entry['size']) + if ($p_entry['compression'] == 0) { + + // ----- Reading the file + $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); + } + else { + + // ----- Reading the file + $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); + + // ----- Decompress the file + if (($p_string = @gzinflate($v_data)) === FALSE) { + // TBC + } + } + + // ----- Trace + } + else { + // TBC : error : can not extract a folder in a string + } + + } + + // ----- Change abort status + if ($p_entry['status'] == "aborted") { + $p_entry['status'] = "skipped"; + } + + // ----- Look for post-extract callback + elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { + + // ----- Generate a local information + $v_local_header = array(); + $this->privConvertHeader2FileInfo($p_entry, $v_local_header); + + // ----- Swap the content to header + $v_local_header['content'] = $p_string; + $p_string = ''; + + // ----- Call the callback + // Here I do not use call_user_func() because I need to send a reference to the + // header. +// eval('$v_result = '.$p_options[PCLZIP_CB_POST_EXTRACT].'(PCLZIP_CB_POST_EXTRACT, $v_local_header);'); + $v_result = $p_options[PCLZIP_CB_POST_EXTRACT](PCLZIP_CB_POST_EXTRACT, $v_local_header); + + // ----- Swap back the content to header + $p_string = $v_local_header['content']; + unset($v_local_header['content']); + + // ----- Look for abort result + if ($v_result == 2) { + $v_result = PCLZIP_ERR_USER_ABORTED; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x04034b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 26); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 26) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $v_binary_data); + + // ----- Get filename + $p_header['filename'] = fread($this->zip_fd, $v_data['filename_len']); + + // ----- Get extra_fields + if ($v_data['extra_len'] != 0) { + $p_header['extra'] = fread($this->zip_fd, $v_data['extra_len']); + } + else { + $p_header['extra'] = ''; + } + + // ----- Extract properties + $p_header['version_extracted'] = $v_data['version']; + $p_header['compression'] = $v_data['compression']; + $p_header['size'] = $v_data['size']; + $p_header['compressed_size'] = $v_data['compressed_size']; + $p_header['crc'] = $v_data['crc']; + $p_header['flag'] = $v_data['flag']; + $p_header['filename_len'] = $v_data['filename_len']; + + // ----- Recuperate date in UNIX format + $p_header['mdate'] = $v_data['mdate']; + $p_header['mtime'] = $v_data['mtime']; + if ($p_header['mdate'] && $p_header['mtime']) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // TBC + //for(reset($v_data); $key = key($v_data); next($v_data)) { + //} + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set the status field + $p_header['status'] = "ok"; + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadCentralFileHeader() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadCentralFileHeader(&$p_header) + { + $v_result=1; + + // ----- Read the 4 bytes signature + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] != 0x02014b50) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Invalid archive structure'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the first 42 bytes of the header + $v_binary_data = fread($this->zip_fd, 42); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 42) + { + $p_header['filename'] = ""; + $p_header['status'] = "invalid_header"; + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid block size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $p_header = unpack('vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $v_binary_data); + + // ----- Get filename + if ($p_header['filename_len'] != 0) + $p_header['filename'] = fread($this->zip_fd, $p_header['filename_len']); + else + $p_header['filename'] = ''; + + // ----- Get extra + if ($p_header['extra_len'] != 0) + $p_header['extra'] = fread($this->zip_fd, $p_header['extra_len']); + else + $p_header['extra'] = ''; + + // ----- Get comment + if ($p_header['comment_len'] != 0) + $p_header['comment'] = fread($this->zip_fd, $p_header['comment_len']); + else + $p_header['comment'] = ''; + + // ----- Extract properties + + // ----- Recuperate date in UNIX format + //if ($p_header['mdate'] && $p_header['mtime']) + // TBC : bug : this was ignoring time with 0/0/0 + if (1) + { + // ----- Extract time + $v_hour = ($p_header['mtime'] & 0xF800) >> 11; + $v_minute = ($p_header['mtime'] & 0x07E0) >> 5; + $v_seconde = ($p_header['mtime'] & 0x001F)*2; + + // ----- Extract date + $v_year = (($p_header['mdate'] & 0xFE00) >> 9) + 1980; + $v_month = ($p_header['mdate'] & 0x01E0) >> 5; + $v_day = $p_header['mdate'] & 0x001F; + + // ----- Get UNIX date format + $p_header['mtime'] = @mktime($v_hour, $v_minute, $v_seconde, $v_month, $v_day, $v_year); + + } + else + { + $p_header['mtime'] = time(); + } + + // ----- Set the stored filename + $p_header['stored_filename'] = $p_header['filename']; + + // ----- Set default status to ok + $p_header['status'] = 'ok'; + + // ----- Look if it is a directory + if (substr($p_header['filename'], -1) == '/') { + //$p_header['external'] = 0x41FF0010; + $p_header['external'] = 0x00000010; + } + + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privCheckFileHeaders() + // Description : + // Parameters : + // Return Values : + // 1 on success, + // 0 on error; + // -------------------------------------------------------------------------------- + function privCheckFileHeaders(&$p_local_header, &$p_central_header) + { + $v_result=1; + + // ----- Check the static values + // TBC + if ($p_local_header['filename'] != $p_central_header['filename']) { + } + if ($p_local_header['version_extracted'] != $p_central_header['version_extracted']) { + } + if ($p_local_header['flag'] != $p_central_header['flag']) { + } + if ($p_local_header['compression'] != $p_central_header['compression']) { + } + if ($p_local_header['mtime'] != $p_central_header['mtime']) { + } + if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { + } + + // ----- Look for flag bit 3 + if (($p_local_header['flag'] & 8) == 8) { + $p_local_header['size'] = $p_central_header['size']; + $p_local_header['compressed_size'] = $p_central_header['compressed_size']; + $p_local_header['crc'] = $p_central_header['crc']; + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privReadEndCentralDir() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privReadEndCentralDir(&$p_central_dir) + { + $v_result=1; + + // ----- Go to the end of the zip file + $v_size = filesize($this->zipname); + @fseek($this->zip_fd, $v_size); + if (@ftell($this->zip_fd) != $v_size) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to go to the end of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- First try : look if this is an archive with no commentaries (most of the time) + // in this case the end of central dir is at 22 bytes of the file end + $v_found = 0; + if ($v_size > 26) { + @fseek($this->zip_fd, $v_size-22); + if (($v_pos = @ftell($this->zip_fd)) != ($v_size-22)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read for bytes + $v_binary_data = @fread($this->zip_fd, 4); + $v_data = @unpack('Vid', $v_binary_data); + + // ----- Check signature + if ($v_data['id'] == 0x06054b50) { + $v_found = 1; + } + + $v_pos = ftell($this->zip_fd); + } + + // ----- Go back to the maximum possible size of the Central Dir End Record + if (!$v_found) { + $v_maximum_size = 65557; // 0xFFFF + 22; + if ($v_maximum_size > $v_size) + $v_maximum_size = $v_size; + @fseek($this->zip_fd, $v_size-$v_maximum_size); + if (@ftell($this->zip_fd) != ($v_size-$v_maximum_size)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, 'Unable to seek back to the middle of the archive \''.$this->zipname.'\''); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read byte per byte in order to find the signature + $v_pos = ftell($this->zip_fd); + $v_bytes = 0x00000000; + while ($v_pos < $v_size) + { + // ----- Read a byte + $v_byte = @fread($this->zip_fd, 1); + + // ----- Add the byte + //$v_bytes = ($v_bytes << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + + // ----- Compare the bytes + if ($v_bytes == 0x504b0506) + { + $v_pos++; + break; + } + + $v_pos++; + } + + // ----- Look if not found end of central dir + if ($v_pos == $v_size) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Unable to find End of Central Dir Record signature"); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Read the first 18 bytes of the header + $v_binary_data = fread($this->zip_fd, 18); + + // ----- Look for invalid block size + if (strlen($v_binary_data) != 18) + { + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, "Invalid End of Central Dir Record size : ".strlen($v_binary_data)); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Extract the values + $v_data = unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', $v_binary_data); + + // ----- Check the global size + if (($v_pos + $v_data['comment_size'] + 18) != $v_size) { + + // ----- Removed in release 2.2 see readme file + // The check of the file size is a little too strict. + // Some bugs where found when a zip is encrypted/decrypted with 'crypt'. + // While decrypted, zip has training 0 bytes + if (0) { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_BAD_FORMAT, + 'The central dir is not at the end of the archive.' + .' Some trailing bytes exists after the archive.'); + + // ----- Return + return PclZip::errorCode(); + } + } + + // ----- Get comment + if ($v_data['comment_size'] != 0) { + $p_central_dir['comment'] = fread($this->zip_fd, $v_data['comment_size']); + } + else + $p_central_dir['comment'] = ''; + + $p_central_dir['entries'] = $v_data['entries']; + $p_central_dir['disk_entries'] = $v_data['disk_entries']; + $p_central_dir['offset'] = $v_data['offset']; + $p_central_dir['size'] = $v_data['size']; + $p_central_dir['disk'] = $v_data['disk']; + $p_central_dir['disk_start'] = $v_data['disk_start']; + + // TBC + //for(reset($p_central_dir); $key = key($p_central_dir); next($p_central_dir)) { + //} + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDeleteByRule() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDeleteByRule(&$p_result_list, &$p_options) + { + $v_result=1; + $v_list_detail = array(); + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Scan all the files + // ----- Start at beginning of Central Dir + $v_pos_entry = $v_central_dir['offset']; + @rewind($this->zip_fd); + if (@fseek($this->zip_fd, $v_pos_entry)) + { + // ----- Close the zip file + $this->privCloseFd(); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read each entry + $v_header_list = array(); + $j_start = 0; + for ($i=0, $v_nb_extracted=0; $i<$v_central_dir['entries']; $i++) + { + + // ----- Read the file header + $v_header_list[$v_nb_extracted] = array(); + if (($v_result = $this->privReadCentralFileHeader($v_header_list[$v_nb_extracted])) != 1) + { + // ----- Close the zip file + $this->privCloseFd(); + + return $v_result; + } + + + // ----- Store the index + $v_header_list[$v_nb_extracted]['index'] = $i; + + // ----- Look for the specific extract rules + $v_found = false; + + // ----- Look for extract by name rule + if ( (isset($p_options[PCLZIP_OPT_BY_NAME])) + && ($p_options[PCLZIP_OPT_BY_NAME] != 0)) { + + // ----- Look if the filename is in the list + for ($j=0; ($j strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) + && (substr($v_header_list[$v_nb_extracted]['stored_filename'], 0, strlen($p_options[PCLZIP_OPT_BY_NAME][$j])) == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + elseif ( (($v_header_list[$v_nb_extracted]['external']&0x00000010)==0x00000010) /* Indicates a folder */ + && ($v_header_list[$v_nb_extracted]['stored_filename'].'/' == $p_options[PCLZIP_OPT_BY_NAME][$j])) { + $v_found = true; + } + } + // ----- Look for a filename + elseif ($v_header_list[$v_nb_extracted]['stored_filename'] == $p_options[PCLZIP_OPT_BY_NAME][$j]) { + $v_found = true; + } + } + } + + // ----- Look for extract by ereg rule + // ereg() is deprecated with PHP 5.3 + /* + else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) + && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { + + if (ereg($p_options[PCLZIP_OPT_BY_EREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + */ + + // ----- Look for extract by preg rule + else if ( (isset($p_options[PCLZIP_OPT_BY_PREG])) + && ($p_options[PCLZIP_OPT_BY_PREG] != "")) { + + if (preg_match($p_options[PCLZIP_OPT_BY_PREG], $v_header_list[$v_nb_extracted]['stored_filename'])) { + $v_found = true; + } + } + + // ----- Look for extract by index rule + else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) + && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { + + // ----- Look if the index is in the list + for ($j=$j_start; ($j=$p_options[PCLZIP_OPT_BY_INDEX][$j]['start']) && ($i<=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end'])) { + $v_found = true; + } + if ($i>=$p_options[PCLZIP_OPT_BY_INDEX][$j]['end']) { + $j_start = $j+1; + } + + if ($p_options[PCLZIP_OPT_BY_INDEX][$j]['start']>$i) { + break; + } + } + } + else { + $v_found = true; + } + + // ----- Look for deletion + if ($v_found) + { + unset($v_header_list[$v_nb_extracted]); + } + else + { + $v_nb_extracted++; + } + } + + // ----- Look if something need to be deleted + if ($v_nb_extracted > 0) { + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Creates a temporary zip archive + $v_temp_zip = new PclZip($v_zip_temp_name); + + // ----- Open the temporary zip file in write mode + if (($v_result = $v_temp_zip->privOpenFd('wb')) != 1) { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Look which file need to be kept + for ($i=0; $izip_fd); + if (@fseek($this->zip_fd, $v_header_list[$i]['offset'])) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_INVALID_ARCHIVE_ZIP, 'Invalid archive size'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Read the file header + $v_local_header = array(); + if (($v_result = $this->privReadFileHeader($v_local_header)) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Check that local file header is same as central file header + if ($this->privCheckFileHeaders($v_local_header, + $v_header_list[$i]) != 1) { + // TBC + } + unset($v_local_header); + + // ----- Write the file header + if (($v_result = $v_temp_zip->privWriteFileHeader($v_header_list[$i])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Read/write the data block + if (($v_result = PclZipUtilCopyBlock($this->zip_fd, $v_temp_zip->zip_fd, $v_header_list[$i]['compressed_size'])) != 1) { + // ----- Close the zip file + $this->privCloseFd(); + $v_temp_zip->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_temp_zip->zip_fd); + + // ----- Re-Create the Central Dir files header + for ($i=0; $iprivWriteCentralFileHeader($v_header_list[$i])) != 1) { + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Transform the header to a 'usable' info + $v_temp_zip->privConvertHeader2FileInfo($v_header_list[$i], $p_result_list[$i]); + } + + + // ----- Zip file comment + $v_comment = ''; + if (isset($p_options[PCLZIP_OPT_COMMENT])) { + $v_comment = $p_options[PCLZIP_OPT_COMMENT]; + } + + // ----- Calculate the size of the central header + $v_size = @ftell($v_temp_zip->zip_fd)-$v_offset; + + // ----- Create the central dir footer + if (($v_result = $v_temp_zip->privWriteCentralHeader(sizeof($v_header_list), $v_size, $v_offset, $v_comment)) != 1) { + // ----- Reset the file list + unset($v_header_list); + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + @unlink($v_zip_temp_name); + + // ----- Return + return $v_result; + } + + // ----- Close + $v_temp_zip->privCloseFd(); + $this->privCloseFd(); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Destroy the temporary archive + unset($v_temp_zip); + } + + // ----- Remove every files : reset the file + else if ($v_central_dir['entries'] != 0) { + $this->privCloseFd(); + + if (($v_result = $this->privOpenFd('wb')) != 1) { + return $v_result; + } + + if (($v_result = $this->privWriteCentralHeader(0, 0, 0, '')) != 1) { + return $v_result; + } + + $this->privCloseFd(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDirCheck() + // Description : + // Check if a directory exists, if not it creates it and all the parents directory + // which may be useful. + // Parameters : + // $p_dir : Directory path to check. + // Return Values : + // 1 : OK + // -1 : Unable to create directory + // -------------------------------------------------------------------------------- + function privDirCheck($p_dir, $p_is_dir=false) + { + $v_result = 1; + + + // ----- Remove the final '/' + if (($p_is_dir) && (substr($p_dir, -1)=='/')) + { + $p_dir = substr($p_dir, 0, strlen($p_dir)-1); + } + + // ----- Check the directory availability + if ((is_dir($p_dir)) || ($p_dir == "")) + { + return 1; + } + + // ----- Extract parent directory + $p_parent_dir = dirname($p_dir); + + // ----- Just a check + if ($p_parent_dir != $p_dir) + { + // ----- Look for parent directory + if ($p_parent_dir != "") + { + if (($v_result = $this->privDirCheck($p_parent_dir)) != 1) + { + return $v_result; + } + } + } + + // ----- Create the directory + if (!@mkdir($p_dir, 0777)) + { + // ----- Error log + PclZip::privErrorLog(PCLZIP_ERR_DIR_CREATE_FAIL, "Unable to create directory '$p_dir'"); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privMerge() + // Description : + // If $p_archive_to_add does not exist, the function exit with a success result. + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privMerge(&$p_archive_to_add) + { + $v_result=1; + + // ----- Look if the archive_to_add exists + if (!is_file($p_archive_to_add->zipname)) + { + + // ----- Nothing to merge, so merge is a success + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Look if the archive exists + if (!is_file($this->zipname)) + { + + // ----- Do a duplicate + $v_result = $this->privDuplicate($p_archive_to_add->zipname); + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('rb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir = array(); + if (($v_result = $this->privReadEndCentralDir($v_central_dir)) != 1) + { + $this->privCloseFd(); + return $v_result; + } + + // ----- Go to beginning of File + @rewind($this->zip_fd); + + // ----- Open the archive_to_add file + if (($v_result=$p_archive_to_add->privOpenFd('rb')) != 1) + { + $this->privCloseFd(); + + // ----- Return + return $v_result; + } + + // ----- Read the central directory informations + $v_central_dir_to_add = array(); + if (($v_result = $p_archive_to_add->privReadEndCentralDir($v_central_dir_to_add)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + return $v_result; + } + + // ----- Go to beginning of File + @rewind($p_archive_to_add->zip_fd); + + // ----- Creates a temporay file + $v_zip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.tmp'; + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($v_zip_temp_name, 'wb')) == 0) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open temporary file \''.$v_zip_temp_name.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = $v_central_dir['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the files from the archive_to_add into the temporary file + $v_size = $v_central_dir_to_add['offset']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Store the offset of the central dir + $v_offset = @ftell($v_zip_temp_fd); + + // ----- Copy the block of file headers from the old archive + $v_size = $v_central_dir['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($this->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Copy the block of file headers from the archive_to_add + $v_size = $v_central_dir_to_add['size']; + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_archive_to_add->zip_fd, $v_read_size); + @fwrite($v_zip_temp_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Merge the file comments + $v_comment = $v_central_dir['comment'].' '.$v_central_dir_to_add['comment']; + + // ----- Calculate the size of the (new) central header + $v_size = @ftell($v_zip_temp_fd)-$v_offset; + + // ----- Swap the file descriptor + // Here is a trick : I swap the temporary fd with the zip fd, in order to use + // the following methods on the temporary fil and not the real archive fd + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Create the central dir footer + if (($v_result = $this->privWriteCentralHeader($v_central_dir['entries']+$v_central_dir_to_add['entries'], $v_size, $v_offset, $v_comment)) != 1) + { + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + @fclose($v_zip_temp_fd); + $this->zip_fd = null; + + // ----- Reset the file list + unset($v_header_list); + + // ----- Return + return $v_result; + } + + // ----- Swap back the file descriptor + $v_swap = $this->zip_fd; + $this->zip_fd = $v_zip_temp_fd; + $v_zip_temp_fd = $v_swap; + + // ----- Close + $this->privCloseFd(); + $p_archive_to_add->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Delete the zip file + // TBC : I should test the result ... + @unlink($this->zipname); + + // ----- Rename the temporary file + // TBC : I should test the result ... + //@rename($v_zip_temp_name, $this->zipname); + PclZipUtilRename($v_zip_temp_name, $this->zipname); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDuplicate() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDuplicate($p_archive_filename) + { + $v_result=1; + + // ----- Look if the $p_archive_filename exists + if (!is_file($p_archive_filename)) + { + + // ----- Nothing to duplicate, so duplicate is a success. + $v_result = 1; + + // ----- Return + return $v_result; + } + + // ----- Open the zip file + if (($v_result=$this->privOpenFd('wb')) != 1) + { + // ----- Return + return $v_result; + } + + // ----- Open the temporary file in write mode + if (($v_zip_temp_fd = @fopen($p_archive_filename, 'rb')) == 0) + { + $this->privCloseFd(); + + PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive file \''.$p_archive_filename.'\' in binary write mode'); + + // ----- Return + return PclZip::errorCode(); + } + + // ----- Copy the files from the archive to the temporary file + // TBC : Here I should better append the file and go back to erase the central dir + $v_size = filesize($p_archive_filename); + while ($v_size != 0) + { + $v_read_size = ($v_size < PCLZIP_READ_BLOCK_SIZE ? $v_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = fread($v_zip_temp_fd, $v_read_size); + @fwrite($this->zip_fd, $v_buffer, $v_read_size); + $v_size -= $v_read_size; + } + + // ----- Close + $this->privCloseFd(); + + // ----- Close the temporary file + @fclose($v_zip_temp_fd); + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorLog() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorLog($p_error_code=0, $p_error_string='') + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclError($p_error_code, $p_error_string); + } + else { + $this->error_code = $p_error_code; + $this->error_string = $p_error_string; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privErrorReset() + // Description : + // Parameters : + // -------------------------------------------------------------------------------- + function privErrorReset() + { + if (PCLZIP_ERROR_EXTERNAL == 1) { + PclErrorReset(); + } + else { + $this->error_code = 0; + $this->error_string = ''; + } + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privDisableMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privDisableMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if already done + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Get and memorize the magic_quote value + $this->magic_quotes_status = @get_magic_quotes_runtime(); + + // ----- Disable magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime(0); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : privSwapBackMagicQuotes() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function privSwapBackMagicQuotes() + { + $v_result=1; + + // ----- Look if function exists + if ( (!function_exists("get_magic_quotes_runtime")) + || (!function_exists("set_magic_quotes_runtime"))) { + return $v_result; + } + + // ----- Look if something to do + if ($this->magic_quotes_status != -1) { + return $v_result; + } + + // ----- Swap back magic_quotes + if ($this->magic_quotes_status == 1) { + @set_magic_quotes_runtime($this->magic_quotes_status); + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + } + // End of class + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathReduction() + // Description : + // Parameters : + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilPathReduction($p_dir) + { + $v_result = ""; + + // ----- Look for not empty path + if ($p_dir != "") { + // ----- Explode path by directory names + $v_list = explode("/", $p_dir); + + // ----- Study directories from last to first + $v_skip = 0; + for ($i=sizeof($v_list)-1; $i>=0; $i--) { + // ----- Look for current path + if ($v_list[$i] == ".") { + // ----- Ignore this directory + // Should be the first $i=0, but no check is done + } + else if ($v_list[$i] == "..") { + $v_skip++; + } + else if ($v_list[$i] == "") { + // ----- First '/' i.e. root slash + if ($i == 0) { + $v_result = "/".$v_result; + if ($v_skip > 0) { + // ----- It is an invalid path, so the path is not modified + // TBC + $v_result = $p_dir; + $v_skip = 0; + } + } + // ----- Last '/' i.e. indicates a directory + else if ($i == (sizeof($v_list)-1)) { + $v_result = $v_list[$i]; + } + // ----- Double '/' inside the path + else { + // ----- Ignore only the double '//' in path, + // but not the first and last '/' + } + } + else { + // ----- Look for item to skip + if ($v_skip > 0) { + $v_skip--; + } + else { + $v_result = $v_list[$i].($i!=(sizeof($v_list)-1)?"/".$v_result:""); + } + } + } + + // ----- Look for skip + if ($v_skip > 0) { + while ($v_skip > 0) { + $v_result = '../'.$v_result; + $v_skip--; + } + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilPathInclusion() + // Description : + // This function indicates if the path $p_path is under the $p_dir tree. Or, + // said in an other way, if the file or sub-dir $p_path is inside the dir + // $p_dir. + // The function indicates also if the path is exactly the same as the dir. + // This function supports path with duplicated '/' like '//', but does not + // support '.' or '..' statements. + // Parameters : + // Return Values : + // 0 if $p_path is not inside directory $p_dir + // 1 if $p_path is inside directory $p_dir + // 2 if $p_path is exactly the same as $p_dir + // -------------------------------------------------------------------------------- + function PclZipUtilPathInclusion($p_dir, $p_path) + { + $v_result = 1; + + // ----- Look for path beginning by ./ + if ( ($p_dir == '.') + || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { + $p_dir = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_dir, 1); + } + if ( ($p_path == '.') + || ((strlen($p_path) >=2) && (substr($p_path, 0, 2) == './'))) { + $p_path = PclZipUtilTranslateWinPath(getcwd(), FALSE).'/'.substr($p_path, 1); + } + + // ----- Explode dir and path by directory separator + $v_list_dir = explode("/", $p_dir); + $v_list_dir_size = sizeof($v_list_dir); + $v_list_path = explode("/", $p_path); + $v_list_path_size = sizeof($v_list_path); + + // ----- Study directories paths + $i = 0; + $j = 0; + while (($i < $v_list_dir_size) && ($j < $v_list_path_size) && ($v_result)) { + + // ----- Look for empty dir (path reduction) + if ($v_list_dir[$i] == '') { + $i++; + continue; + } + if ($v_list_path[$j] == '') { + $j++; + continue; + } + + // ----- Compare the items + if (($v_list_dir[$i] != $v_list_path[$j]) && ($v_list_dir[$i] != '') && ( $v_list_path[$j] != '')) { + $v_result = 0; + } + + // ----- Next items + $i++; + $j++; + } + + // ----- Look if everything seems to be the same + if ($v_result) { + // ----- Skip all the empty items + while (($j < $v_list_path_size) && ($v_list_path[$j] == '')) $j++; + while (($i < $v_list_dir_size) && ($v_list_dir[$i] == '')) $i++; + + if (($i >= $v_list_dir_size) && ($j >= $v_list_path_size)) { + // ----- There are exactly the same + $v_result = 2; + } + else if ($i < $v_list_dir_size) { + // ----- The path is shorter than the dir + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilCopyBlock() + // Description : + // Parameters : + // $p_mode : read/write compression mode + // 0 : src & dest normal + // 1 : src gzip, dest normal + // 2 : src normal, dest gzip + // 3 : src & dest gzip + // Return Values : + // -------------------------------------------------------------------------------- + function PclZipUtilCopyBlock($p_src, $p_dest, $p_size, $p_mode=0) + { + $v_result = 1; + + if ($p_mode==0) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==1) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @fwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==2) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @fread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + else if ($p_mode==3) + { + while ($p_size != 0) + { + $v_read_size = ($p_size < PCLZIP_READ_BLOCK_SIZE ? $p_size : PCLZIP_READ_BLOCK_SIZE); + $v_buffer = @gzread($p_src, $v_read_size); + @gzwrite($p_dest, $v_buffer, $v_read_size); + $p_size -= $v_read_size; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilRename() + // Description : + // This function tries to do a simple rename() function. If it fails, it + // tries to copy the $p_src file in a new $p_dest file and then unlink the + // first one. + // Parameters : + // $p_src : Old filename + // $p_dest : New filename + // Return Values : + // 1 on success, 0 on failure. + // -------------------------------------------------------------------------------- + function PclZipUtilRename($p_src, $p_dest) + { + $v_result = 1; + + // ----- Try to rename the files + if (!@rename($p_src, $p_dest)) { + + // ----- Try to copy & unlink the src + if (!@copy($p_src, $p_dest)) { + $v_result = 0; + } + else if (!@unlink($p_src)) { + $v_result = 0; + } + } + + // ----- Return + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilOptionText() + // Description : + // Translate option value in text. Mainly for debug purpose. + // Parameters : + // $p_option : the option value. + // Return Values : + // The option text value. + // -------------------------------------------------------------------------------- + function PclZipUtilOptionText($p_option) + { + + $v_list = get_defined_constants(); + for (reset($v_list); $v_key = key($v_list); next($v_list)) { + $v_prefix = substr($v_key, 0, 10); + if (( ($v_prefix == 'PCLZIP_OPT') + || ($v_prefix == 'PCLZIP_CB_') + || ($v_prefix == 'PCLZIP_ATT')) + && ($v_list[$v_key] == $p_option)) { + return $v_key; + } + } + + $v_result = 'Unknown'; + + return $v_result; + } + // -------------------------------------------------------------------------------- + + // -------------------------------------------------------------------------------- + // Function : PclZipUtilTranslateWinPath() + // Description : + // Translate windows path by replacing '\' by '/' and optionally removing + // drive letter. + // Parameters : + // $p_path : path to translate. + // $p_remove_disk_letter : true | false + // Return Values : + // The path translated. + // -------------------------------------------------------------------------------- + function PclZipUtilTranslateWinPath($p_path, $p_remove_disk_letter=true) + { + if (stristr(php_uname(), 'windows')) { + // ----- Look for potential disk letter + if (($p_remove_disk_letter) && (($v_position = strpos($p_path, ':')) != false)) { + $p_path = substr($p_path, $v_position+1); + } + // ----- Change potential windows directory separator + if ((strpos($p_path, '\\') > 0) || (substr($p_path, 0,1) == '\\')) { + $p_path = strtr($p_path, '\\', '/'); + } + } + return $p_path; + } + // -------------------------------------------------------------------------------- + + +?> diff --git a/sources/admin/include/photos_add_direct_prepare.inc.php b/sources/admin/include/photos_add_direct_prepare.inc.php new file mode 100644 index 0000000..117abb8 --- /dev/null +++ b/sources/admin/include/photos_add_direct_prepare.inc.php @@ -0,0 +1,296 @@ +assign( + array( + 'thumbnails' => $page['thumbnails'], + ) + ); + + // only display the batch link if we have more than 1 photo + if (count($page['thumbnails']) > 1) + { + $template->assign( + array( + 'batch_link' => $page['batch_link'], + 'batch_label' => sprintf( + l10n('Manage this set of %d photos'), + count($page['thumbnails']) + ), + ) + ); + } +} + +// +-----------------------------------------------------------------------+ +// | Photo selection | +// +-----------------------------------------------------------------------+ + +$uploadify_path = PHPWG_ROOT_PATH.'admin/include/uploadify'; + +$upload_max_filesize = min( + get_ini_size('upload_max_filesize'), + get_ini_size('post_max_size') + ); + +if ($upload_max_filesize == get_ini_size('upload_max_filesize')) +{ + $upload_max_filesize_shorthand = get_ini_size('upload_max_filesize', false); +} +else +{ + $upload_max_filesize_shorthand = get_ini_size('post_max_filesize', false); +} + +$template->assign( + array( + 'F_ADD_ACTION'=> PHOTOS_ADD_BASE_URL, + 'uploadify_path' => $uploadify_path, + 'upload_max_filesize' => $upload_max_filesize, + 'upload_max_filesize_shorthand' => $upload_max_filesize_shorthand, + ) + ); + +// what is the maximum number of pixels permitted by the memory_limit? +if (pwg_image::get_library() == 'gd') +{ + $fudge_factor = 1.7; + $available_memory = get_ini_size('memory_limit') - memory_get_usage(); + $max_upload_width = round(sqrt($available_memory/(2 * $fudge_factor))); + $max_upload_height = round(2 * $max_upload_width / 3); + + // we don't want dimensions like 2995x1992 but 3000x2000 + $max_upload_width = round($max_upload_width/100)*100; + $max_upload_height = round($max_upload_height/100)*100; + + $max_upload_resolution = floor($max_upload_width * $max_upload_height / (1000000)); + + // no need to display a limitation warning if the limitation is huge like 20MP + if ($max_upload_resolution < 25) + { + $template->assign( + array( + 'max_upload_width' => $max_upload_width, + 'max_upload_height' => $max_upload_height, + 'max_upload_resolution' => $max_upload_resolution, + ) + ); + } +} + +//warn the user if the picture will be resized after upload +if ($conf['original_resize']) +{ + $template->assign( + array( + 'original_resize_maxwidth' => $conf['original_resize_maxwidth'], + 'original_resize_maxheight' => $conf['original_resize_maxheight'], + ) + ); +} + + +$upload_modes = array('html', 'multiple'); +$upload_mode = isset($conf['upload_mode']) ? $conf['upload_mode'] : 'multiple'; + +if (isset($_GET['upload_mode']) and $upload_mode != $_GET['upload_mode'] and in_array($_GET['upload_mode'], $upload_modes)) +{ + $upload_mode = $_GET['upload_mode']; + conf_update_param('upload_mode', $upload_mode); +} + +// what is the upload switch mode +$index_of_upload_mode = array_flip($upload_modes); +$upload_mode_index = $index_of_upload_mode[$upload_mode]; +$upload_switch = $upload_modes[ ($upload_mode_index + 1) % 2 ]; + +$template->assign( + array( + 'upload_mode' => $upload_mode, + 'form_action' => PHOTOS_ADD_BASE_URL.'&upload_mode='.$upload_mode.'&processed=1', + 'switch_url' => PHOTOS_ADD_BASE_URL.'&upload_mode='.$upload_switch, + 'upload_id' => md5(rand()), + 'session_id' => session_id(), + 'pwg_token' => get_pwg_token(), + 'another_upload_link' => PHOTOS_ADD_BASE_URL.'&upload_mode='.$upload_mode, + ) + ); + +$upload_file_types = 'jpeg, png, gif'; + +if (pwg_image::get_library() == 'ext_imagick') +{ + $upload_file_types.= ', tiff'; + $template->assign('tif_enabled', true); +} + +if ('html' == $upload_mode) +{ + $upload_file_types.= ', zip'; +} +$template->assign( + array( + 'upload_file_types' => $upload_file_types, + ) + ); + +// +-----------------------------------------------------------------------+ +// | Categories | +// +-----------------------------------------------------------------------+ + +// we need to know the category in which the last photo was added +$selected_category = array(); + +if (isset($_GET['album'])) +{ + // set the category from get url or ... + check_input_parameter('album', $_GET, false, PATTERN_ID); + + // test if album really exists + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + WHERE id = '.$_GET['album'].' +;'; + $result = pwg_query($query); + if (pwg_db_num_rows($result) == 1) + { + $selected_category = array($_GET['album']); + + // lets put in the session to persist in case of upload method switch + $_SESSION['selected_category'] = $selected_category; + } + else + { + fatal_error('[Hacking attempt] the album id = "'.$_GET['album'].'" is not valid'); + } +} +else if (isset($_SESSION['selected_category'])) +{ + $selected_category = $_SESSION['selected_category']; +} +else +{ + // we need to know the category in which the last photo was added + $query = ' +SELECT category_id + FROM '.IMAGES_TABLE.' AS i + JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = i.id + JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id + ORDER BY i.id DESC + LIMIT 1 +; +'; + $result = pwg_query($query); + if (pwg_db_num_rows($result) > 0) + { + $row = pwg_db_fetch_assoc($result); + $selected_category = array($row['category_id']); + } +} + +// existing album +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' +;'; + +display_select_cat_wrapper( + $query, + $selected_category, + 'category_options' + ); + + +// image level options +$selected_level = isset($_POST['level']) ? $_POST['level'] : 0; +$template->assign( + array( + 'level_options'=> get_privacy_level_options(), + 'level_options_selected' => array($selected_level) + ) + ); + +// +-----------------------------------------------------------------------+ +// | Setup errors/warnings | +// +-----------------------------------------------------------------------+ + +// Errors +$setup_errors = array(); + +$error_message = ready_for_upload_message(); +if (!empty($error_message)) +{ + $setup_errors[] = $error_message; +} + +if (!function_exists('gd_info')) +{ + $setup_errors[] = l10n('GD library is missing'); +} + +$template->assign( + array( + 'setup_errors'=> $setup_errors, + ) + ); + +// Warnings +if (isset($_GET['hide_warnings'])) +{ + $_SESSION['upload_hide_warnings'] = true; +} + +if (!isset($_SESSION['upload_hide_warnings'])) +{ + $setup_warnings = array(); + + if ($conf['use_exif'] and !function_exists('read_exif_data')) + { + $setup_warnings[] = l10n('Exif extension not available, admin should disable exif use'); + } + + if (get_ini_size('upload_max_filesize') > get_ini_size('post_max_size')) + { + $setup_warnings[] = l10n( + 'In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting', + get_ini_size('upload_max_filesize', false), + get_ini_size('post_max_size', false) + ); + } + $template->assign( + array( + 'setup_warnings' => $setup_warnings, + 'hide_warnings_link' => PHOTOS_ADD_BASE_URL.'&upload_mode='.$upload_mode.'&hide_warnings=1' + ) + ); +} + +?> \ No newline at end of file diff --git a/sources/admin/include/photos_add_direct_process.inc.php b/sources/admin/include/photos_add_direct_process.inc.php new file mode 100644 index 0000000..e0a6cba --- /dev/null +++ b/sources/admin/include/photos_add_direct_process.inc.php @@ -0,0 +1,242 @@ +POST'."\n"; print_r($_POST); echo ''; +// echo '
FILES'."\n"; print_r($_FILES); echo '
'; +// echo '
SESSION'."\n"; print_r($_SESSION); echo '
'; +// exit(); + + // sometimes, you have submitted the form but you have nothing in $_POST + // and $_FILES. This may happen when you have an HTML upload and you + // exceeded the post_max_size (but not the upload_max_size) + if (!isset($_POST['submit_upload'])) + { + $page['errors'][] = l10n( + 'The uploaded files exceed the post_max_size directive in php.ini: %sB', + ini_get('post_max_size') + ); + } + else + { + $category_id = $_POST['category']; + } + + if (isset($_POST['onUploadError']) and is_array($_POST['onUploadError']) and count($_POST['onUploadError']) > 0) + { + foreach ($_POST['onUploadError'] as $error) + { + $page['errors'][] = $error; + } + } + + $image_ids = array(); + + if (isset($_FILES) and !empty($_FILES['image_upload'])) + { + $starttime = get_moment(); + + foreach ($_FILES['image_upload']['error'] as $idx => $error) + { + if (UPLOAD_ERR_OK == $error) + { + $images_to_add = array(); + + $extension = pathinfo($_FILES['image_upload']['name'][$idx], PATHINFO_EXTENSION); + if ('zip' == strtolower($extension)) + { + $upload_dir = $conf['upload_dir'].'/buffer'; + prepare_directory($upload_dir); + + $temporary_archive_name = date('YmdHis').'-'.generate_key(10); + $archive_path = $upload_dir.'/'.$temporary_archive_name.'.zip'; + + move_uploaded_file( + $_FILES['image_upload']['tmp_name'][$idx], + $archive_path + ); + + define('PCLZIP_TEMPORARY_DIR', $upload_dir.'/'); + include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php'); + $zip = new PclZip($archive_path); + if ($list = $zip->listContent()) + { + $indexes_to_extract = array(); + + foreach ($list as $node) + { + if (1 == $node['folder']) + { + continue; + } + + if (is_valid_image_extension(pathinfo($node['filename'], PATHINFO_EXTENSION))) + { + $indexes_to_extract[] = $node['index']; + + $images_to_add[] = array( + 'source_filepath' => $upload_dir.'/'.$temporary_archive_name.'/'.$node['filename'], + 'original_filename' => basename($node['filename']), + ); + } + } + + if (count($indexes_to_extract) > 0) + { + $zip->extract( + PCLZIP_OPT_PATH, $upload_dir.'/'.$temporary_archive_name, + PCLZIP_OPT_BY_INDEX, $indexes_to_extract, + PCLZIP_OPT_ADD_TEMP_FILE_ON + ); + } + } + } + elseif (is_valid_image_extension($extension)) + { + $images_to_add[] = array( + 'source_filepath' => $_FILES['image_upload']['tmp_name'][$idx], + 'original_filename' => $_FILES['image_upload']['name'][$idx], + ); + } + + foreach ($images_to_add as $image_to_add) + { + $image_id = add_uploaded_file( + $image_to_add['source_filepath'], + $image_to_add['original_filename'], + array($category_id), + $_POST['level'] + ); + + $image_ids[] = $image_id; + + // TODO: if $image_id is not an integer, something went wrong + } + } + else + { + $error_message = file_upload_error_message($error); + + $page['errors'][] = l10n( + 'Error on file "%s" : %s', + $_FILES['image_upload']['name'][$idx], + $error_message + ); + } + } + + $endtime = get_moment(); + $elapsed = ($endtime - $starttime) * 1000; + // printf('%.2f ms', $elapsed); + + } // if (!empty($_FILES)) + + if (isset($_POST['upload_id'])) + { + // we're on a multiple upload, with uploadify and so on + if (isset($_SESSION['uploads_error'][ $_POST['upload_id'] ])) + { + foreach ($_SESSION['uploads_error'][ $_POST['upload_id'] ] as $error) + { + $page['errors'][] = $error; + } + } + + if (isset($_SESSION['uploads'][ $_POST['upload_id'] ])) + { + $image_ids = $_SESSION['uploads'][ $_POST['upload_id'] ]; + } + } + + $page['thumbnails'] = array(); + foreach ($image_ids as $image_id) + { + // we could return the list of properties from the add_uploaded_file + // function, but I like the "double check". And it costs nothing + // compared to the upload process. + $thumbnail = array(); + + $query = ' +SELECT + id, + file, + path + FROM '.IMAGES_TABLE.' + WHERE id = '.$image_id.' +;'; + $image_infos = pwg_db_fetch_assoc(pwg_query($query)); + + $thumbnail['file'] = $image_infos['file']; + + $thumbnail['src'] = DerivativeImage::thumb_url($image_infos); + + // TODO: when implementing this plugin in Piwigo core, we should have + // a function get_image_name($name, $file) (if name is null, then + // compute a temporary name from filename) that would be also used in + // picture.php. UPDATE: in fact, "get_name_from_file($file)" already + // exists and is used twice (batch_manager_unit + comments, but not in + // picture.php I don't know why) with the same pattern if + // (empty($name)) {$name = get_name_from_file($file)}, a clean + // function get_image_name($name, $file) would be better + $thumbnail['title'] = get_name_from_file($image_infos['file']); + + $thumbnail['link'] = get_root_url().'admin.php?page=photo-'.$image_id.'&cat_id='.$category_id; + + $page['thumbnails'][] = $thumbnail; + } + + if (!empty($page['thumbnails'])) + { + $page['infos'][] = l10n('%d photos uploaded', count($page['thumbnails'])); + + if (0 != $_POST['level']) + { + $page['infos'][] = l10n( + 'Privacy level set to "%s"', + l10n(sprintf('Level %d', $_POST['level'])) + ); + } + + $query = ' +SELECT + COUNT(*) + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE category_id = '.$category_id.' +;'; + list($count) = pwg_db_fetch_row(pwg_query($query)); + $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=album-'); + + // information + $page['infos'][] = l10n( + 'Album "%s" now contains %d photos', + ''.$category_name.'', + $count + ); + + $page['batch_link'] = PHOTOS_ADD_BASE_URL.'&batch='.implode(',', $image_ids); + } +} + +?> \ No newline at end of file diff --git a/sources/admin/include/plugins.class.php b/sources/admin/include/plugins.class.php new file mode 100644 index 0000000..9862bcc --- /dev/null +++ b/sources/admin/include/plugins.class.php @@ -0,0 +1,671 @@ +plugin_id, $plugin_version, $errors); + } + } + function activate($plugin_version, &$errors=array()) + { + if (is_callable('plugin_activate')) + { + return plugin_activate($this->plugin_id, $plugin_version, $errors); + } + } + function deactivate() + { + if (is_callable('plugin_deactivate')) + { + return plugin_deactivate($this->plugin_id); + } + } + function uninstall() + { + if (is_callable('plugin_uninstall')) + { + return plugin_uninstall($this->plugin_id); + } + } +} + + +class plugins +{ + var $fs_plugins = array(); + var $db_plugins_by_id = array(); + var $server_plugins = array(); + var $default_plugins = array('LocalFilesEditor', 'language_switch', 'c13y_upgrade', 'admin_multi_view'); + + /** + * Initialize $fs_plugins and $db_plugins_by_id + */ + function plugins() + { + $this->get_fs_plugins(); + + foreach (get_db_plugins() as $db_plugin) + { + $this->db_plugins_by_id[$db_plugin['id']] = $db_plugin; + } + } + + /** + * Returns the maintain class of a plugin + * or build a new class with the procedural methods + * @param string $plugin_id + */ + private static function build_maintain_class($plugin_id) + { + $file_to_include = PHPWG_PLUGINS_PATH . $plugin_id . '/maintain.inc.php'; + $classname = $plugin_id.'_maintain'; + + if (file_exists($file_to_include)) + { + include_once($file_to_include); + + if (class_exists($classname)) + { + $plugin_maintain = new $classname($plugin_id); + } + else + { + $plugin_maintain = new DummyPlugin_maintain($plugin_id); + } + } + else + { + $plugin_maintain = new DummyPlugin_maintain($plugin_id); + } + + return $plugin_maintain; + } + + /** + * Perform requested actions + * @param string - action + * @param string - plugin id + * @param array - errors + */ + function perform_action($action, $plugin_id) + { + if (isset($this->db_plugins_by_id[$plugin_id])) + { + $crt_db_plugin = $this->db_plugins_by_id[$plugin_id]; + } + + $plugin_maintain = self::build_maintain_class($plugin_id); + + $errors = array(); + + switch ($action) + { + case 'install': + if (!empty($crt_db_plugin) or !isset($this->fs_plugins[$plugin_id])) + { + break; + } + + $plugin_maintain->install($this->fs_plugins[$plugin_id]['version'], $errors); + + if (empty($errors)) + { + $query = ' +INSERT INTO '. PLUGINS_TABLE .' (id,version) + VALUES (\''. $plugin_id .'\', \''. $this->fs_plugins[$plugin_id]['version'] .'\') +;'; + pwg_query($query); + } + break; + + case 'activate': + if (!isset($crt_db_plugin)) + { + $errors = $this->perform_action('install', $plugin_id); + list($crt_db_plugin) = get_db_plugins(null, $plugin_id); + load_conf_from_db(); + } + elseif ($crt_db_plugin['state'] == 'active') + { + break; + } + + if (empty($errors)) + { + $plugin_maintain->activate($crt_db_plugin['version'], $errors); + } + + if (empty($errors)) + { + $query = ' +UPDATE '. PLUGINS_TABLE .' + SET state=\'active\', + version=\''. $this->fs_plugins[$plugin_id]['version'] .'\' + WHERE id=\''. $plugin_id .'\' +;'; + pwg_query($query); + } + break; + + case 'deactivate': + if (!isset($crt_db_plugin) or $crt_db_plugin['state'] != 'active') + { + break; + } + + $query = ' +UPDATE '. PLUGINS_TABLE .' + SET state=\'inactive\' + WHERE id=\''. $plugin_id .'\' +;'; + pwg_query($query); + + $plugin_maintain->deactivate(); + break; + + case 'uninstall': + if (!isset($crt_db_plugin)) + { + break; + } + if ($crt_db_plugin['state'] == 'active') + { + $this->perform_action('deactivate', $plugin_id); + } + + $query = ' +DELETE FROM '. PLUGINS_TABLE .' + WHERE id=\''. $plugin_id .'\' +;'; + pwg_query($query); + + $plugin_maintain->uninstall(); + break; + + case 'restore': + $this->perform_action('uninstall', $plugin_id); + unset($this->db_plugins_by_id[$plugin_id]); + $errors = $this->perform_action('activate', $plugin_id); + break; + + case 'delete': + if (!empty($crt_db_plugin)) + { + $this->perform_action('uninstall', $plugin_id); + } + if (!isset($this->fs_plugins[$plugin_id])) + { + break; + } + + deltree(PHPWG_PLUGINS_PATH . $plugin_id, PHPWG_PLUGINS_PATH . 'trash'); + break; + } + + return $errors; + } + + /** + * Get plugins defined in the plugin directory + */ + function get_fs_plugins() + { + $dir = opendir(PHPWG_PLUGINS_PATH); + while ($file = readdir($dir)) + { + if ($file!='.' and $file!='..') + { + $path = PHPWG_PLUGINS_PATH.$file; + if (is_dir($path) and !is_link($path) + and preg_match('/^[a-zA-Z0-9-_]+$/', $file ) + and file_exists($path.'/main.inc.php') + ) + { + $plugin = array( + 'name'=>$file, + 'version'=>'0', + 'uri'=>'', + 'description'=>'', + 'author'=>'', + ); + $plg_data = implode( '', file($path.'/main.inc.php') ); + + if ( preg_match("|Plugin Name: (.*)|", $plg_data, $val) ) + { + $plugin['name'] = trim( $val[1] ); + } + if (preg_match("|Version: (.*)|", $plg_data, $val)) + { + $plugin['version'] = trim($val[1]); + } + if ( preg_match("|Plugin URI: (.*)|", $plg_data, $val) ) + { + $plugin['uri'] = trim($val[1]); + } + if ($desc = load_language('description.txt', $path.'/', array('return' => true))) + { + $plugin['description'] = trim($desc); + } + elseif ( preg_match("|Description: (.*)|", $plg_data, $val) ) + { + $plugin['description'] = trim($val[1]); + } + if ( preg_match("|Author: (.*)|", $plg_data, $val) ) + { + $plugin['author'] = trim($val[1]); + } + if ( preg_match("|Author URI: (.*)|", $plg_data, $val) ) + { + $plugin['author uri'] = trim($val[1]); + } + if (!empty($plugin['uri']) and strpos($plugin['uri'] , 'extension_view.php?eid=')) + { + list( , $extension) = explode('extension_view.php?eid=', $plugin['uri']); + if (is_numeric($extension)) $plugin['extension'] = $extension; + } + // IMPORTANT SECURITY ! + $plugin = array_map('htmlspecialchars', $plugin); + $this->fs_plugins[$file] = $plugin; + } + } + } + closedir($dir); + } + + /** + * Sort fs_plugins + */ + function sort_fs_plugins($order='name') + { + switch ($order) + { + case 'name': + uasort($this->fs_plugins, 'name_compare'); + break; + case 'status': + $this->sort_plugins_by_state(); + break; + case 'author': + uasort($this->fs_plugins, array($this, 'plugin_author_compare')); + break; + case 'id': + uksort($this->fs_plugins, 'strcasecmp'); + break; + } + } + + // Retrieve PEM versions + function get_versions_to_check($version=PHPWG_VERSION) + { + global $conf; + + $versions_to_check = array(); + $url = PEM_URL . '/api/get_version_list.php?category_id='. $conf['pem_plugins_category'] .'&format=php'; + if (fetchRemote($url, $result) and $pem_versions = @unserialize($result)) + { + if (!preg_match('/^\d+\.\d+\.\d+$/', $version)) + { + $version = $pem_versions[0]['name']; + } + $branch = get_branch_from_version($version); + foreach ($pem_versions as $pem_version) + { + if (strpos($pem_version['name'], $branch) === 0) + { + $versions_to_check[] = $pem_version['id']; + } + } + } + return $versions_to_check; + } + + /** + * Retrieve PEM server datas to $server_plugins + */ + function get_server_plugins($new=false) + { + global $user, $conf; + + $versions_to_check = $this->get_versions_to_check(); + if (empty($versions_to_check)) + { + return false; + } + + // Plugins to check + $plugins_to_check = array(); + foreach($this->fs_plugins as $fs_plugin) + { + if (isset($fs_plugin['extension'])) + { + $plugins_to_check[] = $fs_plugin['extension']; + } + } + + // Retrieve PEM plugins infos + $url = PEM_URL . '/api/get_revision_list.php'; + $get_data = array( + 'category_id' => $conf['pem_plugins_category'], + 'format' => 'php', + 'last_revision_only' => 'true', + 'version' => implode(',', $versions_to_check), + 'lang' => substr($user['language'], 0, 2), + 'get_nb_downloads' => 'true', + ); + + if (!empty($plugins_to_check)) + { + if ($new) + { + $get_data['extension_exclude'] = implode(',', $plugins_to_check); + } + else + { + $get_data['extension_include'] = implode(',', $plugins_to_check); + } + } + if (fetchRemote($url, $result, $get_data)) + { + $pem_plugins = @unserialize($result); + if (!is_array($pem_plugins)) + { + return false; + } + foreach ($pem_plugins as $plugin) + { + $this->server_plugins[$plugin['extension_id']] = $plugin; + } + return true; + } + return false; + } + + function get_incompatible_plugins($actualize=false) + { + if (isset($_SESSION['incompatible_plugins']) and !$actualize + and $_SESSION['incompatible_plugins']['~~expire~~'] > time()) + { + return $_SESSION['incompatible_plugins']; + } + + $_SESSION['incompatible_plugins'] = array('~~expire~~' => time() + 300); + + $versions_to_check = $this->get_versions_to_check(); + if (empty($versions_to_check)) + { + return false; + } + + global $conf; + + // Plugins to check + $plugins_to_check = array(); + foreach($this->fs_plugins as $fs_plugin) + { + if (isset($fs_plugin['extension'])) + { + $plugins_to_check[] = $fs_plugin['extension']; + } + } + + // Retrieve PEM plugins infos + $url = PEM_URL . '/api/get_revision_list.php'; + $get_data = array( + 'category_id' => $conf['pem_plugins_category'], + 'format' => 'php', + 'version' => implode(',', $versions_to_check), + 'extension_include' => implode(',', $plugins_to_check), + ); + + if (fetchRemote($url, $result, $get_data)) + { + $pem_plugins = @unserialize($result); + if (!is_array($pem_plugins)) + { + return false; + } + + $server_plugins = array(); + foreach ($pem_plugins as $plugin) + { + if (!isset($server_plugins[$plugin['extension_id']])) + { + $server_plugins[$plugin['extension_id']] = array(); + } + $server_plugins[$plugin['extension_id']][] = $plugin['revision_name']; + } + + foreach ($this->fs_plugins as $plugin_id => $fs_plugin) + { + if (isset($fs_plugin['extension']) + and !in_array($plugin_id, $this->default_plugins) + and $fs_plugin['version'] != 'auto' + and (!isset($server_plugins[$fs_plugin['extension']]) or !in_array($fs_plugin['version'], $server_plugins[$fs_plugin['extension']]))) + { + $_SESSION['incompatible_plugins'][$plugin_id] = $fs_plugin['version']; + } + } + return $_SESSION['incompatible_plugins']; + } + return false; + } + + /** + * Sort $server_plugins + */ + function sort_server_plugins($order='date') + { + switch ($order) + { + case 'date': + krsort($this->server_plugins); + break; + case 'revision': + usort($this->server_plugins, array($this, 'extension_revision_compare')); + break; + case 'name': + uasort($this->server_plugins, array($this, 'extension_name_compare')); + break; + case 'author': + uasort($this->server_plugins, array($this, 'extension_author_compare')); + break; + case 'downloads': + usort($this->server_plugins, array($this, 'extension_downloads_compare')); + break; + } + } + + /** + * Extract plugin files from archive + * @param string - install or upgrade + * @param string - archive URL + * @param string - plugin id or extension id + */ + function extract_plugin_files($action, $revision, $dest) + { + if ($archive = tempnam( PHPWG_PLUGINS_PATH, 'zip')) + { + $url = PEM_URL . '/download.php'; + $get_data = array( + 'rid' => $revision, + 'origin' => 'piwigo_'.$action, + ); + + if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data)) + { + fclose($handle); + include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php'); + $zip = new PclZip($archive); + if ($list = $zip->listContent()) + { + foreach ($list as $file) + { + // we search main.inc.php in archive + if (basename($file['filename']) == 'main.inc.php' + and (!isset($main_filepath) + or strlen($file['filename']) < strlen($main_filepath))) + { + $main_filepath = $file['filename']; + } + } + if (isset($main_filepath)) + { + $root = dirname($main_filepath); // main.inc.php path in archive + if ($action == 'upgrade') + { + $extract_path = PHPWG_PLUGINS_PATH . $dest; + } + else + { + $extract_path = PHPWG_PLUGINS_PATH + . ($root == '.' ? 'extension_' . $dest : basename($root)); + } + if($result = $zip->extract(PCLZIP_OPT_PATH, $extract_path, + PCLZIP_OPT_REMOVE_PATH, $root, + PCLZIP_OPT_REPLACE_NEWER)) + { + foreach ($result as $file) + { + if ($file['stored_filename'] == $main_filepath) + { + $status = $file['status']; + break; + } + } + if (file_exists($extract_path.'/obsolete.list') + and $old_files = file($extract_path.'/obsolete.list', FILE_IGNORE_NEW_LINES) + and !empty($old_files)) + { + $old_files[] = 'obsolete.list'; + foreach($old_files as $old_file) + { + $path = $extract_path.'/'.$old_file; + if (is_file($path)) + { + @unlink($path); + } + elseif (is_dir($path)) + { + deltree($path, PHPWG_PLUGINS_PATH . 'trash'); + } + } + } + } + else $status = 'extract_error'; + } + else $status = 'archive_error'; + } + else $status = 'archive_error'; + } + else $status = 'dl_archive_error'; + } + else $status = 'temp_path_error'; + + @unlink($archive); + return $status; + } + + function get_merged_extensions($version=PHPWG_VERSION) + { + $file = PHPWG_ROOT_PATH.'install/obsolete_extensions.list'; + $merged_extensions = array(); + + if (file_exists($file) and $obsolete_ext = file($file, FILE_IGNORE_NEW_LINES) and !empty($obsolete_ext)) + { + foreach ($obsolete_ext as $ext) + { + if (preg_match('/^(\d+) ?: ?(.*?)$/', $ext, $matches)) + { + $merged_extensions[$matches[1]] = $matches[2]; + } + } + } + return $merged_extensions; + } + + /** + * Sort functions + */ + function extension_revision_compare($a, $b) + { + if ($a['revision_date'] < $b['revision_date']) return 1; + else return -1; + } + + function extension_name_compare($a, $b) + { + return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name'])); + } + + function extension_author_compare($a, $b) + { + $r = strcasecmp($a['author_name'], $b['author_name']); + if ($r == 0) return $this->extension_name_compare($a, $b); + else return $r; + } + + function plugin_author_compare($a, $b) + { + $r = strcasecmp($a['author'], $b['author']); + if ($r == 0) return name_compare($a, $b); + else return $r; + } + + function extension_downloads_compare($a, $b) + { + if ($a['extension_nb_downloads'] < $b['extension_nb_downloads']) return 1; + else return -1; + } + + function sort_plugins_by_state() + { + uasort($this->fs_plugins, 'name_compare'); + + $active_plugins = array(); + $inactive_plugins = array(); + $not_installed = array(); + + foreach($this->fs_plugins as $plugin_id => $plugin) + { + if (isset($this->db_plugins_by_id[$plugin_id])) + { + $this->db_plugins_by_id[$plugin_id]['state'] == 'active' ? + $active_plugins[$plugin_id] = $plugin : $inactive_plugins[$plugin_id] = $plugin; + } + else + { + $not_installed[$plugin_id] = $plugin; + } + } + $this->fs_plugins = $active_plugins + $inactive_plugins + $not_installed; + } +} +?> \ No newline at end of file diff --git a/sources/admin/include/tabsheet.class.php b/sources/admin/include/tabsheet.class.php new file mode 100644 index 0000000..9dc441a --- /dev/null +++ b/sources/admin/include/tabsheet.class.php @@ -0,0 +1,159 @@ +sheets = array(); + $this->uniqid = null; + $this->name = $name; + $this->titlename = $titlename; + $this->selected = ""; + } + + function set_id($id) + { + $this->uniqid = $id; + } + + /* + add a tab + */ + function add($name, $caption, $url, $selected = false) + { + if (!isset($this->sheets[$name])) + { + $this->sheets[$name] = array('caption' => $caption, + 'url' => $url); + if($selected) + { + $this->selected=$name; + } + return true; + } + return false; + } + + /* + remove a tab + */ + function delete($name) + { + if (isset($this->sheets[$name])) + { + array_splice($this->sheets, $name, 1); + + if ($this->selected == $name) + { + $this->selected = ""; + } + return true; + } + return false; + } + + /* + select a tab to be active + */ + function select($name) + { + $this->sheets = trigger_event('tabsheet_before_select', $this->sheets, $this->uniqid); + if (!array_key_exists($name, $this->sheets)) + { + $keys = array_keys($this->sheets); + $name = $keys[0]; + } + $this->selected = $name; + } + + /* + set $titlename value + */ + function set_titlename($titlename) + { + $this->titlename = $titlename; + return $this->titlename; + } + + /* + returns $titlename value + */ + function get_titlename() + { + return $this->titlename; + } + + /* + returns properties of selected tab + */ + function get_selected() + { + if (!empty($this->selected)) + { + return $this->sheets[$this->selected]; + } + else + { + return null; + } + } + + /* + * Build TabSheet and assign this content to current page + * + * Fill $this->$name {default value = TABSHEET} with HTML code for tabsheet + * Fill $this->titlename {default value = TABSHEET_TITLE} with formated caption of the selected tab + */ + function assign() + { + global $template; + + $template->set_filename('tabsheet', 'tabsheet.tpl'); + $template->assign('tabsheet', $this->sheets); + $template->assign('tabsheet_selected', $this->selected); + + $selected_tab = $this->get_selected(); + + if (isset($selected_tab)) + { + $template->assign( + array($this->titlename => '['.$selected_tab['caption'].']')); + } + + $template->assign_var_from_handle($this->name, 'tabsheet'); + $template->clear_assign('tabsheet'); + } +} + +?> diff --git a/sources/admin/include/themes.class.php b/sources/admin/include/themes.class.php new file mode 100644 index 0000000..824ccf4 --- /dev/null +++ b/sources/admin/include/themes.class.php @@ -0,0 +1,747 @@ +theme_id, $theme_version, $errors); + } + } + function deactivate() + { + if (is_callable('theme_deactivate')) + { + return theme_deactivate($this->theme_id); + } + } + function delete() + { + if (is_callable('theme_delete')) + { + return theme_delete($this->theme_id); + } + } +} + + +class themes +{ + var $fs_themes = array(); + var $db_themes_by_id = array(); + var $server_themes = array(); + + /** + * Initialize $fs_themes and $db_themes_by_id + */ + function themes() + { + $this->get_fs_themes(); + + foreach ($this->get_db_themes() as $db_theme) + { + $this->db_themes_by_id[$db_theme['id']] = $db_theme; + } + } + + /** + * Returns the maintain class of a theme + * or build a new class with the procedural methods + * @param string $theme_id + */ + private static function build_maintain_class($theme_id) + { + $file_to_include = PHPWG_THEMES_PATH.'/'.$theme_id.'/admin/maintain.inc.php'; + $classname = $theme_id.'_maintain'; + + if (file_exists($file_to_include)) + { + include_once($file_to_include); + + if (class_exists($classname)) + { + $theme_maintain = new $classname($theme_id); + } + else + { + $theme_maintain = new DummyTheme_maintain($theme_id); + } + } + else + { + $theme_maintain = new DummyTheme_maintain($theme_id); + } + + return $theme_maintain; + } + + /** + * Perform requested actions + * @param string - action + * @param string - theme id + * @param array - errors + */ + function perform_action($action, $theme_id) + { + global $conf; + + if (isset($this->db_themes_by_id[$theme_id])) + { + $crt_db_theme = $this->db_themes_by_id[$theme_id]; + } + + $theme_maintain = self::build_maintain_class($theme_id); + + $errors = array(); + + switch ($action) + { + case 'activate': + if (isset($crt_db_theme)) + { + // the theme is already active + break; + } + + if ('default' == $theme_id) + { + // you can't activate the "default" theme + break; + } + + $missing_parent = $this->missing_parent_theme($theme_id); + if (isset($missing_parent)) + { + $errors[] = l10n( + 'Impossible to activate this theme, the parent theme is missing: %s', + $missing_parent + ); + + break; + } + + if ($this->fs_themes[$theme_id]['mobile'] + and !empty($conf['mobile_theme']) + and $conf['mobile_theme'] != $theme_id) + { + $errors[] = l10n('You can activate only one mobile theme.'); + break; + } + + $theme_maintain->activate($this->fs_themes[$theme_id]['version'], $errors); + + if (empty($errors)) + { + $query = ' +INSERT INTO '.THEMES_TABLE.' + (id, version, name) + VALUES(\''.$theme_id.'\', + \''.$this->fs_themes[$theme_id]['version'].'\', + \''.$this->fs_themes[$theme_id]['name'].'\') +;'; + pwg_query($query); + + if ($this->fs_themes[$theme_id]['mobile']) + { + conf_update_param('mobile_theme', $theme_id); + } + } + break; + + case 'deactivate': + if (!isset($crt_db_theme)) + { + // the theme is already inactive + break; + } + + // you can't deactivate the last theme + if (count($this->db_themes_by_id) <= 1) + { + $errors[] = l10n('Impossible to deactivate this theme, you need at least one theme.'); + break; + } + + if ($theme_id == get_default_theme()) + { + // find a random theme to replace + $new_theme = null; + + $query = ' +SELECT id + FROM '.THEMES_TABLE.' + WHERE id != \''.$theme_id.'\' +;'; + $result = pwg_query($query); + if (pwg_db_num_rows($result) == 0) + { + $new_theme = 'default'; + } + else + { + list($new_theme) = pwg_db_fetch_row($result); + } + + $this->set_default_theme($new_theme); + } + + $theme_maintain->deactivate(); + + $query = ' +DELETE + FROM '.THEMES_TABLE.' + WHERE id= \''.$theme_id.'\' +;'; + pwg_query($query); + + if ($this->fs_themes[$theme_id]['mobile']) + { + conf_update_param('mobile_theme', ''); + } + break; + + case 'delete': + if (!empty($crt_db_theme)) + { + $errors[] = 'CANNOT DELETE - THEME IS INSTALLED'; + break; + } + if (!isset($this->fs_themes[$theme_id])) + { + // nothing to do here + break; + } + + $children = $this->get_children_themes($theme_id); + if (count($children) > 0) + { + $errors[] = l10n( + 'Impossible to delete this theme. Other themes depends on it: %s', + implode(', ', $children) + ); + break; + } + + $theme_maintain->delete(); + + deltree(PHPWG_THEMES_PATH.$theme_id, PHPWG_THEMES_PATH . 'trash'); + break; + + case 'set_default': + // first we need to know which users are using the current default theme + $this->set_default_theme($theme_id); + break; + } + return $errors; + } + + function missing_parent_theme($theme_id) + { + if (!isset($this->fs_themes[$theme_id]['parent'])) + { + return null; + } + + $parent = $this->fs_themes[$theme_id]['parent']; + + if ('default' == $parent) + { + return null; + } + + if (!isset($this->fs_themes[$parent])) + { + return $parent; + } + + return $this->missing_parent_theme($parent); + } + + function get_children_themes($theme_id) + { + $children = array(); + + foreach ($this->fs_themes as $test_child) + { + if (isset($test_child['parent']) and $test_child['parent'] == $theme_id) + { + $children[] = $test_child['name']; + } + } + + return $children; + } + + function set_default_theme($theme_id) + { + global $conf; + + // first we need to know which users are using the current default theme + $default_theme = get_default_theme(); + + $query = ' +SELECT + user_id + FROM '.USER_INFOS_TABLE.' + WHERE theme = \''.$default_theme.'\' +;'; + $user_ids = array_unique( + array_merge( + array_from_query($query, 'user_id'), + array($conf['guest_id'], $conf['default_user_id']) + ) + ); + + // $user_ids can't be empty, at least the default user has the default + // theme + + $query = ' +UPDATE '.USER_INFOS_TABLE.' + SET theme = \''.$theme_id.'\' + WHERE user_id IN ('.implode(',', $user_ids).') +;'; + pwg_query($query); + } + + function get_db_themes($id='') + { + $query = ' +SELECT + * + FROM '.THEMES_TABLE; + + $clauses = array(); + if (!empty($id)) + { + $clauses[] = 'id = \''.$id.'\''; + } + if (count($clauses) > 0) + { + $query .= ' + WHERE '. implode(' AND ', $clauses); + } + + $result = pwg_query($query); + $themes = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $themes[] = $row; + } + return $themes; + } + + + /** + * Get themes defined in the theme directory + */ + function get_fs_themes() + { + $dir = opendir(PHPWG_THEMES_PATH); + + while ($file = readdir($dir)) + { + if ($file!='.' and $file!='..') + { + $path = PHPWG_THEMES_PATH.$file; + if (is_dir($path) + and preg_match('/^[a-zA-Z0-9-_]+$/', $file) + and file_exists($path.'/themeconf.inc.php') + ) + { + $theme = array( + 'id' => $file, + 'name' => $file, + 'version' => '0', + 'uri' => '', + 'description' => '', + 'author' => '', + 'mobile' => false, + ); + $theme_data = implode( '', file($path.'/themeconf.inc.php') ); + + if ( preg_match("|Theme Name: (.*)|", $theme_data, $val) ) + { + $theme['name'] = trim( $val[1] ); + } + if (preg_match("|Version: (.*)|", $theme_data, $val)) + { + $theme['version'] = trim($val[1]); + } + if ( preg_match("|Theme URI: (.*)|", $theme_data, $val) ) + { + $theme['uri'] = trim($val[1]); + } + if ($desc = load_language('description.txt', $path.'/', array('return' => true))) + { + $theme['description'] = trim($desc); + } + elseif ( preg_match("|Description: (.*)|", $theme_data, $val) ) + { + $theme['description'] = trim($val[1]); + } + if ( preg_match("|Author: (.*)|", $theme_data, $val) ) + { + $theme['author'] = trim($val[1]); + } + if ( preg_match("|Author URI: (.*)|", $theme_data, $val) ) + { + $theme['author uri'] = trim($val[1]); + } + if (!empty($theme['uri']) and strpos($theme['uri'] , 'extension_view.php?eid=')) + { + list( , $extension) = explode('extension_view.php?eid=', $theme['uri']); + if (is_numeric($extension)) $theme['extension'] = $extension; + } + if (preg_match('/["\']parent["\'][^"\']+["\']([^"\']+)["\']/', $theme_data, $val)) + { + $theme['parent'] = $val[1]; + } + if (preg_match('/["\']activable["\'].*?(true|false)/i', $theme_data, $val)) + { + $theme['activable'] = get_boolean($val[1]); + } + if (preg_match('/["\']mobile["\'].*?(true|false)/i', $theme_data, $val)) + { + $theme['mobile'] = get_boolean($val[1]); + } + + // screenshot + $screenshot_path = $path.'/screenshot.png'; + if (file_exists($screenshot_path)) + { + $theme['screenshot'] = $screenshot_path; + } + else + { + global $conf; + $theme['screenshot'] = + PHPWG_ROOT_PATH.'admin/themes/' + .$conf['admin_theme'] + .'/images/missing_screenshot.png' + ; + } + + $admin_file = $path.'/admin/admin.inc.php'; + if (file_exists($admin_file)) + { + $theme['admin_uri'] = get_root_url().'admin.php?page=theme&theme='.$file; + } + + // IMPORTANT SECURITY ! + $theme = array_map('htmlspecialchars', $theme); + $this->fs_themes[$file] = $theme; + } + } + } + closedir($dir); + } + + /** + * Sort fs_themes + */ + function sort_fs_themes($order='name') + { + switch ($order) + { + case 'name': + uasort($this->fs_themes, 'name_compare'); + break; + case 'status': + $this->sort_themes_by_state(); + break; + case 'author': + uasort($this->fs_themes, array($this, 'theme_author_compare')); + break; + case 'id': + uksort($this->fs_themes, 'strcasecmp'); + break; + } + } + + /** + * Retrieve PEM server datas to $server_themes + */ + function get_server_themes($new=false) + { + global $user, $conf; + + $get_data = array( + 'category_id' => $conf['pem_themes_category'], + 'format' => 'php', + ); + + // Retrieve PEM versions + $version = PHPWG_VERSION; + $versions_to_check = array(); + $url = PEM_URL . '/api/get_version_list.php'; + if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result)) + { + if (!preg_match('/^\d+\.\d+\.\d+$/', $version)) + { + $version = $pem_versions[0]['name']; + } + $branch = get_branch_from_version($version); + foreach ($pem_versions as $pem_version) + { + if (strpos($pem_version['name'], $branch) === 0) + { + $versions_to_check[] = $pem_version['id']; + } + } + } + if (empty($versions_to_check)) + { + return false; + } + + // Themes to check + $themes_to_check = array(); + foreach($this->fs_themes as $fs_theme) + { + if (isset($fs_theme['extension'])) + { + $themes_to_check[] = $fs_theme['extension']; + } + } + + // Retrieve PEM themes infos + $url = PEM_URL . '/api/get_revision_list.php'; + $get_data = array_merge($get_data, array( + 'last_revision_only' => 'true', + 'version' => implode(',', $versions_to_check), + 'lang' => substr($user['language'], 0, 2), + 'get_nb_downloads' => 'true', + ) + ); + + if (!empty($themes_to_check)) + { + if ($new) + { + $get_data['extension_exclude'] = implode(',', $themes_to_check); + } + else + { + $get_data['extension_include'] = implode(',', $themes_to_check); + } + } + if (fetchRemote($url, $result, $get_data)) + { + $pem_themes = @unserialize($result); + if (!is_array($pem_themes)) + { + return false; + } + foreach ($pem_themes as $theme) + { + $this->server_themes[$theme['extension_id']] = $theme; + } + return true; + } + return false; + } + + /** + * Sort $server_themes + */ + function sort_server_themes($order='date') + { + switch ($order) + { + case 'date': + krsort($this->server_themes); + break; + case 'revision': + usort($this->server_themes, array($this, 'extension_revision_compare')); + break; + case 'name': + uasort($this->server_themes, array($this, 'extension_name_compare')); + break; + case 'author': + uasort($this->server_themes, array($this, 'extension_author_compare')); + break; + case 'downloads': + usort($this->server_themes, array($this, 'extension_downloads_compare')); + break; + } + } + + /** + * Extract theme files from archive + * + * @param string - install or upgrade + * @param string - remote revision identifier (numeric) + * @param string - theme id or extension id + */ + function extract_theme_files($action, $revision, $dest) + { + if ($archive = tempnam( PHPWG_THEMES_PATH, 'zip')) + { + $url = PEM_URL . '/download.php'; + $get_data = array( + 'rid' => $revision, + 'origin' => 'piwigo_'.$action, + ); + + if ($handle = @fopen($archive, 'wb') and fetchRemote($url, $handle, $get_data)) + { + fclose($handle); + include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php'); + $zip = new PclZip($archive); + if ($list = $zip->listContent()) + { + foreach ($list as $file) + { + // we search main.inc.php in archive + if (basename($file['filename']) == 'themeconf.inc.php' + and (!isset($main_filepath) + or strlen($file['filename']) < strlen($main_filepath))) + { + $main_filepath = $file['filename']; + } + } + if (isset($main_filepath)) + { + $root = dirname($main_filepath); // main.inc.php path in archive + if ($action == 'upgrade') + { + $extract_path = PHPWG_THEMES_PATH . $dest; + } + else + { + $extract_path = PHPWG_THEMES_PATH . ($root == '.' ? 'extension_' . $dest : basename($root)); + } + if ( + $result = $zip->extract( + PCLZIP_OPT_PATH, $extract_path, + PCLZIP_OPT_REMOVE_PATH, $root, + PCLZIP_OPT_REPLACE_NEWER + ) + ) + { + foreach ($result as $file) + { + if ($file['stored_filename'] == $main_filepath) + { + $status = $file['status']; + break; + } + } + if (file_exists($extract_path.'/obsolete.list') + and $old_files = file($extract_path.'/obsolete.list', FILE_IGNORE_NEW_LINES) + and !empty($old_files)) + { + $old_files[] = 'obsolete.list'; + foreach($old_files as $old_file) + { + $path = $extract_path.'/'.$old_file; + if (is_file($path)) + { + @unlink($path); + } + elseif (is_dir($path)) + { + deltree($path, PHPWG_THEMES_PATH . 'trash'); + } + } + } + } + else $status = 'extract_error'; + } + else $status = 'archive_error'; + } + else $status = 'archive_error'; + } + else $status = 'dl_archive_error'; + } + else $status = 'temp_path_error'; + + @unlink($archive); + return $status; + } + + /** + * Sort functions + */ + function extension_revision_compare($a, $b) + { + if ($a['revision_date'] < $b['revision_date']) return 1; + else return -1; + } + + function extension_name_compare($a, $b) + { + return strcmp(strtolower($a['extension_name']), strtolower($b['extension_name'])); + } + + function extension_author_compare($a, $b) + { + $r = strcasecmp($a['author_name'], $b['author_name']); + if ($r == 0) return $this->extension_name_compare($a, $b); + else return $r; + } + + function theme_author_compare($a, $b) + { + $r = strcasecmp($a['author'], $b['author']); + if ($r == 0) return name_compare($a, $b); + else return $r; + } + + function extension_downloads_compare($a, $b) + { + if ($a['extension_nb_downloads'] < $b['extension_nb_downloads']) return 1; + else return -1; + } + + function sort_themes_by_state() + { + uasort($this->fs_themes, 'name_compare'); + + $active_themes = array(); + $inactive_themes = array(); + $not_installed = array(); + + foreach($this->fs_themes as $theme_id => $theme) + { + if (isset($this->db_themes_by_id[$theme_id])) + { + $this->db_themes_by_id[$theme_id]['state'] == 'active' ? + $active_themes[$theme_id] = $theme : $inactive_themes[$theme_id] = $theme; + } + else + { + $not_installed[$theme_id] = $theme; + } + } + $this->fs_themes = $active_themes + $inactive_themes + $not_installed; + } + +} +?> \ No newline at end of file diff --git a/sources/admin/include/updates.class.php b/sources/admin/include/updates.class.php new file mode 100644 index 0000000..12f5c22 --- /dev/null +++ b/sources/admin/include/updates.class.php @@ -0,0 +1,464 @@ +types = array('plugins', 'themes', 'languages'); + + if (in_array($page, $this->types)) + { + $this->types = array($page); + } + $this->default_themes = array('clear', 'dark', 'Sylvia', 'elegant'); + $this->default_plugins = array('admin_multi_view', 'c13y_upgrade', 'language_switch', 'LocalFilesEditor'); + + foreach ($this->types as $type) + { + include_once(PHPWG_ROOT_PATH.'admin/include/'.$type.'.class.php'); + $this->$type = new $type(); + } + } + + static function check_piwigo_upgrade() + { + $_SESSION['need_update'] = null; + + if (preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches) + and @fetchRemote(PHPWG_URL.'/download/all_versions.php?rand='.md5(uniqid(rand(), true)), $result)) + { + $all_versions = @explode("\n", $result); + $new_version = trim($all_versions[0]); + $_SESSION['need_update'] = version_compare(PHPWG_VERSION, $new_version, '<'); + } + } + + function get_server_extensions($version=PHPWG_VERSION) + { + global $user; + + $get_data = array( + 'format' => 'php', + ); + + // Retrieve PEM versions + $versions_to_check = array(); + $url = PEM_URL . '/api/get_version_list.php'; + if (fetchRemote($url, $result, $get_data) and $pem_versions = @unserialize($result)) + { + if (!preg_match('/^\d+\.\d+\.\d+$/', $version)) + { + $version = $pem_versions[0]['name']; + } + $branch = get_branch_from_version($version); + foreach ($pem_versions as $pem_version) + { + if (strpos($pem_version['name'], $branch) === 0) + { + $versions_to_check[] = $pem_version['id']; + } + } + } + if (empty($versions_to_check)) + { + return false; + } + + // Extensions to check + $ext_to_check = array(); + foreach ($this->types as $type) + { + $fs = 'fs_'.$type; + foreach ($this->$type->$fs as $ext) + { + if (isset($ext['extension'])) + { + $ext_to_check[$ext['extension']] = $type; + } + } + } + + // Retrieve PEM plugins infos + $url = PEM_URL . '/api/get_revision_list.php'; + $get_data = array_merge($get_data, array( + 'last_revision_only' => 'true', + 'version' => implode(',', $versions_to_check), + 'lang' => substr($user['language'], 0, 2), + 'get_nb_downloads' => 'true', + ) + ); + + $post_data = array(); + if (!empty($ext_to_check)) + { + $post_data['extension_include'] = implode(',', array_keys($ext_to_check)); + } + + if (fetchRemote($url, $result, $get_data, $post_data)) + { + $pem_exts = @unserialize($result); + if (!is_array($pem_exts)) + { + return false; + } + foreach ($pem_exts as $ext) + { + if (isset($ext_to_check[$ext['extension_id']])) + { + $server = 'server_'.$ext_to_check[$ext['extension_id']]; + $this->$ext_to_check[$ext['extension_id']]->$server += array($ext['extension_id'] => $ext); + unset($ext_to_check[$ext['extension_id']]); + } + } + $this->check_missing_extensions($ext_to_check); + return true; + } + return false; + } + + // Check all extensions upgrades + function check_extensions() + { + global $conf; + + if (!$this->get_server_extensions()) + { + return false; + } + + $_SESSION['extensions_need_update'] = array(); + + foreach ($this->types as $type) + { + $fs = 'fs_'.$type; + $server = 'server_'.$type; + $server_ext = $this->$type->$server; + $fs_ext = $this->$type->$fs; + + $ignore_list = array(); + $need_upgrade = array(); + + foreach($fs_ext as $ext_id => $fs_ext) + { + if (isset($fs_ext['extension']) and isset($server_ext[$fs_ext['extension']])) + { + $ext_info = $server_ext[$fs_ext['extension']]; + + if (!safe_version_compare($fs_ext['version'], $ext_info['revision_name'], '>=')) + { + if (in_array($ext_id, $conf['updates_ignored'][$type])) + { + $ignore_list[] = $ext_id; + } + else + { + $_SESSION['extensions_need_update'][$type][$ext_id] = $ext_info['revision_name']; + } + } + } + } + $conf['updates_ignored'][$type] = $ignore_list; + } + conf_update_param('updates_ignored', pwg_db_real_escape_string(serialize($conf['updates_ignored']))); + } + + // Check if extension have been upgraded since last check + function check_updated_extensions() + { + foreach ($this->types as $type) + { + if (!empty($_SESSION['extensions_need_update'][$type])) + { + $fs = 'fs_'.$type; + foreach($this->$type->$fs as $ext_id => $fs_ext) + { + if (isset($_SESSION['extensions_need_update'][$type][$ext_id]) + and safe_version_compare($fs_ext['version'], $_SESSION['extensions_need_update'][$type][$ext_id], '>=')) + { + // Extension have been upgraded + $this->check_extensions(); + break; + } + } + } + } + } + + function check_missing_extensions($missing) + { + foreach ($missing as $id => $type) + { + $fs = 'fs_'.$type; + $default = 'default_'.$type; + foreach ($this->$type->$fs as $ext_id => $ext) + { + if (isset($ext['extension']) and $id == $ext['extension'] + and !in_array($ext_id, $this->$default) + and !in_array($ext['extension'], $this->merged_extensions)) + { + $this->missing[$type][] = $ext; + break; + } + } + } + } + + function get_merged_extensions($version) + { + if (fetchRemote($this->merged_extension_url, $result)) + { + $rows = explode("\n", $result); + foreach ($rows as $row) + { + if (preg_match('/^(\d+\.\d+): *(.*)$/', $row, $match)) + { + if (version_compare($version, $match[1], '>=')) + { + $extensions = explode(',', trim($match[2])); + $this->merged_extensions = array_merge($this->merged_extensions, $extensions); + } + } + } + } + } + + static function process_obsolete_list($file) + { + if (file_exists(PHPWG_ROOT_PATH.$file) + and $old_files = file(PHPWG_ROOT_PATH.$file, FILE_IGNORE_NEW_LINES) + and !empty($old_files)) + { + $old_files[] = $file; + foreach($old_files as $old_file) + { + $path = PHPWG_ROOT_PATH.$old_file; + if (is_file($path)) + { + @unlink($path); + } + elseif (is_dir($path)) + { + deltree($path, PHPWG_ROOT_PATH.'_trash'); + } + } + } + } + + static function dump_database($include_history=false) + { + global $page, $conf, $cfgBase; + + if (version_compare(PHPWG_VERSION, '2.1', '<')) + { + $conf['db_base'] = $cfgBase; + } + + include(PHPWG_ROOT_PATH.'admin/include/mysqldump.php'); + + $path = PHPWG_ROOT_PATH.$conf['data_location'].'update'; + + if (@mkgetdir($path) + and ($backupFile = tempnam($path, 'sql')) + and ($dumper = new MySQLDump($conf['db_base'],$backupFile,false,false))) + { + foreach (get_defined_constants() as $constant => $value) + { + if (preg_match('/_TABLE$/', $constant)) + { + $dumper->getTableStructure($value); + if ($constant == 'HISTORY_TABLE' and !$include_history) + { + continue; + } + $dumper->getTableData($value); + } + } + } + + if (@filesize($backupFile)) + { + $http_headers = array( + 'Content-Length: '.@filesize($backupFile), + 'Content-Type: text/x-sql', + 'Content-Disposition: attachment; filename="database.sql";', + 'Content-Transfer-Encoding: binary', + ); + + foreach ($http_headers as $header) { + header($header); + } + + @readfile($backupFile); + deltree(PHPWG_ROOT_PATH.$conf['data_location'].'update'); + exit(); + } + else + { + $page['errors'][] = l10n('Unable to dump database.'); + } + } + + static function upgrade_to($upgrade_to, &$step, $check_current_version=true) + { + global $page, $conf, $template; + + if ($check_current_version and !version_compare($upgrade_to, PHPWG_VERSION, '>')) + { + redirect(get_root_url().'admin.php?page=plugin-'.basename(dirname(__FILE__))); + } + + if ($step == 2) + { + preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches); + $code = $matches[1].'.x_to_'.$upgrade_to; + $dl_code = str_replace(array('.', '_'), '', $code); + $remove_path = $code; + $obsolete_list = 'obsolete.list'; + } + else + { + $code = $upgrade_to; + $dl_code = $code; + $remove_path = version_compare($code, '2.0.8', '>=') ? 'piwigo' : 'piwigo-'.$code; + $obsolete_list = PHPWG_ROOT_PATH.'install/obsolete.list'; + } + + if (empty($page['errors'])) + { + $path = PHPWG_ROOT_PATH.$conf['data_location'].'update'; + $filename = $path.'/'.$code.'.zip'; + @mkgetdir($path); + + $chunk_num = 0; + $end = false; + $zip = @fopen($filename, 'w'); + + while (!$end) + { + $chunk_num++; + if (@fetchRemote(PHPWG_URL.'/download/dlcounter.php?code='.$dl_code.'&chunk_num='.$chunk_num, $result) + and $input = @unserialize($result)) + { + if (0 == $input['remaining']) + { + $end = true; + } + @fwrite($zip, base64_decode($input['data'])); + } + else + { + $end = true; + } + } + @fclose($zip); + + if (@filesize($filename)) + { + $zip = new PclZip($filename); + if ($result = $zip->extract(PCLZIP_OPT_PATH, PHPWG_ROOT_PATH, + PCLZIP_OPT_REMOVE_PATH, $remove_path, + PCLZIP_OPT_SET_CHMOD, 0755, + PCLZIP_OPT_REPLACE_NEWER)) + { + //Check if all files were extracted + $error = ''; + foreach($result as $extract) + { + if (!in_array($extract['status'], array('ok', 'filtered', 'already_a_directory'))) + { + // Try to change chmod and extract + if (@chmod(PHPWG_ROOT_PATH.$extract['filename'], 0777) + and ($res = $zip->extract(PCLZIP_OPT_BY_NAME, $remove_path.'/'.$extract['filename'], + PCLZIP_OPT_PATH, PHPWG_ROOT_PATH, + PCLZIP_OPT_REMOVE_PATH, $remove_path, + PCLZIP_OPT_SET_CHMOD, 0755, + PCLZIP_OPT_REPLACE_NEWER)) + and isset($res[0]['status']) + and $res[0]['status'] == 'ok') + { + continue; + } + else + { + $error .= $extract['filename'].': '.$extract['status']."\n"; + } + } + } + + if (empty($error)) + { + self::process_obsolete_list($obsolete_list); + deltree(PHPWG_ROOT_PATH.$conf['data_location'].'update'); + invalidate_user_cache(true); + $template->delete_compiled_templates(); + unset($_SESSION['need_update']); + if ($step == 2) + { + $page['infos'][] = l10n('Update Complete'); + $page['infos'][] = $upgrade_to; + $step = -1; + } + else + { + redirect(PHPWG_ROOT_PATH.'upgrade.php?now='); + } + } + else + { + file_put_contents(PHPWG_ROOT_PATH.$conf['data_location'].'update/log_error.txt', $error); + + $page['errors'][] = l10n( + 'An error has occured during extract. Please check files permissions of your piwigo installation.
Click here to show log error.', + get_root_url().$conf['data_location'].'update/log_error.txt' + ); + } + } + else + { + deltree(PHPWG_ROOT_PATH.$conf['data_location'].'update'); + $page['errors'][] = l10n('An error has occured during upgrade.'); + } + } + else + { + $page['errors'][] = l10n('Piwigo cannot retrieve upgrade file from server'); + } + } + } +} + +?> \ No newline at end of file diff --git a/sources/admin/include/uploadify/cancel.png b/sources/admin/include/uploadify/cancel.png new file mode 100644 index 0000000..1c7d627 Binary files /dev/null and b/sources/admin/include/uploadify/cancel.png differ diff --git a/sources/admin/include/uploadify/jquery.uploadify.v3.0.0.min.js b/sources/admin/include/uploadify/jquery.uploadify.v3.0.0.min.js new file mode 100644 index 0000000..e85d864 --- /dev/null +++ b/sources/admin/include/uploadify/jquery.uploadify.v3.0.0.min.js @@ -0,0 +1,38 @@ +/* +SWFUpload: http://www.swfupload.org, http://swfupload.googlecode.com + +mmSWFUpload 1.0: Flash upload dialog - http://profandesign.se/swfupload/, http://www.vinterwebb.se/ + +SWFUpload is (c) 2006-2007 Lars Huring, Olov Nilzén and Mammon Media and is released under the MIT License: +http://www.opensource.org/licenses/mit-license.php + +SWFUpload 2 is (c) 2007-2008 Jake Roberts and is released under the MIT License: +http://www.opensource.org/licenses/mit-license.php +*/ + +var SWFUpload;if(SWFUpload==undefined){SWFUpload=function(a){this.initSWFUpload(a)}}SWFUpload.prototype.initSWFUpload=function(b){try{this.customSettings={};this.settings=b;this.eventQueue=[];this.movieName="SWFUpload_"+SWFUpload.movieCount++;this.movieElement=null;SWFUpload.instances[this.movieName]=this;this.initSettings();this.loadFlash();this.displayDebugInfo()}catch(a){delete SWFUpload.instances[this.movieName];throw a}};SWFUpload.instances={};SWFUpload.movieCount=0;SWFUpload.version="2.2.0 2009-03-25";SWFUpload.QUEUE_ERROR={QUEUE_LIMIT_EXCEEDED:-100,FILE_EXCEEDS_SIZE_LIMIT:-110,ZERO_BYTE_FILE:-120,INVALID_FILETYPE:-130};SWFUpload.UPLOAD_ERROR={HTTP_ERROR:-200,MISSING_UPLOAD_URL:-210,IO_ERROR:-220,SECURITY_ERROR:-230,UPLOAD_LIMIT_EXCEEDED:-240,UPLOAD_FAILED:-250,SPECIFIED_FILE_ID_NOT_FOUND:-260,FILE_VALIDATION_FAILED:-270,FILE_CANCELLED:-280,UPLOAD_STOPPED:-290};SWFUpload.FILE_STATUS={QUEUED:-1,IN_PROGRESS:-2,ERROR:-3,COMPLETE:-4,CANCELLED:-5};SWFUpload.BUTTON_ACTION={SELECT_FILE:-100,SELECT_FILES:-110,START_UPLOAD:-120};SWFUpload.CURSOR={ARROW:-1,HAND:-2};SWFUpload.WINDOW_MODE={WINDOW:"window",TRANSPARENT:"transparent",OPAQUE:"opaque"};SWFUpload.completeURL=function(a){if(typeof(a)!=="string"||a.match(/^https?:\/\//i)||a.match(/^\//)){return a}var c=window.location.protocol+"//"+window.location.hostname+(window.location.port?":"+window.location.port:"");var b=window.location.pathname.lastIndexOf("/");if(b<=0){path="/"}else{path=window.location.pathname.substr(0,b)+"/"}return path+a};SWFUpload.prototype.initSettings=function(){this.ensureDefault=function(b,a){this.settings[b]=(this.settings[b]==undefined)?a:this.settings[b]};this.ensureDefault("upload_url","");this.ensureDefault("preserve_relative_urls",false);this.ensureDefault("file_post_name","Filedata");this.ensureDefault("post_params",{});this.ensureDefault("use_query_string",false);this.ensureDefault("requeue_on_error",false);this.ensureDefault("http_success",[]);this.ensureDefault("assume_success_timeout",0);this.ensureDefault("file_types","*.*");this.ensureDefault("file_types_description","All Files");this.ensureDefault("file_size_limit",0);this.ensureDefault("file_upload_limit",0);this.ensureDefault("file_queue_limit",0);this.ensureDefault("flash_url","swfupload.swf");this.ensureDefault("prevent_swf_caching",true);this.ensureDefault("button_image_url","");this.ensureDefault("button_width",1);this.ensureDefault("button_height",1);this.ensureDefault("button_text","");this.ensureDefault("button_text_style","color: #000000; font-size: 16pt;");this.ensureDefault("button_text_top_padding",0);this.ensureDefault("button_text_left_padding",0);this.ensureDefault("button_action",SWFUpload.BUTTON_ACTION.SELECT_FILES);this.ensureDefault("button_disabled",false);this.ensureDefault("button_placeholder_id","");this.ensureDefault("button_placeholder",null);this.ensureDefault("button_cursor",SWFUpload.CURSOR.ARROW);this.ensureDefault("button_window_mode",SWFUpload.WINDOW_MODE.WINDOW);this.ensureDefault("debug",false);this.settings.debug_enabled=this.settings.debug;this.settings.return_upload_start_handler=this.returnUploadStart;this.ensureDefault("swfupload_loaded_handler",null);this.ensureDefault("file_dialog_start_handler",null);this.ensureDefault("file_queued_handler",null);this.ensureDefault("file_queue_error_handler",null);this.ensureDefault("file_dialog_complete_handler",null);this.ensureDefault("upload_start_handler",null);this.ensureDefault("upload_progress_handler",null);this.ensureDefault("upload_error_handler",null);this.ensureDefault("upload_success_handler",null);this.ensureDefault("upload_complete_handler",null);this.ensureDefault("debug_handler",this.debugMessage);this.ensureDefault("custom_settings",{});this.customSettings=this.settings.custom_settings;if(!!this.settings.prevent_swf_caching){this.settings.flash_url=this.settings.flash_url+(this.settings.flash_url.indexOf("?")<0?"?":"&")+"preventswfcaching="+new Date().getTime()}if(!this.settings.preserve_relative_urls){this.settings.upload_url=SWFUpload.completeURL(this.settings.upload_url);this.settings.button_image_url=SWFUpload.completeURL(this.settings.button_image_url)}delete this.ensureDefault};SWFUpload.prototype.loadFlash=function(){var a,b;if(document.getElementById(this.movieName)!==null){throw"ID "+this.movieName+" is already in use. The Flash Object could not be added"}a=document.getElementById(this.settings.button_placeholder_id)||this.settings.button_placeholder;if(a==undefined){throw"Could not find the placeholder element: "+this.settings.button_placeholder_id}b=document.createElement("div");b.innerHTML=this.getFlashHTML();a.parentNode.replaceChild(b.firstChild,a);if(window[this.movieName]==undefined){window[this.movieName]=this.getMovieElement()}};SWFUpload.prototype.getFlashHTML=function(){return['','','','','','','',""].join("")};SWFUpload.prototype.getFlashVars=function(){var b=this.buildParamString();var a=this.settings.http_success.join(",");return["movieName=",encodeURIComponent(this.movieName),"&uploadURL=",encodeURIComponent(this.settings.upload_url),"&useQueryString=",encodeURIComponent(this.settings.use_query_string),"&requeueOnError=",encodeURIComponent(this.settings.requeue_on_error),"&httpSuccess=",encodeURIComponent(a),"&assumeSuccessTimeout=",encodeURIComponent(this.settings.assume_success_timeout),"&params=",encodeURIComponent(b),"&filePostName=",encodeURIComponent(this.settings.file_post_name),"&fileTypes=",encodeURIComponent(this.settings.file_types),"&fileTypesDescription=",encodeURIComponent(this.settings.file_types_description),"&fileSizeLimit=",encodeURIComponent(this.settings.file_size_limit),"&fileUploadLimit=",encodeURIComponent(this.settings.file_upload_limit),"&fileQueueLimit=",encodeURIComponent(this.settings.file_queue_limit),"&debugEnabled=",encodeURIComponent(this.settings.debug_enabled),"&buttonImageURL=",encodeURIComponent(this.settings.button_image_url),"&buttonWidth=",encodeURIComponent(this.settings.button_width),"&buttonHeight=",encodeURIComponent(this.settings.button_height),"&buttonText=",encodeURIComponent(this.settings.button_text),"&buttonTextTopPadding=",encodeURIComponent(this.settings.button_text_top_padding),"&buttonTextLeftPadding=",encodeURIComponent(this.settings.button_text_left_padding),"&buttonTextStyle=",encodeURIComponent(this.settings.button_text_style),"&buttonAction=",encodeURIComponent(this.settings.button_action),"&buttonDisabled=",encodeURIComponent(this.settings.button_disabled),"&buttonCursor=",encodeURIComponent(this.settings.button_cursor)].join("")};SWFUpload.prototype.getMovieElement=function(){if(this.movieElement==undefined){this.movieElement=document.getElementById(this.movieName)}if(this.movieElement===null){throw"Could not find Flash element"}return this.movieElement};SWFUpload.prototype.buildParamString=function(){var c=this.settings.post_params;var b=[];if(typeof(c)==="object"){for(var a in c){if(c.hasOwnProperty(a)){b.push(encodeURIComponent(a.toString())+"="+encodeURIComponent(c[a].toString()))}}}return b.join("&")};SWFUpload.prototype.destroy=function(){try{this.cancelUpload(null,false);var a=null;a=this.getMovieElement();if(a&&typeof(a.CallFunction)==="unknown"){for(var c in a){try{if(typeof(a[c])==="function"){a[c]=null}}catch(e){}}try{a.parentNode.removeChild(a)}catch(b){}}window[this.movieName]=null;SWFUpload.instances[this.movieName]=null;delete SWFUpload.instances[this.movieName];this.movieElement=null;this.settings=null;this.customSettings=null;this.eventQueue=null;this.movieName=null;return true}catch(d){return false}};SWFUpload.prototype.displayDebugInfo=function(){this.debug(["---SWFUpload Instance Info---\n","Version: ",SWFUpload.version,"\n","Movie Name: ",this.movieName,"\n","Settings:\n","\t","upload_url: ",this.settings.upload_url,"\n","\t","flash_url: ",this.settings.flash_url,"\n","\t","use_query_string: ",this.settings.use_query_string.toString(),"\n","\t","requeue_on_error: ",this.settings.requeue_on_error.toString(),"\n","\t","http_success: ",this.settings.http_success.join(", "),"\n","\t","assume_success_timeout: ",this.settings.assume_success_timeout,"\n","\t","file_post_name: ",this.settings.file_post_name,"\n","\t","post_params: ",this.settings.post_params.toString(),"\n","\t","file_types: ",this.settings.file_types,"\n","\t","file_types_description: ",this.settings.file_types_description,"\n","\t","file_size_limit: ",this.settings.file_size_limit,"\n","\t","file_upload_limit: ",this.settings.file_upload_limit,"\n","\t","file_queue_limit: ",this.settings.file_queue_limit,"\n","\t","debug: ",this.settings.debug.toString(),"\n","\t","prevent_swf_caching: ",this.settings.prevent_swf_caching.toString(),"\n","\t","button_placeholder_id: ",this.settings.button_placeholder_id.toString(),"\n","\t","button_placeholder: ",(this.settings.button_placeholder?"Set":"Not Set"),"\n","\t","button_image_url: ",this.settings.button_image_url.toString(),"\n","\t","button_width: ",this.settings.button_width.toString(),"\n","\t","button_height: ",this.settings.button_height.toString(),"\n","\t","button_text: ",this.settings.button_text.toString(),"\n","\t","button_text_style: ",this.settings.button_text_style.toString(),"\n","\t","button_text_top_padding: ",this.settings.button_text_top_padding.toString(),"\n","\t","button_text_left_padding: ",this.settings.button_text_left_padding.toString(),"\n","\t","button_action: ",this.settings.button_action.toString(),"\n","\t","button_disabled: ",this.settings.button_disabled.toString(),"\n","\t","custom_settings: ",this.settings.custom_settings.toString(),"\n","Event Handlers:\n","\t","swfupload_loaded_handler assigned: ",(typeof this.settings.swfupload_loaded_handler==="function").toString(),"\n","\t","file_dialog_start_handler assigned: ",(typeof this.settings.file_dialog_start_handler==="function").toString(),"\n","\t","file_queued_handler assigned: ",(typeof this.settings.file_queued_handler==="function").toString(),"\n","\t","file_queue_error_handler assigned: ",(typeof this.settings.file_queue_error_handler==="function").toString(),"\n","\t","upload_start_handler assigned: ",(typeof this.settings.upload_start_handler==="function").toString(),"\n","\t","upload_progress_handler assigned: ",(typeof this.settings.upload_progress_handler==="function").toString(),"\n","\t","upload_error_handler assigned: ",(typeof this.settings.upload_error_handler==="function").toString(),"\n","\t","upload_success_handler assigned: ",(typeof this.settings.upload_success_handler==="function").toString(),"\n","\t","upload_complete_handler assigned: ",(typeof this.settings.upload_complete_handler==="function").toString(),"\n","\t","debug_handler assigned: ",(typeof this.settings.debug_handler==="function").toString(),"\n"].join(""))};SWFUpload.prototype.addSetting=function(b,c,a){if(c==undefined){return(this.settings[b]=a)}else{return(this.settings[b]=c)}};SWFUpload.prototype.getSetting=function(a){if(this.settings[a]!=undefined){return this.settings[a]}return""};SWFUpload.prototype.callFlash=function(functionName,argumentArray){argumentArray=argumentArray||[];var movieElement=this.getMovieElement();var returnValue,returnString;try{returnString=movieElement.CallFunction(''+__flash__argumentsToXML(argumentArray,0)+"");returnValue=eval(returnString)}catch(ex){throw"Call to "+functionName+" failed"}if(returnValue!=undefined&&typeof returnValue.post==="object"){returnValue=this.unescapeFilePostParams(returnValue)}return returnValue};SWFUpload.prototype.selectFile=function(){this.callFlash("SelectFile")};SWFUpload.prototype.selectFiles=function(){this.callFlash("SelectFiles")};SWFUpload.prototype.startUpload=function(a){this.callFlash("StartUpload",[a])};SWFUpload.prototype.cancelUpload=function(a,b){if(b!==false){b=true}this.callFlash("CancelUpload",[a,b])};SWFUpload.prototype.stopUpload=function(){this.callFlash("StopUpload")};SWFUpload.prototype.getStats=function(){return this.callFlash("GetStats")};SWFUpload.prototype.setStats=function(a){this.callFlash("SetStats",[a])};SWFUpload.prototype.getFile=function(a){if(typeof(a)==="number"){return this.callFlash("GetFileByIndex",[a])}else{return this.callFlash("GetFile",[a])}};SWFUpload.prototype.addFileParam=function(a,b,c){return this.callFlash("AddFileParam",[a,b,c])};SWFUpload.prototype.removeFileParam=function(a,b){this.callFlash("RemoveFileParam",[a,b])};SWFUpload.prototype.setUploadURL=function(a){this.settings.upload_url=a.toString();this.callFlash("SetUploadURL",[a])};SWFUpload.prototype.setPostParams=function(a){this.settings.post_params=a;this.callFlash("SetPostParams",[a])};SWFUpload.prototype.addPostParam=function(a,b){this.settings.post_params[a]=b;this.callFlash("SetPostParams",[this.settings.post_params])};SWFUpload.prototype.removePostParam=function(a){delete this.settings.post_params[a];this.callFlash("SetPostParams",[this.settings.post_params])};SWFUpload.prototype.setFileTypes=function(a,b){this.settings.file_types=a;this.settings.file_types_description=b;this.callFlash("SetFileTypes",[a,b])};SWFUpload.prototype.setFileSizeLimit=function(a){this.settings.file_size_limit=a;this.callFlash("SetFileSizeLimit",[a])};SWFUpload.prototype.setFileUploadLimit=function(a){this.settings.file_upload_limit=a;this.callFlash("SetFileUploadLimit",[a])};SWFUpload.prototype.setFileQueueLimit=function(a){this.settings.file_queue_limit=a;this.callFlash("SetFileQueueLimit",[a])};SWFUpload.prototype.setFilePostName=function(a){this.settings.file_post_name=a;this.callFlash("SetFilePostName",[a])};SWFUpload.prototype.setUseQueryString=function(a){this.settings.use_query_string=a;this.callFlash("SetUseQueryString",[a])};SWFUpload.prototype.setRequeueOnError=function(a){this.settings.requeue_on_error=a;this.callFlash("SetRequeueOnError",[a])};SWFUpload.prototype.setHTTPSuccess=function(a){if(typeof a==="string"){a=a.replace(" ","").split(",")}this.settings.http_success=a;this.callFlash("SetHTTPSuccess",[a])};SWFUpload.prototype.setAssumeSuccessTimeout=function(a){this.settings.assume_success_timeout=a;this.callFlash("SetAssumeSuccessTimeout",[a])};SWFUpload.prototype.setDebugEnabled=function(a){this.settings.debug_enabled=a;this.callFlash("SetDebugEnabled",[a])};SWFUpload.prototype.setButtonImageURL=function(a){if(a==undefined){a=""}this.settings.button_image_url=a;this.callFlash("SetButtonImageURL",[a])};SWFUpload.prototype.setButtonDimensions=function(c,a){this.settings.button_width=c;this.settings.button_height=a;var b=this.getMovieElement();if(b!=undefined){b.style.width=c+"px";b.style.height=a+"px"}this.callFlash("SetButtonDimensions",[c,a])};SWFUpload.prototype.setButtonText=function(a){this.settings.button_text=a;this.callFlash("SetButtonText",[a])};SWFUpload.prototype.setButtonTextPadding=function(b,a){this.settings.button_text_top_padding=a;this.settings.button_text_left_padding=b;this.callFlash("SetButtonTextPadding",[b,a])};SWFUpload.prototype.setButtonTextStyle=function(a){this.settings.button_text_style=a;this.callFlash("SetButtonTextStyle",[a])};SWFUpload.prototype.setButtonDisabled=function(a){this.settings.button_disabled=a;this.callFlash("SetButtonDisabled",[a])};SWFUpload.prototype.setButtonAction=function(a){this.settings.button_action=a;this.callFlash("SetButtonAction",[a])};SWFUpload.prototype.setButtonCursor=function(a){this.settings.button_cursor=a;this.callFlash("SetButtonCursor",[a])};SWFUpload.prototype.queueEvent=function(b,c){if(c==undefined){c=[]}else{if(!(c instanceof Array)){c=[c]}}var a=this;if(typeof this.settings[b]==="function"){this.eventQueue.push(function(){this.settings[b].apply(this,c)});setTimeout(function(){a.executeNextEvent()},0)}else{if(this.settings[b]!==null){throw"Event handler "+b+" is unknown or is not a function"}}};SWFUpload.prototype.executeNextEvent=function(){var a=this.eventQueue?this.eventQueue.shift():null;if(typeof(a)==="function"){a.apply(this)}};SWFUpload.prototype.unescapeFilePostParams=function(c){var e=/[$]([0-9a-f]{4})/i;var f={};var d;if(c!=undefined){for(var a in c.post){if(c.post.hasOwnProperty(a)){d=a;var b;while((b=e.exec(d))!==null){d=d.replace(b[0],String.fromCharCode(parseInt("0x"+b[1],16)))}f[d]=c.post[a]}}c.post=f}return c};SWFUpload.prototype.testExternalInterface=function(){try{return this.callFlash("TestExternalInterface")}catch(a){return false}};SWFUpload.prototype.flashReady=function(){var a=this.getMovieElement();if(!a){this.debug("Flash called back ready but the flash movie can't be found.");return}this.cleanUp(a);this.queueEvent("swfupload_loaded_handler")};SWFUpload.prototype.cleanUp=function(a){try{if(this.movieElement&&typeof(a.CallFunction)==="unknown"){this.debug("Removing Flash functions hooks (this should only run in IE and should prevent memory leaks)");for(var c in a){try{if(typeof(a[c])==="function"){a[c]=null}}catch(b){}}}}catch(d){}window.__flash__removeCallback=function(e,f){try{if(e){e[f]=null}}catch(g){}}};SWFUpload.prototype.fileDialogStart=function(){this.queueEvent("file_dialog_start_handler")};SWFUpload.prototype.fileQueued=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("file_queued_handler",a)};SWFUpload.prototype.fileQueueError=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("file_queue_error_handler",[a,c,b])};SWFUpload.prototype.fileDialogComplete=function(b,c,a){this.queueEvent("file_dialog_complete_handler",[b,c,a])};SWFUpload.prototype.uploadStart=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("return_upload_start_handler",a)};SWFUpload.prototype.returnUploadStart=function(a){var b;if(typeof this.settings.upload_start_handler==="function"){a=this.unescapeFilePostParams(a);b=this.settings.upload_start_handler.call(this,a)}else{if(this.settings.upload_start_handler!=undefined){throw"upload_start_handler must be a function"}}if(b===undefined){b=true}b=!!b;this.callFlash("ReturnUploadStart",[b])};SWFUpload.prototype.uploadProgress=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("upload_progress_handler",[a,c,b])};SWFUpload.prototype.uploadError=function(a,c,b){a=this.unescapeFilePostParams(a);this.queueEvent("upload_error_handler",[a,c,b])};SWFUpload.prototype.uploadSuccess=function(b,a,c){b=this.unescapeFilePostParams(b);this.queueEvent("upload_success_handler",[b,a,c])};SWFUpload.prototype.uploadComplete=function(a){a=this.unescapeFilePostParams(a);this.queueEvent("upload_complete_handler",a)};SWFUpload.prototype.debug=function(a){this.queueEvent("debug_handler",a)};SWFUpload.prototype.debugMessage=function(c){if(this.settings.debug){var a,d=[];if(typeof c==="object"&&typeof c.name==="string"&&typeof c.message==="string"){for(var b in c){if(c.hasOwnProperty(b)){d.push(b+": "+c[b])}}a=d.join("\n")||"";d=a.split("\n");a="EXCEPTION: "+d.join("\nEXCEPTION: ");SWFUpload.Console.writeLine(a)}else{SWFUpload.Console.writeLine(c)}}};SWFUpload.Console={};SWFUpload.Console.writeLine=function(d){var b,a;try{b=document.getElementById("SWFUpload_Console");if(!b){a=document.createElement("form");document.getElementsByTagName("body")[0].appendChild(a);b=document.createElement("textarea");b.id="SWFUpload_Console";b.style.fontFamily="monospace";b.setAttribute("wrap","off");b.wrap="off";b.style.overflow="auto";b.style.width="700px";b.style.height="350px";b.style.margin="5px";a.appendChild(b)}b.value+=d+"\n";b.scrollTop=b.scrollHeight-b.clientHeight}catch(c){alert("Exception: "+c.name+" Message: "+c.message)}}; + +/* +Uploadify v3.0.0 +Copyright (c) 2010 Ronnie Garcia + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +if(jQuery)(function(a){a.extend(a.fn,{uploadify:function(b,c){a(this).each(function(){function t(b,c,d){g.queue.queueBytesUploaded+=b.size;a("#"+b.id).find(".data").html(" - "+uploadifyLang["uploadComplete"]);if(g.settings.onUploadSuccess)g.settings.onUploadSuccess(b,c,d)}function s(b){var c=new Date;g.timer=c.getTime();g.bytesLoaded=0;if(g.queue.uploadQueue.length==0){g.queue.uploadSize=b.size}if(g.settings.checkExisting!==false){a.ajax({type:"POST",async:false,url:g.settings.checkExisting,data:{filename:b.name},success:function(c){if(c==1){var d=confirm(uploadifyLang["existsMsg1"]+' "'+b.name+'" '+uploadifyLang["existsMsg2"]+".\n"+uploadifyLang["existsMsg3"]);if(!d){g.cancelUpload(b.id);a("#"+b.id).remove();if(g.queue.uploadQueue.length>0&&g.queue.queueLength>0){if(g.queue.uploadQueue[0]=="*"){g.startUpload()}else{g.startUpload(g.queue.uploadQueue.shift())}}}}}})}if(g.settings.onUploadStart)g.settings.onUploadStart(b)}function r(b,c,d){var e=new Date;var f=e.getTime();var h=f-g.timer;g.timer=f;var i=c-g.bytesLoaded;g.bytesLoaded=c;var j=g.queue.queueBytesUploaded+c;var k=Math.round(c/d*100);var l=0;var m=i/1024/(h/1e3);m=Math.floor(m*10)/10;if(g.queue.averageSpeed>0){g.queue.averageSpeed=(g.queue.averageSpeed+m)/2}else{g.queue.averageSpeed=m}if(m>1e3){l=m*.001;g.queue.averageSpeed=l}var n="KB/s";if(l>0){n="MB/s"}if(a.inArray("onUploadProgress",g.settings.skipDefault)<0){if(g.settings.progressData=="percentage"){a("#"+b.id).find(".data").html(" - "+k+"%")}else if(g.settings.progressData=="speed"){a("#"+b.id).find(".data").html(" - "+g.queue.averageSpeed.toFixed(2)+" "+n)}else if(g.settings.progressData=="all"){a("#"+b.id).find(".data").html(" - "+k+"% - "+g.queue.averageSpeed.toFixed(2)+" "+n)}a("#"+b.id).find(".uploadifyProgressBar").css("width",k+"%")}if(g.settings.onUploadProgress)g.settings.onUploadProgress(b,c,d,j,g.queue.uploadSize)}function q(b,c,d){var e=uploadifyLang["errorString1"];if(c!=SWFUpload.UPLOAD_ERROR.FILE_CANCELLED&&c!=SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED){a("#"+b.id).addClass("uploadifyError")}a("#"+b.id).find(".uploadifyProgressBar").css("width","1px");switch(c){case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:e=uploadifyLang["errorString2"]+" ("+d+")";break;case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:e=uploadifyLang["errorString3"];break;case SWFUpload.UPLOAD_ERROR.IO_ERROR:e=uploadifyLang["errorString4"];break;case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:e=uploadifyLang["errorString5"];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:alert(uploadifyLang["errorString6"]+" ("+d+").");e=uploadifyLang["errorString7"];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:e=uploadifyLang["errorString8"];break;case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:e=uploadifyLang["errorString9"];break;case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:e=uploadifyLang["errorString10"];break;case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:e=uploadifyLang["errorString11"];g.queue.queueSize-=b.size;if(b.status==SWFUpload.FILE_STATUS.IN_PROGRESS||a.inArray(b.id,g.queue.uploadQueue)>=0){g.queue.uploadSize-=b.size}delete g.queue.files[b.id];break;case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:e=uploadifyLang["errorString12"];break}if(c!=SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND&&b.status!=SWFUpload.FILE_STATUS.COMPLETE){a("#"+b.id).find(".data").html(" - "+e)}if(g.settings.onUploadError)g.settings.onUploadError(b,c,d,e,g.queue)}function p(b){var c=g.getStats();g.queue.queueLength=c.files_queued;if(g.queue.uploadQueue[0]=="*"){if(g.queue.queueLength>0){g.startUpload()}else{g.queue.uploadQueue=[];if(g.settings.onQueueComplete)g.settings.onQueueComplete(c)}}else{if(g.settings.onUploadComplete)g.settings.onUploadComplete(b,g.queue);if(g.queue.queueLength>0){g.startUpload(g.queue.uploadQueue.shift())}else{g.queue.uploadQueue=[];if(g.settings.onQueueComplete)g.settings.onQueueComplete(c)}}if(a.inArray("onUploadComplete",g.settings.skipDefault)<0){if(g.settings.removeCompleted){switch(b.filestatus){case SWFUpload.FILE_STATUS.COMPLETE:setTimeout(function(){if(a("#"+b.id)){g.queue.queueSize-=b.size;delete g.queue.files[b.id];a("#"+b.id).fadeOut(500,function(){a(this).remove()})}},g.settings.removeTimeout*1e3);break;case SWFUpload.FILE_STATUS.ERROR:if(!g.settings.requeueErrors){setTimeout(function(){if(a("#"+b.id)){g.queue.queueSize-=b.size;delete g.queue.files[b.id];a("#"+b.id).fadeOut(500,function(){a(this).remove()})}},g.settings.removeTimeout*1e3)}break}}}}function o(){var a=g.getStats();if(g.settings.onQueueComplete)g.settings.onQueueComplete(a)}function n(b,c,d){if(a.inArray("onSelectError",g.settings.skipDefault)<0){switch(c){case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:if(g.settings.queueSizeLimit>d){g.queue.errorMsg+="\n"+uploadifyLang["errorMsg2"]+" ("+d+")."}else{g.queue.errorMsg+="\n"+uploadifyLang["errorMsg3"]+" ("+g.settings.queueSizeLimit+")."}break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:g.queue.errorMsg+="\n"+uploadifyLang["errorMsg4"]+' "'+b.name+'" '+uploadifyLang["errorMsg5"]+" ("+g.settings.fileSizeLimit+").";break;case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:g.queue.errorMsg+="\n"+uploadifyLang["errorMsg4"]+' "'+b.name+'" '+uploadifyLang["errorMsg6"]+".";break;case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:g.queue.errorMsg+="\n"+uploadifyLang["errorMsg4"]+' "'+b.name+'" '+uploadifyLang["errorMsg7"]+" ("+g.settings.fileTypeDesc+").";break}}if(c!=SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED){delete g.queue.files[b.id]}if(g.settings.onSelectError)g.settings.onSelectError(b,c,d)}function m(b){if(a.inArray("onSelect",g.settings.skipDefault)<0){var c={};for(var d in g.queue.files){c=g.queue.files[d];if(c.name==b.name){var e=confirm(uploadifyLang["replaceMsg1"]+' "'+b.name+'" '+uploadifyLang["replaceMsg2"]+".\n"+uploadifyLang["replaceMsg3"]);if(!e){g.cancelUpload(b.id);g.queue.filesCancelled++;return false}else{a("#"+c.id).remove();g.cancelUpload(c.id);g.queue.filesReplaced++}}}var f=Math.round(b.size/1024);var h="KB";if(f>1e3){f=Math.round(f/1e3);h="MB"}var i=f.toString().split(".");f=i[0];if(i.length>1){f+="."+i[1].substr(0,2)}f+=h;var j=b.name;if(j.length>18){j=j.substr(0,15)+"..."}a("#"+g.settings.queueID).append('
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t'+j+" ("+f+')\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
');g.queue.queueSize+=b.size}g.queue.files[b.id]=b;if(g.settings.onSelect)g.settings.onSelect(b)}function l(){g.queue.errorMsg=uploadifyLang["errorMsg1"];g.queue.filesReplaced=0;g.queue.filesCancelled=0;if(g.settings.onDialogOpen)g.settings.onDialogOpen()}function k(b,c,d){var e=g.getStats();g.queue.filesErrored=b-c;g.queue.filesSelected=b;g.queue.filesQueued=c-g.queue.filesCancelled;g.queue.queueLength=d;if(a.inArray("onDialogClose",g.settings.skipDefault)<0){if(g.queue.filesErrored>0){alert(g.queue.errorMsg)}}if(g.settings.onDialogClose)g.settings.onDialogClose(g.queue);if(g.settings.auto)a("#"+g.settings.id).uploadifyUpload("*")}var d=a(this).clone();var e=a.extend({id:a(this).attr("id"),langFile:"uploadifyLang_en.js",swf:"uploadify.swf",uploader:"uploadify.php",auto:false,buttonCursor:"pointer",buttonText:"",cancelImage:"uploadify-cancel.png",checkExisting:"uploadify-check-existing.php",debug:false,fileObjName:"Filedata",fileSizeLimit:0,fileTypeDesc:"",fileTypeExts:"*.*",height:30,method:"post",multi:false,queueID:false,queueSizeLimit:999,removeCompleted:true,removeTimeout:3,requeueErrors:true,postData:{},preventCaching:true,progressData:"all",successTimeout:30,transparent:true,uploadLimit:999,width:120,skipDefault:[],onDialogClose:function(){},onDialogOpen:function(){},onSelect:function(){},onSelectError:function(){},onQueueComplete:function(){},onUploadComplete:function(){},onUploadError:function(){},onUploadProgress:function(){},onUploadStart:function(){},onUploadSuccess:function(){}},b);var f={assume_success_timeout:e.successTimeout,button_placeholder_id:e.id,button_width:e.width,button_height:e.height,button_text:null,button_text_style:null,button_text_top_padding:0,button_text_left_padding:0,button_action:e.multi?SWFUpload.BUTTON_ACTION.SELECT_FILES:SWFUpload.BUTTON_ACTION.SELECT_FILE,button_disabled:false,button_cursor:e.buttonCursor=="arrow"?SWFUpload.CURSOR.ARROW:SWFUpload.CURSOR.HAND,button_window_mode:e.transparent?SWFUpload.WINDOW_MODE.TRANSPARENT:SWFUpload.WINDOW_MODE.OPAQUE,debug:e.debug,requeue_on_error:e.requeueErrors,file_post_name:e.fileObjName,file_size_limit:e.fileSizeLimit,file_types:e.fileTypeExts,file_types_description:e.fileTypeDesc,file_queue_limit:e.queueSizeLimit,file_upload_limit:e.uploadLimit,flash_url:e.swf,prevent_swf_caching:e.preventCaching,post_params:e.postData,upload_url:e.uploader,use_query_string:e.method=="get",file_dialog_complete_handler:k,file_dialog_start_handler:l,file_queued_handler:m,file_queue_error_handler:n,upload_complete_handler:p,upload_error_handler:q,upload_progress_handler:r,upload_start_handler:s,upload_success_handler:t};if(c){f=a.extend(f,c)}f=a.extend(f,e);a.ajaxSetup({async:false});a.getScript(e.langFile);a.ajaxSetup({async:true});if(e.buttonText=="")e.buttonText=uploadifyLang["buttonText"];if(e.fileTypeDesc=="")e.fileTypeDesc=uploadifyLang["fileTypeDesc"];window["uploadify_"+e.id]=new SWFUpload(f);var g=window["uploadify_"+e.id];g.original=d;var h=a("
",{id:e.id,"class":"uploadify",css:{height:e.height+"px",position:"relative",width:e.width+"px"}});a("#"+g.movieName).wrap(h);if(!e.queueID){var i=a("
",{id:e.id+"_queue","class":"uploadifyQueue"});a("#"+e.id).after(i);g.settings.queueID=e.queueID=e.id+"_queue"}g.queue={files:{},filesSelected:0,filesQueued:0,filesReplaced:0,filesCancelled:0,filesErrored:0,averageSpeed:0,queueLength:0,queueSize:0,uploadSize:0,queueBytesUploaded:0,uploadQueue:[],errorMsg:uploadifyLang["errorMsg1"]};var j=a("
",{id:e.id+"_button","class":"uploadifyButton",html:''+e.buttonText+""});a("#"+e.id).append(j);a("#"+g.movieName).css({position:"absolute","z-index":1,left:"0px"})})},uploadifyCancel:function(b){var c=a(this).selector.replace("#","");var d=window["uploadify_"+c];var e=-1;if(arguments[0]){if(arguments[0]=="*"){a("#"+d.settings.queueID).find(".uploadifyQueueItem").each(function(){e++;d.cancelUpload(a(this).attr("id"));a(this).delay(100*e).fadeOut(500,function(){a(this).remove()})});d.queue.queueSize=0}else{for(var f=0;f $image_id, + 'category_id' => $_POST['category_id'], + 'thumbnail_url' => $thumbnail_url, + ); + +$output = ob_get_contents(); +ob_end_clean(); +if (!empty($output)) +{ + add_upload_error($_POST['upload_id'], $output); + $return['error_message'] = $output; +} + +echo json_encode($return); +?> \ No newline at end of file diff --git a/sources/admin/include/uploadify/uploadify.swf b/sources/admin/include/uploadify/uploadify.swf new file mode 100644 index 0000000..e3f7670 Binary files /dev/null and b/sources/admin/include/uploadify/uploadify.swf differ diff --git a/sources/admin/include/uploadify/uploadifyLang_en.js b/sources/admin/include/uploadify/uploadifyLang_en.js new file mode 100644 index 0000000..3be8afa --- /dev/null +++ b/sources/admin/include/uploadify/uploadifyLang_en.js @@ -0,0 +1,32 @@ +// this file must be in UTF-8 format + +var uploadifyLang = new Array(); + +uploadifyLang['buttonText'] = 'SELECT FILES'; +uploadifyLang['fileTypeDesc'] = 'All Files (*.*)'; +uploadifyLang['replaceMsg1'] = 'The file named'; +uploadifyLang['replaceMsg2'] = 'is already in the queue'; +uploadifyLang['replaceMsg3'] = 'Do you want to replace the existing item in the queue?'; +uploadifyLang['existsMsg1'] = 'A file with the name'; +uploadifyLang['existsMsg2'] = 'already exists on the server'; +uploadifyLang['existsMsg3'] = 'Would you like to replace the existing file?'; +uploadifyLang['errorMsg1'] = 'Some files were not added to the queue:'; +uploadifyLang['errorMsg2'] = 'The number of files selected exceeds the remaining upload limit'; +uploadifyLang['errorMsg3'] = 'The number of files selected exceeds the queue size limit'; +uploadifyLang['errorMsg4'] = 'The file'; +uploadifyLang['errorMsg5'] = 'exceeds the size limit'; +uploadifyLang['errorMsg6'] = 'is empty'; +uploadifyLang['errorMsg7'] = 'is not an accepted file type'; +uploadifyLang['errorString1'] = 'Error'; +uploadifyLang['errorString2'] = 'HTTP Error'; +uploadifyLang['errorString3'] = 'Missing Upload URL'; +uploadifyLang['errorString4'] = 'IO Error'; +uploadifyLang['errorString5'] = 'Security Error'; +uploadifyLang['errorString6'] = 'The upload limit has been reached'; +uploadifyLang['errorString7'] = 'Exceeds Upload Limit'; +uploadifyLang['errorString8'] = 'Failed'; +uploadifyLang['errorString9'] = 'File ID Not Found'; +uploadifyLang['errorString10'] = 'Validation Error'; +uploadifyLang['errorString11'] = 'Cancelled'; +uploadifyLang['errorString12'] = 'Stopped'; +uploadifyLang['uploadComplete'] = 'Complete'; \ No newline at end of file diff --git a/sources/admin/index.php b/sources/admin/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/admin/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/admin/intro.php b/sources/admin/intro.php new file mode 100644 index 0000000..ee01498 --- /dev/null +++ b/sources/admin/intro.php @@ -0,0 +1,279 @@ + PHPWG_VERSION); + $lines = @explode("\r\n", $result); + + // if the current version is a BSF (development branch) build, we check + // the first line, for stable versions, we check the second line + if (preg_match('/^BSF/', $versions['current'])) + { + $versions['latest'] = trim($lines[0]); + + // because integer are limited to 4,294,967,296 we need to split BSF + // versions in date.time + foreach ($versions as $key => $value) + { + $versions[$key] = + preg_replace('/BSF_(\d{8})(\d{4})/', '$1.$2', $value); + } + } + else + { + $versions['latest'] = trim($lines[1]); + } + + if ('' == $versions['latest']) + { + $page['errors'][] = l10n('Check for upgrade failed for unknown reasons.'); + } + // concatenation needed to avoid automatic transformation by release + // script generator + else if ('%'.'PWGVERSION'.'%' == $versions['current']) + { + $page['infos'][] = l10n('You are running on development sources, no check possible.'); + } + else if (version_compare($versions['current'], $versions['latest']) < 0) + { + $page['infos'][] = l10n('A new version of Piwigo is available.'); + } + else + { + $page['infos'][] = l10n('You are running the latest version of Piwigo.'); + } + } +} +// Show phpinfo() output +else if (isset($_GET['action']) and 'phpinfo' == $_GET['action']) +{ + phpinfo(); + exit(); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames(array('intro' => 'intro.tpl')); + +if ($conf['show_newsletter_subscription']) { + $template->assign( + array( + 'EMAIL' => $user['email'], + 'SUBSCRIBE_BASE_URL' => get_newsletter_subscribe_base_url($user['language']), + ) + ); +} + +$php_current_timestamp = date("Y-m-d H:i:s"); +$db_version = pwg_get_db_version(); +list($db_current_date) = pwg_db_fetch_row(pwg_query('SELECT now();')); + +$query = ' +SELECT COUNT(*) + FROM '.IMAGES_TABLE.' +;'; +list($nb_elements) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.CATEGORIES_TABLE.' +;'; +list($nb_categories) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NULL +;'; +list($nb_virtual) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NOT NULL +;'; +list($nb_physical) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.IMAGE_CATEGORY_TABLE.' +;'; +list($nb_image_category) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.TAGS_TABLE.' +;'; +list($nb_tags) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.IMAGE_TAG_TABLE.' +;'; +list($nb_image_tag) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.USERS_TABLE.' +;'; +list($nb_users) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.GROUPS_TABLE.' +;'; +list($nb_groups) = pwg_db_fetch_row(pwg_query($query)); + +$query = ' +SELECT COUNT(*) + FROM '.RATE_TABLE.' +;'; +list($nb_rates) = pwg_db_fetch_row(pwg_query($query)); + +$template->assign( + array( + 'PHPWG_URL' => PHPWG_URL, + 'PWG_VERSION' => PHPWG_VERSION, + 'OS' => PHP_OS, + 'PHP_VERSION' => phpversion(), + 'DB_ENGINE' => 'MySQL', + 'DB_VERSION' => $db_version, + 'DB_ELEMENTS' => l10n_dec('%d photo', '%d photos', $nb_elements), + 'DB_CATEGORIES' => + l10n_dec('%d album including', '%d albums including', $nb_categories). + l10n_dec('%d physical', '%d physicals', $nb_physical). + l10n_dec(' and %d virtual', ' and %d virtuals', $nb_virtual), + 'DB_IMAGE_CATEGORY' => l10n_dec('%d association', '%d associations', $nb_image_category), + 'DB_TAGS' => l10n_dec('%d tag', '%d tags', $nb_tags), + 'DB_IMAGE_TAG' => l10n_dec('%d association', '%d associations', $nb_image_tag), + 'DB_USERS' => l10n_dec('%d user', '%d users', $nb_users), + 'DB_GROUPS' => l10n_dec('%d group', '%d groups', $nb_groups), + 'DB_RATES' => ($nb_rates == 0) ? l10n('no rate') : l10n('%d rates', $nb_rates), + 'U_CHECK_UPGRADE' => PHPWG_ROOT_PATH.'admin.php?action=check_upgrade', + 'U_PHPINFO' => PHPWG_ROOT_PATH.'admin.php?action=phpinfo', + 'PHP_DATATIME' => $php_current_timestamp, + 'DB_DATATIME' => $db_current_date, + ) + ); + +if ($conf['activate_comments']) +{ + $query = ' +SELECT COUNT(*) + FROM '.COMMENTS_TABLE.' +;'; + list($nb_comments) = pwg_db_fetch_row(pwg_query($query)); + $template->assign('DB_COMMENTS', l10n_dec('%d comment', '%d comments', $nb_comments)); +} + +if ($nb_elements > 0) +{ + $query = ' +SELECT MIN(date_available) + FROM '.IMAGES_TABLE.' +;'; + list($first_date) = pwg_db_fetch_row(pwg_query($query)); + + $template->assign( + 'first_added', + array( + 'DB_DATE' => + l10n('first photo added on %s', format_date($first_date)) + ) + ); +} + +// graphics library +switch (pwg_image::get_library()) +{ + case 'imagick': + $library = 'ImageMagick'; + $img = new Imagick(); + $version = $img->getVersion(); + if (preg_match('/ImageMagick \d+\.\d+\.\d+-?\d*/', $version['versionString'], $match)) + { + $library = $match[0]; + } + $template->assign('GRAPHICS_LIBRARY', $library); + break; + + case 'ext_imagick': + $library = 'External ImageMagick'; + exec($conf['ext_imagick_dir'].'convert -version', $returnarray); + if (preg_match('/Version: ImageMagick (\d+\.\d+\.\d+-?\d*)/', $returnarray[0], $match)) + { + $library .= ' ' . $match[1]; + } + $template->assign('GRAPHICS_LIBRARY', $library); + break; + + case 'gd': + $gd_info = gd_info(); + $template->assign('GRAPHICS_LIBRARY', 'GD '.@$gd_info['GD Version']); + break; +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'intro'); + +// Check integrity +$c13y = new check_integrity(); +// add internal checks +new c13y_internal(); +// check and display +$c13y->check(); +$c13y->display(); + +?> diff --git a/sources/admin/languages.php b/sources/admin/languages.php new file mode 100644 index 0000000..c901d92 --- /dev/null +++ b/sources/admin/languages.php @@ -0,0 +1,48 @@ +set_id('languages'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +if ($page['tab'] == 'update') + include(PHPWG_ROOT_PATH.'admin/updates_ext.php'); +else + include(PHPWG_ROOT_PATH.'admin/languages_'.$page['tab'].'.php'); + +?> \ No newline at end of file diff --git a/sources/admin/languages_installed.php b/sources/admin/languages_installed.php new file mode 100644 index 0000000..eb0a895 --- /dev/null +++ b/sources/admin/languages_installed.php @@ -0,0 +1,126 @@ +set_filenames(array('languages' => 'languages_installed.tpl')); + +$base_url = get_root_url().'admin.php?page='.$page['page']; + +$languages = new languages(); +$languages->get_db_languages(); + +//--------------------------------------------------perform requested actions +if (isset($_GET['action']) and isset($_GET['language'])) +{ + $page['errors'] = $languages->perform_action($_GET['action'], $_GET['language']); + + if (empty($page['errors'])) + { + redirect($base_url); + } +} + +// +-----------------------------------------------------------------------+ +// | start template output | +// +-----------------------------------------------------------------------+ +$default_language = get_default_language(); + +$tpl_languages = array(); + +foreach($languages->fs_languages as $language_id => $language) +{ + $language['u_action'] = add_url_params($base_url, array('language' => $language_id)); + + if (in_array($language_id, array_keys($languages->db_languages))) + { + $language['state'] = 'active'; + $language['deactivable'] = true; + + if (count($languages->db_languages) <= 1) + { + $language['deactivable'] = false; + $language['deactivate_tooltip'] = l10n('Impossible to deactivate this language, you need at least one language.'); + } + + if ($language_id == $default_language) + { + $language['deactivable'] = false; + $language['deactivate_tooltip'] = l10n('Impossible to deactivate this language, first set another language as default.'); + } + } + else + { + $language['state'] = 'inactive'; + } + + if ($language_id == $default_language) + { + $language['is_default'] = true; + array_unshift($tpl_languages, $language); + } + else + { + $language['is_default'] = false; + $tpl_languages[] = $language; + } +} + +$template->assign( + array( + 'languages' => $tpl_languages, + ) + ); +$template->append('language_states', 'active'); +$template->append('language_states', 'inactive'); + + +$missing_language_ids = array_diff( + array_keys($languages->db_languages), + array_keys($languages->fs_languages) + ); + +foreach($missing_language_ids as $language_id) +{ + $query = ' +UPDATE '.USER_INFOS_TABLE.' + SET language = \''.get_default_language().'\' + WHERE language = \''.$language_id.'\' +;'; + pwg_query($query); + + $query = ' +DELETE + FROM '.LANGUAGES_TABLE.' + WHERE id= \''.$language_id.'\' +;'; + pwg_query($query); +} + +$template->assign_var_from_handle('ADMIN_CONTENT', 'languages'); +?> diff --git a/sources/admin/languages_new.php b/sources/admin/languages_new.php new file mode 100644 index 0000000..bf46cbb --- /dev/null +++ b/sources/admin/languages_new.php @@ -0,0 +1,128 @@ +set_filenames(array('languages' => 'languages_new.tpl')); + +$base_url = get_root_url().'admin.php?page='.$page['page'].'&tab='.$page['tab']; + +$languages = new languages(); +$languages->get_db_languages(); + +// +-----------------------------------------------------------------------+ +// | setup check | +// +-----------------------------------------------------------------------+ + +$languages_dir = PHPWG_ROOT_PATH.'language'; +if (!is_writable($languages_dir)) +{ + $page['errors'][] = l10n('Add write access to the "%s" directory', 'language'); +} + +// +-----------------------------------------------------------------------+ +// | perform installation | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['revision'])) +{ + if (!is_webmaster()) + { + $page['errors'][] = l10n('Webmaster status is required.'); + } + else + { + check_pwg_token(); + + $install_status = $languages->extract_language_files('install', $_GET['revision']); + + redirect($base_url.'&installstatus='.$install_status); + } +} + +// +-----------------------------------------------------------------------+ +// | installation result | +// +-----------------------------------------------------------------------+ +if (isset($_GET['installstatus'])) +{ + switch ($_GET['installstatus']) + { + case 'ok': + $page['infos'][] = l10n('Language has been successfully installed'); + break; + + case 'temp_path_error': + $page['errors'][] = l10n('Can\'t create temporary file.'); + break; + + case 'dl_archive_error': + $page['errors'][] = l10n('Can\'t download archive.'); + break; + + case 'archive_error': + $page['errors'][] = l10n('Can\'t read or extract archive.'); + break; + + default: + $page['errors'][] = l10n('An error occured during extraction (%s).', htmlspecialchars($_GET['installstatus'])); + } +} + +// +-----------------------------------------------------------------------+ +// | start template output | +// +-----------------------------------------------------------------------+ +if ($languages->get_server_languages(true)) +{ + foreach($languages->server_languages as $language) + { + list($date, ) = explode(' ', $language['revision_date']); + + $url_auto_install = htmlentities($base_url) + . '&revision=' . $language['revision_id'] + . '&pwg_token='.get_pwg_token() + ; + + $template->append('languages', array( + 'EXT_NAME' => $language['extension_name'], + 'EXT_DESC' => $language['extension_description'], + 'EXT_URL' => PEM_URL.'/extension_view.php?eid='.$language['extension_id'], + 'VERSION' => $language['revision_name'], + 'VER_DESC' => $language['revision_description'], + 'DATE' => $date, + 'AUTHOR' => $language['author_name'], + 'URL_INSTALL' => $url_auto_install, + 'URL_DOWNLOAD' => $language['download_url'] . '&origin=piwigo_download')); + } +} +else +{ + $page['errors'][] = l10n('Can\'t connect to server.'); +} + +$template->assign_var_from_handle('ADMIN_CONTENT', 'languages'); +?> \ No newline at end of file diff --git a/sources/admin/maintenance.php b/sources/admin/maintenance.php new file mode 100644 index 0000000..0b3e142 --- /dev/null +++ b/sources/admin/maintenance.php @@ -0,0 +1,234 @@ +maintenance(); + break; + } + case 'search' : + { + $query = ' +DELETE + FROM '.SEARCH_TABLE.' +;'; + pwg_query($query); + break; + } + case 'compiled-templates': + { + $template->delete_compiled_templates(); + FileCombiner::clear_combined_files(); + break; + } + case 'derivatives': + { + clear_derivative_cache($_GET['type']); + break; + } + default : + { + break; + } +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames(array('maintenance'=>'maintenance.tpl')); + +$url_format = get_root_url().'admin.php?page=maintenance&action=%s&pwg_token='.get_pwg_token(); + +$purge_urls[l10n('All')] = sprintf($url_format, 'derivatives').'&type=all'; +foreach(ImageStdParams::get_defined_type_map() as $params) +{ + $purge_urls[ l10n($params->type) ] = sprintf($url_format, 'derivatives').'&type='.$params->type; +} +$purge_urls[ l10n(IMG_CUSTOM) ] = sprintf($url_format, 'derivatives').'&type='.IMG_CUSTOM; + +$template->assign( + array( + 'U_MAINT_CATEGORIES' => sprintf($url_format, 'categories'), + 'U_MAINT_IMAGES' => sprintf($url_format, 'images'), + 'U_MAINT_ORPHAN_TAGS' => sprintf($url_format, 'delete_orphan_tags'), + 'U_MAINT_USER_CACHE' => sprintf($url_format, 'user_cache'), + 'U_MAINT_HISTORY_DETAIL' => sprintf($url_format, 'history_detail'), + 'U_MAINT_HISTORY_SUMMARY' => sprintf($url_format, 'history_summary'), + 'U_MAINT_SESSIONS' => sprintf($url_format, 'sessions'), + 'U_MAINT_FEEDS' => sprintf($url_format, 'feeds'), + 'U_MAINT_DATABASE' => sprintf($url_format, 'database'), + 'U_MAINT_C13Y' => sprintf($url_format, 'c13y'), + 'U_MAINT_SEARCH' => sprintf($url_format, 'search'), + 'U_MAINT_COMPILED_TEMPLATES' => sprintf($url_format, 'compiled-templates'), + 'U_MAINT_DERIVATIVES' => sprintf($url_format, 'derivatives'), + 'purge_derivatives' => $purge_urls, + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=maintenance', + ) + ); + + +if ($conf['gallery_locked']) +{ + $template->assign( + array( + 'U_MAINT_UNLOCK_GALLERY' => sprintf($url_format, 'unlock_gallery'), + ) + ); +} +else +{ + $template->assign( + array( + 'U_MAINT_LOCK_GALLERY' => sprintf($url_format, 'lock_gallery'), + ) + ); +} + +// +-----------------------------------------------------------------------+ +// | Define advanced features | +// +-----------------------------------------------------------------------+ + +$advanced_features = array(); + +//$advanced_features is array of array composed of CAPTION & URL +$advanced_features = trigger_event( + 'get_admin_advanced_features_links', + $advanced_features + ); + +$template->assign('advanced_features', $advanced_features); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'maintenance'); +?> \ No newline at end of file diff --git a/sources/admin/menubar.php b/sources/admin/menubar.php new file mode 100644 index 0000000..69e363c --- /dev/null +++ b/sources/admin/menubar.php @@ -0,0 +1,171 @@ +$pos) + { + $orders[$id] = $step * ($pos<0 ? -$crt : $crt); + $crt++; + } +} + + +global $template; + +include_once(PHPWG_ROOT_PATH.'include/block.class.php'); + +$menu = new BlockManager('menubar'); +$menu->load_registered_blocks(); +$reg_blocks = $menu->get_registered_blocks(); + +$mb_conf = @$conf[ 'blk_'.$menu->get_id() ]; +if ( is_string($mb_conf) ) + $mb_conf = unserialize( $mb_conf ); +if ( !is_array($mb_conf) ) + $mb_conf=array(); + +foreach ($mb_conf as $id => $pos) +{ + if (!isset($reg_blocks[$id])) + unset($mb_conf[$id]); +} + +if ( isset($_POST['reset'])) +{ + $mb_conf = array(); + $query = ' +UPDATE '.CONFIG_TABLE.' + SET value=\'\' + WHERE param=\'blk_'.addslashes($menu->get_id()).'\' + LIMIT 1'; + pwg_query($query); +} + + +$idx=1; +foreach ($reg_blocks as $id => $block) +{ + if ( !isset($mb_conf[$id]) ) + $mb_conf[$id] = $idx*50; + $idx++; +} + + +if ( isset($_POST['submit']) ) +{ + foreach ( $mb_conf as $id => $pos ) + { + $hide = isset($_POST['hide_'.$id]); + $mb_conf[$id] = ($hide ? -1 : +1)*abs($pos); + + $pos = (int)@$_POST['pos_'.$id]; + if ($pos>0) + $mb_conf[$id] = $mb_conf[$id] > 0 ? $pos : -$pos; + } + make_consecutive( $mb_conf ); + + // BEGIN OPTIM - DONT ASK ABOUT THIS ALGO - but optimizes the size of the array we save in DB + /* !!! OPTIM DISABLED UNTIL IT HAS BEEN FIXED !!! + $reg_keys = array_keys($reg_blocks); + $cnf_keys = array_keys($mb_conf); + $best_slice = array( 'len'=>0 ); + for ($i=0; $i$best_slice['len']) + { + $best_slice['len'] = 1+$k; + $best_slice['start_cnf'] = $j; + } + } + else + break; + } + } + } + */ + $mb_conf_db = $mb_conf; + /* + if ($best_slice['len']) + { + for ($j=0; $j<$best_slice['start_cnf']; $j++ ) + { + $sign = $mb_conf_db[ $cnf_keys[$j] ] > 0 ? 1 : -1; + $mb_conf_db[ $cnf_keys[$j] ] = $sign * ( ($best_slice['start_cnf'])*50 - ($best_slice['start_cnf']-$j) ); + } + for ($j=$best_slice['start_cnf']; $j<$best_slice['start_cnf']+$best_slice['len']; $j++ ) + { + if ($mb_conf_db[ $cnf_keys[$j] ] > 0) + unset( $mb_conf_db[ $cnf_keys[$j] ] ); + } + } + //var_export( $best_slice ); var_export($mb_conf); var_export($mb_conf_db); + // END OPTIM + */ + $query = ' +UPDATE '.CONFIG_TABLE.' + SET value=\''.addslashes(serialize($mb_conf_db)).'\' + WHERE param=\'blk_'.addslashes($menu->get_id()).'\' + '; + pwg_query($query); + + $page['infos'][] = l10n('Order of menubar items has been updated successfully.'); +} + +make_consecutive( $mb_conf ); + +foreach ($mb_conf as $id => $pos ) +{ + $template->append( 'blocks', + array( + 'pos' => $pos/5, + 'reg' => $reg_blocks[$id] + ) + ); +} + +$action = get_root_url().'admin.php?page=menubar'; +$template->assign(array('F_ACTION'=>$action)); + +$template->set_filename( 'menubar_admin_content', 'menubar.tpl' ); +$template->assign_var_from_handle( 'ADMIN_CONTENT', 'menubar_admin_content'); +?> diff --git a/sources/admin/notification_by_mail.php b/sources/admin/notification_by_mail.php new file mode 100644 index 0000000..51b2846 --- /dev/null +++ b/sources/admin/notification_by_mail.php @@ -0,0 +1,719 @@ + 0) + { + $inserts = array(); + $check_key_list = array(); + + while ($nbm_user = pwg_db_fetch_assoc($result)) + { + // Calculate key + $nbm_user['check_key'] = find_available_check_key(); + + // Save key + $check_key_list[] = $nbm_user['check_key']; + + // Insert new nbm_users + $inserts[] = array( + 'user_id' => $nbm_user['user_id'], + 'check_key' => $nbm_user['check_key'], + 'enabled' => 'false' // By default if false, set to true with specific functions + ); + + $page['infos'][] = l10n( + 'User %s [%s] added.', + stripslashes($nbm_user['username']), + $nbm_user['mail_address'] + ); + } + + // Insert new nbm_users + mass_inserts(USER_MAIL_NOTIFICATION_TABLE, array('user_id', 'check_key', 'enabled'), $inserts); + // Update field enabled with specific function + $check_key_treated = do_subscribe_unsubscribe_notification_by_mail + ( + true, + $conf['nbm_default_value_user_enabled'], + $check_key_list + ); + + // On timeout simulate like tabsheet send + if ($env_nbm['is_sendmail_timeout']) + { + $quoted_check_key_list = quote_check_key_list(array_diff($check_key_list, $check_key_treated)); + if (count($quoted_check_key_list) != 0 ) + { + $query = 'delete from '.USER_MAIL_NOTIFICATION_TABLE.' where check_key in ('.implode(",", $quoted_check_key_list).');'; + $result = pwg_query($query); + + redirect($base_url.get_query_string_diff(array(), false), l10n('Operation in progress')."\n".l10n('Please wait...')); + } + } + } +} + +/* + * Apply global functions to mail content + * return customize mail content rendered + */ +function render_global_customize_mail_content($customize_mail_content) +{ + global $conf; + + if ($conf['nbm_send_html_mail'] and !(strpos($customize_mail_content, '<') === 0)) + { + // On HTML mail, detects if the content are HTML format. + // If it's plain text format, convert content to readable HTML + return nl2br(htmlspecialchars($customize_mail_content)); + } + else + { + return $customize_mail_content; + } +} + +/* + * Send mail for notification to all users + * Return list of "selected" users for 'list_to_send' + * Return list of "treated" check_key for 'send' + */ +function do_action_send_mail_notification($action = 'list_to_send', $check_key_list = array(), $customize_mail_content = '') +{ + global $conf, $page, $user, $lang_info, $lang, $env_nbm; + $return_list = array(); + + if (in_array($action, array('list_to_send', 'send'))) + { + list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();')); + + $is_action_send = ($action == 'send'); + + // disabled and null mail_address are not selected in the list + $data_users = get_user_notifications('send', $check_key_list); + + // List all if it's define on options or on timeout + $is_list_all_without_test = ($env_nbm['is_sendmail_timeout'] or $conf['nbm_list_all_enabled_users_to_send']); + + // Check if exist news to list user or send mails + if ((!$is_list_all_without_test) or ($is_action_send)) + { + if (count($data_users) > 0) + { + $datas = array(); + + if (!isset($customize_mail_content)) + { + $customize_mail_content = $conf['nbm_complementary_mail_content']; + } + + $customize_mail_content = + trigger_event('nbm_render_global_customize_mail_content', $customize_mail_content); + + + // Prepare message after change language + if ($is_action_send) + { + $msg_break_timeout = l10n('Time to send mail is limited. Others mails are skipped.'); + } + else + { + $msg_break_timeout = l10n('Prepared time for list of users to send mail is limited. Others users are not listed.'); + } + + // Begin nbm users environment + begin_users_env_nbm($is_action_send); + + foreach ($data_users as $nbm_user) + { + if ((!$is_action_send) and check_sendmail_timeout()) + { + // Stop fill list on 'list_to_send', if the quota is override + $page['infos'][] = $msg_break_timeout; + break; + } + if (($is_action_send) and check_sendmail_timeout()) + { + // Stop fill list on 'send', if the quota is override + $page['errors'][] = $msg_break_timeout; + break; + } + + // set env nbm user + set_user_on_env_nbm($nbm_user, $is_action_send); + + if ($is_action_send) + { + set_make_full_url(); + // Fill return list of "treated" check_key for 'send' + $return_list[] = $nbm_user['check_key']; + + if ($conf['nbm_send_detailed_content']) + { + $news = news($nbm_user['last_send'], $dbnow, false, $conf['nbm_send_html_mail']); + $exist_data = count($news) > 0; + } + else + { + $exist_data = news_exists($nbm_user['last_send'], $dbnow); + } + + if ($exist_data) + { + $subject = '['.$conf['gallery_title'].'] '.l10n('New photos added'); + + // Assign current var for nbm mail + assign_vars_nbm_mail_content($nbm_user); + + if (!is_null($nbm_user['last_send'])) + { + $env_nbm['mail_template']->assign + ( + 'content_new_elements_between', + array + ( + 'DATE_BETWEEN_1' => $nbm_user['last_send'], + 'DATE_BETWEEN_2' => $dbnow, + ) + ); + } + else + { + $env_nbm['mail_template']->assign + ( + 'content_new_elements_single', + array + ( + 'DATE_SINGLE' => $dbnow, + ) + ); + } + + if ($conf['nbm_send_detailed_content']) + { + $env_nbm['mail_template']->assign('global_new_lines', $news); + } + + $nbm_user_customize_mail_content = + trigger_event('nbm_render_user_customize_mail_content', + $customize_mail_content, $nbm_user); + if (!empty($nbm_user_customize_mail_content)) + { + $env_nbm['mail_template']->assign + ( + 'custom_mail_content', $nbm_user_customize_mail_content + ); + } + + if ($conf['nbm_send_html_mail'] and $conf['nbm_send_recent_post_dates']) + { + $recent_post_dates = get_recent_post_dates_array( + $conf['recent_post_dates']['NBM']); + foreach ($recent_post_dates as $date_detail) + { + $env_nbm['mail_template']->append + ( + 'recent_posts', + array + ( + 'TITLE' => get_title_recent_post_date($date_detail), + 'HTML_DATA' => get_html_description_recent_post_date($date_detail) + ) + ); + } + } + + $env_nbm['mail_template']->assign + ( + array + ( + 'GOTO_GALLERY_TITLE' => $conf['gallery_title'], + 'GOTO_GALLERY_URL' => get_gallery_home_url(), + 'SEND_AS_NAME' => $env_nbm['send_as_name'], + ) + ); + + $ret = pwg_mail( + array( + 'name' => stripslashes($nbm_user['username']), + 'email' => $nbm_user['mail_address'], + ), + array( + 'from' => $env_nbm['send_as_mail_formated'], + 'subject' => $subject, + 'email_format' => $env_nbm['email_format'], + 'content' => $env_nbm['mail_template']->parse('notification_by_mail', true), + 'content_format' => $env_nbm['email_format'], + ) + ); + + if ($ret) + { + inc_mail_sent_success($nbm_user); + + $datas[] = array( + 'user_id' => $nbm_user['user_id'], + 'last_send' => $dbnow + ); + } + else + { + inc_mail_sent_failed($nbm_user); + } + + unset_make_full_url(); + } + } + else + { + if (news_exists($nbm_user['last_send'], $dbnow)) + { + // Fill return list of "selected" users for 'list_to_send' + $return_list[] = $nbm_user; + } + } + + // unset env nbm user + unset_user_on_env_nbm(); + } + + // Restore nbm environment + end_users_env_nbm(); + + if ($is_action_send) + { + mass_updates( + USER_MAIL_NOTIFICATION_TABLE, + array( + 'primary' => array('user_id'), + 'update' => array('last_send') + ), + $datas + ); + + display_counter_info(); + } + } + else + { + if ($is_action_send) + { + $page['errors'][] = l10n('No user to send notifications by mail.'); + } + } + } + else + { + // Quick List, don't check news + // Fill return list of "selected" users for 'list_to_send' + $return_list = $data_users; + } + } + + // Return list of "selected" users for 'list_to_send' + // Return list of "treated" check_key for 'send' + return $return_list; +} + +// +-----------------------------------------------------------------------+ +// | Main | +// +-----------------------------------------------------------------------+ +if (!isset($_GET['mode'])) +{ + $page['mode'] = 'send'; +} +else +{ + $page['mode'] = $_GET['mode']; +} + +// +-----------------------------------------------------------------------+ +// | Check Access and exit when user status is not ok | +// +-----------------------------------------------------------------------+ +check_status(get_tab_status($page['mode'])); + + +// +-----------------------------------------------------------------------+ +// | Add event handler | +// +-----------------------------------------------------------------------+ +add_event_handler('nbm_render_global_customize_mail_content', 'render_global_customize_mail_content'); +trigger_action('nbm_event_handler_added'); + + +// +-----------------------------------------------------------------------+ +// | Insert new users with mails | +// +-----------------------------------------------------------------------+ +if (!isset($_POST) or (count($_POST) ==0)) +{ + // No insert data in post mode + insert_new_data_user_mail_notification(); +} + +// +-----------------------------------------------------------------------+ +// | Treatment of tab post | +// +-----------------------------------------------------------------------+ +switch ($page['mode']) +{ + case 'param' : + { + if (isset($_POST['param_submit'])) + { + $updated_param_count = 0; + // Update param + $result = pwg_query('select param, value from '.CONFIG_TABLE.' where param like \'nbm\\_%\''); + while ($nbm_user = pwg_db_fetch_assoc($result)) + { + if (isset($_POST[$nbm_user['param']])) + { + $value = $_POST[$nbm_user['param']]; + + $query = ' +update +'.CONFIG_TABLE.' +set + value = \''. str_replace("\'", "''", $value).'\' +where + param = \''.$nbm_user['param'].'\';'; + pwg_query($query); + $updated_param_count += 1; + } + } + + $page['infos'][] = l10n_dec( + '%d parameter was updated.', '%d parameters were updated.', + $updated_param_count + ); + + // Reload conf with new values + load_conf_from_db('param like \'nbm\\_%\''); + } + } + case 'subscribe' : + { + if (isset($_POST['falsify']) and isset($_POST['cat_true'])) + { + $check_key_treated = unsubscribe_notification_by_mail(true, $_POST['cat_true']); + do_timeout_treatment('cat_true', $check_key_treated); + } + else + if (isset($_POST['trueify']) and isset($_POST['cat_false'])) + { + $check_key_treated = subscribe_notification_by_mail(true, $_POST['cat_false']); + do_timeout_treatment('cat_false', $check_key_treated); + } + break; + } + + case 'send' : + { + if (isset($_POST['send_submit']) and isset($_POST['send_selection']) and isset($_POST['send_customize_mail_content'])) + { + $check_key_treated = do_action_send_mail_notification('send', $_POST['send_selection'], stripslashes($_POST['send_customize_mail_content'])); + do_timeout_treatment('send_selection', $check_key_treated); + } + } +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ +$template->set_filenames +( + array + ( + 'double_select' => 'double_select.tpl', + 'notification_by_mail'=>'notification_by_mail.tpl' + ) +); + +$template->assign +( + array + ( + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=notification_by_mail', + 'F_ACTION'=> $base_url.get_query_string_diff(array()) + ) +); + +if (is_autorize_status(ACCESS_WEBMASTER)) +{ + // TabSheet + $tabsheet = new tabsheet(); + $tabsheet->set_id('nbm'); + $tabsheet->select($page['mode']); + $tabsheet->assign(); +} + +if ($must_repost) +{ + // Get name of submit button + $repost_submit_name = ''; + if (isset($_POST['falsify'])) + { + $repost_submit_name = 'falsify'; + } + elseif (isset($_POST['trueify'])) + { + $repost_submit_name = 'trueify'; + } + elseif (isset($_POST['send_submit'])) + { + $repost_submit_name = 'send_submit'; + } + + $template->assign('REPOST_SUBMIT_NAME', $repost_submit_name); +} + +switch ($page['mode']) +{ + case 'param' : + { + $template->assign( + $page['mode'], + array( + 'SEND_HTML_MAIL' => $conf['nbm_send_html_mail'], + 'SEND_MAIL_AS' => $conf['nbm_send_mail_as'], + 'SEND_DETAILED_CONTENT' => $conf['nbm_send_detailed_content'], + 'COMPLEMENTARY_MAIL_CONTENT' => $conf['nbm_complementary_mail_content'], + 'SEND_RECENT_POST_DATES' => $conf['nbm_send_recent_post_dates'], + )); + break; + } + + case 'subscribe' : + { + $template->assign( $page['mode'], true ); + + $template->assign( + array( + 'L_CAT_OPTIONS_TRUE' => l10n('Subscribed'), + 'L_CAT_OPTIONS_FALSE' => l10n('Unsubscribed') + ) + ); + + $data_users = get_user_notifications('subscribe'); + + $opt_true = array(); + $opt_true_selected = array(); + $opt_false = array(); + $opt_false_selected = array(); + foreach ($data_users as $nbm_user) + { + if (get_boolean($nbm_user['enabled'])) + { + $opt_true[ $nbm_user['check_key'] ] = stripslashes($nbm_user['username']).'['.$nbm_user['mail_address'].']'; + if ((isset($_POST['falsify']) and isset($_POST['cat_true']) and in_array($nbm_user['check_key'], $_POST['cat_true']))) + { + $opt_true_selected[] = $nbm_user['check_key']; + } + } + else + { + $opt_false[ $nbm_user['check_key'] ] = stripslashes($nbm_user['username']).'['.$nbm_user['mail_address'].']'; + if (isset($_POST['trueify']) and isset($_POST['cat_false']) and in_array($nbm_user['check_key'], $_POST['cat_false'])) + { + $opt_false_selected[] = $nbm_user['check_key']; + } + } + } + $template->assign( array( + 'category_option_true' => $opt_true, + 'category_option_true_selected' => $opt_true_selected, + 'category_option_false' => $opt_false, + 'category_option_false_selected' => $opt_false_selected, + ) + ); + $template->assign_var_from_handle('DOUBLE_SELECT', 'double_select'); + break; + } + + case 'send' : + { + $tpl_var = array('users'=> array() ); + + $data_users = do_action_send_mail_notification('list_to_send'); + + $tpl_var['CUSTOMIZE_MAIL_CONTENT'] = + isset($_POST['send_customize_mail_content']) + ? stripslashes($_POST['send_customize_mail_content']) + : $conf['nbm_complementary_mail_content']; + + if (count($data_users)) + { + foreach ($data_users as $nbm_user) + { + if ( + (!$must_repost) or // Not timeout, normal treatment + (($must_repost) and in_array($nbm_user['check_key'], $_POST['send_selection'])) // Must be repost, show only user to send + ) + { + $tpl_var['users'][] = + array( + 'ID' => $nbm_user['check_key'], + 'CHECKED' => ( // not check if not selected, on init select stripslashes($nbm_user['username']), + 'EMAIL' => $nbm_user['mail_address'], + 'LAST_SEND'=> $nbm_user['last_send'] + ); + } + } + } + $template->assign($page['mode'], $tpl_var); + break; + } +} + +// +-----------------------------------------------------------------------+ +// | Sending html code | +// +-----------------------------------------------------------------------+ +$template->assign_var_from_handle('ADMIN_CONTENT', 'notification_by_mail'); + +?> diff --git a/sources/admin/permalinks.php b/sources/admin/permalinks.php new file mode 100644 index 0000000..72f9513 --- /dev/null +++ b/sources/admin/permalinks.php @@ -0,0 +1,189 @@ + $value) + { + if (!in_array($key, $get_rejects) and $key!=$get_param) + { + $base_url .= $is_first ? '?' : '&'; + $is_first = false; + $base_url .= $key.'='.urlencode($value); + } + } + + $ret = array(); + foreach( $sortable_by as $field) + { + $url = $base_url; + $disp = '↓'; // TODO: an small image is better + + if ( $field !== @$_GET[$get_param] ) + { + if ( !isset($default_field) or $default_field!=$field ) + { // the first should be the default + $url = add_url_params($url, array($get_param=>$field) ); + } + elseif (isset($default_field) and !isset($_GET[$get_param]) ) + { + $ret[] = $field; + $disp = ''.$disp.''; + } + } + else + { + $ret[] = $field; + $disp = ''.$disp.''; + } + if ( isset($template_var) ) + { + $template->assign( $template_var.strtoupper($field), + ''.$disp.'' + ); + } + } + return $ret; +} + +if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!'); + +include_once(PHPWG_ROOT_PATH.'admin/include/functions_permalinks.php'); + +$selected_cat = array(); +if ( isset($_POST['set_permalink']) and $_POST['cat_id']>0 ) +{ + $permalink = $_POST['permalink']; + if ( empty($permalink) ) + delete_cat_permalink($_POST['cat_id'], isset($_POST['save']) ); + else + set_cat_permalink($_POST['cat_id'], $permalink, isset($_POST['save']) ); + $selected_cat = array( $_POST['cat_id'] ); +} +elseif ( isset($_GET['delete_permanent']) ) +{ + $query = ' +DELETE FROM '.OLD_PERMALINKS_TABLE.' + WHERE permalink=\''.$_GET['delete_permanent'].'\' + LIMIT 1'; + $result = pwg_query($query); + if (pwg_db_changes($result)==0) + { + $page['errors'][] = l10n('Cannot delete the old permalink !'); + } +} + + +$template->set_filename('permalinks', 'permalinks.tpl' ); + +// +-----------------------------------------------------------------------+ +// | tabs | +// +-----------------------------------------------------------------------+ + +$page['tab'] = 'permalinks'; +include(PHPWG_ROOT_PATH.'admin/include/albums_tab.inc.php'); + + +$query = ' +SELECT + id, permalink, + CONCAT(id, " - ", name, IF(permalink IS NULL, "", " √") ) AS name, + uppercats, global_rank +FROM '.CATEGORIES_TABLE; + +display_select_cat_wrapper( $query, $selected_cat, 'categories', false ); + + +// --- generate display of active permalinks ----------------------------------- +$sort_by = parse_sort_variables( + array('id', 'name', 'permalink'), 'name', + 'psf', + array('delete_permanent'), + 'SORT_' ); + +$query = ' +SELECT id, permalink, uppercats, global_rank + FROM '.CATEGORIES_TABLE.' + WHERE permalink IS NOT NULL +'; +if ( $sort_by[0]=='id' or $sort_by[0]=='permalink' ) +{ + $query .= ' ORDER BY '.$sort_by[0]; +} +$categories=array(); +$result=pwg_query($query); +while ( $row = pwg_db_fetch_assoc($result) ) +{ + $row['name'] = get_cat_display_name_cache( $row['uppercats'] ); + $categories[] = $row; +} + +if ( $sort_by[0]=='name') +{ + usort($categories, 'global_rank_compare'); +} +$template->assign( 'permalinks', $categories ); + +// --- generate display of old permalinks -------------------------------------- + +$sort_by = parse_sort_variables( + array('cat_id','permalink','date_deleted','last_hit','hit'), null, + 'dpsf', + array('delete_permanent'), + 'SORT_OLD_', '#old_permalinks' ); + +$url_del_base = get_root_url().'admin.php?page=permalinks'; +$query = 'SELECT * FROM '.OLD_PERMALINKS_TABLE; +if ( count($sort_by) ) +{ + $query .= ' ORDER BY '.$sort_by[0]; +} +$result = pwg_query($query); +$deleted_permalinks=array(); +while ( $row = pwg_db_fetch_assoc($result) ) +{ + $row['name'] = get_cat_display_name_cache($row['cat_id']); + $row['U_DELETE'] = + add_url_params( + $url_del_base, + array( 'delete_permanent'=> $row['permalink'] ) + ); + $deleted_permalinks[] = $row; +} +$template->assign('deleted_permalinks', $deleted_permalinks); +$template->assign('U_HELP', get_root_url().'admin/popuphelp.php?page=permalinks'); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'permalinks'); +?> diff --git a/sources/admin/photo.php b/sources/admin/photo.php new file mode 100644 index 0000000..b99a76c --- /dev/null +++ b/sources/admin/photo.php @@ -0,0 +1,84 @@ +set_id('photo'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | Load the tab | +// +-----------------------------------------------------------------------+ + +if ('properties' == $page['tab']) +{ + include(PHPWG_ROOT_PATH.'admin/picture_modify.php'); +} +elseif ('coi' == $page['tab']) +{ + include(PHPWG_ROOT_PATH.'admin/picture_coi.php'); +} +else +{ + include(PHPWG_ROOT_PATH.'admin/photo_'.$page['tab'].'.php'); +} +?> \ No newline at end of file diff --git a/sources/admin/photos_add.php b/sources/admin/photos_add.php new file mode 100644 index 0000000..72bf991 --- /dev/null +++ b/sources/admin/photos_add.php @@ -0,0 +1,89 @@ +set_id('photos_add'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames( + array( + 'photos_add' => 'photos_add_'.$page['tab'].'.tpl' + ) + ); + +// +-----------------------------------------------------------------------+ +// | Load the tab | +// +-----------------------------------------------------------------------+ + +include(PHPWG_ROOT_PATH.'admin/photos_add_'.$page['tab'].'.php'); +?> \ No newline at end of file diff --git a/sources/admin/photos_add_applications.php b/sources/admin/photos_add_applications.php new file mode 100644 index 0000000..82c95fd --- /dev/null +++ b/sources/admin/photos_add_applications.php @@ -0,0 +1,47 @@ +assign( + array( + 'URL_DOWNLOAD_WINDOWS' => $conf['ploader_download_windows'], + 'URL_DOWNLOAD_MAC' => $conf['ploader_download_mac'], + 'URL_DOWNLOAD_LINUX' => $conf['ploader_download_linux'], + ) + ); + + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'photos_add'); +?> \ No newline at end of file diff --git a/sources/admin/photos_add_direct.php b/sources/admin/photos_add_direct.php new file mode 100644 index 0000000..10f71e0 --- /dev/null +++ b/sources/admin/photos_add_direct.php @@ -0,0 +1,77 @@ + $user['id'], + 'element_id' => $image_id, + ); + } + mass_inserts( + CADDIE_TABLE, + array_keys($inserts[0]), + $inserts + ); + + redirect(get_root_url().'admin.php?page=batch_manager&filter=prefilter-caddie'); +} + +// +-----------------------------------------------------------------------+ +// | process form | +// +-----------------------------------------------------------------------+ + +include_once(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_process.inc.php'); + +// +-----------------------------------------------------------------------+ +// | prepare form | +// +-----------------------------------------------------------------------+ + +include_once(PHPWG_ROOT_PATH.'admin/include/photos_add_direct_prepare.inc.php'); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'photos_add'); +?> diff --git a/sources/admin/photos_add_ftp.php b/sources/admin/photos_add_ftp.php new file mode 100644 index 0000000..5655d0f --- /dev/null +++ b/sources/admin/photos_add_ftp.php @@ -0,0 +1,47 @@ +assign( + 'FTP_HELP_CONTENT', + load_language( + 'help/photos_add_ftp.html', + '', + array('return'=>true) + ) + ); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'photos_add'); +?> \ No newline at end of file diff --git a/sources/admin/picture_coi.php b/sources/admin/picture_coi.php new file mode 100644 index 0000000..6ad8fa9 --- /dev/null +++ b/sources/admin/picture_coi.php @@ -0,0 +1,113 @@ +sizing->max_crop != 0) + { + delete_element_derivatives($row, $params->type); + } + } + delete_element_derivatives($row, IMG_CUSTOM); + $uid = '&b='.time(); + $conf['question_mark_in_urls'] = $conf['php_extension_in_urls'] = true; + if ($conf['derivative_url_style']==1) + { + $conf['derivative_url_style']=0; //auto + } +} +else +{ + $uid = ''; +} + +$tpl_var = array( + 'TITLE' => render_element_name($row), + 'ALT' => $row['file'], + 'U_IMG' => DerivativeImage::url(IMG_LARGE, $row), + ); + +if (!empty($row['coi'])) +{ + $tpl_var['coi'] = array( + 'l'=> char_to_fraction($row['coi'][0]), + 't'=> char_to_fraction($row['coi'][1]), + 'r'=> char_to_fraction($row['coi'][2]), + 'b'=> char_to_fraction($row['coi'][3]), + ); +} + +foreach(ImageStdParams::get_defined_type_map() as $params) +{ + if ($params->sizing->max_crop != 0) + { + $derivative = new DerivativeImage($params, new SrcImage($row) ); + $template->append( 'cropped_derivatives', array( + 'U_IMG' => $derivative->get_url().$uid, + 'HTM_SIZE' => $derivative->get_size_htm(), + ) ); + } +} + + +$template->assign($tpl_var); +$template->set_filename('picture_coi', 'picture_coi.tpl'); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'picture_coi'); +?> diff --git a/sources/admin/picture_modify.php b/sources/admin/picture_modify.php new file mode 100644 index 0000000..23b28b7 --- /dev/null +++ b/sources/admin/picture_modify.php @@ -0,0 +1,484 @@ + get_cat_info($_GET['cat_id']) + ) + ) + ); + } + + $query = ' +SELECT category_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE image_id = '.$_GET['image_id'].' +;'; + + $authorizeds = array_diff( + array_from_query($query, 'category_id'), + explode(',', calculate_permissions($user['id'], $user['status'])) + ); + + foreach ($authorizeds as $category_id) + { + redirect( + make_index_url( + array( + 'category' => get_cat_info($category_id) + ) + ) + ); + } + + redirect(make_index_url()); +} + +// +-----------------------------------------------------------------------+ +// | synchronize metadata | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['sync_metadata'])) +{ + sync_metadata(array( intval($_GET['image_id']))); + $page['infos'][] = l10n('Metadata synchronized from file'); +} + +//--------------------------------------------------------- update informations + +// first, we verify whether there is a mistake on the given creation date +if (isset($_POST['date_creation_action']) + and 'set' == $_POST['date_creation_action']) +{ + if (!is_numeric($_POST['date_creation_year']) + or !checkdate( + $_POST['date_creation_month'], + $_POST['date_creation_day'], + $_POST['date_creation_year']) + ) + { + $page['errors'][] = l10n('wrong date'); + } +} + +if (isset($_POST['submit']) and count($page['errors']) == 0) +{ + $data = array(); + $data{'id'} = $_GET['image_id']; + $data{'name'} = $_POST['name']; + $data{'author'} = $_POST['author']; + $data['level'] = $_POST['level']; + + if ($conf['allow_html_descriptions']) + { + $data{'comment'} = @$_POST['description']; + } + else + { + $data{'comment'} = strip_tags(@$_POST['description']); + } + + if (!empty($_POST['date_creation_year'])) + { + $data{'date_creation'} = + $_POST['date_creation_year'] + .'-'.$_POST['date_creation_month'] + .'-'.$_POST['date_creation_day'] + .' '.$_POST['date_creation_time']; + } + else + { + $data{'date_creation'} = null; + } + + $data = trigger_change('picture_modify_before_update', $data); + + single_update( + IMAGES_TABLE, + $data, + array('id' => $data['id']) + ); + + // time to deal with tags + $tag_ids = array(); + if (!empty($_POST['tags'])) + { + $tag_ids = get_tag_ids($_POST['tags']); + } + set_tags($tag_ids, $_GET['image_id']); + + // association to albums + if (!isset($_POST['associate'])) + { + $_POST['associate'] = array(); + } + move_images_to_categories(array($_GET['image_id']), $_POST['associate']); + + invalidate_user_cache(); + + // thumbnail for albums + if (!isset($_POST['represent'])) + { + $_POST['represent'] = array(); + } + + $no_longer_thumbnail_for = array_diff($represent_options_selected, $_POST['represent']); + if (count($no_longer_thumbnail_for) > 0) + { + set_random_representant($no_longer_thumbnail_for); + } + + $new_thumbnail_for = array_diff($_POST['represent'], $represent_options_selected); + if (count($new_thumbnail_for) > 0) + { + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = '.$_GET['image_id'].' + WHERE id IN ('.implode(',', $new_thumbnail_for).') +;'; + pwg_query($query); + } + + $represent_options_selected = $_POST['represent']; + + $page['infos'][] = l10n('Photo informations updated'); +} + +// tags +$query = ' +SELECT + id, + name + FROM '.IMAGE_TAG_TABLE.' AS it + JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id + WHERE image_id = '.$_GET['image_id'].' +;'; +$tag_selection = get_taglist($query); + +$query = ' +SELECT + id, + name + FROM '.TAGS_TABLE.' +;'; +$tags = get_taglist($query, false); + +// retrieving direct information about picture +$query = ' +SELECT * + FROM '.IMAGES_TABLE.' + WHERE id = '.$_GET['image_id'].' +;'; +$row = pwg_db_fetch_assoc(pwg_query($query)); + +$storage_category_id = null; +if (!empty($row['storage_category_id'])) +{ + $storage_category_id = $row['storage_category_id']; +} + +$image_file = $row['file']; + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames( + array( + 'picture_modify' => 'picture_modify.tpl' + ) + ); + +$admin_url_start = $admin_photo_base_url.'-properties'; +$admin_url_start.= isset($_GET['cat_id']) ? '&cat_id='.$_GET['cat_id'] : ''; + +$template->assign( + array( + 'tag_selection' => $tag_selection, + 'tags' => $tags, + 'U_SYNC' => $admin_url_start.'&sync_metadata=1', + 'U_DELETE' => $admin_url_start.'&delete=1&pwg_token='.get_pwg_token(), + + 'PATH'=>$row['path'], + + 'TN_SRC' => DerivativeImage::thumb_url($row), + + 'NAME' => + isset($_POST['name']) ? + stripslashes($_POST['name']) : @$row['name'], + + 'TITLE' => render_element_name($row), + + 'DIMENSIONS' => @$row['width'].' * '.@$row['height'], + + 'FILESIZE' => @$row['filesize'].' KB', + + 'REGISTRATION_DATE' => format_date($row['date_available']), + + 'AUTHOR' => htmlspecialchars( + isset($_POST['author']) + ? stripslashes($_POST['author']) + : @$row['author'] + ), + + 'DESCRIPTION' => + htmlspecialchars( isset($_POST['description']) ? + stripslashes($_POST['description']) : @$row['comment'] ), + + 'F_ACTION' => + get_root_url().'admin.php' + .get_query_string_diff(array('sync_metadata')) + ) + ); + +$added_by = 'N/A'; +$query = ' +SELECT '.$conf['user_fields']['username'].' AS username + FROM '.USERS_TABLE.' + WHERE '.$conf['user_fields']['id'].' = '.$row['added_by'].' +;'; +$result = pwg_query($query); +while ($user_row = pwg_db_fetch_assoc($result)) +{ + $row['added_by'] = $user_row['username']; +} + +$intro_vars = array( + 'file' => l10n('Original file : %s', $row['file']), + 'add_date' => l10n('Posted %s on %s', time_since($row['date_available'], 'year'), format_date($row['date_available'], false, false)), + 'added_by' => l10n('Added by %s', $row['added_by']), + 'size' => $row['width'].'×'.$row['height'].' pixels, '.sprintf('%.2f', $row['filesize']/1024).'MB', + 'stats' => l10n('Visited %d times', $row['hit']), + 'id' => l10n('Numeric identifier : %d', $row['id']), + ); + +if ($conf['rate'] and !empty($row['rating_score'])) +{ + $query = ' +SELECT + COUNT(*) + FROM '.RATE_TABLE.' + WHERE element_id = '.$_GET['image_id'].' +;'; + list($row['nb_rates']) = pwg_db_fetch_row(pwg_query($query)); + + $intro_vars['stats'].= ', '.sprintf(l10n('Rated %d times, score : %.2f'), $row['nb_rates'], $row['rating_score']); +} + +$template->assign('INTRO', $intro_vars); + + +if (in_array(get_extension($row['path']),$conf['picture_ext'])) +{ + $template->assign('U_COI', get_root_url().'admin.php?page=picture_coi&image_id='.$_GET['image_id']); +} + +// image level options +$selected_level = isset($_POST['level']) ? $_POST['level'] : $row['level']; +$template->assign( + array( + 'level_options'=> get_privacy_level_options(), + 'level_options_selected' => array($selected_level) + ) + ); + +// creation date +unset($day, $month, $year); + +if (isset($_POST['date_creation_action']) + and 'set' == $_POST['date_creation_action']) +{ + foreach (array('day', 'month', 'year', 'time') as $varname) + { + $$varname = $_POST['date_creation_'.$varname]; + } +} +else if (isset($row['date_creation']) and !empty($row['date_creation'])) +{ + list($year, $month, $day) = explode('-', substr($row['date_creation'],0,10)); + $time = substr($row['date_creation'],11); +} +else +{ + list($year, $month, $day) = array('', 0, 0); + $time = '00:00:00'; +} + + +$month_list = $lang['month']; +$month_list[0]='------------'; +ksort($month_list); + +$template->assign( + array( + 'DATE_CREATION_DAY_VALUE' => (int)$day, + 'DATE_CREATION_MONTH_VALUE' => (int)$month, + 'DATE_CREATION_YEAR_VALUE' => $year, + 'DATE_CREATION_TIME_VALUE' => $time, + 'month_list' => $month_list, + ) + ); + +$query = ' +SELECT category_id, uppercats + FROM '.IMAGE_CATEGORY_TABLE.' AS ic + INNER JOIN '.CATEGORIES_TABLE.' AS c + ON c.id = ic.category_id + WHERE image_id = '.$_GET['image_id'].' +;'; +$result = pwg_query($query); + +while ($row = pwg_db_fetch_assoc($result)) +{ + $name = + get_cat_display_name_cache( + $row['uppercats'], + get_root_url().'admin.php?page=album-' + ); + + if ($row['category_id'] == $storage_category_id) + { + $template->assign('STORAGE_CATEGORY', $name); + } + else + { + $template->append('related_categories', $name); + } +} + +// jump to link +// +// 1. find all linked categories that are reachable for the current user. +// 2. if a category is available in the URL, use it if reachable +// 3. if URL category not available or reachable, use the first reachable +// linked category +// 4. if no category reachable, no jumpto link + +$query = ' +SELECT category_id + FROM '.IMAGE_CATEGORY_TABLE.' + WHERE image_id = '.$_GET['image_id'].' +;'; + +$authorizeds = array_diff( + array_from_query($query, 'category_id'), + explode( + ',', + calculate_permissions($user['id'], $user['status']) + ) + ); + +if (isset($_GET['cat_id']) + and in_array($_GET['cat_id'], $authorizeds)) +{ + $url_img = make_picture_url( + array( + 'image_id' => $_GET['image_id'], + 'image_file' => $image_file, + 'category' => $cache['cat_names'][ $_GET['cat_id'] ], + ) + ); +} +else +{ + foreach ($authorizeds as $category) + { + $url_img = make_picture_url( + array( + 'image_id' => $_GET['image_id'], + 'image_file' => $image_file, + 'category' => $cache['cat_names'][ $category ], + ) + ); + break; + } +} + +if (isset($url_img)) +{ + $template->assign( 'U_JUMPTO', $url_img ); +} + +// associate to albums +$query = ' +SELECT id + FROM '.CATEGORIES_TABLE.' + INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id = category_id + WHERE image_id = '.$_GET['image_id'].' +;'; +$associate_options_selected = array_from_query($query, 'id'); + +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' +;'; +display_select_cat_wrapper($query, $associate_options_selected, 'associate_options'); +display_select_cat_wrapper($query, $represent_options_selected, 'represent_options'); + +//----------------------------------------------------------- sending html code + +$template->assign_var_from_handle('ADMIN_CONTENT', 'picture_modify'); +?> diff --git a/sources/admin/plugin.php b/sources/admin/plugin.php new file mode 100644 index 0000000..b636608 --- /dev/null +++ b/sources/admin/plugin.php @@ -0,0 +1,62 @@ + \ No newline at end of file diff --git a/sources/admin/plugins.php b/sources/admin/plugins.php new file mode 100644 index 0000000..efe3bd8 --- /dev/null +++ b/sources/admin/plugins.php @@ -0,0 +1,48 @@ +set_id('plugins'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +if ($page['tab'] == 'update') + include(PHPWG_ROOT_PATH.'admin/updates_ext.php'); +else + include(PHPWG_ROOT_PATH.'admin/plugins_'.$page['tab'].'.php'); + +?> \ No newline at end of file diff --git a/sources/admin/plugins_installed.php b/sources/admin/plugins_installed.php new file mode 100644 index 0000000..d23e51c --- /dev/null +++ b/sources/admin/plugins_installed.php @@ -0,0 +1,209 @@ +set_filenames(array('plugins' => 'plugins_installed.tpl')); + +// should we display details on plugins? +if (isset($_GET['show_details'])) +{ + if (1 == $_GET['show_details']) + { + $show_details = true; + } + else + { + $show_details = false; + } + + pwg_set_session_var('plugins_show_details', $show_details); +} +elseif (null != pwg_get_session_var('plugins_show_details')) +{ + $show_details = pwg_get_session_var('plugins_show_details'); +} +else +{ + $show_details = false; +} + +$base_url = get_root_url().'admin.php?page='.$page['page']; +$pwg_token = get_pwg_token(); +$action_url = $base_url.'&plugin='.'%s'.'&pwg_token='.$pwg_token; + +$plugins = new plugins(); + +//--------------------------------------------------perform requested actions +if (isset($_GET['action']) and isset($_GET['plugin'])) +{ + if (!is_webmaster()) + { + $page['errors'][] = l10n('Webmaster status is required.'); + } + else + { + check_pwg_token(); + + $page['errors'] = $plugins->perform_action($_GET['action'], $_GET['plugin']); + + if (empty($page['errors'])) + { + if ($_GET['action'] == 'activate' or $_GET['action'] == 'deactivate') + { + $template->delete_compiled_templates(); + } + redirect($base_url); + } + } +} + +//--------------------------------------------------------Incompatible Plugins +if (isset($_GET['incompatible_plugins'])) +{ + $incompatible_plugins = array(); + foreach ($plugins->get_incompatible_plugins() as $plugin => $version) + { + if ($plugin == '~~expire~~') continue; + $incompatible_plugins[] = $plugin; + + } + echo json_encode($incompatible_plugins); + exit; +} + +// +-----------------------------------------------------------------------+ +// | start template output | +// +-----------------------------------------------------------------------+ + +$plugins->sort_fs_plugins('name'); +$merged_extensions = $plugins->get_merged_extensions(); +$merged_plugins = false; +$tpl_plugins = array(); +$active_plugins = 0; + +foreach($plugins->fs_plugins as $plugin_id => $fs_plugin) +{ + if (isset($_SESSION['incompatible_plugins'][$plugin_id]) + and $fs_plugin['version'] != $_SESSION['incompatible_plugins'][$plugin_id]) + { + // Incompatible plugins must be reinitilized + unset($_SESSION['incompatible_plugins']); + } + + $tpl_plugin = array( + 'ID' => $plugin_id, + 'NAME' => $fs_plugin['name'], + 'VISIT_URL' => $fs_plugin['uri'], + 'VERSION' => $fs_plugin['version'], + 'DESC' => $fs_plugin['description'], + 'AUTHOR' => $fs_plugin['author'], + 'AUTHOR_URL' => @$fs_plugin['author uri'], + 'U_ACTION' => sprintf($action_url, $plugin_id), + ); + + if (isset($plugins->db_plugins_by_id[$plugin_id])) + { + $tpl_plugin['STATE'] = $plugins->db_plugins_by_id[$plugin_id]['state']; + } + else + { + $tpl_plugin['STATE'] = 'inactive'; + } + + if (isset($fs_plugin['extension']) and isset($merged_extensions[$fs_plugin['extension']])) + { + // Deactivate manually plugin from database + $query = 'UPDATE '.PLUGINS_TABLE.' SET state=\'inactive\' WHERE id=\''.$plugin_id.'\''; + pwg_query($query); + + $tpl_plugin['STATE'] = 'merged'; + $tpl_plugin['DESC'] = l10n('THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'); + $merged_plugins = true; + } + + if ($tpl_plugin['STATE'] == 'active') + { + $active_plugins++; + } + + $tpl_plugins[] = $tpl_plugin; +} + +$template->append('plugin_states', 'active'); +$template->append('plugin_states', 'inactive'); + +if ($merged_plugins) +{ + $template->append('plugin_states', 'merged'); +} + +$missing_plugin_ids = array_diff( + array_keys($plugins->db_plugins_by_id), + array_keys($plugins->fs_plugins) + ); + +if (count($missing_plugin_ids) > 0) +{ + foreach ($missing_plugin_ids as $plugin_id) + { + $tpl_plugins[] = array( + 'NAME' => $plugin_id, + 'VERSION' => $plugins->db_plugins_by_id[$plugin_id]['version'], + 'DESC' => l10n('ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'), + 'U_ACTION' => sprintf($action_url, $plugin_id), + 'STATE' => 'missing', + ); + } + $template->append('plugin_states', 'missing'); +} + +// sort plugins by state then by name +function cmp($a, $b) +{ + $s = array('merged' => 0, 'missing' => 1, 'active' => 2, 'inactive' => 3); + + if($a['STATE'] == $b['STATE']) + return strcasecmp($a['NAME'], $b['NAME']); + else + return $s[$a['STATE']] >= $s[$b['STATE']]; +} +usort($tpl_plugins, 'cmp'); + +$template->assign( + array( + 'plugins' => $tpl_plugins, + 'active_plugins' => $active_plugins, + 'PWG_TOKEN' => $pwg_token, + 'base_url' => $base_url, + 'show_details' => $show_details, + ) + ); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'plugins'); +?> \ No newline at end of file diff --git a/sources/admin/plugins_new.php b/sources/admin/plugins_new.php new file mode 100644 index 0000000..3790774 --- /dev/null +++ b/sources/admin/plugins_new.php @@ -0,0 +1,140 @@ +set_filenames(array('plugins' => 'plugins_new.tpl')); + +$base_url = get_root_url().'admin.php?page='.$page['page'].'&tab='.$page['tab']; + +$plugins = new plugins(); + +//------------------------------------------------------automatic installation +if (isset($_GET['revision']) and isset($_GET['extension'])) +{ + if (!is_webmaster()) + { + $page['errors'][] = l10n('Webmaster status is required.'); + } + else + { + check_pwg_token(); + + $install_status = $plugins->extract_plugin_files('install', $_GET['revision'], $_GET['extension']); + + redirect($base_url.'&installstatus='.$install_status); + } +} + +//--------------------------------------------------------------install result +if (isset($_GET['installstatus'])) +{ + switch ($_GET['installstatus']) + { + case 'ok': + $page['infos'][] = l10n('Plugin has been successfully copied'); + $page['infos'][] = l10n('You might go to plugin list to install and activate it.'); + break; + + case 'temp_path_error': + $page['errors'][] = l10n('Can\'t create temporary file.'); + break; + + case 'dl_archive_error': + $page['errors'][] = l10n('Can\'t download archive.'); + break; + + case 'archive_error': + $page['errors'][] = l10n('Can\'t read or extract archive.'); + break; + + default: + $page['errors'][] = l10n('An error occured during extraction (%s).', htmlspecialchars($_GET['installstatus'])); + $page['errors'][] = l10n('Please check "plugins" folder and sub-folders permissions (CHMOD).'); + } +} + +//---------------------------------------------------------------Order options +$template->assign('order_options', + array( + 'date' => l10n('Post date'), + 'revision' => l10n('Last revisions'), + 'name' => l10n('Name'), + 'author' => l10n('Author'), + 'downloads' => l10n('Number of downloads'))); + +// +-----------------------------------------------------------------------+ +// | start template output | +// +-----------------------------------------------------------------------+ +if ($plugins->get_server_plugins(true)) +{ + /* order plugins */ + if (pwg_get_session_var('plugins_new_order') != null) + { + $order_selected = pwg_get_session_var('plugins_new_order'); + $plugins->sort_server_plugins($order_selected); + $template->assign('order_selected', $order_selected); + } + else + { + $plugins->sort_server_plugins('date'); + $template->assign('order_selected', 'date'); + } + + foreach($plugins->server_plugins as $plugin) + { + $ext_desc = trim($plugin['extension_description'], " \n\r"); + list($small_desc) = explode("\n", wordwrap($ext_desc, 200)); + + $url_auto_install = htmlentities($base_url) + . '&revision=' . $plugin['revision_id'] + . '&extension=' . $plugin['extension_id'] + . '&pwg_token='.get_pwg_token() + ; + + $template->append('plugins', array( + 'ID' => $plugin['extension_id'], + 'EXT_NAME' => $plugin['extension_name'], + 'EXT_URL' => PEM_URL.'/extension_view.php?eid='.$plugin['extension_id'], + 'SMALL_DESC' => trim($small_desc, " \r\n"), + 'BIG_DESC' => $ext_desc, + 'VERSION' => $plugin['revision_name'], + 'REVISION_DATE' => preg_replace('/[^0-9]/', '', $plugin['revision_date']), + 'AUTHOR' => $plugin['author_name'], + 'DOWNLOADS' => $plugin['extension_nb_downloads'], + 'URL_INSTALL' => $url_auto_install, + 'URL_DOWNLOAD' => $plugin['download_url'] . '&origin=piwigo_download')); + } +} +else +{ + $page['errors'][] = l10n('Can\'t connect to server.'); +} + +$template->assign_var_from_handle('ADMIN_CONTENT', 'plugins'); +?> \ No newline at end of file diff --git a/sources/admin/popuphelp.php b/sources/admin/popuphelp.php new file mode 100644 index 0000000..dc7290b --- /dev/null +++ b/sources/admin/popuphelp.php @@ -0,0 +1,82 @@ +'.$title.''; +$page['meta_robots']=array('noindex'=>1, 'nofollow'=>1); +include(PHPWG_ROOT_PATH.'include/page_header.php'); + +if + ( + isset($_GET['page']) + and preg_match('/^[a-z_]*$/', $_GET['page']) + ) +{ + $help_content = + load_language('help/'.$_GET['page'].'.html', '', array('return'=>true) ); + + if ($help_content == false) + { + $help_content = ''; + } + + $help_content = trigger_event( + 'get_popup_help_content', $help_content, $_GET['page']); +} +else +{ + die('Hacking attempt!'); +} + +$template->set_filename('popuphelp','popuphelp.tpl'); + +$template->assign( + array + ( + 'HELP_CONTENT' => $help_content + )); + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->pparse('popuphelp'); + +include(PHPWG_ROOT_PATH.'include/page_tail.php'); + +?> \ No newline at end of file diff --git a/sources/admin/profile.php b/sources/admin/profile.php new file mode 100644 index 0000000..5554fe1 --- /dev/null +++ b/sources/admin/profile.php @@ -0,0 +1,47 @@ +set_filename('profile', 'profile.tpl'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'profile'); +?> diff --git a/sources/admin/rating.php b/sources/admin/rating.php new file mode 100644 index 0000000..1592125 --- /dev/null +++ b/sources/admin/rating.php @@ -0,0 +1,234 @@ +set_id('rating'); +$tabsheet->select('rating'); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | initialization | +// +-----------------------------------------------------------------------+ +if (isset($_GET['start']) and is_numeric($_GET['start'])) +{ + $start = $_GET['start']; +} +else +{ + $start = 0; +} + +$elements_per_page=10; +if (isset($_GET['display']) and is_numeric($_GET['display'])) +{ + $elements_per_page = $_GET['display']; +} + +$order_by_index=0; +if (isset($_GET['order_by']) and is_numeric($_GET['order_by'])) +{ + $order_by_index = $_GET['order_by']; +} + +$page['user_filter'] = ''; +if (isset($_GET['users'])) +{ + if ($_GET['users'] == 'user') + { + $page['user_filter'] = ' AND r.user_id <> '.$conf['guest_id']; + } + elseif ($_GET['users'] == 'guest') + { + $page['user_filter'] = ' AND r.user_id = '.$conf['guest_id']; + } +} + +$users = array(); +$query = ' +SELECT '.$conf['user_fields']['username'].' as username, '.$conf['user_fields']['id'].' as id + FROM '.USERS_TABLE.' +;'; +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $users[$row['id']]=stripslashes($row['username']); +} + + +$query = 'SELECT COUNT(DISTINCT(r.element_id)) +FROM '.RATE_TABLE.' AS r +WHERE 1=1'. $page['user_filter']; +list($nb_images) = pwg_db_fetch_row(pwg_query($query)); + + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filename('rating', 'rating.tpl'); + +$template->assign( + array( + 'navbar' => create_navigation_bar( + PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start','del')), + $nb_images, + $start, + $elements_per_page + ), + 'F_ACTION' => PHPWG_ROOT_PATH.'admin.php', + 'DISPLAY' => $elements_per_page, + 'NB_ELEMENTS' => $nb_images, + ) + ); + + + +$available_order_by= array( + array(l10n('Rate date'), 'recently_rated DESC'), + array(l10n('Rating score'), 'score DESC'), + array(l10n('Average rate'), 'avg_rates DESC'), + array(l10n('Number of rates'), 'nb_rates DESC'), + array(l10n('Sum of rates'), 'sum_rates DESC'), + array(l10n('File name'), 'file DESC'), + array(l10n('Creation date'), 'date_creation DESC'), + array(l10n('Post date'), 'date_available DESC'), + ); + +for ($i=0; $iappend( + 'order_by_options', + $available_order_by[$i][0] + ); +} +$template->assign('order_by_options_selected', array($order_by_index) ); + + +$user_options = array( + 'all' => l10n('all'), + 'user' => l10n('Users'), + 'guest' => l10n('Guests'), + ); + +$template->assign('user_options', $user_options ); +$template->assign('user_options_selected', array(@$_GET['users']) ); + + +$query = ' +SELECT i.id, + i.path, + i.file, + i.representative_ext, + i.rating_score AS score, + MAX(r.date) AS recently_rated, + ROUND(AVG(r.rate),2) AS avg_rates, + COUNT(r.rate) AS nb_rates, + SUM(r.rate) AS sum_rates + FROM '.RATE_TABLE.' AS r + LEFT JOIN '.IMAGES_TABLE.' AS i ON r.element_id = i.id + WHERE 1 = 1 ' . $page['user_filter'] . ' + GROUP BY i.id, + i.path, + i.file, + i.representative_ext, + i.rating_score, + r.element_id + ORDER BY ' . $available_order_by[$order_by_index][1] .' + LIMIT '.$elements_per_page.' OFFSET '.$start.' +;'; + +$images = array(); +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $images[] = $row; +} + +$template->assign( 'images', array() ); +foreach ($images as $image) +{ + $thumbnail_src = DerivativeImage::thumb_url($image); + + $image_url = get_root_url().'admin.php?page=photo-'.$image['id']; + + $query = 'SELECT * +FROM '.RATE_TABLE.' AS r +WHERE r.element_id='.$image['id'] . ' +ORDER BY date DESC;'; + $result = pwg_query($query); + $nb_rates = pwg_db_num_rows($result); + + $tpl_image = + array( + 'id' => $image['id'], + 'U_THUMB' => $thumbnail_src, + 'U_URL' => $image_url, + 'SCORE_RATE' => $image['score'], + 'AVG_RATE' => $image['avg_rates'], + 'SUM_RATE' => $image['sum_rates'], + 'NB_RATES' => (int)$image['nb_rates'], + 'NB_RATES_TOTAL' => (int)$nb_rates, + 'FILE' => $image['file'], + 'rates' => array() + ); + + while ($row = pwg_db_fetch_assoc($result)) + { + if ( isset($users[$row['user_id']]) ) + { + $user_rate = $users[$row['user_id']]; + } + else + { + $user_rate = '? '. $row['user_id']; + } + if ( strlen($row['anonymous_id'])>0 ) + { + $user_rate .= '('.$row['anonymous_id'].')'; + } + + $row['USER'] = $user_rate; + $tpl_image['rates'][] = $row; + } + $template->append( 'images', $tpl_image ); +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ +$template->assign_var_from_handle('ADMIN_CONTENT', 'rating'); +?> \ No newline at end of file diff --git a/sources/admin/rating_user.php b/sources/admin/rating_user.php new file mode 100644 index 0000000..7465386 --- /dev/null +++ b/sources/admin/rating_user.php @@ -0,0 +1,249 @@ +set_id('rating'); +$tabsheet->select('rating_user'); +$tabsheet->assign(); + +$filter_min_rates = 2; +if (isset($_GET['f_min_rates'])) +{ + $filter_min_rates = (int)$_GET['f_min_rates']; +} + +$consensus_top_number = $conf['top_number']; +if (isset($_GET['consensus_top_number'])) +{ + $consensus_top_number = (int)$_GET['consensus_top_number']; +} + +// build users +global $conf; +$query = 'SELECT DISTINCT + u.'.$conf['user_fields']['id'].' AS id, + u.'.$conf['user_fields']['username'].' AS name, + ui.status + FROM '.USERS_TABLE.' AS u INNER JOIN '.USER_INFOS_TABLE.' AS ui + ON u.'.$conf['user_fields']['id'].' = ui.user_id'; + +$users_by_id = array(); +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $users_by_id[(int)$row['id']] = array( + 'name' => $row['name'], + 'anon' => is_autorize_status(ACCESS_CLASSIC, $row['status']) ? false : true + ); +} + +$by_user_rating_model = array( 'rates' => array() ); +foreach($conf['rate_items'] as $rate) +{ + $by_user_rating_model['rates'][$rate] = array(); +} + +// by user aggregation +$image_ids = array(); +$by_user_ratings = array(); +$query = ' +SELECT * FROM '.RATE_TABLE.' ORDER by date DESC'; +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + if (!isset($users_by_id[$row['user_id']])) + { + $users_by_id[$row['user_id']] = array('name' => '???'.$row['user_id'], 'anon' => false); + } + $usr = $users_by_id[$row['user_id']]; + if ($usr['anon']) + { + $user_key = $usr['name'].'('.$row['anonymous_id'].')'; + } + else + { + $user_key = $usr['name']; + } + $rating = & $by_user_ratings[$user_key]; + if ( is_null($rating) ) + { + $rating = $by_user_rating_model; + $rating['uid'] = (int)$row['user_id']; + $rating['aid'] = $usr['anon'] ? $row['anonymous_id'] : ''; + $rating['last_date'] = $row['date']; + } + $rating['rates'][$row['rate']][] = array( + 'id' => $row['element_id'], + 'date' => $row['date'], + ); + $image_ids[$row['element_id']] = 1; + unset($rating); +} + +// get image tn urls +$image_urls = array(); +if (count($image_ids) > 0 ) +{ + $query = 'SELECT id, name, file, path, representative_ext + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', array_keys($image_ids)).')'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $image_urls[ $row['id'] ] = array( + 'tn' => DerivativeImage::thumb_url($row), + 'page' => make_picture_url( array('image_id'=>$row['id'], 'image_file'=>$row['file']) ), + ); + } +} + +//all image averages +$query='SELECT element_id, + AVG(rate) AS avg + FROM '.RATE_TABLE.' + GROUP BY element_id'; +$all_img_sum = array(); +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $all_img_sum[(int)$row['element_id']] = array( 'avg'=>(float)$row['avg'] ); +} + +$query='SELECT id + FROM '.IMAGES_TABLE.' + ORDER by rating_score DESC + LIMIT '.$consensus_top_number; +$best_rated = array_flip( array_from_query($query, 'id')); + +// by user stats +foreach($by_user_ratings as $id => &$rating) +{ + $c=0; $s=0; $ss=0; $consensus_dev=0; $consensus_dev_top=0; $consensus_dev_top_count=0; + foreach($rating['rates'] as $rate => $rates) + { + $ct = count($rates); + $c += $ct; + $s += $ct * $rate; + $ss += $ct * $rate * $rate; + foreach($rates as $id_date) + { + $dev = abs($rate - $all_img_sum[$id_date['id']]['avg']); + $consensus_dev += $dev; + if (isset($best_rated[$id_date['id']])) + { + $consensus_dev_top += $dev; + $consensus_dev_top_count++; + } + } + } + + $consensus_dev /= $c; + if ($consensus_dev_top_count) + $consensus_dev_top /= $consensus_dev_top_count; + + $var = ($ss - $s*$s/$c)/$c; + $rating += array( + 'id' => $id, + 'count' => $c, + 'avg' => $s/$c, + 'cv' => $s==0 ? -1 : sqrt($var)/($s/$c), // http://en.wikipedia.org/wiki/Coefficient_of_variation + 'cd' => $consensus_dev, + 'cdtop' => $consensus_dev_top_count ? $consensus_dev_top : '' + ); +} +unset($rating); + +// filter +foreach($by_user_ratings as $id => $rating) +{ + if ($rating['count'] <= $filter_min_rates) + { + unset($by_user_ratings[$id]); + } +} + + +function avg_compare($a, $b) +{ + $d = $a['avg'] - $b['avg']; + return ($d==0) ? 0 : ($d<0 ? -1 : 1); +} + +function count_compare($a, $b) +{ + $d = $a['count'] - $b['count']; + return ($d==0) ? 0 : ($d<0 ? -1 : 1); +} + +function cv_compare($a, $b) +{ + $d = $b['cv'] - $a['cv']; //desc + return ($d==0) ? 0 : ($d<0 ? -1 : 1); +} + +function consensus_dev_compare($a, $b) +{ + $d = $b['cd'] - $a['cd']; //desc + return ($d==0) ? 0 : ($d<0 ? -1 : 1); +} + +$order_by_index=3; +if (isset($_GET['order_by']) and is_numeric($_GET['order_by'])) +{ + $order_by_index = $_GET['order_by']; +} + +$available_order_by= array( + array(l10n('Average rate'), 'avg_compare'), + array(l10n('Number of rates'), 'count_compare'), + array(l10n('Variation'), 'cv_compare'), + array(l10n('Consensus deviation'), 'consensus_dev_compare'), + ); + +for ($i=0; $iappend( + 'order_by_options', + $available_order_by[$i][0] + ); +} +$template->assign('order_by_options_selected', array($order_by_index) ); + +$x = uasort($by_user_ratings, $available_order_by[$order_by_index][1] ); + +$template->assign( array( + 'F_ACTION' => get_root_url().'admin.php', + 'F_MIN_RATES' => $filter_min_rates, + 'CONSENSUS_TOP_NUMBER' => $consensus_top_number, + 'available_rates' => $conf['rate_items'], + 'ratings' => $by_user_ratings, + 'image_urls' => $image_urls, + 'TN_WIDTH' => 28+2*ImageStdParams::get_by_type(IMG_THUMB)->sizing->ideal_size[0], + ) ); +$template->set_filename('rating', 'rating_user.tpl'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'rating'); + +?> \ No newline at end of file diff --git a/sources/admin/site_manager.php b/sources/admin/site_manager.php new file mode 100644 index 0000000..2d75fea --- /dev/null +++ b/sources/admin/site_manager.php @@ -0,0 +1,187 @@ +set_filenames(array('site_manager'=>'site_manager.tpl')); + +// +-----------------------------------------------------------------------+ +// | new site creation form | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) and !empty($_POST['galleries_url'])) +{ + $is_remote = url_is_remote( $_POST['galleries_url'] ); + if ($is_remote) + { + fatal_error('remote sites not supported'); + } + $url = preg_replace('/[\/]*$/', '', $_POST['galleries_url']); + $url.= '/'; + if ( ! (strpos($url, '.') === 0 ) ) + { + $url = './' . $url; + } + + // site must not exists + $query = ' +SELECT COUNT(id) AS count + FROM '.SITES_TABLE.' + WHERE galleries_url = \''.$url.'\' +;'; + $row = pwg_db_fetch_assoc(pwg_query($query)); + if ($row['count'] > 0) + { + $page['errors'][] = l10n('This site already exists').' ['.$url.']'; + } + if (count($page['errors']) == 0) + { + if ( ! file_exists($url) ) + { + $page['errors'][] = l10n('Directory does not exist').' ['.$url.']'; + } + } + + if (count($page['errors']) == 0) + { + $query = ' +INSERT INTO '.SITES_TABLE.' + (galleries_url) + VALUES + (\''.$url.'\') +;'; + pwg_query($query); + $page['infos'][] = $url.' '.l10n('created'); + } +} + +// +-----------------------------------------------------------------------+ +// | actions on site | +// +-----------------------------------------------------------------------+ +if (isset($_GET['site']) and is_numeric($_GET['site'])) +{ + $page['site'] = $_GET['site']; +} +if (isset($_GET['action']) and isset($page['site'])) +{ + $query = ' +SELECT galleries_url + FROM '.SITES_TABLE.' + WHERE id = '.$page['site'].' +;'; + list($galleries_url) = pwg_db_fetch_row(pwg_query($query)); + switch($_GET['action']) + { + case 'delete' : + { + delete_site($page['site']); + $page['infos'][] = $galleries_url.' '.l10n('deleted'); + break; + } + } +} + +$template->assign( + array( + 'F_ACTION' => get_root_url().'admin.php'.get_query_string_diff(array('action','site','pwg_token')), + 'PWG_TOKEN' => get_pwg_token(), + ) + ); + +$query = ' +SELECT c.site_id, COUNT(DISTINCT c.id) AS nb_categories, COUNT(i.id) AS nb_images + FROM '.CATEGORIES_TABLE.' AS c LEFT JOIN '.IMAGES_TABLE.' AS i + ON c.id=i.storage_category_id + WHERE c.site_id IS NOT NULL + GROUP BY c.site_id +;'; +$sites_detail = hash_from_query($query, 'site_id'); + +$query = ' +SELECT * + FROM '.SITES_TABLE.' +;'; +$result = pwg_query($query); + +while ($row = pwg_db_fetch_assoc($result)) +{ + $is_remote = url_is_remote($row['galleries_url']); + $base_url = PHPWG_ROOT_PATH.'admin.php'; + $base_url.= '?page=site_manager'; + $base_url.= '&site='.$row['id']; + $base_url.= '&pwg_token='.get_pwg_token(); + $base_url.= '&action='; + + $update_url = PHPWG_ROOT_PATH.'admin.php'; + $update_url.= '?page=site_update'; + $update_url.= '&site='.$row['id']; + + $tpl_var = + array( + 'NAME' => $row['galleries_url'], + 'TYPE' => l10n( $is_remote ? 'Remote' : 'Local' ), + 'CATEGORIES' => (int)@$sites_detail[$row['id']]['nb_categories'], + 'IMAGES' => (int)@$sites_detail[$row['id']]['nb_images'], + 'U_SYNCHRONIZE' => $update_url + ); + + if ($row['id'] != 1) + { + $tpl_var['U_DELETE'] = $base_url.'delete'; + } + + $plugin_links = array(); + //$plugin_links is array of array composed of U_HREF, U_HINT & U_CAPTION + $plugin_links = + trigger_event('get_admins_site_links', + $plugin_links, $row['id'], $is_remote); + $tpl_var['plugin_links'] = $plugin_links; + + $template->append('sites', $tpl_var); +} + +$template->assign_var_from_handle('ADMIN_CONTENT', 'site_manager'); +?> diff --git a/sources/admin/site_reader_local.php b/sources/admin/site_reader_local.php new file mode 100644 index 0000000..7e618ca --- /dev/null +++ b/sources/admin/site_reader_local.php @@ -0,0 +1,187 @@ +site_url = $url; + global $conf; + if (!isset($conf['flip_file_ext'])) + { + $conf['flip_file_ext'] = array_flip($conf['file_ext']); + } + if (!isset($conf['flip_picture_ext'])) + { + $conf['flip_picture_ext'] = array_flip($conf['picture_ext']); + } +} + +/** + * Is this local site ok ? + * + * @return true on success, false otherwise + */ +function open() +{ + global $errors; + + if (!is_dir($this->site_url)) + { + $errors[] = array( + 'path' => $this->site_url, + 'type' => 'PWG-ERROR-NO-FS' + ); + + return false; + } + + return true; +} + +// retrieve file system sub-directories fulldirs +function get_full_directories($basedir) +{ + $fs_fulldirs = get_fs_directories($basedir); + return $fs_fulldirs; +} + +/** + * Returns an array with all file system files according to $conf['file_ext'] + * and $conf['picture_ext'] + * @param string $path recurse in this directory + * @return array like "pic.jpg"=>array('representative_ext'=>'jpg' ... ) + */ +function get_elements($path) +{ + global $conf; + + $subdirs = array(); + $fs = array(); + if (is_dir($path) && $contents = opendir($path) ) + { + while (($node = readdir($contents)) !== false) + { + if ($node == '.' or $node == '..') continue; + + if (is_file($path.'/'.$node)) + { + $extension = get_extension($node); + $filename_wo_ext = get_filename_wo_extension($node); + + if ( isset($conf['flip_file_ext'][$extension]) ) + { + $representative_ext = null; + if (! isset($conf['flip_picture_ext'][$extension]) ) + { + $representative_ext = $this->get_representative_ext($path, $filename_wo_ext); + } + $fs[ $path.'/'.$node ] = array( + 'representative_ext' => $representative_ext, + ); + } + } + else if (is_dir($path.'/'.$node) + and $node != 'pwg_high' + and $node != 'pwg_representative' + and $node != 'thumbnail' ) + { + $subdirs[] = $node; + } + } //end while readdir + closedir($contents); + + foreach ($subdirs as $subdir) + { + $tmp_fs = $this->get_elements($path.'/'.$subdir); + $fs = array_merge($fs, $tmp_fs); + } + ksort($fs); + } //end if is_dir + return $fs; +} + +// returns the name of the attributes that are supported for +// files update/synchronization +function get_update_attributes() +{ + return array('representative_ext'); +} + +function get_element_update_attributes($file) +{ + global $conf; + $data = array(); + + $filename = basename($file); + $extension = get_extension($filename); + + $representative_ext = null; + if (! isset($conf['flip_picture_ext'][$extension]) ) + { + $dirname = dirname($file); + $filename_wo_ext = get_filename_wo_extension($filename); + $representative_ext = $this->get_representative_ext($dirname, $filename_wo_ext); + } + + $data['representative_ext'] = $representative_ext; + return $data; +} + +// returns the name of the attributes that are supported for +// metadata update/synchronization according to configuration +function get_metadata_attributes() +{ + return get_sync_metadata_attributes(); +} + +// returns a hash of attributes (metadata+filesize+width,...) for file +function get_element_metadata($infos) +{ + return get_sync_metadata($infos); +} + + +//-------------------------------------------------- private functions -------- +function get_representative_ext($path, $filename_wo_ext) +{ + global $conf; + $base_test = $path.'/pwg_representative/'.$filename_wo_ext.'.'; + foreach ($conf['picture_ext'] as $ext) + { + $test = $base_test.$ext; + if (is_file($test)) + { + return $ext; + } + } + return null; +} + + +} +?> \ No newline at end of file diff --git a/sources/admin/site_update.php b/sources/admin/site_update.php new file mode 100644 index 0000000..5bcaea1 --- /dev/null +++ b/sources/admin/site_update.php @@ -0,0 +1,925 @@ + array( + l10n('wrong filename'), + l10n('The name of directories and files must be composed of letters, numbers, "-", "_" or "."') + ), + 'PWG-ERROR-NO-FS' => array( + l10n('File/directory read error'), + l10n('The file or directory cannot be accessed (either it does not exist or the access is denied)') + ), + ); +$errors = array(); +$infos = array(); + +if ($site_is_remote) +{ + fatal_error('remote sites not supported'); +} +else +{ + include_once( PHPWG_ROOT_PATH.'admin/site_reader_local.php'); + $site_reader = new LocalSiteReader($site_url); +} + +$general_failure = true; +if (isset($_POST['submit'])) +{ + if ($site_reader->open()) + { + $general_failure = false; + } + + // shall we simulate only + if (isset($_POST['simulate']) and $_POST['simulate'] == 1) + { + $simulate = true; + } + else + { + $simulate = false; + } +} + +// +-----------------------------------------------------------------------+ +// | directories / categories | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) + and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files')) +{ + $counts['new_categories'] = 0; + $counts['del_categories'] = 0; + $counts['del_elements'] = 0; + $counts['new_elements'] = 0; + $counts['upd_elements'] = 0; +} + + +if (isset($_POST['submit']) + and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files') + and !$general_failure) +{ + $start = get_moment(); + // which categories to update ? + $query = ' +SELECT id, uppercats, global_rank, status, visible + FROM '.CATEGORIES_TABLE.' + WHERE dir IS NOT NULL + AND site_id = '.$site_id; + if (isset($_POST['cat']) and is_numeric($_POST['cat'])) + { + if (isset($_POST['subcats-included']) and $_POST['subcats-included'] == 1) + { + $query.= ' + AND uppercats '.DB_REGEX_OPERATOR.' \'(^|,)'.$_POST['cat'].'(,|$)\' +'; + } + else + { + $query.= ' + AND id = '.$_POST['cat'].' +'; + } + } + $db_categories = hash_from_query($query, 'id'); + + // get categort full directories in an array for comparison with file + // system directory tree + $db_fulldirs = get_fulldirs(array_keys($db_categories)); + + // what is the base directory to search file system sub-directories ? + if (isset($_POST['cat']) and is_numeric($_POST['cat'])) + { + $basedir = $db_fulldirs[$_POST['cat']]; + } + else + { + $basedir = preg_replace('#/*$#', '', $site_url); + } + + // we need to have fulldirs as keys to make efficient comparison + $db_fulldirs = array_flip($db_fulldirs); + + // finding next rank for each id_uppercat. By default, each category id + // has 1 for next rank on its sub-categories to create + $next_rank['NULL'] = 1; + + $query = ' +SELECT id + FROM '.CATEGORIES_TABLE; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $next_rank[$row['id']] = 1; + } + + // let's see if some categories already have some sub-categories... + $query = ' +SELECT id_uppercat, MAX(rank)+1 AS next_rank + FROM '.CATEGORIES_TABLE.' + GROUP BY id_uppercat'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + // for the id_uppercat NULL, we write 'NULL' and not the empty string + if (!isset($row['id_uppercat']) or $row['id_uppercat'] == '') + { + $row['id_uppercat'] = 'NULL'; + } + $next_rank[$row['id_uppercat']] = $row['next_rank']; + } + + // next category id available + $next_id = pwg_db_nextval('id', CATEGORIES_TABLE); + + // retrieve sub-directories fulldirs from the site reader + $fs_fulldirs = $site_reader->get_full_directories($basedir); + + // get_full_directories doesn't include the base directory, so if it's a + // category directory, we need to include it in our array + if (isset($_POST['cat'])) + { + $fs_fulldirs[] = $basedir; + } + // If $_POST['subcats-included'] != 1 ("Search in sub-albums" is unchecked) + // $db_fulldirs doesn't include any subdirectories and $fs_fulldirs does + // So $fs_fulldirs will be limited to the selected basedir + // (if that one is in $fs_fulldirs) + if (!isset($_POST['subcats-included']) or $_POST['subcats-included'] != 1) + { + $fs_fulldirs = array_intersect($fs_fulldirs, array_keys($db_fulldirs)); + } + $inserts = array(); + // new categories are the directories not present yet in the database + foreach (array_diff($fs_fulldirs, array_keys($db_fulldirs)) as $fulldir) + { + $dir = basename($fulldir); + if (preg_match($conf['sync_chars_regex'], $dir)) + { + $insert = array( + 'id' => $next_id++, + 'dir' => $dir, + 'name' => str_replace('_', ' ', $dir), + 'site_id' => $site_id, + 'commentable' => + boolean_to_string($conf['newcat_default_commentable']), + 'status' => $conf['newcat_default_status'], + 'visible' => boolean_to_string($conf['newcat_default_visible']), + ); + + if (isset($db_fulldirs[dirname($fulldir)])) + { + $parent = $db_fulldirs[dirname($fulldir)]; + + $insert['id_uppercat'] = $parent; + $insert['uppercats'] = + $db_categories[$parent]['uppercats'].','.$insert['id']; + $insert['rank'] = $next_rank[$parent]++; + $insert['global_rank'] = + $db_categories[$parent]['global_rank'].'.'.$insert['rank']; + if ('private' == $db_categories[$parent]['status']) + { + $insert['status'] = 'private'; + } + if ('false' == $db_categories[$parent]['visible']) + { + $insert['visible'] = 'false'; + } + } + else + { + $insert['uppercats'] = $insert['id']; + $insert{'rank'} = $next_rank['NULL']++; + $insert['global_rank'] = $insert['rank']; + } + + $inserts[] = $insert; + $infos[] = array( + 'path' => $fulldir, + 'info' => l10n('added'), + ); + + // add the new category to $db_categories and $db_fulldirs array + $db_categories[$insert{'id'}] = + array( + 'id' => $insert['id'], + 'parent' => (isset($parent)) ? $parent : Null, + 'status' => $insert['status'], + 'visible' => $insert['visible'], + 'uppercats' => $insert['uppercats'], + 'global_rank' => $insert['global_rank'] + ); + $db_fulldirs[$fulldir] = $insert['id']; + $next_rank[$insert{'id'}] = 1; + } + else + { + $errors[] = array( + 'path' => $fulldir, + 'type' => 'PWG-UPDATE-1' + ); + } + } + + if (count($inserts) > 0) + { + if (!$simulate) + { + $dbfields = array( + 'id','dir','name','site_id','id_uppercat','uppercats','commentable', + 'visible','status','rank','global_rank' + ); + mass_inserts(CATEGORIES_TABLE, $dbfields, $inserts); + + // add default permissions to categories + $category_ids = array(); + $category_up = array(); + foreach ($inserts as $category) + { + $category_ids[] = $category['id']; + if (!empty($category['id_uppercat'])) + { + $category_up[] = $category['id_uppercat']; + } + } + $category_up=implode(',',array_unique($category_up)); + if ($conf['inheritance_by_default']) + { + $query = ' + SELECT * + FROM '.GROUP_ACCESS_TABLE.' + WHERE cat_id IN ('.$category_up.') + ;'; + $result = pwg_query($query); + if (!empty($result)) + { + $granted_grps = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + if (!isset($granted_grps[$row['cat_id']])) + { + $granted_grps[$row['cat_id']]=array(); + } + // TODO: explanaition + array_push( + $granted_grps, + array( + $row['cat_id'] => array_push($granted_grps[$row['cat_id']],$row['group_id']) + ) + ); + } + } + $query = ' + SELECT * + FROM '.USER_ACCESS_TABLE.' + WHERE cat_id IN ('.$category_up.') + ;'; + $result = pwg_query($query); + if (!empty($result)) + { + $granted_users = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + if (!isset($granted_users[$row['cat_id']])) + { + $granted_users[$row['cat_id']]=array(); + } + // TODO: explanaition + array_push( + $granted_users, + array( + $row['cat_id'] => array_push($granted_users[$row['cat_id']],$row['user_id']) + ) + ); + } + } + $insert_granted_users=array(); + $insert_granted_grps=array(); + foreach ($category_ids as $ids) + { + $parent_id=$db_categories[$ids]['parent']; + while (in_array($parent_id, $category_ids)) + { + $parent_id= $db_categories[$parent_id]['parent']; + } + if ($db_categories[$ids]['status']=='private' and !is_null($parent_id)) + { + if (isset($granted_grps[$parent_id])) + { + foreach ($granted_grps[$parent_id] as $granted_grp) + { + $insert_granted_grps[] = array( + 'group_id' => $granted_grp, + 'cat_id' => $ids + ); + } + } + if (isset($granted_users[$parent_id])) + { + foreach ($granted_users[$parent_id] as $granted_user) + { + $insert_granted_users[] = array( + 'user_id' => $granted_user, + 'cat_id' => $ids + ); + } + } + foreach (get_admins() as $granted_user) + { + $insert_granted_users[] = array( + 'user_id' => $granted_user, + 'cat_id' => $ids + ); + } + } + } + mass_inserts(GROUP_ACCESS_TABLE, array('group_id','cat_id'), $insert_granted_grps); + $insert_granted_users=array_unique($insert_granted_users, SORT_REGULAR); + mass_inserts(USER_ACCESS_TABLE, array('user_id','cat_id'), $insert_granted_users); + } + else + { + add_permission_on_category($category_ids, get_admins()); + } + } + + $counts['new_categories'] = count($inserts); + } + + // to delete categories + $to_delete = array(); + $to_delete_derivative_dirs = array(); + + foreach (array_diff(array_keys($db_fulldirs), $fs_fulldirs) as $fulldir) + { + $to_delete[] = $db_fulldirs[$fulldir]; + unset($db_fulldirs[$fulldir]); + + $infos[] = array( + 'path' => $fulldir, + 'info' => l10n('deleted') + ); + + if (substr_compare($fulldir, '../', 0, 3)==0) + { + $fulldir = substr($fulldir, 3); + } + $to_delete_derivative_dirs[] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$fulldir; + } + + if (count($to_delete) > 0) + { + if (!$simulate) + { + delete_categories($to_delete); + foreach($to_delete_derivative_dirs as $to_delete_dir) + { + if (is_dir($to_delete_dir)) + { + clear_derivative_cache_rec($to_delete_dir, '#.+#'); + } + } + } + $counts['del_categories'] = count($to_delete); + } + + $template->append('footer_elements', '' ); +} +// +-----------------------------------------------------------------------+ +// | files / elements | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) and $_POST['sync'] == 'files' + and !$general_failure) +{ + $start_files = get_moment(); + $start= $start_files; + + $fs = $site_reader->get_elements($basedir); + $template->append('footer_elements', '' ); + + $cat_ids = array_diff(array_keys($db_categories), $to_delete); + + $db_elements = array(); + + if (count($cat_ids) > 0) + { + $query = ' +SELECT id, path + FROM '.IMAGES_TABLE.' + WHERE storage_category_id IN (' + .wordwrap( + implode(', ', $cat_ids), + 160, + "\n" + ).')'; + $db_elements = simple_hash_from_query($query, 'id', 'path'); + } + + // next element id available + $next_element_id = pwg_db_nextval('id', IMAGES_TABLE); + + $start = get_moment(); + + $inserts = array(); + $insert_links = array(); + + foreach (array_diff(array_keys($fs), $db_elements) as $path) + { + $insert = array(); + // storage category must exist + $dirname = dirname($path); + if (!isset($db_fulldirs[$dirname])) + { + continue; + } + $filename = basename($path); + if (!preg_match($conf['sync_chars_regex'], $filename)) + { + $errors[] = array( + 'path' => $path, + 'type' => 'PWG-UPDATE-1' + ); + + continue; + } + + $insert = array( + 'id' => $next_element_id++, + 'file' => $filename, + 'name' => get_name_from_file($filename), + 'date_available' => CURRENT_DATE, + 'path' => $path, + 'representative_ext' => $fs[$path]['representative_ext'], + 'storage_category_id' => $db_fulldirs[$dirname], + 'added_by' => $user['id'], + ); + + if ( $_POST['privacy_level']!=0 ) + { + $insert['level'] = $_POST['privacy_level']; + } + + $inserts[] = $insert; + + $insert_links[] = array( + 'image_id' => $insert['id'], + 'category_id' => $insert['storage_category_id'], + ); + + $infos[] = array( + 'path' => $insert['path'], + 'info' => l10n('added') + ); + + $caddiables[] = $insert['id']; + } + + if (count($inserts) > 0) + { + if (!$simulate) + { + // inserts all new elements + mass_inserts( + IMAGES_TABLE, + array_keys($inserts[0]), + $inserts + ); + + // inserts all links between new elements and their storage category + mass_inserts( + IMAGE_CATEGORY_TABLE, + array_keys($insert_links[0]), + $insert_links + ); + + // add new photos to caddie + if (isset($_POST['add_to_caddie']) and $_POST['add_to_caddie'] == 1) + { + fill_caddie($caddiables); + } + } + $counts['new_elements'] = count($inserts); + } + + // delete elements that are in database but not in the filesystem + $to_delete_elements = array(); + foreach (array_diff($db_elements, array_keys($fs)) as $path) + { + $to_delete_elements[] = array_search($path, $db_elements); + $infos[] = array( + 'path' => $path, + 'info' => l10n('deleted') + ); + } + if (count($to_delete_elements) > 0) + { + if (!$simulate) + { + delete_elements($to_delete_elements); + } + $counts['del_elements'] = count($to_delete_elements); + } + + $template->append('footer_elements', '' ); +} + +// +-----------------------------------------------------------------------+ +// | synchronize files | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) + and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files') + and !$general_failure ) +{ + if (!$simulate) + { + $start = get_moment(); + update_category('all'); + $template->append('footer_elements', '' ); + $start = get_moment(); + update_global_rank(); + $template->append('footer_elements', ''); + } + + if ($_POST['sync'] == 'files') + { + $start = get_moment(); + $opts['category_id'] = ''; + $opts['recursive'] = true; + if (isset($_POST['cat'])) + { + $opts['category_id'] = $_POST['cat']; + if (!isset($_POST['subcats-included']) or $_POST['subcats-included'] != 1) + { + $opts['recursive'] = false; + } + } + $files = get_filelist($opts['category_id'], $site_id, + $opts['recursive'], + false); + $template->append('footer_elements', ''); + $start = get_moment(); + + $datas = array(); + foreach ( $files as $id=>$file ) + { + $file = $file['path']; + $data = $site_reader->get_element_update_attributes($file); + if ( !is_array($data) ) + { + continue; + } + + $data['id']=$id; + $datas[] = $data; + } // end foreach file + + $counts['upd_elements'] = count($datas); + if (!$simulate and count($datas)>0 ) + { + mass_updates( + IMAGES_TABLE, + // fields + array( + 'primary' => array('id'), + 'update' => $site_reader->get_update_attributes(), + ), + $datas + ); + } + $template->append('footer_elements', ''); + }// end if sync files +} + +// +-----------------------------------------------------------------------+ +// | synchronize files | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) + and ($_POST['sync'] == 'dirs' or $_POST['sync'] == 'files')) +{ + $template->assign( + 'update_result', + array( + 'NB_NEW_CATEGORIES'=>$counts['new_categories'], + 'NB_DEL_CATEGORIES'=>$counts['del_categories'], + 'NB_NEW_ELEMENTS'=>$counts['new_elements'], + 'NB_DEL_ELEMENTS'=>$counts['del_elements'], + 'NB_UPD_ELEMENTS'=>$counts['upd_elements'], + 'NB_ERRORS'=>count($errors), + )); +} + +// +-----------------------------------------------------------------------+ +// | synchronize metadata | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit']) and isset($_POST['sync_meta']) + and !$general_failure) +{ + // sync only never synchronized files ? + $opts['only_new'] = isset($_POST['meta_all']) ? false : true; + $opts['category_id'] = ''; + $opts['recursive'] = true; + + if (isset($_POST['cat'])) + { + $opts['category_id'] = $_POST['cat']; + // recursive ? + if (!isset($_POST['subcats-included']) or $_POST['subcats-included'] != 1) + { + $opts['recursive'] = false; + } + } + $start = get_moment(); + $files = get_filelist($opts['category_id'], $site_id, + $opts['recursive'], + $opts['only_new']); + + $template->append('footer_elements', ''); + + $start = get_moment(); + $datas = array(); + $tags_of = array(); + + foreach ( $files as $id => $element_infos ) + { + $data = $site_reader->get_element_metadata($element_infos); + + if ( is_array($data) ) + { + $data['date_metadata_update'] = CURRENT_DATE; + $data['id']=$id; + $datas[] = $data; + + foreach (array('keywords', 'tags') as $key) + { + if (isset($data[$key])) + { + if (!isset($tags_of[$id])) + { + $tags_of[$id] = array(); + } + + foreach (explode(',', $data[$key]) as $tag_name) + { + $tags_of[$id][] = tag_id_from_tag_name($tag_name); + } + } + } + } + else + { + $errors[] = array( + 'path' => $element_infos['path'], + 'type' => 'PWG-ERROR-NO-FS' + ); + } + } + + if (!$simulate) + { + if (count($datas) > 0) + { + mass_updates( + IMAGES_TABLE, + // fields + array( + 'primary' => array('id'), + 'update' => array_unique( + array_merge( + array_diff( + $site_reader->get_metadata_attributes(), + // keywords and tags fields are managed separately + array('keywords', 'tags') + ), + array('date_metadata_update')) + ) + ), + $datas, + isset($_POST['meta_empty_overrides']) ? 0 : MASS_UPDATES_SKIP_EMPTY + ); + } + set_tags_of($tags_of); + } + + $template->append('footer_elements', ''); + + $template->assign( + 'metadata_result', + array( + 'NB_ELEMENTS_DONE' => count($datas), + 'NB_ELEMENTS_CANDIDATES' => count($files), + 'NB_ERRORS' => count($errors), + )); +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ +$template->set_filenames(array('update'=>'site_update.tpl')); +$result_title = ''; +if (isset($simulate) and $simulate) +{ + $result_title.= '['.l10n('Simulation').'] '; +} + +// used_metadata string is displayed to inform admin which metadata will be +// used from files for synchronization +$used_metadata = implode( ', ', $site_reader->get_metadata_attributes()); +if ($site_is_remote and !isset($_POST['submit']) ) +{ + $used_metadata.= ' + ...'; +} + +$template->assign( + array( + 'SITE_URL'=>$site_url, + 'U_SITE_MANAGER'=> get_root_url().'admin.php?page=site_manager', + 'L_RESULT_UPDATE'=>$result_title.l10n('Search for new images in the directories'), + 'L_RESULT_METADATA'=>$result_title.l10n('Metadata synchronization results'), + 'METADATA_LIST' => $used_metadata, + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=synchronize', + )); + +// +-----------------------------------------------------------------------+ +// | introduction : choices | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit'])) +{ + $tpl_introduction = array( + 'sync' => $_POST['sync'], + 'sync_meta' => isset($_POST['sync_meta']) ? true : false, + 'display_info' => isset($_POST['display_info']) and $_POST['display_info']==1, + 'add_to_caddie' => isset($_POST['add_to_caddie']) and $_POST['add_to_caddie']==1, + 'subcats_included' => isset($_POST['subcats-included']) and $_POST['subcats-included']==1, + 'privacy_level_selected' => (int)@$_POST['privacy_level'], + 'meta_all' => isset($_POST['meta_all']) ? true : false, + 'meta_empty_overrides' => isset($_POST['meta_empty_overrides']) ? true : false, + ); + + if (isset($_POST['cat']) and is_numeric($_POST['cat'])) + { + $cat_selected = array($_POST['cat']); + } + else + { + $cat_selected = array(); + } +} +else +{ + $tpl_introduction = array( + 'sync' => 'dirs', + 'sync_meta' => true, + 'display_info' => false, + 'add_to_caddie' => false, + 'subcats_included' => true, + 'privacy_level_selected' => 0, + 'meta_all' => false, + 'meta_empty_overrides' => false, + ); + + $cat_selected = array(); + + if (isset($_GET['cat_id'])) + { + check_input_parameter('cat_id', $_GET, false, PATTERN_ID); + + $cat_selected = array($_GET['cat_id']); + $tpl_introduction['sync'] = 'files'; + } +} + +$tpl_introduction['privacy_level_options'] = get_privacy_level_options(); + +$template->assign('introduction', $tpl_introduction); + +$query = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE site_id = '.$site_id; +display_select_cat_wrapper($query, + $cat_selected, + 'category_options', + false); + + +if (count($errors) > 0) +{ + foreach ($errors as $error) + { + $template->append( + 'sync_errors', + array( + 'ELEMENT' => $error['path'], + 'LABEL' => $error['type'].' ('.$error_labels[$error['type']][0].')' + )); + } + + foreach ($error_labels as $error_type=>$error_description) + { + $template->append( + 'sync_error_captions', + array( + 'TYPE' => $error_type, + 'LABEL' => $error_description[1] + )); + } +} + +if (count($infos) > 0 + and isset($_POST['display_info']) + and $_POST['display_info'] == 1) +{ + foreach ($infos as $info) + { + $template->append( + 'sync_infos', + array( + 'ELEMENT' => $info['path'], + 'LABEL' => $info['info'] + )); + } +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ +$template->assign_var_from_handle('ADMIN_CONTENT', 'update'); +?> diff --git a/sources/admin/stats.php b/sources/admin/stats.php new file mode 100644 index 0000000..e103c2e --- /dev/null +++ b/sources/admin/stats.php @@ -0,0 +1,502 @@ + $max_id) + { + $max_id = $row['max_id']; + } + + if ($is_first) + { + $is_first = false; + $first_time_key = $time_keys[3]; + } +} + +// Only the oldest time_key might be already summarized, so we have to +// update the 4 corresponding lines instead of simply inserting them. +// +// For example, if the oldest unsummarized is 2005.08.25.21, the 4 lines +// that can be updated are: +// +// +---------------+----------+ +// | id | nb_pages | +// +---------------+----------+ +// | 2005 | 241109 | +// | 2005-08 | 20133 | +// | 2005-08-25 | 620 | +// | 2005-08-25-21 | 151 | +// +---------------+----------+ + + +$updates = array(); +$inserts = array(); + +if (isset($first_time_key)) +{ + list($year, $month, $day, $hour) = explode('-', $first_time_key); + + $query = ' +SELECT * + FROM '.HISTORY_SUMMARY_TABLE.' + WHERE year='.$year.' + AND ( month IS NULL + OR ( month='.$month.' + AND ( day is NULL + OR (day='.$day.' + AND (hour IS NULL OR hour='.$hour.') + ) + ) + ) + ) +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $key = sprintf('%4u', $row['year']); + if ( isset($row['month']) ) + { + $key .= sprintf('-%02u', $row['month']); + if ( isset($row['day']) ) + { + $key .= sprintf('-%02u', $row['day']); + if ( isset($row['hour']) ) + { + $key .= sprintf('-%02u', $row['hour']); + } + } + } + + if (isset($need_update[$key])) + { + $row['nb_pages'] += $need_update[$key]; + $updates[] = $row; + unset($need_update[$key]); + } + } +} + +foreach ($need_update as $time_key => $nb_pages) +{ + $time_tokens = explode('-', $time_key); + + $inserts[] = array( + 'year' => $time_tokens[0], + 'month' => @$time_tokens[1], + 'day' => @$time_tokens[2], + 'hour' => @$time_tokens[3], + 'nb_pages' => $nb_pages, + ); +} + +if (count($updates) > 0) +{ + mass_updates( + HISTORY_SUMMARY_TABLE, + array( + 'primary' => array('year','month','day','hour'), + 'update' => array('nb_pages'), + ), + $updates + ); +} + +if (count($inserts) > 0) +{ + mass_inserts( + HISTORY_SUMMARY_TABLE, + array_keys($inserts[0]), + $inserts + ); +} + +if ($max_id != 0) +{ + $query = ' +UPDATE '.HISTORY_TABLE.' + SET summarized = \'true\' + WHERE summarized = \'false\' + AND id <= '.$max_id.' +;'; + pwg_query($query); +} + +// +-----------------------------------------------------------------------+ +// | Page parameters check | +// +-----------------------------------------------------------------------+ + +foreach (array('day', 'month', 'year') as $key) +{ + if (isset($_GET[$key])) + { + $page[$key] = (int)$_GET[$key]; + } +} + +if (isset($page['day'])) +{ + if (!isset($page['month'])) + { + die('month is missing in URL'); + } +} + +if (isset($page['month'])) +{ + if (!isset($page['year'])) + { + die('year is missing in URL'); + } +} + +$summary_lines = get_summary( + @$page['year'], + @$page['month'], + @$page['day'] + ); + +// +-----------------------------------------------------------------------+ +// | Display statistics header | +// +-----------------------------------------------------------------------+ + +// page title creation +$title_parts = array(); + +$url = PHPWG_ROOT_PATH.'admin.php?page=stats'; + +$title_parts[] = ''.l10n('Overall').''; + +$period_label = l10n('Year'); + +if (isset($page['year'])) +{ + $url.= '&year='.$page['year']; + + $title_parts[] = ''.$page['year'].''; + + $period_label = l10n('Month'); +} + +if (isset($page['month'])) +{ + $url.= '&month='.$page['month']; + + $title_parts[] = ''.$lang['month'][$page['month']].''; + + $period_label = l10n('Day'); +} + +if (isset($page['day'])) +{ + $url.= '&day='.$page['day']; + + $time = mktime(12, 0, 0, $page['month'], $page['day'], $page['year']); + + $day_title = sprintf( + '%u (%s)', + $page['day'], + $lang['day'][date('w', $time)] + ); + + $title_parts[] = ''.$day_title.''; + + $period_label = l10n('Hour'); +} + +$template->set_filename('stats', 'stats.tpl'); + +// TabSheet initialization +history_tabsheet(); + +$base_url = get_root_url().'admin.php?page=history'; + +$template->assign( + array( + 'L_STAT_TITLE' => implode($conf['level_separator'], $title_parts), + 'PERIOD_LABEL' => $period_label, + 'U_HELP' => get_root_url().'admin/popuphelp.php?page=history', + 'F_ACTION' => $base_url, + ) + ); + +// +-----------------------------------------------------------------------+ +// | Display statistic rows | +// +-----------------------------------------------------------------------+ + +$max_width = 400; + +$datas = array(); + +if (isset($page['day'])) +{ + $key = 'hour'; + $min_x = 0; + $max_x = 23; +} +elseif (isset($page['month'])) +{ + $key = 'day'; + $min_x = 1; + $max_x = date( + 't', + mktime(12, 0, 0, $page['month'], 1, $page['year']) + ); +} +elseif (isset($page['year'])) +{ + $key = 'month'; + $min_x = 1; + $max_x = 12; +} +else +{ + $key = 'year'; +} + +$max_pages = 1; +foreach ($summary_lines as $line) +{ + if ($line['nb_pages'] > $max_pages) + { + $max_pages = $line['nb_pages']; + } + + $datas[ $line[$key] ] = $line['nb_pages']; +} + +if (!isset($min_x) and !isset($max_x) and count($datas) > 0) +{ + $min_x = min(array_keys($datas)); + $max_x = max(array_keys($datas)); +} + +if (count($datas) > 0) +{ + for ($i = $min_x; $i <= $max_x; $i++) + { + if (!isset($datas[$i])) + { + $datas[$i] = 0; + } + + $url = null; + + if (isset($page['day'])) + { + $value = sprintf('%02u', $i); + } + else if (isset($page['month'])) + { + $url = + get_root_url().'admin.php' + .'?page=stats' + .'&year='.$page['year'] + .'&month='.$page['month'] + .'&day='.$i + ; + + $time = mktime(12, 0, 0, $page['month'], $i, $page['year']); + + $value = $i.' ('.$lang['day'][date('w', $time)].')'; + } + else if (isset($page['year'])) + { + $url = + get_root_url().'admin.php' + .'?page=stats' + .'&year='.$page['year'] + .'&month='.$i + ; + + $value = $lang['month'][$i]; + } + else + { + // at least the year is defined + $url = + get_root_url().'admin.php' + .'?page=stats' + .'&year='.$i + ; + + $value = $i; + } + + if ($datas[$i] != 0 and isset($url)) + { + $value = ''.$value.''; + } + + $template->append( + 'statrows', + array( + 'VALUE' => $value, + 'PAGES' => $datas[$i], + 'WIDTH' => ceil(($datas[$i] * $max_width) / $max_pages ), + ) + ); + } +} + +// +-----------------------------------------------------------------------+ +// | Sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'stats'); +?> \ No newline at end of file diff --git a/sources/admin/tags.php b/sources/admin/tags.php new file mode 100644 index 0000000..a7c58f7 --- /dev/null +++ b/sources/admin/tags.php @@ -0,0 +1,457 @@ + $tag_id, + 'name' => addslashes($tag_name), + 'url_name' => trigger_event('render_tag_url', $tag_name), + ); + } + } + } + mass_updates( + TAGS_TABLE, + array( + 'primary' => array('id'), + 'update' => array('name', 'url_name'), + ), + $updates + ); +} +// +-----------------------------------------------------------------------+ +// | dulicate tags | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['duplic_submit'])) +{ + $query = ' +SELECT name + FROM '.TAGS_TABLE.' +;'; + $existing_names = array_from_query($query, 'name'); + + + $current_name_of = array(); + $query = ' +SELECT id, name + FROM '.TAGS_TABLE.' + WHERE id IN ('.$_POST['edit_list'].') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $current_name_of[ $row['id'] ] = $row['name']; + } + + $updates = array(); + // we must not rename tag with an already existing name + foreach (explode(',', $_POST['edit_list']) as $tag_id) + { + $tag_name = stripslashes($_POST['tag_name-'.$tag_id]); + + if ($tag_name != $current_name_of[$tag_id]) + { + if (in_array($tag_name, $existing_names)) + { + $page['errors'][] = l10n('Tag "%s" already exists', $tag_name); + } + else if (!empty($tag_name)) + { + single_insert( + TAGS_TABLE, + array( + 'name' => $tag_name, + 'url_name' => trigger_event('render_tag_url', $tag_name), + ) + ); + + $query = ' + SELECT id + FROM '.TAGS_TABLE.' + WHERE name = \''.$tag_name.'\' + ;'; + $destination_tag = array_from_query($query, 'id'); + $destination_tag_id = $destination_tag[0]; + + $query = ' + SELECT + image_id + FROM '.IMAGE_TAG_TABLE.' + WHERE tag_id = '.$tag_id.' + ;'; + $destination_tag_image_ids = array_from_query($query, 'image_id'); + + $inserts = array(); + foreach ($destination_tag_image_ids as $image_id) + { + $inserts[] = array( + 'tag_id' => $destination_tag_id, + 'image_id' => $image_id + ); + } + + if (count($inserts) > 0) + { + mass_inserts( + IMAGE_TAG_TABLE, + array_keys($inserts[0]), + $inserts + ); + } + + $page['infos'][] = l10n( + 'Tag "%s" is now a duplicate of "%s"', + stripslashes($tag_name), + $current_name_of[$tag_id] + ); + } + } + } + + mass_updates( + TAGS_TABLE, + array( + 'primary' => array('id'), + 'update' => array('name', 'url_name'), + ), + $updates + ); +} + +// +-----------------------------------------------------------------------+ +// | merge tags | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['merge_submit'])) +{ + if (!isset($_POST['destination_tag'])) + { + $page['errors'][] = l10n('No destination tag selected'); + } + else + { + $destination_tag_id = $_POST['destination_tag']; + $tag_ids = explode(',', $_POST['merge_list']); + + if (is_array($tag_ids) and count($tag_ids) > 1) + { + $name_of_tag = array(); + $query = ' +SELECT + id, + name + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $tag_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $name_of_tag[ $row['id'] ] = trigger_event('render_tag_name', $row['name'], $row); + } + + $tag_ids_to_delete = array_diff( + $tag_ids, + array($destination_tag_id) + ); + + $query = ' +SELECT + DISTINCT(image_id) + FROM '.IMAGE_TAG_TABLE.' + WHERE tag_id IN ('.implode(',', $tag_ids_to_delete).') +;'; + $image_ids = array_from_query($query, 'image_id'); + + delete_tags($tag_ids_to_delete); + + $query = ' +SELECT + image_id + FROM '.IMAGE_TAG_TABLE.' + WHERE tag_id = '.$destination_tag_id.' +;'; + $destination_tag_image_ids = array_from_query($query, 'image_id'); + + $image_ids_to_link = array_diff( + $image_ids, + $destination_tag_image_ids + ); + + $inserts = array(); + foreach ($image_ids_to_link as $image_id) + { + $inserts[] = array( + 'tag_id' => $destination_tag_id, + 'image_id' => $image_id + ); + } + + if (count($inserts) > 0) + { + mass_inserts( + IMAGE_TAG_TABLE, + array_keys($inserts[0]), + $inserts + ); + } + + $tags_deleted = array(); + foreach ($tag_ids_to_delete as $tag_id) + { + $tags_deleted[] = $name_of_tag[$tag_id]; + } + + $page['infos'][] = l10n( + 'Tags %s merged into tag %s', + implode(', ', $tags_deleted), + $name_of_tag[$destination_tag_id] + ); + } + } +} + + +// +-----------------------------------------------------------------------+ +// | delete tags | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['delete']) and isset($_POST['tags'])) +{ + $query = ' +SELECT name + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $_POST['tags']).') +;'; + $tag_names = array_from_query($query, 'name'); + + delete_tags($_POST['tags']); + + $page['infos'][] = l10n_dec( + 'The following tag was deleted', 'The %d following tags were deleted', + count($tag_names) + ) + .' : '.implode(', ', $tag_names); +} + +// +-----------------------------------------------------------------------+ +// | delete orphan tags | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['action']) and 'delete_orphans' == $_GET['action']) +{ + check_pwg_token(); + + delete_orphan_tags(); + $_SESSION['page_infos'] = array(l10n('Orphan tags deleted')); + redirect(get_root_url().'admin.php?page=tags'); +} + +// +-----------------------------------------------------------------------+ +// | add a tag | +// +-----------------------------------------------------------------------+ + +if (isset($_POST['add']) and !empty($_POST['add_tag'])) +{ + $ret = create_tag($_POST['add_tag']); + + if (isset($ret['error'])) + { + $page['errors'][] = $ret['error']; + } + else + { + $page['infos'][] = $ret['info']; + } +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames(array('tags' => 'tags.tpl')); + +$template->assign( + array( + 'F_ACTION' => PHPWG_ROOT_PATH.'admin.php?page=tags', + 'PWG_TOKEN' => get_pwg_token(), + ) + ); + +// +-----------------------------------------------------------------------+ +// | orphan tags | +// +-----------------------------------------------------------------------+ + +$orphan_tags = get_orphan_tags(); + +$orphan_tag_names = array(); +foreach ($orphan_tags as $tag) +{ + $orphan_tag_names[] = trigger_event('render_tag_name', $tag['name'], $tag); +} + +if (count($orphan_tag_names) > 0) +{ + $page['warnings'][] = sprintf( + l10n('You have %d orphan tags: %s.').' '.l10n('Delete orphan tags').'', + count($orphan_tag_names), + implode(', ', $orphan_tag_names), + get_root_url().'admin.php?page=tags&action=delete_orphans&pwg_token='.get_pwg_token() + ); +} + +// +-----------------------------------------------------------------------+ +// | form creation | +// +-----------------------------------------------------------------------+ + + +// tag counters +$query = ' +SELECT tag_id, COUNT(image_id) AS counter + FROM '.IMAGE_TAG_TABLE.' + GROUP BY tag_id'; +$tag_counters = simple_hash_from_query($query, 'tag_id', 'counter'); + +// all tags +$query = ' +SELECT * + FROM '.TAGS_TABLE.' +;'; +$result = pwg_query($query); +$all_tags = array(); +while ($tag = pwg_db_fetch_assoc($result)) +{ + $raw_name = $tag['name']; + $tag['name'] = trigger_event('render_tag_name', $raw_name, $tag); + $tag['counter'] = intval(@$tag_counters[ $tag['id'] ]); + $tag['U_VIEW'] = make_index_url(array('tags'=>array($tag))); + $tag['U_EDIT'] = 'admin.php?page=batch_manager&filter=tag-'.$tag['id']; + + $alt_names = trigger_event('get_tag_alt_names', array(), $raw_name); + $alt_names = array_diff( array_unique($alt_names), array($tag['name']) ); + if (count($alt_names)) + { + $tag['alt_names'] = implode(', ', $alt_names); + } + $all_tags[] = $tag; +} +usort($all_tags, 'tag_alpha_compare'); + + + +$template->assign( + array( + 'all_tags' => $all_tags, + ) + ); + +if ((isset($_POST['edit']) or isset($_POST['duplicate']) or isset($_POST['merge'])) and isset($_POST['tags'])) +{ + $list_name = 'EDIT_TAGS_LIST'; + if (isset($_POST['duplicate'])) + { + $list_name = 'DUPLIC_TAGS_LIST'; + } + elseif (isset($_POST['merge'])) + { + $list_name = 'MERGE_TAGS_LIST'; + } + + $template->assign($list_name, implode(',', $_POST['tags'])); + + $query = ' +SELECT id, name + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $_POST['tags']).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $template->append( + 'tags', + array( + 'ID' => $row['id'], + 'NAME' => $row['name'], + ) + ); + } +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'tags'); + +?> diff --git a/sources/admin/theme.php b/sources/admin/theme.php new file mode 100644 index 0000000..984ac45 --- /dev/null +++ b/sources/admin/theme.php @@ -0,0 +1,53 @@ +fs_themes))) +{ + die('Invalid theme'); +} + +$filename = PHPWG_THEMES_PATH.$_GET['theme'].'/admin/admin.inc.php'; +if (is_file($filename)) +{ + include_once($filename); +} +else +{ + die('Missing file '.$filename); +} +?> \ No newline at end of file diff --git a/sources/admin/themes.php b/sources/admin/themes.php new file mode 100644 index 0000000..5359974 --- /dev/null +++ b/sources/admin/themes.php @@ -0,0 +1,48 @@ +set_id('themes'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +if ($page['tab'] == 'update') + include(PHPWG_ROOT_PATH.'admin/updates_ext.php'); +else + include(PHPWG_ROOT_PATH.'admin/themes_'.$page['tab'].'.php'); + +?> \ No newline at end of file diff --git a/sources/admin/themes/clear/icon/cat_move.png b/sources/admin/themes/clear/icon/cat_move.png new file mode 100644 index 0000000..b3f9376 Binary files /dev/null and b/sources/admin/themes/clear/icon/cat_move.png differ diff --git a/sources/admin/themes/clear/icon/category_children.png b/sources/admin/themes/clear/icon/category_children.png new file mode 100644 index 0000000..7205c3f Binary files /dev/null and b/sources/admin/themes/clear/icon/category_children.png differ diff --git a/sources/admin/themes/clear/icon/category_delete.png b/sources/admin/themes/clear/icon/category_delete.png new file mode 100644 index 0000000..da796da Binary files /dev/null and b/sources/admin/themes/clear/icon/category_delete.png differ diff --git a/sources/admin/themes/clear/icon/category_edit.png b/sources/admin/themes/clear/icon/category_edit.png new file mode 100644 index 0000000..0f3b619 Binary files /dev/null and b/sources/admin/themes/clear/icon/category_edit.png differ diff --git a/sources/admin/themes/clear/icon/category_elements.png b/sources/admin/themes/clear/icon/category_elements.png new file mode 100644 index 0000000..1038e51 Binary files /dev/null and b/sources/admin/themes/clear/icon/category_elements.png differ diff --git a/sources/admin/themes/clear/icon/category_jump-to.png b/sources/admin/themes/clear/icon/category_jump-to.png new file mode 100644 index 0000000..62db1f4 Binary files /dev/null and b/sources/admin/themes/clear/icon/category_jump-to.png differ diff --git a/sources/admin/themes/clear/icon/category_permissions.png b/sources/admin/themes/clear/icon/category_permissions.png new file mode 100644 index 0000000..4780841 Binary files /dev/null and b/sources/admin/themes/clear/icon/category_permissions.png differ diff --git a/sources/admin/themes/clear/icon/category_representant_random.png b/sources/admin/themes/clear/icon/category_representant_random.png new file mode 100644 index 0000000..dfa6984 Binary files /dev/null and b/sources/admin/themes/clear/icon/category_representant_random.png differ diff --git a/sources/admin/themes/clear/icon/check.png b/sources/admin/themes/clear/icon/check.png new file mode 100644 index 0000000..d9abf27 Binary files /dev/null and b/sources/admin/themes/clear/icon/check.png differ diff --git a/sources/admin/themes/clear/icon/datepicker.png b/sources/admin/themes/clear/icon/datepicker.png new file mode 100644 index 0000000..68c5256 Binary files /dev/null and b/sources/admin/themes/clear/icon/datepicker.png differ diff --git a/sources/admin/themes/clear/icon/delete.png b/sources/admin/themes/clear/icon/delete.png new file mode 100644 index 0000000..94e2c97 Binary files /dev/null and b/sources/admin/themes/clear/icon/delete.png differ diff --git a/sources/admin/themes/clear/icon/edit_s.png b/sources/admin/themes/clear/icon/edit_s.png new file mode 100644 index 0000000..e4951d2 Binary files /dev/null and b/sources/admin/themes/clear/icon/edit_s.png differ diff --git a/sources/admin/themes/clear/icon/exit.png b/sources/admin/themes/clear/icon/exit.png new file mode 100644 index 0000000..2aafbb4 Binary files /dev/null and b/sources/admin/themes/clear/icon/exit.png differ diff --git a/sources/admin/themes/clear/icon/help.png b/sources/admin/themes/clear/icon/help.png new file mode 100644 index 0000000..b3a7dad Binary files /dev/null and b/sources/admin/themes/clear/icon/help.png differ diff --git a/sources/admin/themes/clear/icon/home.png b/sources/admin/themes/clear/icon/home.png new file mode 100644 index 0000000..16adac2 Binary files /dev/null and b/sources/admin/themes/clear/icon/home.png differ diff --git a/sources/admin/themes/clear/icon/index.php b/sources/admin/themes/clear/icon/index.php new file mode 100644 index 0000000..e336595 --- /dev/null +++ b/sources/admin/themes/clear/icon/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/admin/themes/clear/icon/infos.png b/sources/admin/themes/clear/icon/infos.png new file mode 100644 index 0000000..dc8c8a4 Binary files /dev/null and b/sources/admin/themes/clear/icon/infos.png differ diff --git a/sources/admin/themes/clear/icon/minus.gif b/sources/admin/themes/clear/icon/minus.gif new file mode 100644 index 0000000..154e45a Binary files /dev/null and b/sources/admin/themes/clear/icon/minus.gif differ diff --git a/sources/admin/themes/clear/icon/next.png b/sources/admin/themes/clear/icon/next.png new file mode 100644 index 0000000..32587c4 Binary files /dev/null and b/sources/admin/themes/clear/icon/next.png differ diff --git a/sources/admin/themes/clear/icon/page_end.png b/sources/admin/themes/clear/icon/page_end.png new file mode 100644 index 0000000..c8f54fb Binary files /dev/null and b/sources/admin/themes/clear/icon/page_end.png differ diff --git a/sources/admin/themes/clear/icon/page_top.png b/sources/admin/themes/clear/icon/page_top.png new file mode 100644 index 0000000..8b18f13 Binary files /dev/null and b/sources/admin/themes/clear/icon/page_top.png differ diff --git a/sources/admin/themes/clear/icon/permissions.png b/sources/admin/themes/clear/icon/permissions.png new file mode 100644 index 0000000..2ebc4f6 Binary files /dev/null and b/sources/admin/themes/clear/icon/permissions.png differ diff --git a/sources/admin/themes/clear/icon/plus.gif b/sources/admin/themes/clear/icon/plus.gif new file mode 100644 index 0000000..93d2ade Binary files /dev/null and b/sources/admin/themes/clear/icon/plus.gif differ diff --git a/sources/admin/themes/clear/icon/preferences.png b/sources/admin/themes/clear/icon/preferences.png new file mode 100644 index 0000000..3039334 Binary files /dev/null and b/sources/admin/themes/clear/icon/preferences.png differ diff --git a/sources/admin/themes/clear/icon/prev.png b/sources/admin/themes/clear/icon/prev.png new file mode 100644 index 0000000..474fbb7 Binary files /dev/null and b/sources/admin/themes/clear/icon/prev.png differ diff --git a/sources/admin/themes/clear/icon/remove_filter.png b/sources/admin/themes/clear/icon/remove_filter.png new file mode 100644 index 0000000..c2fa738 Binary files /dev/null and b/sources/admin/themes/clear/icon/remove_filter.png differ diff --git a/sources/admin/themes/clear/icon/remove_filter_hover.png b/sources/admin/themes/clear/icon/remove_filter_hover.png new file mode 100644 index 0000000..1f9d975 Binary files /dev/null and b/sources/admin/themes/clear/icon/remove_filter_hover.png differ diff --git a/sources/admin/themes/clear/icon/toggle_is_default_group.png b/sources/admin/themes/clear/icon/toggle_is_default_group.png new file mode 100644 index 0000000..0d58e79 Binary files /dev/null and b/sources/admin/themes/clear/icon/toggle_is_default_group.png differ diff --git a/sources/admin/themes/clear/icon/uncheck.png b/sources/admin/themes/clear/icon/uncheck.png new file mode 100644 index 0000000..2f7df35 Binary files /dev/null and b/sources/admin/themes/clear/icon/uncheck.png differ diff --git a/sources/admin/themes/clear/icon/validate_s.png b/sources/admin/themes/clear/icon/validate_s.png new file mode 100644 index 0000000..400bf8a Binary files /dev/null and b/sources/admin/themes/clear/icon/validate_s.png differ diff --git a/sources/admin/themes/clear/icon/virt_category.png b/sources/admin/themes/clear/icon/virt_category.png new file mode 100644 index 0000000..15f4f22 Binary files /dev/null and b/sources/admin/themes/clear/icon/virt_category.png differ diff --git a/sources/admin/themes/clear/icon/warning.png b/sources/admin/themes/clear/icon/warning.png new file mode 100644 index 0000000..060b577 Binary files /dev/null and b/sources/admin/themes/clear/icon/warning.png differ diff --git a/sources/admin/themes/clear/images/external_active.png b/sources/admin/themes/clear/images/external_active.png new file mode 100644 index 0000000..9bbccfa Binary files /dev/null and b/sources/admin/themes/clear/images/external_active.png differ diff --git a/sources/admin/themes/clear/images/external_inactive.png b/sources/admin/themes/clear/images/external_inactive.png new file mode 100644 index 0000000..5ed8db2 Binary files /dev/null and b/sources/admin/themes/clear/images/external_inactive.png differ diff --git a/sources/admin/themes/clear/images/missing_screenshot.png b/sources/admin/themes/clear/images/missing_screenshot.png new file mode 100644 index 0000000..4c67f61 Binary files /dev/null and b/sources/admin/themes/clear/images/missing_screenshot.png differ diff --git a/sources/admin/themes/clear/images/piwigo_logo_big.png b/sources/admin/themes/clear/images/piwigo_logo_big.png new file mode 100644 index 0000000..814c1c9 Binary files /dev/null and b/sources/admin/themes/clear/images/piwigo_logo_big.png differ diff --git a/sources/admin/themes/clear/images/piwigo_logo_small.png b/sources/admin/themes/clear/images/piwigo_logo_small.png new file mode 100644 index 0000000..09c679a Binary files /dev/null and b/sources/admin/themes/clear/images/piwigo_logo_small.png differ diff --git a/sources/admin/themes/clear/images/quickLocalSync.png b/sources/admin/themes/clear/images/quickLocalSync.png new file mode 100644 index 0000000..daf75e6 Binary files /dev/null and b/sources/admin/themes/clear/images/quickLocalSync.png differ diff --git a/sources/admin/themes/clear/images/resizable-e.gif b/sources/admin/themes/clear/images/resizable-e.gif new file mode 100644 index 0000000..32d05b9 Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-e.gif differ diff --git a/sources/admin/themes/clear/images/resizable-n.gif b/sources/admin/themes/clear/images/resizable-n.gif new file mode 100644 index 0000000..6a62dc8 Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-n.gif differ diff --git a/sources/admin/themes/clear/images/resizable-ne.gif b/sources/admin/themes/clear/images/resizable-ne.gif new file mode 100644 index 0000000..09ad9fc Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-ne.gif differ diff --git a/sources/admin/themes/clear/images/resizable-nw.gif b/sources/admin/themes/clear/images/resizable-nw.gif new file mode 100644 index 0000000..c33bd0f Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-nw.gif differ diff --git a/sources/admin/themes/clear/images/resizable-s.gif b/sources/admin/themes/clear/images/resizable-s.gif new file mode 100644 index 0000000..b1d72c5 Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-s.gif differ diff --git a/sources/admin/themes/clear/images/resizable-se.gif b/sources/admin/themes/clear/images/resizable-se.gif new file mode 100644 index 0000000..ad6bd1f Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-se.gif differ diff --git a/sources/admin/themes/clear/images/resizable-sw.gif b/sources/admin/themes/clear/images/resizable-sw.gif new file mode 100644 index 0000000..5bf25ce Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-sw.gif differ diff --git a/sources/admin/themes/clear/images/resizable-w.gif b/sources/admin/themes/clear/images/resizable-w.gif new file mode 100644 index 0000000..e4ed876 Binary files /dev/null and b/sources/admin/themes/clear/images/resizable-w.gif differ diff --git a/sources/admin/themes/clear/images/stripe-cat.png b/sources/admin/themes/clear/images/stripe-cat.png new file mode 100644 index 0000000..126c888 Binary files /dev/null and b/sources/admin/themes/clear/images/stripe-cat.png differ diff --git a/sources/admin/themes/clear/images/transparent.gif b/sources/admin/themes/clear/images/transparent.gif new file mode 100644 index 0000000..f419cd4 Binary files /dev/null and b/sources/admin/themes/clear/images/transparent.gif differ diff --git a/sources/admin/themes/clear/index.php b/sources/admin/themes/clear/index.php new file mode 100644 index 0000000..d959f2c --- /dev/null +++ b/sources/admin/themes/clear/index.php @@ -0,0 +1,54 @@ + diff --git a/sources/admin/themes/clear/mail-css.tpl b/sources/admin/themes/clear/mail-css.tpl new file mode 100644 index 0000000..cfe148b --- /dev/null +++ b/sources/admin/themes/clear/mail-css.tpl @@ -0,0 +1,19 @@ +{* $Id: mail-css.tpl 2526 2008-09-14 00:33:53Z vdigital $ *} +/* Theme wipi mail css */ + +body {ldelim} background-color:#111; color:#69c;} +#the_page {ldelim} background: #111 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;} +#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;} +#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom; +color: #69c;} +h2 {ldelim} background-color: #222;color:#eee;background-image: url({$ROOT_URL}template/{$themeconf.template}/themes/{$themeconf.theme}/images/tableh1_bg.png);} +img {ldelim} margin: 16px; padding:15px;border:1px solid #eee; -moz-border-radius: 4px; border-radius: 4px 4px; } +img:hover {ldelim} border:1px solid #69c; -moz-border-radius: 4px; border-radius: 4px 4px; } +a {ldelim} color: #69c; background: transparent; } +a:hover {ldelim} color: #f92; } +a.PWG {ldelim} border: 0px; } +a.PWG .P {ldelim} color : #f92; } +a.PWG .W {ldelim} color : #aaa; } +a.PWG .G {ldelim} color : #69c; } +a.PWG:hover .P {ldelim} color : #69c; } +a.PWG:hover .G {ldelim} color : #f92; } diff --git a/sources/admin/themes/clear/theme.css b/sources/admin/themes/clear/theme.css new file mode 100644 index 0000000..c481771 --- /dev/null +++ b/sources/admin/themes/clear/theme.css @@ -0,0 +1,367 @@ +/* generic colors - clear +.gcText { color: #777777; } used for text +.gcText2 { color: #777777; } used for table header +.gcText3 { color: #555555; } used for tabs text +.gcTextInput { color:#666666; } used for inputs +.gcLink { color: #005E89; } used for link +.gcLinkHover { color: #D54E21; } used for link +.gcBgPage { background-color: #F9F9F9; } used for page background +.gcBgTabSheet { background-color: #F1F1F1; } used inside tabsheet & menu +.gcBgTableRow1 { background-color: #DDDDDD; } used in for tables rows background +.gcBgTableRow2 { background-color: #EEEEEE; } used in tables rows & some widgets background +.gcBgInput { background-color:#CCCCCC; } used for inputs +.gcBorder { border-color: #AAAAAA; } used for borders +.gcBorder2 { border-color: #666666; } used for widgets borders +.gcBorderInput { border-color:#777777; } used for inputs +*/ +/* text color */ + +body, h3, dt, h2, .throw, .content, label , LEGEND { + color:#777; +} + +th { color: #888; } +INPUT, select, textarea { color:#666; background-color: #ccc; } +option[disabled] { background-color: #ccc; } +input[type="radio"], input[type="checkbox"] { background-color: transparent; } + + + +INPUT[type="text"], INPUT[type="password"], INPUT[type="file"] { + background-color: #ddd; +} + +SELECT, TEXTAREA { + background-color: #ddd; +} + +INPUT:focus, SELECT:focus, TEXTAREA:focus { + background-color: #eee; + color: #666; +} + +INPUT, SELECT, TEXTAREA { border: 1px solid #999; } + +.showInfo { color:#999; } +.showInfo:hover { color:#333; } + + +#copyright { color:#777; margin:5px auto 0px 240px; text-align:center; +padding-bottom: 15px; } +.header_notes { + background: transparent url(../default/icon/note.png) no-repeat right top; + border: none; + min-height: 48px; + padding: 15px 60px 0 0; + right: 0; + width: 550px; + top: 70px; +} +html, body { + min-height: 100%; + background-color: #f9f9f9; +} + +/* #the_page { margin: 0; padding: 0; z-index: 1; top:0px; */ +/* padding-top: 0; min-height: 100%; width:100%; position:absolute; left:0px; } */ +h3, .throw, .row1 { background-color: #ddd; } +.row2 { background-color:#eeeeee; } + +#content { + background: #f1f1f1; + border: 1px solid #aaa; + min-height: 467px; + margin-left:217px; + margin-top: 7px; +} + +.content h3 { font-size:20px; letter-spacing:-0.4px; margin:0 20px 12px 0; + text-align:center; background:none; border: 0; } +.content h3 ~ h3{ margin-top: 40px; } +.content h4 { color: #aaa; font-size:14px; text-align:center; padding:3px; margin-top: 0; margin-bottom: 10px;} + +.content dl, dd { margin:5px; } +.content div.titrePage { height:40px; } + + +UL.thumbnails span.wrap2:hover { background-color:#7CBA0F; color:#999; } +UL.thumbnails span.wrap2 { + background-color:#ddd; +} + + +/* borders */ +fieldset { border: 2px solid #ddd; } +TEXTAREA { cursor:text; font-size: 13px; } +.tagSelection label { padding-right:12px; } +.tagSelection LI.tagSelected {background-color:#dbe8f3;} +.tagSelected LABEL {color:black;} + +ul.thumbnails input { color:#666; font-size:10px; margin:0; background-color:#bbb; text-align: center;} +.throw { font-size: 120%; line-height: 26px; padding-top: 10px; font-weight: bold; } +label { cursor:pointer } +.categoryLi, .menuLi { background: #ddd } +.menuLi_hidden { background: #ccc !important; } +a.Piwigo { + font-family: verdana, arial, helvetica, sans-serif !important; + font-size: 11px; font-weight: normal; letter-spacing: 0; + color : #0cc; text-decoration: none; border: 0; } +a.Piwigo:hover span.Piwigo { + border-bottom: 1px solid #0cc9c; +} +TABLE.table2 { border: 2px solid #dddddd; } + +.categoryUl>li:not(.virtual_cat) { + background:url(images/stripe-cat.png); +} + +*, *:focus, *:active, input:active, a:active, input:focus, a:focus { outline: none; -moz-outline-width: 0px; } +A{ + color:#005E89; +} + +A:hover, A:active { + color: #d54e21; + cursor: pointer; +} + +.content .navigationBar {color:#999;} +ul.actions, .content form#waiting {text-align:center;} + +.header_msgs { + border:0; + color:#ccc; + font-size:24px; + height:30px; + margin:0; padding:10px 0 0; + text-align:center; width:100%; +} + +/* tabsheets are often used in admin pages => No specific css files */ +#tabsheet { width:auto; margin:-1px; margin-right:-6px; padding:0; +border:1px solid #f9f9f9; border-bottom:1px solid #aaa; background-color:#f9f9f9;margin-top:-7px;} +.tabsheet { display:table; white-space:nowrap; padding-left:10px; margin:0; width:auto; +font-family:verdana,arial,helvetica,sans-serif; font-size:8px; +list-style-type:none; list-style-image:none; text-decoration:none; } +.tabsheet li { background:#f1f1f1; float:left; margin:0 6px 0 0; overflow:hidden; text-align:right; border:1px solid #aaa; border-bottom:none; position:relative; top:11px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px;border-radius:5px 5px 0 0;} +.tabsheet a { +display:block; font-size:11px; border:0; +font-weight:bold; overflow:hidden; padding:6px; +text-align:right; text-decoration:none; margin: 0; } +.tabsheet a:first-letter { text-transform:capitalize; } +.tabsheet li.selected_tab { + border-bottom:1px solid #f1f1f1; +} +.tabsheet li:hover, .tabsheet li.selected_tab { +margin-top:4px; padding-bottom:3px; padding-top:3px; top:1px; + } +/* .tabsheet a:hover */ +.tabsheet li.selected_tab a { color: #555; } +.tabsheet a span { font-size:10px; margin-right:2px; padding:0 3px 0 1px; } + +.sort { clear: none; } +/* menubar is on all admin pages => No specific css file */ +#menubar { + padding:0; width:207px; z-index:99; text-align: left;margin-top:7px; + margin-left:0; +} + +#menubar ul.scroll { overflow-y:auto; max-height:500px; + /* Only IE family supports colored scrollbar */ + scrollbar-face-color: #ddd; scrollbar-shadow-color: #bbb; scrollbar-highlight-color: #fff; + scrollbar-3dlight-color: #d6d6d6; scrollbar-darkshadow-color: #ccc; scrollbar-track-color: #eee; + scrollbar-arrow-color: #0cccc; } +#menubar dd { margin: 0; padding: 0;} +#menubar dl { width: 200px; border:0; margin: 0; padding: 0; display: block; min-height:35px; border:1px solid #ddd; background-color:#f1f1f1; border-left:none; border-right:1px solid #ddd;} +#menubar dl.first {border-top:none;border-radius:0 6px 0 0;} +#menubar dl.first dt {border-radius:0 6px 0 0;} +#menubar dl.last {border-bottom:1px solid #ddd; border-radius:0 0 6px 0;} +#menubar dt { + background-color: #ddd; margin: 0; display: block; font-weight:bold; + position:relative; padding: 5px 1px 4px 5px; font-size: 13px; color: #777; + cursor:pointer; +} +#menubar li { margin: 0; padding-left:10px; } +#menubar li A { display:block; } +#menubar li A:hover {color:black; text-decoration:none} +#menubar li:hover {background-color:#dbe8f3;} +#menubar ul { color: #ccc; margin:0; line-height: 25px; + list-style-type: none; list-style-position: inside; padding: 0; } +#adminHome {background-color:#ddd;border-radius: 0 6px 6px 0;margin-left:0;margin-bottom:17px;} +#adminHome:hover {background-color:#d0d0d0;} + +/* jQuery tooltips */ +.ui-tooltip { + color: #000; + background-color: #eee; +} +.cluetip-outer { border-color:#999; color: #777; background-color: #eee; } +.cluetip-title { background-color: #ddd; } +/* jQuery ui resizable */ +.ui-resizable { position: relative; } +.ui-wrapper { border: 0; } +.ui-wrapper input, .ui-wrapper textarea { border: 0; } +/* jQuery tiptip */ +#tiptip_holder a { color:#42B0FF; } + +/* Global handle styles */ +.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; } +.ui-resizable .ui-resizable-handle { display: block; } +body .ui-resizable-disabled .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */ +body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */ +.ui-resizable-n { cursor: n-resize; height: 6px; width: 100%; top: 0px; left: 0px; background: transparent url(images/resizable-n.gif) no-repeat scroll center top; } +.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; background: transparent url(images/resizable-s.gif) no-repeat scroll center top; } +.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-e.gif) no-repeat scroll right center; } +.ui-resizable-w { cursor: w-resize; width: 6px; left: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-w.gif) no-repeat scroll right center; } +.ui-resizable-se { cursor: se-resize; width: 9px; height: 9px; right: 0px; bottom: 0px; background: transparent url(images/resizable-se.gif); } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: 0px; bottom: 0px; background: transparent url(images/resizable-sw.gif); } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: 0px; top: 0px; background: transparent url(images/resizable-nw.gif); } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: 0px; top: 0px; background: transparent url(images/resizable-ne.gif); } + +#ui-datepicker-div {background-color: #f1f1f1; border:2px solid #aaa;} +#ui-datepicker-div .ui-datepicker-title {color:black;} +#ui-datepicker-div .ui-icon-circle-triangle-w {background: transparent url(icon/prev.png) no-repeat;} +#ui-datepicker-div .ui-icon-circle-triangle-e {background: transparent url(icon/next.png) no-repeat;} +#ui-datepicker-div .ui-datepicker-control, #ui-datepicker-div a {background-color: #FFFFFF !important;} +#ui-datepicker-div A.ui-datepicker-prev, #ui-datepicker-div A.ui-datepicker-next { + background-color:transparent !important; +} +#ui-datepicker-div A.ui-datepicker-prev:hover, +#ui-datepicker-div A.ui-datepicker-next:hover +{ + background-color:#eee !important;border:1px solid #aaa; +} + +#ui-datepicker-div .ui-datepicker-control, #ui-datepicker-div a { background-color: #eee; color: #08f !important;} +#ui-datepicker-div .ui-datepicker-days-row { background-color: #bbb;} +#ui-datepicker-div .ui-datepicker-week-end-cell, #ui-datepicker-div .ui-datepicker-week-end-cell a { background-color: #ddd; color: #0cc; border-color: #bbb; border-top-color: #ddd; border-left-color: #ddd;} +#ui-datepicker-div .ui-datepicker-title-row { background-color: #eee;} +#ui-datepicker-div .ui-datepicker-title-row .ui-datepicker-week-end-cell a { color: #0cc;} +#ui-datepicker-div a:hover { color: #0cccc !important; background-color: #eee !important;} +#ui-datepicker-div .ui-datepicker-header select { background-color:#bbb; color:#666; font-weight:normal;} +#ui-datepicker-div .ui-datepicker-links { background-color:#ddd;} +#ui-datepicker-div .ui-datepicker-header { background-color:#bbb;} +#ui-datepicker-div .ui-datepicker-current-day { background-color: #eee !important; border-color: #bbb; border-top-color: #eee; border-left-color: #eee;} +#ui-datepicker-div .ui-datepicker-days-cell { background-color:#bbb; border:1px solid #ddd; border-top-color: #bbb; border-left-color: #bbb;} +img.ui-datepicker-trigger{margin:-2px 10px 1px -2px;} + +.ui-slider { background:#fff;border-radius:2px;border:none; } +.ui-slider .ui-slider-range { background:#aaa;border-radius:2px; } + +.ui-slider .ui-slider-handle { + background-color: #eee; + border: 1px solid #aaa; + border-radius: 3px; +} + +INPUT[type="text"].large { width: 317px; } + +.bigbutton {background:none;margin-right:-5px; padding: 10px;height:auto;position:static;width:auto;text-align:right;} +.bigtext {display:none;position:static;} +.bigbutton input[type="submit"] {display:inline;position:static;height:auto;width:auto;font-size:18px;padding:10px;} + + +/* hacks */ +* html[lang="en"] body .content h2 , *+html[lang="en"] body .content h2 { text-transform:capitalize; } /* IE */ +*+html .bigtext { left: 70px; } +*+html .bigbutton input, * html .bigbutton input { left:0px; position:relative; top:-40px; } +* html .bigtext { margin-right: 300px; } + +.themeBox {background-color:#ddd;} +.themeBox IMG {border:1px solid white;} +.themeName {color:black;} +#themesContent H3 {border-bottom:1px solid #aaa;} +.themeDefault {background-color:#dbe8f3;} + +#pluginsMenuSeparator {border:1px solid #ddd;} + +#pwgHead, #footer { + background-color: #ddd; + color: #666; +} + + +#pwgHead A, #footer A {color:#444;} +#pwgHead A:hover, #footer A:hover {color:black;} +#footer { background-image: url(images/piwigo_logo_small.png);} + +.pluginBox, .pluginMiniBox, .groups li {background-color:#ddd;color:#353535;border-color:#ddd;} +.pluginBoxNameCell, .pluginMiniBoxNameCell {color:#111;} +.pluginBox.incompatible, .pluginMiniBox.incompatible {border-color:#a00 !important;} +.pluginBoxes .merged, .pluginBoxes .missing {background-color:#d99;border:1px solid #a00;} + +.languageBox {background-color:#ddd;} +.languageName {color:black;} +.languageDefault {background-color:#dbe8f3;} + +UL.thumbnails li.rank-of-image {background-color: #ddd;} + +#batchManagerGlobal .thumbSelected {background-color:#C2F5C2 !important} +#batchManagerGlobal #selectedMessage {background-color:#C2F5C2;} +#filter_dimension_width_info, #filter_dimension_height_info, #filter_dimension_ratio_info {color:#ff7700;font-weight:bold;} + +.selectedComment {background-color:#C2F5C2;} + +#pwgMain {padding-left:0} + +.buttonLike, input[type="submit"], input[type="button"], input[type="reset"] { + font-size:12px; + font-weight:bold; + letter-spacing:1px; + border:none; + background-color:#666666; + color:#fff; + padding:2px 5px; + -moz-border-radius:5px; + -webkit-border-radius:5px; + border-radius:5px; + margin-left:0; +} + +.buttonLike:hover, input[type="submit"]:hover, input[type="button"]:hover, input[type="reset"]:hover { + cursor: pointer; + background-color: #ff7700; + color: white; + text-decoration: none; +} + +p.albumTitle img {margin-bottom:-3px;} + +.groups label>p { + font-size: 1.2em; + color: #111; + background-color:#ccc; +} +label>p.group_select { + color: #000; + background-color:#C2F5C2; +} + +.userSeparator { + color:#999; +} + +table.dataTable tr.even { + background-color: #ddd !important; +} + +table.dataTable tr.even td.sorting_1 { + background-color: #ccc !important; + color:#333; +} + +table.dataTable tr.odd { + background-color: #eee !important; +} + +table.dataTable tr.odd td.sorting_1 { + background-color: #ddd !important; + color:#333; +} + +table.dataTable thead th { + border-color: #aaa !important; +} + +.userPropertiesContainer {border-color:#ddd;} +.userPrefs {border-color:#ddd;} diff --git a/sources/admin/themes/clear/themeconf.inc.php b/sources/admin/themes/clear/themeconf.inc.php new file mode 100644 index 0000000..a73ebbc --- /dev/null +++ b/sources/admin/themes/clear/themeconf.inc.php @@ -0,0 +1,7 @@ + 'clear', + 'parent' => 'default', + 'admin_icon_dir' => 'admin/themes/clear/icon', +); +?> diff --git a/sources/admin/themes/default/fix-ie5-ie6.css b/sources/admin/themes/default/fix-ie5-ie6.css new file mode 100644 index 0000000..e11b2f7 --- /dev/null +++ b/sources/admin/themes/default/fix-ie5-ie6.css @@ -0,0 +1,35 @@ +/* Issues in IE from 5 to 6 only not to be used with IE7 */ + + +/* to avoid vanishing objects in IE6 */ +H1, #theHeader { + width: 100%; /* <- useless but seems to make IE6 happy */ +} +.content { + height: 1em; /* for IE6 it's like min-height */ +} + +/* fix quickconnect layout */ +FORM#quickconnect FIELDSET { + width: 99%; /* correct an ugly 1 or 2 px misalignement with IE */ +} + +/* fix IE with another layout for thumbnails */ +UL.thumbnails SPAN.wrap2 { + display: block; + position: relative; + text-align: left; +} + +UL.thumbnails IMG.thumbnail { + position: relative; + top: -50%; /* Is this following hacking technic required ? */ + /*\*//*/ + margin-top: -40%; + /**/ +} +UL.thumbnails INPUT { + position: absolute; + left: 2px; + top: 2px; /* same as other browsers but not so pretty */ +} diff --git a/sources/admin/themes/default/fix-ie7.css b/sources/admin/themes/default/fix-ie7.css new file mode 100644 index 0000000..d61e029 --- /dev/null +++ b/sources/admin/themes/default/fix-ie7.css @@ -0,0 +1,11 @@ +/* fix IE7 footer */ +#the_page { min-height:100%; position:relative; padding:0; margin:0; } +#menubar { margin: 0; } +#footer { left: 0; } + +UL.thumbnails li.rank-of-image { + text-align:left; +} +.groups li { + display: inline; +} \ No newline at end of file diff --git a/sources/admin/themes/default/fontello/LICENSE.txt b/sources/admin/themes/default/fontello/LICENSE.txt new file mode 100644 index 0000000..8d0e89f --- /dev/null +++ b/sources/admin/themes/default/fontello/LICENSE.txt @@ -0,0 +1,66 @@ +Font license info + + +## Fontelico + + Copyright (C) 2012 by Fontello project + + Author: Crowdsourced, for Fontello project + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://fontello.com + + +## Elusive + + Copyright (C) 2013 by Aristeides Stathopoulos + + Author: Aristeides Stathopoulos + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://aristeides.com/ + + +## Font Awesome + + Copyright (C) 2012 by Dave Gandy + + Author: Dave Gandy + License: SIL () + Homepage: http://fortawesome.github.com/Font-Awesome/ + + +## Entypo + + Copyright (C) 2012 by Daniel Bruce + + Author: Daniel Bruce + License: CC BY-SA (http://creativecommons.org/licenses/by-sa/2.0/) + Homepage: http://www.entypo.com + + +## Typicons + + (c) Stephen Hutchings 2012 + + Author: Stephen Hutchings + License: CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0/) + Homepage: http://typicons.com/ + + +## Iconic + + Copyright (C) 2012 by P.J. Onori + + Author: P.J. Onori + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://somerandomdude.com/work/iconic/ + + +## MFG Labs + + Copyright (C) 2012 by Daniel Bruce + + Author: MFG Labs + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://www.mfglabs.com/ + + diff --git a/sources/admin/themes/default/fontello/README.txt b/sources/admin/themes/default/fontello/README.txt new file mode 100644 index 0000000..43e23f2 --- /dev/null +++ b/sources/admin/themes/default/fontello/README.txt @@ -0,0 +1,75 @@ +This webfont is generated by http://fontello.com open source project. + + +================================================================================ +Please, note, that you should obey original font licences, used to make this +webfont pack. Details available in LICENSE.txt file. + +- Usually, it's enough to publish content of LICENSE.txt file somewhere on your + site in "About" section. + +- If your project is open-source, usually, it will be ok to make LICENSE.txt + file publically available in your repository. + +- Fonts, used in Fontello, don't require to make clickable links on your site. + But any kind of additional authors crediting is welcome. +================================================================================ + + +Comments on archive content +--------------------------- + +- /font/* - fonts in different formats + +- /css/* - different kinds of css, for all situations. Should be ok with + twitter bootstrap. Also, you can skip style and assign icon classes + directly to text elements, if you don't mind about IE7. + +- demo.html - demo file, to show your webfont content + +- LICENSE.txt - license info about source fonts, used to build your one. + +- config.json - keeps your settings. You can import it back to fontello anytime, + to continue your work + + +Why so many CSS files ? +----------------------- + +Because we like to fit all your needs :) + +- basic file, .css - is usually enougth, in contains @font-face + and character codes definition + +- *-ie7.css - if you need IE7 support, but still don't wish to put char codes + directly into html + +- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face + rules, but still wish to benefit of css generation. That can be very + convenient for automated assets build systems. When you need to update font - + no needs to manually edit files, just override old version with archive + content. See fontello source codes for example. + +- *-embedded.css - basic css file, but with embedded WOFF font, to avoid + CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain. + We strongly recommend to resolve this issue by `Access-Control-Allow-Origin` + server headers. But if you ok with dirty hack - this file is for you. Note, + that data url moved to separate @font-face to avoid problems with + + + + + + + + + + +
+

+ fontello + font demo +

+ +
+
+
+
icon-spin60xe81d
+
icon-asl0xe0ad
+
icon-mail-alt0xf0e0
+
icon-star0x2605
+
+
+
icon-star-empty0x2606
+
icon-user0x1f464
+
icon-picture0x1f304
+
icon-cancel-circled0xe821
+
+
+
icon-plus-circled0x2795
+
icon-link0x1f517
+
icon-lock0x1f512
+
icon-eye0xe70a
+
+
+
icon-tags0xe70d
+
icon-code0xe80a
+
icon-pencil0x270e
+
icon-chat0xe720
+
+
+
icon-trash0xe729
+
icon-folder-open0xe806
+
icon-menu0xe809
+
icon-cog0x2699
+
+
+
icon-cog-alt0x26ef
+
icon-wrench0x1f527
+
icon-basket0xe73d
+
icon-logout0xe81b
+
+
+
icon-clock0x1f554
+
icon-block0x1f6ab
+
icon-move0xe812
+
icon-cw0xe80c
+
+
+
icon-arrows-cw0xe804
+
icon-mail0x2709
+
icon-exchange0xe805
+
icon-signal0xe801
+
+
+
icon-crop0xf125
+
icon-check0xe81f
+
icon-check-empty0xe820
+
icon-tasks0xf0ae
+
+
+
icon-filter0xf0b0
+
icon-sitemap0xf0e8
+
icon-search0xe811
+
icon-user-add0xe80b
+
+
+
icon-help-circled0xe81a
+
icon-info-circled-10xe817
+
icon-home0xe80e
+
icon-flag0xe81c
+
+
+
icon-upload0xe813
+
icon-upload-cloud0xe814
+
icon-tools0xe803
+
icon-hourglass0xe81e
+
+
+
icon-network0xe816
+
icon-brush0xe807
+
icon-language0xe800
+
icon-key0xe815
+
+
+
icon-flow-branch0xe808
+
icon-puzzle0xe7b6
+
icon-mail-10xe810
+
icon-equalizer0xe80f
+
+
+
icon-users0xe802
+
icon-group0xe80d
+
icon-shuffle0x1f500
+
+
+ + + \ No newline at end of file diff --git a/sources/admin/themes/default/fontello/font/fontello.eot b/sources/admin/themes/default/fontello/font/fontello.eot new file mode 100644 index 0000000..030da1c Binary files /dev/null and b/sources/admin/themes/default/fontello/font/fontello.eot differ diff --git a/sources/admin/themes/default/fontello/font/fontello.svg b/sources/admin/themes/default/fontello/font/fontello.svg new file mode 100644 index 0000000..00f80b8 --- /dev/null +++ b/sources/admin/themes/default/fontello/font/fontello.svg @@ -0,0 +1,70 @@ + + + +Copyright (C) 2013 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/admin/themes/default/fontello/font/fontello.ttf b/sources/admin/themes/default/fontello/font/fontello.ttf new file mode 100644 index 0000000..328a9c5 Binary files /dev/null and b/sources/admin/themes/default/fontello/font/fontello.ttf differ diff --git a/sources/admin/themes/default/fontello/font/fontello.woff b/sources/admin/themes/default/fontello/font/fontello.woff new file mode 100644 index 0000000..9e17f2e Binary files /dev/null and b/sources/admin/themes/default/fontello/font/fontello.woff differ diff --git a/sources/admin/themes/default/icon/cat_move.png b/sources/admin/themes/default/icon/cat_move.png new file mode 100644 index 0000000..9d6939c Binary files /dev/null and b/sources/admin/themes/default/icon/cat_move.png differ diff --git a/sources/admin/themes/default/icon/category_children.png b/sources/admin/themes/default/icon/category_children.png new file mode 100644 index 0000000..d2c4edd Binary files /dev/null and b/sources/admin/themes/default/icon/category_children.png differ diff --git a/sources/admin/themes/default/icon/category_delete.png b/sources/admin/themes/default/icon/category_delete.png new file mode 100644 index 0000000..b27ef62 Binary files /dev/null and b/sources/admin/themes/default/icon/category_delete.png differ diff --git a/sources/admin/themes/default/icon/category_edit.png b/sources/admin/themes/default/icon/category_edit.png new file mode 100644 index 0000000..3ace19d Binary files /dev/null and b/sources/admin/themes/default/icon/category_edit.png differ diff --git a/sources/admin/themes/default/icon/category_elements.png b/sources/admin/themes/default/icon/category_elements.png new file mode 100644 index 0000000..c5e3f92 Binary files /dev/null and b/sources/admin/themes/default/icon/category_elements.png differ diff --git a/sources/admin/themes/default/icon/category_jump-to.png b/sources/admin/themes/default/icon/category_jump-to.png new file mode 100644 index 0000000..765bc11 Binary files /dev/null and b/sources/admin/themes/default/icon/category_jump-to.png differ diff --git a/sources/admin/themes/default/icon/category_permissions.png b/sources/admin/themes/default/icon/category_permissions.png new file mode 100644 index 0000000..055d9e5 Binary files /dev/null and b/sources/admin/themes/default/icon/category_permissions.png differ diff --git a/sources/admin/themes/default/icon/category_representant_random.png b/sources/admin/themes/default/icon/category_representant_random.png new file mode 100644 index 0000000..26fe701 Binary files /dev/null and b/sources/admin/themes/default/icon/category_representant_random.png differ diff --git a/sources/admin/themes/default/icon/check.png b/sources/admin/themes/default/icon/check.png new file mode 100644 index 0000000..708003a Binary files /dev/null and b/sources/admin/themes/default/icon/check.png differ diff --git a/sources/admin/themes/default/icon/datepicker.png b/sources/admin/themes/default/icon/datepicker.png new file mode 100644 index 0000000..72e836b Binary files /dev/null and b/sources/admin/themes/default/icon/datepicker.png differ diff --git a/sources/admin/themes/default/icon/delete.png b/sources/admin/themes/default/icon/delete.png new file mode 100644 index 0000000..285e53e Binary files /dev/null and b/sources/admin/themes/default/icon/delete.png differ diff --git a/sources/admin/themes/default/icon/edit_s.png b/sources/admin/themes/default/icon/edit_s.png new file mode 100644 index 0000000..efb6399 Binary files /dev/null and b/sources/admin/themes/default/icon/edit_s.png differ diff --git a/sources/admin/themes/default/icon/errors.png b/sources/admin/themes/default/icon/errors.png new file mode 100644 index 0000000..7e6eaec Binary files /dev/null and b/sources/admin/themes/default/icon/errors.png differ diff --git a/sources/admin/themes/default/icon/exit.png b/sources/admin/themes/default/icon/exit.png new file mode 100644 index 0000000..685cc44 Binary files /dev/null and b/sources/admin/themes/default/icon/exit.png differ diff --git a/sources/admin/themes/default/icon/fcbkcomplete_close.gif b/sources/admin/themes/default/icon/fcbkcomplete_close.gif new file mode 100644 index 0000000..cc21992 Binary files /dev/null and b/sources/admin/themes/default/icon/fcbkcomplete_close.gif differ diff --git a/sources/admin/themes/default/icon/help-min.png b/sources/admin/themes/default/icon/help-min.png new file mode 100644 index 0000000..9a82569 Binary files /dev/null and b/sources/admin/themes/default/icon/help-min.png differ diff --git a/sources/admin/themes/default/icon/help.png b/sources/admin/themes/default/icon/help.png new file mode 100644 index 0000000..cd1d209 Binary files /dev/null and b/sources/admin/themes/default/icon/help.png differ diff --git a/sources/admin/themes/default/icon/home.png b/sources/admin/themes/default/icon/home.png new file mode 100644 index 0000000..81b6bdd Binary files /dev/null and b/sources/admin/themes/default/icon/home.png differ diff --git a/sources/admin/themes/default/icon/index.php b/sources/admin/themes/default/icon/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/admin/themes/default/icon/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/admin/themes/default/icon/infos.png b/sources/admin/themes/default/icon/infos.png new file mode 100644 index 0000000..735073d Binary files /dev/null and b/sources/admin/themes/default/icon/infos.png differ diff --git a/sources/admin/themes/default/icon/minus.gif b/sources/admin/themes/default/icon/minus.gif new file mode 100644 index 0000000..154e45a Binary files /dev/null and b/sources/admin/themes/default/icon/minus.gif differ diff --git a/sources/admin/themes/default/icon/note.png b/sources/admin/themes/default/icon/note.png new file mode 100644 index 0000000..5849f79 Binary files /dev/null and b/sources/admin/themes/default/icon/note.png differ diff --git a/sources/admin/themes/default/icon/page_end.png b/sources/admin/themes/default/icon/page_end.png new file mode 100644 index 0000000..ac7b25a Binary files /dev/null and b/sources/admin/themes/default/icon/page_end.png differ diff --git a/sources/admin/themes/default/icon/page_top.png b/sources/admin/themes/default/icon/page_top.png new file mode 100644 index 0000000..30c58ed Binary files /dev/null and b/sources/admin/themes/default/icon/page_top.png differ diff --git a/sources/admin/themes/default/icon/permissions.png b/sources/admin/themes/default/icon/permissions.png new file mode 100644 index 0000000..370dddd Binary files /dev/null and b/sources/admin/themes/default/icon/permissions.png differ diff --git a/sources/admin/themes/default/icon/plus.gif b/sources/admin/themes/default/icon/plus.gif new file mode 100644 index 0000000..93d2ade Binary files /dev/null and b/sources/admin/themes/default/icon/plus.gif differ diff --git a/sources/admin/themes/default/icon/preferences.png b/sources/admin/themes/default/icon/preferences.png new file mode 100644 index 0000000..8634b51 Binary files /dev/null and b/sources/admin/themes/default/icon/preferences.png differ diff --git a/sources/admin/themes/default/icon/remove_filter.png b/sources/admin/themes/default/icon/remove_filter.png new file mode 100644 index 0000000..c2fa738 Binary files /dev/null and b/sources/admin/themes/default/icon/remove_filter.png differ diff --git a/sources/admin/themes/default/icon/remove_filter_hover.png b/sources/admin/themes/default/icon/remove_filter_hover.png new file mode 100644 index 0000000..1f9d975 Binary files /dev/null and b/sources/admin/themes/default/icon/remove_filter_hover.png differ diff --git a/sources/admin/themes/default/icon/toggle_is_default_group.png b/sources/admin/themes/default/icon/toggle_is_default_group.png new file mode 100644 index 0000000..7ddce00 Binary files /dev/null and b/sources/admin/themes/default/icon/toggle_is_default_group.png differ diff --git a/sources/admin/themes/default/icon/uncheck.png b/sources/admin/themes/default/icon/uncheck.png new file mode 100644 index 0000000..df08cb8 Binary files /dev/null and b/sources/admin/themes/default/icon/uncheck.png differ diff --git a/sources/admin/themes/default/icon/validate_s.png b/sources/admin/themes/default/icon/validate_s.png new file mode 100644 index 0000000..adea3d5 Binary files /dev/null and b/sources/admin/themes/default/icon/validate_s.png differ diff --git a/sources/admin/themes/default/icon/virt_category.png b/sources/admin/themes/default/icon/virt_category.png new file mode 100644 index 0000000..7957ec7 Binary files /dev/null and b/sources/admin/themes/default/icon/virt_category.png differ diff --git a/sources/admin/themes/default/icon/warning.png b/sources/admin/themes/default/icon/warning.png new file mode 100644 index 0000000..060b577 Binary files /dev/null and b/sources/admin/themes/default/icon/warning.png differ diff --git a/sources/admin/themes/default/icon/warnings.png b/sources/admin/themes/default/icon/warnings.png new file mode 100644 index 0000000..03454e3 Binary files /dev/null and b/sources/admin/themes/default/icon/warnings.png differ diff --git a/sources/admin/themes/default/images/ajax-loader-bar.gif b/sources/admin/themes/default/images/ajax-loader-bar.gif new file mode 100644 index 0000000..d84f653 Binary files /dev/null and b/sources/admin/themes/default/images/ajax-loader-bar.gif differ diff --git a/sources/admin/themes/default/images/ajax-loader.gif b/sources/admin/themes/default/images/ajax-loader.gif new file mode 100644 index 0000000..d0bce15 Binary files /dev/null and b/sources/admin/themes/default/images/ajax-loader.gif differ diff --git a/sources/admin/themes/default/images/logo.png b/sources/admin/themes/default/images/logo.png new file mode 100644 index 0000000..eb9cc48 Binary files /dev/null and b/sources/admin/themes/default/images/logo.png differ diff --git a/sources/admin/themes/default/images/pbar-ani.gif b/sources/admin/themes/default/images/pbar-ani.gif new file mode 100644 index 0000000..cb59a04 Binary files /dev/null and b/sources/admin/themes/default/images/pbar-ani.gif differ diff --git a/sources/admin/themes/default/index.php b/sources/admin/themes/default/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/admin/themes/default/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/admin/themes/default/js/common.js b/sources/admin/themes/default/js/common.js new file mode 100644 index 0000000..0f64353 --- /dev/null +++ b/sources/admin/themes/default/js/common.js @@ -0,0 +1,78 @@ +function array_delete(arr, item) { + var i = arr.indexOf(item); + if (i != -1) arr.splice(i, 1); +} + +function str_repeat(i, m) { + for (var o = []; m > 0; o[--m] = i); + return o.join(''); +} + +if (!Array.prototype.indexOf) +{ + Array.prototype.indexOf = function(elt /*, from*/) + { + var len = this.length; + + var from = Number(arguments[1]) || 0; + from = (from < 0) + ? Math.ceil(from) + : Math.floor(from); + if (from < 0) + from += len; + + for (; from < len; from++) + { + if (from in this && + this[from] === elt) + return from; + } + return -1; + }; +} + +function sprintf() { + var i = 0, a, f = arguments[i++], o = [], m, p, c, x, s = ''; + while (f) { + if (m = /^[^\x25]+/.exec(f)) { + o.push(m[0]); + } + else if (m = /^\x25{2}/.exec(f)) { + o.push('%'); + } + else if (m = /^\x25(?:(\d+)\$)?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(f)) { + if (((a = arguments[m[1] || i++]) == null) || (a == undefined)) { + throw('Too few arguments.'); + } + if (/[^s]/.test(m[7]) && (typeof(a) != 'number')) { + throw('Expecting number but found ' + typeof(a)); + } + + switch (m[7]) { + case 'b': a = a.toString(2); break; + case 'c': a = String.fromCharCode(a); break; + case 'd': a = parseInt(a); break; + case 'e': a = m[6] ? a.toExponential(m[6]) : a.toExponential(); break; + case 'f': a = m[6] ? parseFloat(a).toFixed(m[6]) : parseFloat(a); break; + case 'o': a = a.toString(8); break; + case 's': a = ((a = String(a)) && m[6] ? a.substring(0, m[6]) : a); break; + case 'u': a = Math.abs(a); break; + case 'x': a = a.toString(16); break; + case 'X': a = a.toString(16).toUpperCase(); break; + } + + a = (/[def]/.test(m[7]) && m[2] && a >= 0 ? '+'+ a : a); + c = m[3] ? m[3] == '0' ? '0' : m[3].charAt(1) : ' '; + x = m[5] - String(a).length - s.length; + p = m[5] ? str_repeat(c, x) : ''; + o.push(s + (m[4] ? a + p : p + a)); + } + else { + throw('Huh ?!'); + } + + f = f.substring(m[0].length); + } + + return o.join(''); +} \ No newline at end of file diff --git a/sources/admin/themes/default/js/jquery.geoip.js b/sources/admin/themes/default/js/jquery.geoip.js new file mode 100644 index 0000000..cba374b --- /dev/null +++ b/sources/admin/themes/default/js/jquery.geoip.js @@ -0,0 +1,62 @@ + +GeoIp = { + cache: {}, + pending: {}, + + get: function(ip, callback){ + if (!GeoIp.storageInit && window.localStorage) { + GeoIp.storageInit = true; + var cache = localStorage.getItem("freegeoip"); + if (cache) { + cache = JSON.parse(cache); + for (var key in cache) { + var data = cache[key]; + if ( (new Date()).getTime() - data.reqTime > 36 * 3600000) + delete cache[key]; + } + GeoIp.cache = cache; + } + jQuery(window).on("unload", function() { + localStorage.setItem("freegeoip", JSON.stringify(GeoIp.cache) ); + } ); + } + + if (GeoIp.cache.hasOwnProperty(ip)) + callback(GeoIp.cache[ip]); + else if (GeoIp.pending[ip]) + GeoIp.pending[ip].push(callback); + else { + GeoIp.pending[ip] = [callback]; + jQuery.ajax( { + url: "http://freegeoip.net/json/" + ip, + dataType: "jsonp", + cache: true, + timeout: 5000, + success: function(data) { + data.reqTime = (new Date()).getTime(); + var res=[]; + if (data.city) res.push(data.city); + if (data.region_name) res.push(data.region_name); + if (data.country_name) res.push(data.country_name); + data.fullName = res.join(", "); + + GeoIp.cache[ip] = data; + var callbacks = GeoIp.pending[ip]; + delete GeoIp.pending[ip]; + for (var i=0; i + + + + +{/if} \ No newline at end of file diff --git a/sources/admin/themes/default/print.css b/sources/admin/themes/default/print.css new file mode 100644 index 0000000..9e2998f --- /dev/null +++ b/sources/admin/themes/default/print.css @@ -0,0 +1,14 @@ +#menubar, .content .navigationBar, +.navThumb, #addComment { + display: none; +} + +BODY { + margin: 0; + color: #000000; + background: #ffffff; +} + +.content { + margin: 0; +} diff --git a/sources/admin/themes/default/template/admin.tpl b/sources/admin/themes/default/template/admin.tpl new file mode 100644 index 0000000..7fc9dc1 --- /dev/null +++ b/sources/admin/themes/default/template/admin.tpl @@ -0,0 +1,139 @@ +{combine_script id='jquery.ui.accordion' load='header'}{*we load in the header because the accordion is on every admin page and usually all admin pages use the same header combined script but not the same footer script*} +{footer_script require='jquery.ui.accordion'} +jQuery(document).ready(function(){ldelim} + jQuery('#menubar').accordion({ldelim} + header: "dt.rdion", + event: "click", + heightStyle: "content", + active: {$ACTIVE_MENU} + }); +}); +{/footer_script} + + + +
+ + {if isset($TABSHEET)} + {$TABSHEET} + {/if} + {if isset($U_HELP)} + {combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'} +
    +
  • (?)
  • +
+ {/if} + + {if isset($errors)} +
+
    + {foreach from=$errors item=error} +
  • {$error}
  • + {/foreach} +
+
+ {/if} + + {if isset($infos)} +
+
    + {foreach from=$infos item=info} +
  • {$info}
  • + {/foreach} +
+
+ {/if} + + {if isset($warnings)} +
+
    + {foreach from=$warnings item=warning} +
  • {$warning}
  • + {/foreach} +
+
+ {/if} + + {$ADMIN_CONTENT} +
diff --git a/sources/admin/themes/default/template/album_notification.tpl b/sources/admin/themes/default/template/album_notification.tpl new file mode 100644 index 0000000..32aa8e4 --- /dev/null +++ b/sources/admin/themes/default/template/album_notification.tpl @@ -0,0 +1,40 @@ +
+

{$CATEGORIES_NAV} › {'Edit album'|@translate} {$TABSHEET_TITLE}

+
+ +
+ +
+ {'Send an information email to group members'|@translate} + +{if isset($group_mail_options)} + +

+ {'Group'|@translate} +
+ +

+ +

+ {'Complementary mail content'|@translate} +
+ +

+ +

+ +

+ +{elseif isset($no_group_in_gallery) and $no_group_in_gallery} +

{'There is no group in this gallery.'|@translate} {'Group management'|@translate}

+{else} +

+ {'No group is permitted to see this private album'|@translate}. + {'Permission management'|@translate} +

+{/if} +
+ +
diff --git a/sources/admin/themes/default/template/batch_manager_global.tpl b/sources/admin/themes/default/template/batch_manager_global.tpl new file mode 100644 index 0000000..46e2aa7 --- /dev/null +++ b/sources/admin/themes/default/template/batch_manager_global.tpl @@ -0,0 +1,949 @@ +{include file='include/tag_selection.inc.tpl'} +{include file='include/datepicker.inc.tpl'} +{include file='include/colorbox.inc.tpl'} +{include file='include/add_album.inc.tpl'} + +{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} +{combine_script id='jquery.ui.slider' require='jquery.ui' load='footer' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'} +{combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"} + +{footer_script}{literal} + pwg_initialization_datepicker("#date_creation_day", "#date_creation_month", "#date_creation_year", "#date_creation_linked_date", "#date_creation_action_set"); +{/literal}{/footer_script} + +{footer_script}{literal} +/* Shift-click: select all photos between the click and the shift+click */ +jQuery(document).ready(function() { + var last_clicked=0; + var last_clickedstatus=true; + jQuery.fn.enableShiftClick = function() { + var inputs = []; + var count=0; + this.find('input[type=checkbox]').each(function() { + var pos=count; + inputs[count++]=this; + $(this).bind("shclick", function (dummy,event) { + if (event.shiftKey) { + var first = last_clicked; + var last = pos; + if (first > last) { + first=pos; + last=last_clicked; + } + + for (var i=first; i<=last;i++) { + input = $(inputs[i]); + $(input).prop('checked', last_clickedstatus); + if (last_clickedstatus) + { + $(input).siblings("span.wrap2").addClass("thumbSelected"); + } + else + { + $(input).siblings("span.wrap2").removeClass("thumbSelected"); + } + } + } + else { + last_clicked = pos; + last_clickedstatus = this.checked; + } + return true; + }); + $(this).click(function(event) { $(this).triggerHandler("shclick",event)}); + }); + } + $('ul.thumbnails').enableShiftClick(); +}); +{/literal}{/footer_script} + +{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'} +{combine_script id='jquery.tokeninput' load='footer' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'} +{combine_script id='jquery.progressBar' load='footer' path='themes/default/js/plugins/jquery.progressbar.min.js'} +{combine_script id='jquery.ajaxmanager' load='footer' path='themes/default/js/plugins/jquery.ajaxmanager.js'} + +{footer_script require='jquery.tokeninput'} +jQuery(document).ready(function() {ldelim} + jQuery("a.preview-box").colorbox(); + + var tag_src = [{foreach from=$tags item=tag name=tags}{ldelim}name:"{$tag.name|@escape:'javascript'}",id:"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}]; + jQuery("#tags").tokenInput( + tag_src, + {ldelim} + hintText: '{'Type in a search term'|@translate}', + noResultsText: '{'No results'|@translate}', + searchingText: '{'Searching...'|@translate}', + newText: ' ({'new'|@translate})', + animateDropdown: false, + preventDuplicates: true, + allowFreeTagging: true + } + ); + + jQuery("#tagsFilter").tokenInput( + tag_src, + {ldelim} + hintText: '{'Type in a search term'|@translate}', + noResultsText: '{'No results'|@translate}', + searchingText: '{'Searching...'|@translate}', + animateDropdown: false, + preventDuplicates: true, + allowFreeTagging: false + } + ); + +}); +{/footer_script} + +{footer_script} +var nb_thumbs_page = {$nb_thumbs_page}; +var nb_thumbs_set = {$nb_thumbs_set}; +var are_you_sure = "{'Are you sure?'|@translate|@escape:'javascript'}"; +var applyOnDetails_pattern = "{'on the %d selected photos'|@translate}"; +var all_elements = [{if !empty($all_elements)}{','|@implode:$all_elements}{/if}]; +var derivatives = {ldelim} + elements: null, + done: 0, + total: 0, + + finished: function() {ldelim} + return derivatives.done == derivatives.total && derivatives.elements && derivatives.elements.length==0; + } +}; + +var selectedMessage_pattern = "{'%d of %d photos selected'|@translate}"; +var selectedMessage_none = "{'No photo selected, %d photos in current set'|@translate}"; +var selectedMessage_all = "{'All %d photos are selected'|@translate}"; + +var width_str = '{'Width'|@translate}'; +var height_str = '{'Height'|@translate}'; +var max_width_str = '{'Maximum width'|@translate}'; +var max_height_str = '{'Maximum height'|@translate}'; +{literal} + +function progress(success) { + jQuery('#progressBar').progressBar(derivatives.done, { + max: derivatives.total, + textFormat: 'fraction', + boxImage: 'themes/default/images/progressbar.gif', + barImage: 'themes/default/images/progressbg_orange.gif' + }); + if (success !== undefined) { + var type = success ? 'regenerateSuccess': 'regenerateError', + s = jQuery('[name="'+type+'"]').val(); + jQuery('[name="'+type+'"]').val(++s); + } + + if (derivatives.finished()) { + jQuery('#applyAction').click(); + } +} + +$(document).ready(function() { + function checkPermitAction() { + var nbSelected = 0; + if ($("input[name=setSelected]").is(':checked')) { + nbSelected = nb_thumbs_set; + } + else { + nbSelected = $(".thumbnails input[type=checkbox]").filter(':checked').length; + } + + if (nbSelected == 0) { + $("#permitAction").hide(); + $("#forbidAction").show(); + } + else { + $("#permitAction").show(); + $("#forbidAction").hide(); + } + + $("#applyOnDetails").text( + sprintf( + applyOnDetails_pattern, + nbSelected + ) + ); + + // display the number of currently selected photos in the "Selection" fieldset + if (nbSelected == 0) { + $("#selectedMessage").text( + sprintf( + selectedMessage_none, + nb_thumbs_set + ) + ); + } + else if (nbSelected == nb_thumbs_set) { + $("#selectedMessage").text( + sprintf( + selectedMessage_all, + nb_thumbs_set + ) + ); + } + else { + $("#selectedMessage").text( + sprintf( + selectedMessage_pattern, + nbSelected, + nb_thumbs_set + ) + ); + } + } + + $('.thumbnails img').tipTip({ + 'delay' : 0, + 'fadeIn' : 200, + 'fadeOut' : 200 + }); + + $("[id^=action_]").hide(); + + $("select[name=selectAction]").change(function () { + $("[id^=action_]").hide(); + $("#action_"+$(this).prop("value")).show(); + + /* make sure the #albumSelect is on the right select box so that the */ + /* "add new album" popup fills the right select box */ + if ("associate" == $(this).prop("value") || "move" == $(this).prop("value")) { + jQuery("#albumSelect").removeAttr("id"); + jQuery("#action_"+$(this).prop("value")+" select").attr("id", "albumSelect"); + } + + if ($(this).val() != -1) { + $("#applyActionBlock").show(); + } + else { + $("#applyActionBlock").hide(); + } + }); + + $(".wrap1 label").click(function (event) { + $("input[name=setSelected]").prop('checked', false); + + var wrap2 = $(this).children(".wrap2"); + var checkbox = $(this).children("input[type=checkbox]"); + + checkbox.triggerHandler("shclick",event); + + if ($(checkbox).is(':checked')) { + $(wrap2).addClass("thumbSelected"); + } + else { + $(wrap2).removeClass('thumbSelected'); + } + + checkPermitAction(); + }); + + $("#selectAll").click(function () { + $("input[name=setSelected]").prop('checked', false); + selectPageThumbnails(); + checkPermitAction(); + return false; + }); + + function selectPageThumbnails() { + $(".thumbnails label").each(function() { + var wrap2 = $(this).children(".wrap2"); + var checkbox = $(this).children("input[type=checkbox]"); + + $(checkbox).prop('checked', true); + $(wrap2).addClass("thumbSelected"); + }); + } + + $("#selectNone").click(function () { + $("input[name=setSelected]").prop('checked', false); + + $(".thumbnails label").each(function() { + var wrap2 = $(this).children(".wrap2"); + var checkbox = $(this).children("input[type=checkbox]"); + + $(checkbox).prop('checked', false); + $(wrap2).removeClass("thumbSelected"); + }); + checkPermitAction(); + return false; + }); + + $("#selectInvert").click(function () { + $("input[name=setSelected]").prop('checked', false); + + $(".thumbnails label").each(function() { + var wrap2 = $(this).children(".wrap2"); + var checkbox = $(this).children("input[type=checkbox]"); + + $(checkbox).prop('checked', !$(checkbox).is(':checked')); + + if ($(checkbox).is(':checked')) { + $(wrap2).addClass("thumbSelected"); + } + else { + $(wrap2).removeClass('thumbSelected'); + } + }); + checkPermitAction(); + return false; + }); + + $("#selectSet").click(function () { + selectPageThumbnails(); + $("input[name=setSelected]").prop('checked', true); + checkPermitAction(); + return false; + }); + + $("input[name=remove_author]").click(function () { + if ($(this).is(':checked')) { + $("input[name=author]").hide(); + } + else { + $("input[name=author]").show(); + } + }); + + $("input[name=remove_title]").click(function () { + if ($(this).is(':checked')) { + $("input[name=title]").hide(); + } + else { + $("input[name=title]").show(); + } + }); + + $("input[name=remove_date_creation]").click(function () { + if ($(this).is(':checked')) { + $("#set_date_creation").hide(); + } + else { + $("#set_date_creation").show(); + } + }); + + $(".removeFilter").click(function () { + var filter = $(this).parent('li').attr("id"); + filter_disable(filter); + + return false; + }); + + function filter_enable(filter) { + /* show the filter*/ + $("#"+filter).show(); + + /* check the checkbox to declare we use this filter */ + $("input[type=checkbox][name="+filter+"_use]").prop("checked", true); + + /* forbid to select this filter in the addFilter list */ + $("#addFilter").children("option[value="+filter+"]").attr("disabled", "disabled"); + } + + $("#addFilter").change(function () { + var filter = $(this).prop("value"); + filter_enable(filter); + $(this).prop("value", -1); + }); + + function filter_disable(filter) { + /* hide the filter line */ + $("#"+filter).hide(); + + /* uncheck the checkbox to declare we do not use this filter */ + $("input[name="+filter+"_use]").prop("checked", false); + + /* give the possibility to show it again */ + $("#addFilter").children("option[value="+filter+"]").removeAttr("disabled"); + } + + $("#removeFilters").click(function() { + $("#filterList li").each(function() { + var filter = $(this).attr("id"); + filter_disable(filter); + }); + return false; + }); + + jQuery('#applyAction').click(function() { + var action = jQuery('[name="selectAction"]').val(); + if (action == 'delete_derivatives') { + var d_count = $('#action_delete_derivatives input[type=checkbox]').filter(':checked').length + , e_count = $('input[name="setSelected"]').is(':checked') ? nb_thumbs_set : $('.thumbnails input[type=checkbox]').filter(':checked').length; + if (d_count*e_count > 500) + return confirm(are_you_sure); + } + + if (action != 'generate_derivatives' + || derivatives.finished() ) + { + return true; + } + + jQuery('.bulkAction').hide(); + + var queuedManager = jQuery.manageAjax.create('queued', { + queue: true, + cacheResponse: false, + maxRequests: 1 + }); + + derivatives.elements = []; + if (jQuery('input[name="setSelected"]').is(':checked')) + derivatives.elements = all_elements; + else + jQuery('.thumbnails input[type=checkbox]').each(function() { + if (jQuery(this).is(':checked')) { + derivatives.elements.push(jQuery(this).val()); + } + }); + + jQuery('#applyActionBlock').hide(); + jQuery('select[name="selectAction"]').hide(); + jQuery('#regenerationMsg').show(); + + progress(); + getDerivativeUrls(); + return false; + }); + + function getDerivativeUrls() { + var ids = derivatives.elements.splice(0, 500); + var params = {max_urls: 100000, ids: ids, types: []}; + jQuery("#action_generate_derivatives input").each( function(i, t) { + if ($(t).is(":checked")) + params.types.push( t.value ); + } ); + + jQuery.ajax( { + type: "POST", + url: 'ws.php?format=json&method=pwg.getMissingDerivatives', + data: params, + dataType: "json", + success: function(data) { + if (!data.stat || data.stat != "ok") { + return; + } + derivatives.total += data.result.urls.length; + progress(); + for (var i=0; i < data.result.urls.length; i++) { + jQuery.manageAjax.add("queued", { + type: 'GET', + url: data.result.urls[i] + "&ajaxload=true", + dataType: 'json', + success: ( function(data) { derivatives.done++; progress(true) }), + error: ( function(data) { derivatives.done++; progress(false) }) + }); + } + if (derivatives.elements.length) + setTimeout( getDerivativeUrls, 25 * (derivatives.total-derivatives.done)); + } + } ); + } + + checkPermitAction(); + + /* dimensions sliders */ + /** + * find the key from a value in the startStopValues array + */ + function getSliderKeyFromValue(value, values) { + for (var key in values) { + if (values[key] == value) { + return key; + } + } + + return 0; + } + +{/literal} + var dimension_values = {ldelim} + 'width':[{$dimensions.widths}], + 'height':[{$dimensions.heights}], + 'ratio':[{$dimensions.ratios}] + }; + + $("#filter_dimension_width_slider").slider({ldelim} + range: true, + min: 0, + max: dimension_values['width'].length - 1, + values: [ + getSliderKeyFromValue({$dimensions.selected.min_width}, dimension_values['width']), + getSliderKeyFromValue({$dimensions.selected.max_width}, dimension_values['width']) + ], + slide: function(event, ui) {ldelim} + $("input[name='filter_dimension_min_width']").val(dimension_values['width'][ui.values[0]]); + $("input[name='filter_dimension_max_width']").val(dimension_values['width'][ui.values[1]]); + + $("#filter_dimension_width_info").html(sprintf( + "{'between %d and %d pixels'|@translate}", + dimension_values['width'][ui.values[0]], + dimension_values['width'][ui.values[1]] + )); + }, + change: function(event, ui) {ldelim} + $("input[name='filter_dimension_min_width']").val(dimension_values['width'][ui.values[0]]); + $("input[name='filter_dimension_max_width']").val(dimension_values['width'][ui.values[1]]); + + $("#filter_dimension_width_info").html(sprintf( + "{'between %d and %d pixels'|@translate}", + dimension_values['width'][ui.values[0]], + dimension_values['width'][ui.values[1]] + )); + } + }); + + $("#filter_dimension_height_slider").slider({ldelim} + range: true, + min: 0, + max: dimension_values['height'].length - 1, + values: [ + getSliderKeyFromValue({$dimensions.selected.min_height}, dimension_values['height']), + getSliderKeyFromValue({$dimensions.selected.max_height}, dimension_values['height']) + ], + slide: function(event, ui) {ldelim} + $("input[name='filter_dimension_min_height']").val(dimension_values['height'][ui.values[0]]); + $("input[name='filter_dimension_max_height']").val(dimension_values['height'][ui.values[1]]); + + $("#filter_dimension_height_info").html(sprintf( + "{'between %d and %d pixels'|@translate}", + dimension_values['height'][ui.values[0]], + dimension_values['height'][ui.values[1]] + )); + }, + change: function(event, ui) {ldelim} + $("input[name='filter_dimension_min_height']").val(dimension_values['height'][ui.values[0]]); + $("input[name='filter_dimension_max_height']").val(dimension_values['height'][ui.values[1]]); + + $("#filter_dimension_height_info").html(sprintf( + "{'between %d and %d pixels'|@translate}", + dimension_values['height'][ui.values[0]], + dimension_values['height'][ui.values[1]] + )); + } + }); + + $("#filter_dimension_ratio_slider").slider({ldelim} + range: true, + min: 0, + max: dimension_values['ratio'].length - 1, + values: [ + getSliderKeyFromValue({$dimensions.selected.min_ratio}, dimension_values['ratio']), + getSliderKeyFromValue({$dimensions.selected.max_ratio}, dimension_values['ratio']) + ], + slide: function(event, ui) {ldelim} + $("input[name='filter_dimension_min_ratio']").val(dimension_values['ratio'][ui.values[0]]); + $("input[name='filter_dimension_max_ratio']").val(dimension_values['ratio'][ui.values[1]]); + + $("#filter_dimension_ratio_info").html(sprintf( + "{'between %.2f and %.2f'|@translate}", + dimension_values['ratio'][ui.values[0]], + dimension_values['ratio'][ui.values[1]] + )); + }, + change: function(event, ui) {ldelim} + $("input[name='filter_dimension_min_ratio']").val(dimension_values['ratio'][ui.values[0]]); + $("input[name='filter_dimension_max_ratio']").val(dimension_values['ratio'][ui.values[1]]); + + $("#filter_dimension_ratio_info").html(sprintf( + "{'between %.2f and %.2f'|@translate}", + dimension_values['ratio'][ui.values[0]], + dimension_values['ratio'][ui.values[1]] + )); + } + }); + + $("a.dimensions-choice").click(function() {ldelim} + var type = jQuery(this).data("type"); + var min = jQuery(this).data("min"); + var max = jQuery(this).data("max"); + + $("#filter_dimension_"+ type +"_slider").slider("values", 0, + getSliderKeyFromValue(min, dimension_values[type]) + ); + + $("#filter_dimension_"+type+"_slider").slider("values", 1, + getSliderKeyFromValue(max, dimension_values[type]) + ); + }); +}); + +{/footer_script} + +
+ +

{'Batch Manager'|@translate}

+ +
+ + +
+ {'Filter'|@translate} + +
    +
  • + [x] + + {'Predefined filter'|@translate} + +
  • + +
  • + [x] + + {'Album'|@translate} + + +
  • + +
  • + [x] + + {'Tags'|@translate} + + + +
  • + +
  • + [x] + + {'Privacy level'|@translate} + + +
  • + +
  • + [x] + + {'Dimensions'|@translate} + +
    + {'Width'|@translate} {'between %d and %d pixels'|@translate:$dimensions.selected.min_width:$dimensions.selected.max_width} + | {'Reset'|@translate} +
    + + {'Height'|@translate} {'between %d and %d pixels'|@translate:$dimensions.selected.min_height:$dimensions.selected.max_height} + | {'Reset'|@translate} +
    + + {'Ratio'|@translate} ({'Width'|@translate}/{'Height'|@translate}) {'between %.2f and %.2f'|@translate:$dimensions.selected.min_ratio:$dimensions.selected.max_ratio} +{if isset($dimensions.ratio_portrait)} + | {'Portrait'|@translate} +{/if} +{if isset($dimensions.ratio_square)} + | {'square'|@translate} +{/if} +{if isset($dimensions.ratio_landscape)} + | {'Landscape'|@translate} +{/if} +{if isset($dimensions.ratio_panorama)} + | {'Panorama'|@translate} +{/if} + | {'Reset'|@translate} +
    +
    + + + + + + + +
  • +
+ +

+ + {'Remove all filters'|@translate} +

+ +

+ +

+ +
+ +
+ + {'Selection'|@translate} + + {if !empty($thumbnails)} +

+ {'Select:'|@translate} +{if $nb_thumbs_set > $nb_thumbs_page} + {'The whole page'|@translate}, + {'The whole set'|@translate}, +{else} + {'All'|@translate}, +{/if} + {'None'|@translate}, + {'Invert'|@translate} + + + + +

+ +
    + {html_style} +UL.thumbnails SPAN.wrap2{ldelim} + width: {$thumb_params->max_width()+2}px; +} +UL.thumbnails SPAN.wrap2 {ldelim} + height: {$thumb_params->max_height()+25}px; +} + {/html_style} + {foreach from=$thumbnails item=thumbnail} + {assign var='isSelected' value=$thumbnail.id|@in_array:$selection} +
  • + + + +
  • + {/foreach} +
+ + {if !empty($navbar) } +
+ +
+ {include file='navigation_bar.tpl'|@get_extent:'navbar'} +
+ +
{'display'|@translate} + 20 + · 50 + · 100 + · {'all'|@translate} + {'photos per page'|@translate} +
+
+ {/if} + + {else} +
{'No photo in the current set.'|@translate}
+ {/if} +
+ +
+ + {'Action'|@translate} + + +
+ +
+ +
diff --git a/sources/admin/themes/default/template/batch_manager_unit.tpl b/sources/admin/themes/default/template/batch_manager_unit.tpl new file mode 100644 index 0000000..859a9b6 --- /dev/null +++ b/sources/admin/themes/default/template/batch_manager_unit.tpl @@ -0,0 +1,145 @@ +{include file='include/autosize.inc.tpl'} +{include file='include/datepicker.inc.tpl'} +{include file='include/colorbox.inc.tpl'} + +{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'} +{combine_script id='jquery.tokeninput' load='async' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'} +{footer_script require='jquery.tokeninput'} +jQuery(document).ready(function() {ldelim} + jQuery('select[name|="tags"]').tokenInput( + [{foreach from=$tags item=tag name=tags}{ldelim}name:"{$tag.name|@escape:'javascript'}",id:"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}], + {ldelim} + hintText: '{'Type in a search term'|@translate}', + noResultsText: '{'No results'|@translate}', + searchingText: '{'Searching...'|@translate}', + newText: ' ({'new'|@translate})', + animateDropdown: false, + preventDuplicates: true, + allowFreeTagging: true + } + ); + + jQuery("a.preview-box").colorbox(); +}); +{/footer_script} + +

{'Batch Manager'|@translate}

+ +
+
+ {'Display options'|@translate} +

{'photos per page'|@translate} : + 5 + | 10 + | 50 + | {'all'|@translate} +

+ +
+ +{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} + +{if !empty($elements) } +
+{foreach from=$elements item=element} +
+ {$element.LEGEND} + + + +
+ {'Edit'|@translate} +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{'Title'|@translate}
{'Author'|@translate}
{'Creation date'|@translate} + + + + + + + + {footer_script} + pwg_initialization_datepicker("#date_creation_day-{$element.id}", "#date_creation_month-{$element.id}", "#date_creation_year-{$element.id}", "#date_creation_linked_date-{$element.id}", "#date_creation_action_set-{$element.id}"); + {/footer_script} +
{'Who can see this photo?'|@translate} + +
{'Tags'|@translate} + + + +
{'Description'|@translate}
+ +
+{/foreach} + +{if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} + +

+ + +

+{/if} + +
+ +{footer_script} +{literal}$(document).ready(function() { + $(".elementEdit img") + .fadeTo("slow", 0.6) // Opacity on page load + .hover(function(){ + $(this).fadeTo("slow", 1.0); // Opacity on hover + },function(){ + $(this).fadeTo("slow", 0.6); // Opacity on mouseout + }); +});{/literal} +{/footer_script} diff --git a/sources/admin/themes/default/template/cat_list.tpl b/sources/admin/themes/default/template/cat_list.tpl new file mode 100644 index 0000000..5fe54b9 --- /dev/null +++ b/sources/admin/themes/default/template/cat_list.tpl @@ -0,0 +1,142 @@ +{footer_script require='jquery.ui.sortable'}{literal} +jQuery(document).ready(function(){ + jQuery(".drag_button").show(); + jQuery(".categoryLi").css("cursor","move"); + jQuery(".categoryUl").sortable({ + axis: "y", + opacity: 0.8, + update : function() { + jQuery("#manualOrder").show(); + jQuery("#notManualOrder").hide(); + jQuery("#formAutoOrder").hide(); + jQuery("#formCreateAlbum").hide(); + } + }); + + jQuery("#categoryOrdering").submit(function(){ + ar = jQuery('.categoryUl').sortable('toArray'); + for(i=0;i{$CATEGORIES_NAV} › {'Album list management'|@translate} +

+ {'create a new album'|@translate} + {if count($categories)}| {'apply automatic sort order'|@translate}{/if} + {if ($PARENT_EDIT)}| {'edit'|@translate}{/if} +

+ +{if count($categories)} + +{/if} + +
+ + + +{if count($categories)} + +{/if} +
diff --git a/sources/admin/themes/default/template/cat_modify.tpl b/sources/admin/themes/default/template/cat_modify.tpl new file mode 100644 index 0000000..52632ae --- /dev/null +++ b/sources/admin/themes/default/template/cat_modify.tpl @@ -0,0 +1,104 @@ +
+

{$CATEGORIES_NAV} › {'Edit album'|@translate} {$TABSHEET_TITLE}

+
+ +
+ +
+ {'Informations'|@translate} + + + + + + + +
+{if isset($representant) } + {if isset($representant.picture) } + + {else} + {'Random photo'|@translate} + {/if} + + {if $representant.ALLOW_SET_RANDOM } +

+ {/if} + + {if isset($representant.ALLOW_DELETE) } +

+ {/if} +{/if} +
+ +
+ +
+ {'Properties'|@translate} +

+ {'Name'|@translate} +
+ +

+ +

+ {'Description'|@translate} +
+ +

+ +{if isset($move_cat_options) } +

+ {'Parent album'|@translate} +
+ +

+{/if} + +

+ {'Lock'|@translate} +
+ {html_radios name='visible' values=['true','false'] output=['No'|translate,'Yes'|translate] selected=$CAT_VISIBLE} +

+ + {if isset($CAT_COMMENTABLE)} +

+ {'Comments'|@translate} +
+ {html_radios name='commentable' values=['false','true'] output=['No'|translate,'Yes'|translate] selected=$CAT_COMMENTABLE} +

+ {/if} + +

+ +

+
+ +
diff --git a/sources/admin/themes/default/template/cat_move.tpl b/sources/admin/themes/default/template/cat_move.tpl new file mode 100644 index 0000000..d8a9c94 --- /dev/null +++ b/sources/admin/themes/default/template/cat_move.tpl @@ -0,0 +1,32 @@ +
+

{'Move albums'|@translate}

+
+ +
+
+ {'Move albums'|@translate} + + + + + +
+ +

+ +

+ +
diff --git a/sources/admin/themes/default/template/cat_options.tpl b/sources/admin/themes/default/template/cat_options.tpl new file mode 100644 index 0000000..9c25c1e --- /dev/null +++ b/sources/admin/themes/default/template/cat_options.tpl @@ -0,0 +1,11 @@ +
+

{'Properties'|@translate} {$TABSHEET_TITLE}

+
+ +
+
+ {$L_SECTION} + {$DOUBLE_SELECT} +
+
+ diff --git a/sources/admin/themes/default/template/cat_perm.tpl b/sources/admin/themes/default/template/cat_perm.tpl new file mode 100644 index 0000000..0415c87 --- /dev/null +++ b/sources/admin/themes/default/template/cat_perm.tpl @@ -0,0 +1,157 @@ +{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'} +{combine_css path="themes/default/js/plugins/chosen.css"} + +{footer_script}{literal} +jQuery(document).ready(function() { + jQuery(".chzn-select").chosen(); + + function checkStatusOptions() { + if (jQuery("input[name=status]:checked").val() == "private") { + jQuery("#privateOptions, #applytoSubAction").show(); + } + else { + jQuery("#privateOptions, #applytoSubAction").hide(); + } + } + + checkStatusOptions(); + jQuery("#selectStatus").change(function() { + checkStatusOptions(); + }); + + jQuery("#indirectPermissionsDetailsShow").click(function(){ + jQuery("#indirectPermissionsDetailsShow").hide(); + jQuery("#indirectPermissionsDetailsHide").show(); + jQuery("#indirectPermissionsDetails").show(); + return false; + }); + + jQuery("#indirectPermissionsDetailsHide").click(function(){ + jQuery("#indirectPermissionsDetailsShow").show(); + jQuery("#indirectPermissionsDetailsHide").hide(); + jQuery("#indirectPermissionsDetails").hide(); + return false; + }); +}); +{/literal}{/footer_script} + +
+

{$CATEGORIES_NAV} › {'Edit album'|@translate} {$TABSHEET_TITLE}

+
+ +
+ +
+ {'Access type'|@translate} + +

+ +
+ +

+
+ +
+ {'Groups and users'|@translate} + +

+{if count($groups) > 0} + {'Permission granted for groups'|@translate} +
+ +{else} + {'There is no group in this gallery.'|@translate} {'Group management'|@translate} +{/if} +

+ +

+ {'Permission granted for users'|@translate} +
+ +

+ +{if isset($nb_users_granted_indirect)} +

+ {'%u users have automatic permission because they belong to a granted group.'|@translate:$nb_users_granted_indirect} + + {'show details'|@translate} + +

+

+{/if} + +{* +

{'Groups'|@translate}

+ +
+ {'Permission granted'|@translate} +
    + {foreach from=$group_granted_ids item=id} +
  • + {/foreach} +
+ +
+ +
+ {'Permission denied'|@translate} +
    + {foreach from=$group_denied_ids item=id} +
  • + {/foreach} +
+ + +
+ +

{'Users'|@translate}

+ +
+ {'Permission granted'|@translate} +
    + {foreach from=$user_granted_direct_ids item=id} +
  • + {/foreach} +
+ +
+ +
+ {'Permission granted thanks to a group'|@translate} + {if isset($user_granted_indirects) } +
    + {foreach from=$user_granted_indirects item=user_group} +
  • {$user_group.USER} ({$user_group.GROUP})
  • + {/foreach} +
+ {/if} +
+ +
+ {'Permission denied'|@translate} +
    + {foreach from=$user_denied_ids item=id} +
  • + {/foreach} +
+ + +
+*} +
+ +

+ + +

+ + +
diff --git a/sources/admin/themes/default/template/check_integrity.tpl b/sources/admin/themes/default/template/check_integrity.tpl new file mode 100644 index 0000000..f11e76e --- /dev/null +++ b/sources/admin/themes/default/template/check_integrity.tpl @@ -0,0 +1,109 @@ +
+
{'Check integrity'|@translate}
+
+
    +
    +
    + + + + + + + {if isset($c13y_list)} + {foreach from=$c13y_list item=c13y name=c13y_loop} + + + + + + {/foreach} + {/if} +
    {'Anomaly'|@translate}{'Correction'|@translate}
    + {if $c13y.can_select} + + {/if} + + +
    + +

    + {literal} + + {/literal} + {if $c13y_show_submit_ignore} + {'Check all'|@translate} + / {'Uncheck all'|@translate} + {/if} + {if isset($c13y_do_check)} + / {'Check automatic corrections'|@translate} + {/if} +

    + +

    + {if $c13y_show_submit_automatic_correction} + + {/if} + {if $c13y_show_submit_ignore} + + {/if} + +

    + +
    +
    +
+
diff --git a/sources/admin/themes/default/template/comments.tpl b/sources/admin/themes/default/template/comments.tpl new file mode 100644 index 0000000..3b3a404 --- /dev/null +++ b/sources/admin/themes/default/template/comments.tpl @@ -0,0 +1,89 @@ +{footer_script}{literal} +jQuery(document).ready(function(){ + function highlighComments() { + jQuery(".checkComment").each(function() { + var parent = jQuery(this).parent('tr'); + if (jQuery(this).children("input[type=checkbox]").is(':checked')) { + jQuery(parent).addClass('selectedComment'); + } + else { + jQuery(parent).removeClass('selectedComment'); + } + }); + } + + jQuery(".checkComment").click(function(event) { + var checkbox = jQuery(this).children("input[type=checkbox]"); + if (event.target.type !== 'checkbox') { + jQuery(checkbox).prop('checked', !jQuery(checkbox).prop('checked')); + } + highlighComments(); + }); + + jQuery("#commentSelectAll").click(function () { + jQuery(".checkComment input[type=checkbox]").prop('checked', true); + highlighComments(); + return false; + }); + + jQuery("#commentSelectNone").click(function () { + jQuery(".checkComment input[type=checkbox]").prop('checked', false); + highlighComments(); + return false; + }); + + jQuery("#commentSelectInvert").click(function () { + jQuery(".checkComment input[type=checkbox]").each(function() { + jQuery(this).prop('checked', !$(this).prop('checked')); + }); + highlighComments(); + return false; + }); + +}); +{/literal}{/footer_script} + +

{'User comments'|@translate} {$TABSHEET_TITLE}

+ +
+ {'All'|@translate} ({$nb_total}) + | {'Waiting'|@translate} ({$nb_pending}) +{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} +
+ + + +{if !empty($comments) } +
+ + + {foreach from=$comments item=comment name=comment} + + + + + {/foreach} +
+ + +
+ +

{if $comment.IS_PENDING}{'Waiting'|@translate} - {/if}{$comment.AUTHOR} - {$comment.DATE}

+
{$comment.CONTENT}
+
+
+ +

+ {'Select:'|@translate} + {'All'|@translate}, + {'None'|@translate}, + {'Invert'|@translate} +

+ +

+ + +

+ +
+{/if} diff --git a/sources/admin/themes/default/template/configuration.tpl b/sources/admin/themes/default/template/configuration.tpl new file mode 100644 index 0000000..d3309e8 --- /dev/null +++ b/sources/admin/themes/default/template/configuration.tpl @@ -0,0 +1,852 @@ +{footer_script} +(function(){ + var targets = { + 'input[name="rate"]' : '#rate_anonymous', + 'input[name="allow_user_registration"]' : '#email_admin_on_new_user', + 'input[name="comments_validation"]' : '#email_admin_on_comment_validation', + 'input[name="user_can_edit_comment"]' : '#email_admin_on_comment_edition', + 'input[name="user_can_delete_comment"]' : '#email_admin_on_comment_deletion', + }; + + for (selector in targets) { + var target = targets[selector]; + + jQuery(target).toggle(jQuery(selector).is(':checked')); + + (function(target){ + jQuery(selector).on('change', function() { + jQuery(target).toggle($(this).is(':checked')); + }); + })(target); + }; +}()); +{/footer_script} + +

{'Piwigo configuration'|@translate} {$TABSHEET_TITLE}

+ +{if !isset($default)} +
+{/if} + +
+{if isset($main)} +
+ {'Basic settings'|translate} +
    +
  • + +
    + +
  • + +
  • + +
    + +
  • + +
  • + + + {foreach from=$main.order_by item=order} + + + {'delete'|@translate} + + {/foreach} + + {if !isset($ORDER_BY_IS_CUSTOM)} + {'Add a criteria'|@translate} + {else} + {'You can\'t define a default photo order because you have a custom setting in your local configuration.'|@translate} + {/if} +
  • +
+ +{if !isset($ORDER_BY_IS_CUSTOM)} +{footer_script require='jquery'} +(function(){ +var max_fields = Math.ceil({$main.order_by_options|@count}/2); + +function updateFilters() { + var $selects = jQuery('#order_filters select'); + + jQuery('#order_filters .addFilter').toggle($selects.length <= max_fields); + jQuery('#order_filters .removeFilter').css('display', '').filter(':first').css('display', 'none'); + + $selects.find('option').removeAttr('disabled'); + $selects.each(function() { + $selects.not(this).find('option[value="'+ jQuery(this).val() +'"]').attr('disabled', 'disabled'); + }); +} + +jQuery('#order_filters').on('click', '.removeFilter', function() { + jQuery(this).parent('span.filter').remove(); + updateFilters(); +}); + +jQuery('#order_filters').on('change', 'select', updateFilters); + +jQuery('#order_filters .addFilter').click(function() { + jQuery(this).prev('span.filter').clone().insertBefore(jQuery(this)); + jQuery(this).prev('span.filter').children('select').val(''); + updateFilters(); +}); + +updateFilters(); +}()); +{/footer_script} +{/if} +
+ +
+ {'Permissions'|translate} +
    +
  • + + + +
  • + +
  • + + + +
  • + +
  • + +
  • + +
  • + +
  • +
+ +{footer_script require='jquery'} +jQuery("#activate_comments").change(function(){ + if ($(this).is(':checked')) { + jQuery("#comments_param_warp").show(); + } else { + jQuery("#comments_param_warp").hide(); + } +}); +{/footer_script} +
+ +
+ {'Miscellaneous'|translate} +
    +
  • + +
  • + +
  • + {'Save visits in history for'|@translate} + + + + + + +
  • + +
  • + + +
    + {foreach from=$main.mail_theme_options item=name key=theme} +
    + + {'Preview'|translate} +
    + {/foreach} +
    +
  • + +{include file='include/colorbox.inc.tpl'} +{footer_script require='jquery'} +jQuery(".themeBoxes a").colorbox(); + +jQuery("input[name='mail_theme']").change(function() { + jQuery("input[name='mail_theme']").parents(".themeBox").removeClass("themeDefault"); + jQuery(this).parents(".themeBox").addClass("themeDefault"); +}); +{/footer_script} +
+
+{/if} + +{if isset($comments)} +
+ +
    +
  • + +
  • +
+ + +
+{/if} + +{if isset($sizes)} + +{footer_script} +(function(){ + var labelMaxWidth = "{'Maximum width'|@translate}", + labelWidth = "{'Width'|@translate}", + labelMaxHeight = "{'Maximum height'|@translate}", + labelHeight = "{'Height'|@translate}"; + + function toggleResizeFields(size) { + var checkbox = jQuery("#original_resize"); + var needToggle = jQuery("#sizeEdit-original"); + + if (jQuery(checkbox).is(':checked')) { + needToggle.show(); + } + else { + needToggle.hide(); + } + } + + toggleResizeFields("original"); + jQuery("#original_resize").click(function () { + toggleResizeFields("original"); + }); + + jQuery("a[id^='sizeEditOpen-']").click(function(){ + var sizeName = jQuery(this).attr("id").split("-")[1]; + jQuery("#sizeEdit-"+sizeName).toggle(); + jQuery(this).hide(); + return false; + }); + + jQuery(".cropToggle").click(function() { + var labelBoxWidth = jQuery(this).parents('table.sizeEditForm').find('td.sizeEditWidth'); + var labelBoxHeight = jQuery(this).parents('table.sizeEditForm').find('td.sizeEditHeight'); + + if (jQuery(this).is(':checked')) { + jQuery(labelBoxWidth).html(labelWidth); + jQuery(labelBoxHeight).html(labelHeight); + } + else { + jQuery(labelBoxWidth).html(labelMaxWidth); + jQuery(labelBoxHeight).html(labelMaxHeight); + } + }); + + jQuery("#showDetails").click(function() { + jQuery(".sizeDetails").show(); + jQuery(this).css("visibility", "hidden"); + return false; + }); +}()); +{/footer_script} + +{html_style}{literal} +.sizeEnable {width:50px;} +.sizeEditForm {margin:0 0 10px 20px;} +.sizeEdit {display:none;} +#sizesConf table {margin:0;} +.showDetails {padding:0;} +.sizeDetails {display:none;margin-left:10px;} +.sizeEditOpen {margin-left:10px;} +{/literal}{/html_style} + +
+ {'Original Size'|@translate} +{if $is_gd} +
+ {'Resize after upload disabled due to the use of GD as graphic library'|@translate} + + + + +
+{else} +
+ +
+ + + + + + + + + + + + + + +
{'Maximum width'|@translate} + {'pixels'|@translate} + {if isset($ferrors.original_resize_maxwidth)}!{/if} +
{'Maximum height'|@translate} + {'pixels'|@translate} + {if isset($ferrors.original_resize_maxheight)}!{/if} +
{'Image Quality'|@translate} + % + {if isset($ferrors.original_resize_quality)}!{/if} +
+{/if} +
+ +
+ {'Multiple Size'|@translate} + + + + + {foreach from=$derivatives item=d key=type} + + + + + + + + + + + + {/foreach} +
+ + + {$d.w} x {$d.h} {'pixels'|@translate}{if $d.crop}, {'Crop'|@translate|lower}{/if} + + + {'edit'|@translate} + +
+ + {if !$d.must_square} + + + + {/if} + + + + + + + {if !$d.must_square} + + + + + {/if} + + + + +
+ +
{if $d.must_square or $d.crop}{'Width'|@translate}{else}{'Maximum width'|@translate}{/if} + + {'pixels'|@translate} + {if isset($ferrors.$type.w)}!{/if} +
{if $d.crop}{'Height'|@translate}{else}{'Maximum height'|@translate}{/if} + + {'pixels'|@translate} + {if isset($ferrors.$type.h)}!{/if} +
{'Sharpen'|@translate} + + % + {if isset($ferrors.$type.sharpen)}!{/if} +
{* #sizeEdit *} +
+ +

+ {'Image Quality'|@translate} + % + {if isset($ferrors.resize_quality)}!{/if} +

+

+ {'Reset to default values'|@translate} +

+ +{if !empty($custom_derivatives)} +
+ {'custom'|@translate} + + {foreach from=$custom_derivatives item=time key=custom} + + {/foreach} +
+
+{/if} + +
+{/if} + +{if isset($watermark)} + +{footer_script} +(function(){ + function onWatermarkChange() { + var val = jQuery("#wSelect").val(); + if (val.length) { + jQuery("#wImg").attr('src', '{$ROOT_URL}'+val).show(); + } + else { + jQuery("#wImg").hide(); + } + } + + onWatermarkChange(); + + jQuery("#wSelect").bind("change", onWatermarkChange); + + if (jQuery("input[name='w[position]']:checked").val() == 'custom') { + jQuery("#positionCustomDetails").show(); + } + + jQuery("input[name='w[position]']").change(function(){ + if (jQuery(this).val() == 'custom') { + jQuery("#positionCustomDetails").show(); + } + else { + jQuery("#positionCustomDetails").hide(); + } + }); + + jQuery(".addWatermarkOpen").click(function(){ + jQuery("#addWatermark, #selectWatermark").toggle(); + return false; + }); +}()); +{/footer_script} + +
+ +
    +
  • + {* #selectWatermark *} + + {'add a new watermark'|@translate} {'... or '|@translate}{'Select a file'|@translate} +
    + (png) + {if isset($ferrors.watermarkImage)}!{/if} +
    {* #addWatermark *} +
  • + +
  • + + {'pixels'|@translate} +
  • + +
  • + + {'pixels'|@translate} +
  • + +
  • + +
    +
    + + + + + +
    + + +
    + + +
    + + +
    + +
    +
  • + +
  • + + % + {if isset($ferrors.watermark.opacity)}!{/if} +
  • +
+
+ +{/if} {* end of watermark section *} + +{if isset($display)} +
+ {'Main Page'|@translate} +
    +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • +
+
+ +
+ {'Photo Page'|@translate} +
    +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • +
+
+ +
+ {'Photo Properties'|@translate} +
    +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • + +
  • +
+
+{/if} + +
+ +{if !isset($default)} +

+ +

+
+{/if} + +{if isset($default)} +
+{$PROFILE_CONTENT} +
+{/if} diff --git a/sources/admin/themes/default/template/double_select.tpl b/sources/admin/themes/default/template/double_select.tpl new file mode 100644 index 0000000..62e99fb --- /dev/null +++ b/sources/admin/themes/default/template/double_select.tpl @@ -0,0 +1,22 @@ + +{include file='include/dbselect.inc.tpl'} + + + + + + + +
+

{$L_CAT_OPTIONS_TRUE}

+ +

+
+

{$L_CAT_OPTIONS_FALSE}

+ +

+
diff --git a/sources/admin/themes/default/template/element_set_ranks.tpl b/sources/admin/themes/default/template/element_set_ranks.tpl new file mode 100644 index 0000000..dfdafdc --- /dev/null +++ b/sources/admin/themes/default/template/element_set_ranks.tpl @@ -0,0 +1,94 @@ +{footer_script require='jquery.ui.sortable'}{literal} +jQuery(document).ready(function() { + function checkOrderOptions() { + jQuery("#image_order_user_define_options").hide(); + if (jQuery("input[name=image_order_choice]:checked").val() == "user_define") { + jQuery("#image_order_user_define_options").show(); + } + } + + jQuery('ul.thumbnails').sortable( { + revert: true, opacity: 0.7, + handle: jQuery('.rank-of-image').add('.rank-of-image img'), + update: function() { + jQuery(this).find('li').each(function(i) { + jQuery(this).find("input[name^=rank_of_image]").each(function() { + jQuery(this).attr('value', (i+1)*10) + }); + }); + + jQuery('#image_order_rank').prop('checked', true); + checkOrderOptions(); + } + }); + + jQuery("input[name=image_order_choice]").click(function () { + checkOrderOptions(); + }); + + checkOrderOptions(); +}); +jQuery(document).ready(function() { +jQuery('.thumbnail').tipTip({ +'delay' : 0, +'fadeIn' : 200, +'fadeOut' : 200 +}); +}); +{/literal}{/footer_script} + +
+

{$CATEGORIES_NAV} › {'Edit album'|@translate} {$TABSHEET_TITLE}

+
+ +
+{if !empty($thumbnails)} +

+
+ {'Manual order'|@translate} + {if !empty($thumbnails)} +

{'Drag to re-order'|@translate}

+
    + {foreach from=$thumbnails item=thumbnail} +
  • + {$thumbnail.NAME|@replace:' + +
  • + {/foreach} +
+ {/if} +
+{/if} + +
+ {'Sort order'|@translate} +

+ + +

+

+ + +

+

+ + +

+ {foreach from=$image_order item=order} +

+ +

+ {/foreach} +
+
+

+ + + +

+
diff --git a/sources/admin/themes/default/template/extend_for_templates.tpl b/sources/admin/themes/default/template/extend_for_templates.tpl new file mode 100644 index 0000000..818096b --- /dev/null +++ b/sources/admin/themes/default/template/extend_for_templates.tpl @@ -0,0 +1,35 @@ +

{'Extend for templates'|@translate}

+
+{if isset($extents)} +

{'Replacement of original templates by customized templates from template-extension subfolder'|@translate}

+
+ + + + + + + + {foreach from=$extents item=tpl name=extent_loop} + + + + + + + {/foreach} +
{'Replacers (customized templates)'|@translate}{'Original templates'|@translate}{'Optional URL keyword'|@translate}{'Bound Theme'|@translate}
+ + {$tpl.replacer} + + {html_options name='original[]' output=$tpl.original_tpl values=$tpl.original_tpl selected=$tpl.selected_tpl} + + {html_options name='url[]' output=$tpl.url_parameter values=$tpl.url_parameter selected=$tpl.selected_url} + + {html_options name='bound[]' output=$tpl.bound_tpl values=$tpl.bound_tpl selected=$tpl.selected_bound} +
+

+ +

+
+{/if} diff --git a/sources/admin/themes/default/template/footer.tpl b/sources/admin/themes/default/template/footer.tpl new file mode 100644 index 0000000..2704ef5 --- /dev/null +++ b/sources/admin/themes/default/template/footer.tpl @@ -0,0 +1,83 @@ +{* + Warning : This is the admin pages footer only + don't be confusing with the public page footer +*} +
+{if isset($footer_elements)} +{foreach from=$footer_elements item=v} +{$v} +{/foreach} +{/if} +{if isset($debug.QUERIES_LIST)} +
+{$debug.QUERIES_LIST} +
+{/if} + + +
+ + +{combine_script id='jquery.tipTip' load='async' path='themes/default/js/plugins/jquery.tipTip.minified.js'} +{footer_script require='jquery.tipTip'} +jQuery(document).ready(function() {ldelim} + jQuery('#pwgHead A[title], #footer A[title], .themeActions .tiptip, .languageActions .tiptip').tipTip({ldelim} + 'delay' : 0, + 'fadeIn' : 200, + 'fadeOut' : 200 + }); +}); +{/footer_script} + + +{get_combined_scripts load='footer'} + + +{literal} + +{/literal} + +{if not $ENABLE_SYNCHRONIZATION} +{literal} + +{/literal} +{/if} + + + \ No newline at end of file diff --git a/sources/admin/themes/default/template/group_list.tpl b/sources/admin/themes/default/template/group_list.tpl new file mode 100644 index 0000000..0d2d727 --- /dev/null +++ b/sources/admin/themes/default/template/group_list.tpl @@ -0,0 +1,189 @@ +{footer_script} +{literal} +$(document).ready(function() { + /** + * Add group + */ + jQuery("#addGroup").click(function() { + jQuery("#addGroupForm").toggle(); + jQuery("input[name=groupname]").focus(); + return false; + }); + + jQuery("#addGroupClose").click(function() { + jQuery("#addGroupForm").hide(); + return false; + }); + + $('.groups input').change(function () { $(this).parent('p').toggleClass('group_select'); }); + $(".grp_action").hide(); + $("input.group_selection").click(function() { + + var nbSelected = 0; + nbSelected = $("input.group_selection").filter(':checked').length; + + if (nbSelected == 0) { + $("#permitAction").hide(); + $("#forbidAction").show(); + } + else { + $("#permitAction").show(); + $("#forbidAction").hide(); + } + $("p[group_id="+$(this).prop("value")+"]").each(function () { + $(this).toggle(); + }); + + if (nbSelected<2) { + $("#two_to_select").show(); + $("#two_atleast").hide(); + } + else { + $("#two_to_select").hide(); + $("#two_atleast").show(); + } + }); + $("[id^=action_]").hide(); + $("select[name=selectAction]").change(function () { + $("[id^=action_]").hide(); + $("#action_"+$(this).prop("value")).show(); + if ($(this).val() != -1 ) { + $("#applyActionBlock").show(); + } + else { + $("#applyActionBlock").hide(); + } + }); +}); + +{/literal} +{/footer_script} + + + +
+

{'Group management'|@translate}

+
+ +

+ {'Add group'|translate} +

+ + + +
+ + +
    + {if not empty($groups)} + {foreach from=$groups item=group name=group_loop} +
  • + +

    {if $group.MEMBERS>0}{$group.MEMBERS}
    {$group.L_MEMBERS}{else}{$group.MEMBERS}{/if}

    + {'Permissions'|translate} +
  • + {/foreach} + {/if} +
+ +
+ {'Action'|@translate} +
{'No group selected, no action possible.'|@translate}
+ +
+
+ \ No newline at end of file diff --git a/sources/admin/themes/default/template/group_perm.tpl b/sources/admin/themes/default/template/group_perm.tpl new file mode 100644 index 0000000..401012d --- /dev/null +++ b/sources/admin/themes/default/template/group_perm.tpl @@ -0,0 +1,8 @@ +{* $Id *} +

{$TITLE}

+ +
+ {$DOUBLE_SELECT} +
+ +

{'Only private albums are listed'|@translate}

diff --git a/sources/admin/themes/default/template/header.tpl b/sources/admin/themes/default/template/header.tpl new file mode 100644 index 0000000..c95b759 --- /dev/null +++ b/sources/admin/themes/default/template/header.tpl @@ -0,0 +1,81 @@ +{* + + Warning : This is the admin pages header only + don't confuse with the public page header + +*} + + + + + +{$GALLERY_TITLE} :: {$PAGE_TITLE} + + +{get_combined_css} +{foreach from=$themes item=theme} +{if $theme.load_css} +{combine_css path="admin/themes/`$theme.id`/theme.css" order=-10} +{/if} +{if !empty($theme.local_head)}{include file=$theme.local_head load_css=$theme.load_css}{/if} +{/foreach} +{combine_css path="admin/themes/default/fontello/css/fontello.css"} + + +{get_combined_scripts load='header'} + + +{combine_script id='jquery' path='themes/default/js/jquery.min.js'} + + + +{if not empty($head_elements)} +{foreach from=$head_elements item=elt} +{$elt} +{/foreach} +{/if} + + + + + +
+ +{if not empty($header_msgs)} +
+ {foreach from=$header_msgs item=elt} + {$elt} + {/foreach} +
+{/if} + + + +
+ +{if not empty($header_notes)} +
+ {foreach from=$header_notes item=elt} + {$elt} + {/foreach} +
+{/if} + +
\ No newline at end of file diff --git a/sources/admin/themes/default/template/help.tpl b/sources/admin/themes/default/template/help.tpl new file mode 100644 index 0000000..399c746 --- /dev/null +++ b/sources/admin/themes/default/template/help.tpl @@ -0,0 +1,7 @@ +

{'Help'|@translate} » {$HELP_SECTION_TITLE}

+ +
+ +{$HELP_CONTENT} + +
\ No newline at end of file diff --git a/sources/admin/themes/default/template/history.tpl b/sources/admin/themes/default/template/history.tpl new file mode 100644 index 0000000..3fe4e73 --- /dev/null +++ b/sources/admin/themes/default/template/history.tpl @@ -0,0 +1,182 @@ + +{include file='include/datepicker.inc.tpl'} + +{footer_script}{literal} + pwg_initialization_datepicker("#start_day", "#start_month", "#start_year", "#start_linked_date", null, null, "#end_linked_date"); + pwg_initialization_datepicker("#end_day", "#end_month", "#end_year", "#end_linked_date", null, "#start_linked_date", null); +{/literal}{/footer_script} + +

{'History'|@translate} {$TABSHEET_TITLE}

+ +
+
+ {'Filter'|@translate} +
    +
  • +
  • + + + + +
  • +
+
    +
  • +
  • + + + + +
  • +
+ + + + + + + + + + + + + + +
+
+ +{if isset($search_summary)} +
+ {'Summary'|@translate} + +
    +
  • {$search_summary.NB_LINES}, {$search_summary.FILESIZE}
  • +
  • + {$search_summary.USERS} +
      +
    • {$search_summary.MEMBERS}
    • +
    • {$search_summary.GUESTS}
    • +
    +
  • +
+
+{/if} + +{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} + + + + + + + + + + + + + + +{if !empty($search_results)} +{foreach from=$search_results item=detail name=res_loop} + + + + + + + + + + +{/foreach} +{/if} +
{'Date'|@translate}{'Time'|@translate}{'User'|@translate}{'IP'|@translate}{'Element'|@translate}{'Element type'|@translate}{'Section'|@translate}{'Album'|@translate} / {'Tags'|@translate}
{$detail.DATE}{$detail.TIME}{$detail.USER}{$detail.IP}{$detail.IMAGE}{$detail.TYPE}{$detail.SECTION}{$detail.CATEGORY}{$detail.TAGS}
+ +{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} + +{combine_script id='jquery.geoip' load='async' path='admin/themes/default/js/jquery.geoip.js'} + +{footer_script}{literal} +jQuery(document).ready( function() { + jQuery(".IP").one( "mouseenter", function(){ + var that = $(this); + that + .data("isOver", true) + .one("mouseleave", function() { + that.removeData("isOver"); + }); + GeoIp.get( that.text(), function(data) { + if (!data.fullName) return; + + var content = data.fullName; + if (data.latitude && data.region_name) { + content += '
'; + + jQuery(parent).append(append); + return false; + }); +}); +{/literal}{/footer_script} \ No newline at end of file diff --git a/sources/admin/themes/default/template/include/add_album.inc.tpl b/sources/admin/themes/default/template/include/add_album.inc.tpl new file mode 100644 index 0000000..08ada07 --- /dev/null +++ b/sources/admin/themes/default/template/include/add_album.inc.tpl @@ -0,0 +1,94 @@ +{footer_script}{literal} +jQuery(document).ready(function(){ + jQuery(".addAlbumOpen").colorbox({ + inline: true, + href: "#addAlbumForm", + onComplete: function() { + var $albumSelect = jQuery("#albumSelect"); + + jQuery("input[name=category_name]").focus(); + + jQuery("#category_parent").html('') + .append($albumSelect.html()) + .val($albumSelect.val() || 0); + } + }); + + jQuery("#addAlbumForm form").submit(function() { + jQuery("#categoryNameError").text(""); + + var parent_id = jQuery("select[name=category_parent] option:selected").val(), + name = jQuery("input[name=category_name]").val(); + + jQuery.ajax({ + url: "ws.php", + dataType: 'json', + data: { + format: 'json', + method: 'pwg.categories.add', + parent: parent_id, + name: name + }, + beforeSend: function() { + jQuery("#albumCreationLoading").show(); + }, + success: function(data) { + jQuery("#albumCreationLoading").hide(); + jQuery(".addAlbumOpen").colorbox.close(); + + var newAlbum = data.result.id, + newAlbum_name = ''; + + if (parent_id!=0) { + newAlbum_name = jQuery("#category_parent").find("option[value="+ parent_id +"]").text() +' / '; + } + newAlbum_name+= name; + + var new_option = jQuery("
+
+
+ +

{'Version'|@translate} {$RELEASE} - {'Installation'|@translate}

+ +{if isset($config_creation_failed)} +
+

+ {'Creation of config file local/config/database.inc.php failed.'|@translate} +

+
    +
  • +

    {'You can download the config file and upload it to local/config directory of your installation.'|@translate}

    +

    + +

    +
  • +
  • +

    {'An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'|@translate}

    + +
  • +
+
+{/if} + +{if isset($errors)} +
+
    + {foreach from=$errors item=error} +
  • {$error}
  • + {/foreach} +
+
+{/if} + +{if isset($infos)} +
+
    + {foreach from=$infos item=info} +
  • {$info}
  • + {/foreach} +
+
+{/if} + +{if isset($install)} +
+ +
+ {'Basic configuration'|@translate} + + + + + + +
{'Default gallery language'|@translate} + +
+
+ +
+ {'Database configuration'|@translate} + + + + + + + + + + + + + + + + + + + + + + + + + + + +
{'Host'|@translate}{'localhost or other, supplied by your host provider'|@translate}
{'User'|@translate}{'user login given by your host provider'|@translate}
{'Password'|@translate}{'user password given by your host provider'|@translate}
{'Database name'|@translate}{'also given by your host provider'|@translate}
{'Database table prefix'|@translate}{'database tables names will be prefixed with it (enables you to manage better your tables)'|@translate}
+ +
+
+ {'Admin configuration'|@translate} + + + + + + + + + + + + + + + + + + + + + + + + + +
{'Username'|@translate}{'It will be shown to the visitors. It is necessary for website administration'|@translate}
{'Password'|@translate}{'Keep it confidential, it enables you to access administration panel'|@translate}
{'Password [confirm]'|@translate}{'verification'|@translate}
{'Email address'|@translate}{'Visitors will be able to contact site administrator with this mail'|@translate}
{'Options'|@translate} + + +
+ +
+ +
+ +
+ +
+
+{else} +

+ {'Visit Gallery'|@translate} +

+{/if} +
{* content *} +
{$L_INSTALL_HELP}
+
{* the_page *} + + +{get_combined_scripts load='footer'} + + + + diff --git a/sources/admin/themes/default/template/intro.tpl b/sources/admin/themes/default/template/intro.tpl new file mode 100644 index 0000000..a3c56c2 --- /dev/null +++ b/sources/admin/themes/default/template/intro.tpl @@ -0,0 +1,101 @@ +{combine_script id='jquery.cluetip' load='async' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'} + +{footer_script require='jquery.cluetip'} +var piwigo_need_update_msg = '{'A new version of Piwigo is available.'|@translate|@escape:"javascript"}'; +var ext_need_update_msg = '{'Some upgrades are available for extensions.'|@translate|@escape:"javascript"}'; + +{literal} +jQuery().ready(function(){ + jQuery('.cluetip').cluetip({ + width: 300, + splitTitle: '|', + positionBy: 'bottomTop' + }); + jQuery.ajax({ + type: 'GET', + url: 'ws.php', + dataType: 'json', + data: { method: 'pwg.extensions.checkUpdates', format: 'json' }, + timeout: 5000, + success: function (data) { + if (data['stat'] != 'ok') + return; + piwigo_update = data['result']['piwigo_need_update']; + ext_update = data['result']['ext_need_update'] + if ((piwigo_update || ext_update) && !jQuery(".warnings").is('div')) + jQuery("#content").prepend('
    '); + if (piwigo_update) + jQuery(".warnings ul").append('
  • '+piwigo_need_update_msg+'
  • '); + if (ext_update) + jQuery(".warnings ul").append('
  • '+ext_need_update_msg+'
  • '); + } + }); +}); +{/literal} +{/footer_script} + +

    {'Piwigo Administration'|@translate}

    +
    +
    {'Piwigo version'|@translate}
    +
    + +
    + +
    {'Environment'|@translate}
    +
    +
      +
    • {'Operating system'|@translate}: {$OS}
    • +
    • PHP: {$PHP_VERSION} ({'Show info'|@translate}) [{$PHP_DATATIME}]
    • +
    • {$DB_ENGINE}: {$DB_VERSION} [{$DB_DATATIME}]
    • + {if isset($GRAPHICS_LIBRARY)} +
    • {'Graphics Library'|@translate}: {$GRAPHICS_LIBRARY}
    • + {/if} +
    +
    + +
    {'Database'|@translate}
    +
    +
      +
    • + {$DB_ELEMENTS} + {if isset($first_added)} + ({$first_added.DB_DATE}) + {/if} +
    • +
    • {$DB_CATEGORIES} ({$DB_IMAGE_CATEGORY})
    • +
    • {$DB_TAGS} ({$DB_IMAGE_TAG})
    • +
    • {$DB_USERS}
    • +
    • {$DB_GROUPS}
    • + {if isset($DB_COMMENTS)} +
    • + {$DB_COMMENTS}{if $NB_PENDING_COMMENTS > 0} ({'%d waiting for validation'|translate:$NB_PENDING_COMMENTS}){/if} +
    • + {/if} +
    • {$DB_RATES}
    • +
    +
    +
    + +{if $ENABLE_SYNCHRONIZATION} +
    +
    + + + + + + + +
    +
    +{'Quick Local Synchronization'|@translate} + +
    +
    +{/if} \ No newline at end of file diff --git a/sources/admin/themes/default/template/languages_installed.tpl b/sources/admin/themes/default/template/languages_installed.tpl new file mode 100644 index 0000000..192cfcc --- /dev/null +++ b/sources/admin/themes/default/template/languages_installed.tpl @@ -0,0 +1,46 @@ +
    +

    {'Installed Languages'|@translate}

    +
    + +{foreach from=$language_states item=language_state} +
    + + {if $language_state == 'active'} + {'Active Languages'|@translate} + + {elseif $language_state == 'inactive'} + {'Inactive Languages'|@translate} + + {/if} + +
    + {foreach from=$languages item=language} + {if $language.state == $language_state} +
    +
    {$language.name}{if $language.is_default} ({'default'|@translate}){/if}
    +
    +
    + {if $language_state == 'active'} + {if $language.deactivable} + {'Deactivate'|@translate} + {else} + {'Deactivate'|@translate} + {/if} + + {if not $language.is_default} + | {'Default'|@translate} + {/if} + {/if} + + {if $language_state == 'inactive'} + {'Activate'|@translate} + | {'Delete'|@translate} + {/if} +
    +
    +
    + {/if} + {/foreach} +
    +
    +{/foreach} diff --git a/sources/admin/themes/default/template/languages_new.tpl b/sources/admin/themes/default/template/languages_new.tpl new file mode 100644 index 0000000..8405065 --- /dev/null +++ b/sources/admin/themes/default/template/languages_new.tpl @@ -0,0 +1,41 @@ +{combine_script id='jquery.cluetip' load='async' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'} + +{footer_script require='jquery.cluetip'} +jQuery().ready(function(){ldelim} + jQuery('.cluetip').cluetip({ldelim} + width: 300, + splitTitle: '|' + }); +}); +{/footer_script} + +
    +

    {'Add New Language'|@translate}

    +
    + +{if !empty($languages)} + + + + + + + + + + +{foreach from=$languages item=language name=languages_loop} + + + + + + + +{/foreach} +
    {'Language'|@translate}{'Version'|@translate}{'Date'|@translate}{'Author'|@translate}{'Actions'|@translate}
    {$language.EXT_NAME}{$language.VERSION}{$language.DATE}{$language.AUTHOR}{'Install'|@translate} + / {'Download'|@translate} +
    +{else} +

    {'There is no other language available.'|@translate}

    +{/if} diff --git a/sources/admin/themes/default/template/maintenance.tpl b/sources/admin/themes/default/template/maintenance.tpl new file mode 100644 index 0000000..257adae --- /dev/null +++ b/sources/admin/themes/default/template/maintenance.tpl @@ -0,0 +1,41 @@ +
    +

    {'Maintenance'|@translate}

    +
    + + + + + + + + + + diff --git a/sources/admin/themes/default/template/menubar.tpl b/sources/admin/themes/default/template/menubar.tpl new file mode 100644 index 0000000..f3bd1f4 --- /dev/null +++ b/sources/admin/themes/default/template/menubar.tpl @@ -0,0 +1,65 @@ +{footer_script require='jquery.ui.sortable'}{literal} +jQuery(document).ready(function(){ + jQuery(".menuPos").hide(); + jQuery(".drag_button").show(); + jQuery(".menuLi").css("cursor","move"); + jQuery(".menuUl").sortable({ + axis: "y", + opacity: 0.8 + }); + jQuery("input[name^='hide_']").click(function() { + men = this.name.split('hide_'); + if (this.checked) { + jQuery("#menu_"+men[1]).addClass('menuLi_hidden'); + } else { + jQuery("#menu_"+men[1]).removeClass('menuLi_hidden'); + } + }); + jQuery("#menuOrdering").submit(function(){ + ar = jQuery('.menuUl').sortable('toArray'); + for(i=0;i +

    {'Menu Management'|@translate}

    +
    + + diff --git a/sources/admin/themes/default/template/navigation_bar.tpl b/sources/admin/themes/default/template/navigation_bar.tpl new file mode 100644 index 0000000..82c66bd --- /dev/null +++ b/sources/admin/themes/default/template/navigation_bar.tpl @@ -0,0 +1,28 @@ + diff --git a/sources/admin/themes/default/template/notification_by_mail.tpl b/sources/admin/themes/default/template/notification_by_mail.tpl new file mode 100644 index 0000000..0be49bd --- /dev/null +++ b/sources/admin/themes/default/template/notification_by_mail.tpl @@ -0,0 +1,136 @@ + +{include file='include/autosize.inc.tpl'} +{footer_script}{literal} +jQuery(document).ready(function(){ + + jQuery("#checkAllLink").click(function () { + jQuery("#notification_by_mail input[type=checkbox]").prop('checked', true); + return false; + }); + + jQuery("#uncheckAllLink").click(function () { + jQuery("#notification_by_mail input[type=checkbox]").prop('checked', false); + return false; + }); + +}); +{/literal}{/footer_script} + +
    +

    {'Send mail to users'|@translate} {$TABSHEET_TITLE}

    +
    + +
    + {if isset($REPOST_SUBMIT_NAME)} +
    +
    + +
    +
    + {/if} + + {if isset($param)} +
    + {'Parameters'|@translate} + + + + + + + + + + + + + + + + + + + + + +
    + + +
    + +
    {'With blank value, gallery title will be used'|@translate} +
    + + +
    + +
    {'Available only with HTML format'|@translate} +
    + + +
    +
    + +

    + + +

    + {/if}{* isset $param*} + + {if isset($subscribe)} +
    + {'Subscribe/unsubscribe users'|@translate} +

    {'Warning: subscribing or unsubscribing will send mails to users'|@translate}

    + {$DOUBLE_SELECT} +
    + {/if}{* isset $subscribe*} + + {if isset($send)} + {if empty($send.users)} +

    {'There is no available subscribers to mail.'|@translate}

    +

    + {'Subscribers could be listed (available) only if there is new elements to notify.'|@translate}
    + {'Anyway only webmasters can see this tab and never administrators.'|@translate} +

    + {else} +
    + {'Select recipients'|@translate} + + + + + + + + {foreach from=$send.users item=u name=user_loop} + + + + + + + {/foreach} +
    {'User'|@translate}{'Email'|@translate}{'Last send'|@translate}{'To send ?'|@translate}
    +

    + {'Check all'|@translate} + / {'Uncheck all'|@translate} +

    +
    + +
    + {'Options'|@translate} + + + + + +
    +
    + +

    + +

    + {/if} + {/if}{* isset $send*} + +
    diff --git a/sources/admin/themes/default/template/permalinks.tpl b/sources/admin/themes/default/template/permalinks.tpl new file mode 100644 index 0000000..8ec0f3a --- /dev/null +++ b/sources/admin/themes/default/template/permalinks.tpl @@ -0,0 +1,99 @@ +{footer_script require='jquery.ui.sortable'}{literal} +jQuery(document).ready(function(){ + jQuery("#addPermalinkOpen").click(function(){ + jQuery("#addPermalink").show(); + jQuery("#showAddPermalink").hide(); + }); + + jQuery("#addPermalinkClose").click(function(){ + jQuery("#addPermalink").hide(); + jQuery("#showAddPermalink").show(); + }); +}); +{/literal}{/footer_script} + +{literal} + +{/literal} + +
    +

    {'Permalinks'|@translate}

    +
    + + + + + +
    + {'Permalinks'|@translate} + + + + + + +{foreach from=$permalinks item=permalink name="permalink_loop"} + + + + + +{/foreach} +
    Id {$SORT_ID}{'Album'|@translate} {$SORT_NAME}{'Permalink'|@translate} {$SORT_PERMALINK}
    +
    + +
    + {'Permalink history'|@translate} + + + + + + + + + + +{foreach from=$deleted_permalinks item=permalink} + + + + + + + + + +{/foreach} +
    Id {$SORT_OLD_CAT_ID}{'Album'|@translate}{'Permalink'|@translate} {$SORT_OLD_PERMALINK}{'Deleted on'|@translate} {$SORT_OLD_DATE_DELETED}{'Last hit'|@translate} {$SORT_OLD_LAST_HIT}{'Hit'|@translate} {$SORT_OLD_HIT}
    {$permalink.cat_id}{$permalink.name}{$permalink.permalink}{$permalink.date_deleted}{$permalink.last_hit}{$permalink.hit}[{'Delete'|@translate}]
    +
    \ No newline at end of file diff --git a/sources/admin/themes/default/template/photos_add_applications.tpl b/sources/admin/themes/default/template/photos_add_applications.tpl new file mode 100644 index 0000000..c76f8fe --- /dev/null +++ b/sources/admin/themes/default/template/photos_add_applications.tpl @@ -0,0 +1,132 @@ +{include file='include/colorbox.inc.tpl'} + +{footer_script}{literal} +jQuery().ready(function(){ + jQuery(".illustration a").colorbox({rel:'group1'}); +}); +{/literal}{/footer_script} + +{html_head}{literal} + +{/literal}{/html_head} + +
    +

    {'Upload Photos'|@translate} {$TABSHEET_TITLE}

    +
    + +
    + pLoader + +
    +

    {'pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'|@translate}

    + +

    {'Available versions for'|@translate} +Windows, +Mac, +Linux +

    + +
    + +
    + {'Piwigo for iOS (iPhone, iPad, iPod Touch)'|@translate} +
    +

    {'Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'|@translate}

    + +

    +{'Available on'|@translate} Apple AppStore +

    +
    + +
    + {'Piwigo for Android'|@translate} +
    +

    {'Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'|@translate}

    + +

    +{'Available on'|@translate} Google Play +

    +
    + +
    + Lightroom + +
    +

    +{'Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'|@translate} +{'The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'|@translate} +

    + +

    +{'Available on'|@translate} alloyphoto.com +

    +
    + +
    + Shotwell + +
    +

    {'Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'|@translate}

    + +

    +{'On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'|@translate} +{'Learn more'|@translate} +

    +
    + +
    + digiKam +
    +

    +{'digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'|@translate} +{'digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'|@translate} +

    + +

    +{'To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'|@translate} +{'Learn more'|@translate} +

    +
    + +
    + iPhoto + +
    +

    {'iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'|@translate}

    + +

    +{'Learn more'|@translate} +

    +
    + +
    + Aperture + +
    +

    +{'Aperture is a powerful tool to refine images and manage massive libraries on Mac.'|@translate} +{'Aperture is designed for professional photographers with iPhoto simplicity.'|@translate} +{'The Piwigo export plugin allows you to create albums and export photos.'|@translate} +

    + +

    +{'Learn more'|@translate} +

    +
    + +
    + ReGalAndroid + +
    +

    +{'ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'|@translate} +{'Features include gallery browsing, album creation and photo upload.'|@translate} +

    + +

    +{'Available on'|@translate} Google Play +

    +
    diff --git a/sources/admin/themes/default/template/photos_add_direct.tpl b/sources/admin/themes/default/template/photos_add_direct.tpl new file mode 100644 index 0000000..c63f9de --- /dev/null +++ b/sources/admin/themes/default/template/photos_add_direct.tpl @@ -0,0 +1,361 @@ +{if $upload_mode eq 'multiple'} +{combine_script id='jquery.jgrowl' load='footer' require='jquery' path='themes/default/js/plugins/jquery.jgrowl_minimized.js' } +{combine_script id='jquery.uploadify' load='footer' require='jquery' path='admin/include/uploadify/jquery.uploadify.v3.0.0.min.js' } +{combine_script id='jquery.ui.progressbar' load='footer'} +{combine_css path="themes/default/js/plugins/jquery.jgrowl.css"} +{combine_css path="admin/include/uploadify/uploadify.css"} +{/if} + +{include file='include/colorbox.inc.tpl'} +{include file='include/add_album.inc.tpl'} + +{footer_script}{literal} +jQuery(document).ready(function(){ + function checkUploadStart() { + var nbErrors = 0; + jQuery("#formErrors").hide(); + jQuery("#formErrors li").hide(); + + if (jQuery("#albumSelect option:selected").length == 0) { + jQuery("#formErrors #noAlbum").show(); + nbErrors++; + } + + var nbFiles = 0; + if (jQuery("#uploadBoxes").size() == 1) { + jQuery("input[name^=image_upload]").each(function() { + if (jQuery(this).val() != "") { + nbFiles++; + } + }); + } + else { + nbFiles = jQuery(".uploadifyQueueItem").size(); + } + + if (nbFiles == 0) { + jQuery("#formErrors #noPhoto").show(); + nbErrors++; + } + + if (nbErrors != 0) { + jQuery("#formErrors").show(); + return false; + } + else { + return true; + } + + } + + function humanReadableFileSize(bytes) { + var byteSize = Math.round(bytes / 1024 * 100) * .01; + var suffix = 'KB'; + + if (byteSize > 1000) { + byteSize = Math.round(byteSize *.001 * 100) * .01; + suffix = 'MB'; + } + + var sizeParts = byteSize.toString().split('.'); + if (sizeParts.length > 1) { + byteSize = sizeParts[0] + '.' + sizeParts[1].substr(0,2); + } + else { + byteSize = sizeParts[0]; + } + + return byteSize+suffix; + } + + jQuery("#hideErrors").click(function() { + jQuery("#formErrors").hide(); + return false; + }); + + jQuery("#uploadWarningsSummary a.showInfo").click(function() { + jQuery("#uploadWarningsSummary").hide(); + jQuery("#uploadWarnings").show(); + return false; + }); + + jQuery("#showPermissions").click(function() { + jQuery(this).parent(".showFieldset").hide(); + jQuery("#permissions").show(); + return false; + }); + +{/literal} +{if $upload_mode eq 'html'} +{literal} + function addUploadBox() { + var uploadBox = '

    '; + jQuery(uploadBox).appendTo("#uploadBoxes"); + } + + addUploadBox(); + + jQuery("#addUploadBox A").click(function () { + addUploadBox(); + }); + + jQuery("#uploadForm").submit(function() { + return checkUploadStart(); + }); +{/literal} +{elseif $upload_mode eq 'multiple'} + +var uploadify_path = '{$uploadify_path}'; +var upload_id = '{$upload_id}'; +var session_id = '{$session_id}'; +var pwg_token = '{$pwg_token}'; +var buttonText = "{'Select files'|@translate}"; +var sizeLimit = Math.round({$upload_max_filesize} / 1024); /* in KBytes */ + +{literal} + jQuery("#uploadify").uploadify({ + 'uploader' : uploadify_path + '/uploadify.php', + 'langFile' : uploadify_path + '/uploadifyLang_en.js', + 'swf' : uploadify_path + '/uploadify.swf', + 'checkExisting' : false, + + buttonCursor : 'pointer', + 'buttonText' : buttonText, + 'width' : 300, + 'cancelImage' : uploadify_path + '/cancel.png', + 'queueID' : 'fileQueue', + 'auto' : false, + 'multi' : true, + 'fileTypeDesc' : 'Photo files', + 'fileTypeExts' : '*.jpg;*.JPG;*.jpeg;*.JPEG;*.png;*.PNG;*.gif;*.GIF;{/literal}{if $tif_enabled}*.tif;*.TIF;*.tiff;*.TIFF{/if}{literal}', + 'fileSizeLimit' : sizeLimit, + 'progressData' : 'percentage', + requeueErrors : false, + 'onSelect' : function(event,ID,fileObj) { + jQuery("#fileQueue").show(); + }, + 'onQueueComplete' : function(stats) { + jQuery("input[name=submit_upload]").click(); + }, + onUploadError: function (file,errorCode,errorMsg,errorString,swfuploadifyQueue) { + /* uploadify calls the onUploadError trigger when the user cancels a file! */ + /* There no error so we skip it to avoid panic. */ + if ("Cancelled" == errorString) { + return false; + } + + var msg = file.name+', '+errorString; + + /* Let's put the error message in the form to display once the form is */ + /* performed, it makes support easier when user can copy/paste the error */ + /* thrown. */ + jQuery("#uploadForm").append(''); + + jQuery.jGrowl( + '

    onUploadError '+msg, + { + theme: 'error', + header: 'ERROR', + life: 4000, + sticky: false + } + ); + + return false; + }, + onUploadSuccess: function (file,data,response) { + var data = jQuery.parseJSON(data); + jQuery("#uploadedPhotos").parent("fieldset").show(); + + /* Let's display the thumbnail of the uploaded photo, no need to wait the */ + /* end of the queue */ + jQuery("#uploadedPhotos").prepend(' '); + }, + onUploadComplete: function(file,swfuploadifyQueue) { + var max = parseInt(jQuery("#progressMax").text()); + var next = parseInt(jQuery("#progressCurrent").text())+1; + var addToProgressBar = 2; + if (next <= max) { + jQuery("#progressCurrent").text(next); + } + else { + addToProgressBar = 1; + } + + jQuery("#progressbar").progressbar({ + value: jQuery("#progressbar").progressbar("option", "value") + addToProgressBar + }); + } + }); + + jQuery("input[type=button]").click(function() { + if (!checkUploadStart()) { + return false; + } + + jQuery("#uploadify").uploadifySettings( + 'postData', + { + 'category_id' : jQuery("select[name=category] option:selected").val(), + 'level' : jQuery("select[name=level] option:selected").val(), + 'upload_id' : upload_id, + 'session_id' : session_id, + 'pwg_token' : pwg_token + } + ); + + nb_files = jQuery(".uploadifyQueueItem").size(); + jQuery("#progressMax").text(nb_files); + jQuery("#progressbar").progressbar({max: nb_files*2, value:1}); + jQuery("#progressCurrent").text(1); + + jQuery("#uploadProgress").show(); + + jQuery("#uploadify").uploadifyUpload(); + }); + +{/literal} +{/if} +}); +{/footer_script} + +
    +

    {'Upload Photos'|@translate} {$TABSHEET_TITLE}

    +
    + +
    + +{if count($setup_errors) > 0} +
    +
      + {foreach from=$setup_errors item=error} +
    • {$error}
    • + {/foreach} +
    +
    +{else} + + {if count($setup_warnings) > 0} +
    +
      + {foreach from=$setup_warnings item=warning} +
    • {$warning}
    • + {/foreach} +
    + +
    + {/if} + + +{if !empty($thumbnails)} +
    + {'Uploaded Photos'|@translate} +
    + {foreach from=$thumbnails item=thumbnail} + + {$thumbnail.file} + + {/foreach} +
    + +
    +

    {'Add another set of photos'|@translate}

    +{else} + + + + +
    +{if $upload_mode eq 'multiple'} + +{/if} + +
    + {'Drop into album'|@translate} + + {'create a new album'|@translate} + +
    + +
    + {'Select files'|@translate} + + {if isset($original_resize_maxheight)}

    {'The picture dimensions will be reduced to %dx%d pixels.'|@translate:$original_resize_maxwidth:$original_resize_maxheight}

    {/if} + +

    {$upload_max_filesize_shorthand}B. {$upload_file_types}. {if isset($max_upload_resolution)}{$max_upload_resolution}Mpx{/if}

    + +

    +{'Maximum file size: %sB.'|@translate:$upload_max_filesize_shorthand} +{'Allowed file types: %s.'|@translate:$upload_file_types} + {if isset($max_upload_resolution)} +{'Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'|@translate:$max_upload_resolution:$max_upload_width:$max_upload_height} + {/if} +

    + + + +{if $upload_mode eq 'html'} +
    + + +

    {'You are using the Browser uploader. Try the Flash uploader instead.'|@translate:$switch_url}

    + +{elseif $upload_mode eq 'multiple'} +
    You've got a problem with your JavaScript
    + + + +

    {'You are using the Flash uploader. Problems? Try the Browser uploader instead.'|@translate:$switch_url}

    + +{/if} +
    + +

    {'Manage Permissions'|@translate}

    + + + +{if $upload_mode eq 'html'} +

    + +

    +{elseif $upload_mode eq 'multiple'} +

    + + +

    +{/if} +
    + + + +
    + {'Uploaded Photos'|@translate} +
    +
    + +{/if} {* empty($thumbnails) *} +{/if} {* $setup_errors *} + +
    diff --git a/sources/admin/themes/default/template/photos_add_ftp.tpl b/sources/admin/themes/default/template/photos_add_ftp.tpl new file mode 100644 index 0000000..f3473a4 --- /dev/null +++ b/sources/admin/themes/default/template/photos_add_ftp.tpl @@ -0,0 +1,9 @@ +
    +

    {'Upload Photos'|@translate} {$TABSHEET_TITLE}

    +
    + + \ No newline at end of file diff --git a/sources/admin/themes/default/template/picture_coi.tpl b/sources/admin/themes/default/template/picture_coi.tpl new file mode 100644 index 0000000..d5c2ec4 --- /dev/null +++ b/sources/admin/themes/default/template/picture_coi.tpl @@ -0,0 +1,73 @@ +{html_head} + +{/html_head} +{combine_script id='jquery.jcrop' load='footer' require='jquery' path='themes/default/js/plugins/jquery.Jcrop.min.js'} + +

    {$TITLE} › {'Edit photo'|@translate} {$TABSHEET_TITLE}

    + +
    + +
    +{'Photo sizes with crop'|@translate} +{foreach from=$cropped_derivatives item=deriv} +{$ALT} +{/foreach} +
    + +
    +{'Center of interest'|@translate} +

    +{'The center of interest is the most meaningful zone in the photo.'|@translate} +{'For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'|@translate} +{'By default, the center of interest is placed in the middle of the photo.'|@translate} +{'Select a zone with your mouse to define a new center of interest.'|@translate} +

    + + + + + +{$ALT} + +

    + +

    +
    +
    + +{footer_script} +{literal} +function from_coi(f, total) { + return f*total; +} + +function to_coi(v, total) { + return v/total; +} + +function jOnChange(sel) { + var $img = jQuery("#jcrop"); + jQuery("#l").val( to_coi(sel.x, $img.width()) ); + jQuery("#t").val( to_coi(sel.y, $img.height()) ); + jQuery("#r").val( to_coi(sel.x2, $img.width()) ); + jQuery("#b").val( to_coi(sel.y2, $img.height()) ); +} +function jOnRelease() { + jQuery("#l,#t,#r,#b").val(""); +} + +{/literal} +jQuery("#jcrop").Jcrop( {ldelim} + boxWidth: 500, boxHeight: 400, + onChange: jOnChange, + onRelease: jOnRelease + } +{if isset($coi)} + ,function() {ldelim} + var $img = jQuery("#jcrop"); + this.animateTo( [from_coi({$coi.l}, $img.width()), from_coi({$coi.t}, $img.height()), from_coi({$coi.r}, $img.width()), from_coi({$coi.b}, $img.height()) ] ); + } +{/if} +); +{/footer_script} + diff --git a/sources/admin/themes/default/template/picture_modify.tpl b/sources/admin/themes/default/template/picture_modify.tpl new file mode 100644 index 0000000..9fbd81d --- /dev/null +++ b/sources/admin/themes/default/template/picture_modify.tpl @@ -0,0 +1,157 @@ +{include file='include/autosize.inc.tpl'} +{include file='include/dbselect.inc.tpl'} +{include file='include/datepicker.inc.tpl'} + +{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'} +{combine_css path="themes/default/js/plugins/chosen.css"} + +{footer_script}{literal} +jQuery(document).ready(function() { + jQuery(".chzn-select").chosen(); +}); +{/literal}{/footer_script} + +{combine_css path='themes/default/js/plugins/jquery.tokeninput.css'} +{combine_script id='jquery.tokeninput' load='async' require='jquery' path='themes/default/js/plugins/jquery.tokeninput.js'} +{footer_script require='jquery.tokeninput'} +jQuery(document).ready(function() {ldelim} + jQuery("#tags").tokenInput( + [{foreach from=$tags item=tag name=tags}{ldelim}"name":"{$tag.name|@escape:'javascript'}","id":"{$tag.id}"{rdelim}{if !$smarty.foreach.tags.last},{/if}{/foreach}], + {ldelim} + hintText: '{'Type in a search term'|@translate}', + noResultsText: '{'No results'|@translate}', + searchingText: '{'Searching...'|@translate}', + newText: ' ({'new'|@translate})', + animateDropdown: false, + preventDuplicates: true, + allowFreeTagging: true + } + ); +}); +{/footer_script} + +{footer_script} +pwg_initialization_datepicker("#date_creation_day", "#date_creation_month", "#date_creation_year", "#date_creation_linked_date", "#date_creation_action_set"); +{/footer_script} + +

    {$TITLE} › {'Edit photo'|@translate} {$TABSHEET_TITLE}

    + +
    + +
    + {'Informations'|@translate} + + + + + + + + +
    + {'Thumbnail'|@translate} +
    + +
    + +
    + {'Properties'|@translate} + +

    + {'Title'|@translate} +
    + +

    + +

    + {'Author'|@translate} +
    + +

    + +

    + {'Creation date'|@translate} +
    + + + + + + + + +

    + +

    + {'Linked albums'|@translate} +
    + +

    + +

    + {'Representation of albums'|@translate} +
    + +

    + +

    + {'Tags'|@translate} +
    + +

    + +

    + {'Description'|@translate} +
    + +

    + +

    + {'Who can see this photo?'|@translate} +
    + +

    + +

    + +

    +
    + +
    diff --git a/sources/admin/themes/default/template/plugins_installed.tpl b/sources/admin/themes/default/template/plugins_installed.tpl new file mode 100644 index 0000000..9864abd --- /dev/null +++ b/sources/admin/themes/default/template/plugins_installed.tpl @@ -0,0 +1,221 @@ +{combine_script id='jquery.ajaxmanager' load='footer' require='jquery' path='themes/default/js/plugins/jquery.ajaxmanager.js' } + +{footer_script require='jquery.ajaxmanager'} +/* incompatible message */ +var incompatible_msg = '{'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'|@translate|@escape:'javascript'}'; +var activate_msg = '\n{'Do you want to activate anyway?'|@translate|@escape:'javascript'}'; + +/* group action */ +var pwg_token = '{$PWG_TOKEN}'; +var confirmMsg = '{'Are you sure?'|@translate|@escape:'javascript'}'; +{literal} +var queuedManager = jQuery.manageAjax.create('queued', { + queue: true, + maxRequests: 1 +}); +var nb_plugins = jQuery('div.active').size(); +var done = 0; + +jQuery(document).ready(function() { + /* group action */ + jQuery('div.deactivate_all a').click(function() { + if (confirm(confirmMsg)) { + jQuery('div.active').each(function() { + performPluginDeactivate(jQuery(this).attr('id')); + }); + } + }); + function performPluginDeactivate(id) { + queuedManager.add({ + type: 'GET', + dataType: 'json', + url: 'ws.php', + data: { method: 'pwg.plugins.performAction', action: 'deactivate', plugin: id, pwg_token: pwg_token, format: 'json' }, + success: function(data) { + if (data['stat'] == 'ok') jQuery("#"+id).removeClass('active').addClass('inactive'); + done++; + if (done == nb_plugins) location.reload(); + } + }); + }; + + /* incompatible plugins */ + jQuery(document).ready(function() { + jQuery.ajax({ + method: 'GET', + url: 'admin.php', + data: { page: 'plugins_installed', incompatible_plugins: true }, + dataType: 'json', + success: function(data) { + for (i=0;i') + {else} + jQuery('#'+data[i]+' .pluginMiniBoxNameCell').prepend('') + {/if} + {literal} + jQuery('#'+data[i]).addClass('incompatible'); + jQuery('#'+data[i]+' .activate').attr('onClick', 'return confirm(incompatible_msg + activate_msg);'); + } + jQuery('.warning').tipTip({ + 'delay' : 0, + 'fadeIn' : 200, + 'fadeOut' : 200, + 'maxWidth':'250px' + }); + } + }); + }); + + /* TipTips */ + jQuery('.plugin-restore').tipTip({ + 'delay' : 0, + 'fadeIn' : 200, + 'fadeOut' : 200 + }); + jQuery('.showInfo').tipTip({ + 'delay' : 0, + 'fadeIn' : 200, + 'fadeOut' : 200, + 'maxWidth':'300px', + 'keepAlive':true, + 'activation':'click' + }); +}); +{/literal} +{/footer_script} + +
    +

    {'Plugins'|@translate}

    +
    + +
    + {if $show_details} + {'hide details'|@translate} + {else} + {'show details'|@translate} + {/if} +
    + +{if isset($plugins)} + +{assign var='field_name' value='null'} {* *} +{counter start=0 assign=i} {* *} +{foreach from=$plugins item=plugin name=plugins_loop} + +{if $field_name != $plugin.STATE} + {if $field_name != 'null'} + + {/if} + +
    + + {if $plugin.STATE == 'active'} + {'Active Plugins'|@translate} + {elseif $plugin.STATE == 'inactive'} + {'Inactive Plugins'|@translate} + {elseif $plugin.STATE == 'missing'} + {'Missing Plugins'|@translate} + {elseif $plugin.STATE == 'merged'} + {'Obsolete Plugins'|@translate} + {/if} + + {assign var='field_name' value=$plugin.STATE} +{/if} + + {if not empty($plugin.AUTHOR)} + {if not empty($plugin.AUTHOR_URL)} + {assign var='author' value="%s"|@sprintf:$plugin.AUTHOR_URL:$plugin.AUTHOR} + {else} + {assign var='author' value=''|cat:$plugin.AUTHOR|cat:''} + {/if} + {/if} + + {if $show_details} +
    + + + + + + + + + +
    + {$plugin.NAME} + {$plugin.DESC}
    + {if $plugin.STATE == 'active'} + {'Deactivate'|@translate} + | {'Restore'|@translate} + + {elseif $plugin.STATE == 'inactive'} + {'Activate'|@translate} + | {'Delete'|@translate} + + {elseif $plugin.STATE == 'missing'} + {'Uninstall'|@translate} + + {elseif $plugin.STATE == 'merged'} + {'Delete'|@translate} + {/if} + + {'Version'|@translate} {$plugin.VERSION} + + {if not empty($author)} + | {'By %s'|@translate:$author} + {/if} + + {if not empty($plugin.VISIT_URL)} + | {'Visit plugin site'|@translate} + {/if} +
    +
    {**} + + {else} + {if not empty($plugin.VISIT_URL)} + {assign var='version' value=""|cat:$plugin.VERSION|cat:""} + {else} + {assign var='version' value=$plugin.VERSION} + {/if} + +
    +
    + {$plugin.NAME} + +
    +
    +
    + {if $plugin.STATE == 'active'} + {'Deactivate'|@translate} + | {'Restore'|@translate} + + {elseif $plugin.STATE == 'inactive'} + {'Activate'|@translate} + | {'Delete'|@translate} + + {elseif $plugin.STATE == 'missing'} + {'Uninstall'|@translate} + + {elseif $plugin.STATE == 'merged'} + {'Delete'|@translate} + {/if} +
    +
    +
    {**} + + {/if} + +{if $plugin.STATE == 'active'} + {counter} + {if $active_plugins == $i} + + {counter} + {/if} +{/if} + +{/foreach} +
    + +{/if} diff --git a/sources/admin/themes/default/template/plugins_new.tpl b/sources/admin/themes/default/template/plugins_new.tpl new file mode 100644 index 0000000..3ccfcae --- /dev/null +++ b/sources/admin/themes/default/template/plugins_new.tpl @@ -0,0 +1,91 @@ +{combine_script id='jquery.sort' load='footer' path='themes/default/js/plugins/jquery.sort.js'} + +{footer_script require='jquery.ui.effect-blind,jquery.sort'}{literal} +var sortOrder = 'date'; +var sortPlugins = (function(a, b) { + if (sortOrder == 'downloads' || sortOrder == 'revision' || sortOrder == 'date') + return parseInt($(a).find('input[name="'+sortOrder+'"]').val()) + < parseInt($(b).find('input[name="'+sortOrder+'"]').val()) ? 1 : -1; + else + return $(a).find('input[name="'+sortOrder+'"]').val().toLowerCase() + > $(b).find('input[name="'+sortOrder+'"]').val().toLowerCase() ? 1 : -1; +}); + +jQuery(document).ready(function(){ + jQuery("td[id^='desc_']").click(function() { + id = this.id.split('_'); + nb_lines = jQuery("#bigdesc_"+id[1]).html().split('
    ').length; + + jQuery("#smalldesc_"+id[1]).toggle('blind', 1); + if (jQuery(this).hasClass('bigdesc')) { + jQuery("#bigdesc_"+id[1]).toggle('blind', 1); + } else { + jQuery("#bigdesc_"+id[1]).toggle('blind', 50 + (nb_lines * 30)); + } + jQuery(this).toggleClass('bigdesc'); + return false; + }); + + jQuery('select[name="selectOrder"]').change(function() { + sortOrder = this.value; + $('.pluginBox').sortElements(sortPlugins); + $.get("admin.php?plugins_new_order="+sortOrder); + }); +}); +{/literal}{/footer_script} + +
    + +{'Sort order'|@translate} : +{html_options name="selectOrder" options=$order_options selected=$order_selected} + +

    {'Plugins'|@translate}

    +
    + +{if not empty($plugins)} +
    +
    + +{foreach from=$plugins item=plugin name=plugins_loop} +
    + + + + + + + + +{if $plugin.BIG_DESC != $plugin.SMALL_DESC} + +{else} + +{/if} + + + + + +
    {$plugin.EXT_NAME} + + {$plugin.SMALL_DESC}... + + + {$plugin.BIG_DESC|@nl2br}
    + {'Install'|@translate} + | {'Download'|@translate} + + {'Downloads'|@translate}: {$plugin.DOWNLOADS} + {'Version'|@translate} {$plugin.VERSION} + | {'By %s'|@translate:$plugin.AUTHOR} + | {'Visit plugin site'|@translate} +
    +
    +{/foreach} +
    +
    +{else} +

    {'There is no other plugin available.'|@translate}

    +{/if} \ No newline at end of file diff --git a/sources/admin/themes/default/template/popuphelp.tpl b/sources/admin/themes/default/template/popuphelp.tpl new file mode 100644 index 0000000..cddb73b --- /dev/null +++ b/sources/admin/themes/default/template/popuphelp.tpl @@ -0,0 +1,12 @@ +
    +{$HELP_CONTENT} +
    + + + diff --git a/sources/admin/themes/default/template/profile.tpl b/sources/admin/themes/default/template/profile.tpl new file mode 100644 index 0000000..6eac82e --- /dev/null +++ b/sources/admin/themes/default/template/profile.tpl @@ -0,0 +1,5 @@ +
    +

    {'Profile'|@translate}

    +
    + +{$PROFILE_CONTENT} diff --git a/sources/admin/themes/default/template/profile_content.tpl b/sources/admin/themes/default/template/profile_content.tpl new file mode 100644 index 0000000..3c22dd3 --- /dev/null +++ b/sources/admin/themes/default/template/profile_content.tpl @@ -0,0 +1,93 @@ +
    + +
    + {'Registration'|@translate} + +
      +
    • + + + + {if not $SPECIAL_USER} + + {else} + {$USERNAME} + {/if} +
    • + {if not $SPECIAL_USER} {* can modify password + email*} +
    • + + + + +
    • +
    • + + + + +
    • +
    • + + + + +
    • + {/if} +
    +
    + +
    + {'Preferences'|@translate} + +
      +
    • + + + + +
    • + {if not $SPECIAL_USER} +
    • + + + + {html_options id=template name=theme options=$template_options selected=$template_selection} +
    • +
    • + + + + {html_options id=language name=language options=$language_options selected=$language_selection} +
    • + {/if} +
    • + + + + +
    • +
    • + {'Expand all albums'|@translate} + {html_radios name='expand' options=$radio_options selected=$EXPAND} +
    • + {if $ACTIVATE_COMMENTS} +
    • + {'Show number of comments'|@translate} + {html_radios name='show_nb_comments' options=$radio_options selected=$NB_COMMENTS} +
    • + {/if} +
    • + {'Show number of hits'|@translate} + {html_radios name='show_nb_hits' options=$radio_options selected=$NB_HITS} +
    • +
    +
    + +

    + + + +

    + +
    diff --git a/sources/admin/themes/default/template/rating.tpl b/sources/admin/themes/default/template/rating.tpl new file mode 100644 index 0000000..9dcce6f --- /dev/null +++ b/sources/admin/themes/default/template/rating.tpl @@ -0,0 +1,96 @@ +

    {$NB_ELEMENTS} {'Photos'|@translate}

    + +
    +
    + {'Filter'|@translate} + + + + + + + + + +
    +
    + +{if !empty($navbar) }{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} + + + + + + + + + + + +{foreach from=$images item=image name=image} + + + + + + + + +{/foreach}{*images*} +
    {'File'|@translate}{'Number of rates'|@translate}{'Rating score'|@translate}{'Average rate'|@translate}{'Sum of rates'|@translate}{'Rate'|@translate}/{'Username'|@translate}/{'Rate date'|@translate}
    {$image.FILE}{$image.NB_RATES}/{$image.NB_RATES_TOTAL}{$image.SCORE_RATE}{$image.AVG_RATE}{$image.SUM_RATE} + +{foreach from=$image.rates item=rate name=rate} + + + + + + +{/foreach}{*rates*} +
    {$rate.rate}{$rate.USER}{$rate.date}
    +
    +{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'} +{footer_script} +function del(node,id,uid,aid){ + var tr = jQuery(node).parents("tr").first().fadeTo(1000, 0.4), + data = { + image_id: id, + user_id: uid + }; + if (aid) + data.anonymous_id = aid; + + (new PwgWS('{$ROOT_URL|@escape:javascript}')).callService( + 'pwg.rates.delete', data, + { + method: 'POST', + onFailure: function(num, text) { tr.stop(); tr.fadeTo(0,1); alert(num + " " + text); }, + onSuccess: function(result){ + if (result) + tr.remove(); + else + alert(result); + } + } + ); + return false; +} +{/footer_script} + +{if !empty($navbar)}{include file='navigation_bar.tpl'|@get_extent:'navbar'}{/if} diff --git a/sources/admin/themes/default/template/rating_user.tpl b/sources/admin/themes/default/template/rating_user.tpl new file mode 100644 index 0000000..5f0952c --- /dev/null +++ b/sources/admin/themes/default/template/rating_user.tpl @@ -0,0 +1,144 @@ +{combine_script id='jquery.dataTables' load='footer' path='themes/default/js/plugins/jquery.dataTables.js'} +{html_style} +.sorting { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_both.png) no-repeat center right; cursor:pointer; } +.sorting_asc { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_asc.png) no-repeat center right; } +.sorting_desc { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_desc.png) no-repeat center right; } + +.sorting, .sorting_asc, .sorting_desc { + padding: 3px 18px 3px 10px; +} +.sorting_asc_disabled { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_asc_disabled.png) no-repeat center right; } +.sorting_desc_disabled { background: url({$ROOT_URL}themes/default/js/plugins/datatables/images/sort_desc_disabled.png) no-repeat center right; } + +.dtBar { + text-align:left; + padding-left: 20px; +} +{/html_style} + +

    {$ratings|@count} {'Users'|@translate}

    + +
    +
    + + + + + + + +
    +
    + +{combine_script id='core.scripts' load='async' path='themes/default/js/scripts.js'} +{footer_script} +var oTable = jQuery('#rateTable').dataTable({ + sDom : '<"dtBar"f>rt', + bPaginate: false, + aaSorting: [[5,'desc']], + aoColumnDefs: [ + /*{ + aTargets: ["dtc_user"] + },*/ + { + aTargets: ["dtc_date"], + asSorting: ["desc","asc"] + }, + { + aTargets: ["dtc_stat"], + asSorting: ["desc","asc"], + bSearchable: false + }, + { + aTargets: ["dtc_rate"], + asSorting: ["desc","asc"], + bSearchable: false + }, + { + aTargets: ["dtc_del"], + bSortable: false, + bSearchable: false + } + ] +}); + +function del(elt,uid,aid){ + if (!confirm('{'Are you sure?'|@translate|@escape:'javascript'}')) + return false; + var tr = elt; + while ( tr.nodeName != "TR") tr = tr.parentNode; + tr = jQuery(tr).fadeTo(1000, 0.4); + + (new PwgWS('{$ROOT_URL|@escape:javascript}')).callService( + 'pwg.rates.delete', { user_id:uid, anonymous_id:aid}, + { + method: 'POST', + onFailure: function(num, text) { tr.stop(); tr.fadeTo(0,1); alert(num + " " + text); }, + onSuccess: function(result){ + if (result) + oTable.fnDeleteRow(tr[0]); + else + alert(result); + } + } + ); + + return false; +} +{/footer_script} + + + + + + + + + + +{foreach from=$available_rates item=rate} + +{/foreach} + + + +{foreach from=$ratings item=rating key=user} + + + + + + + + + {foreach from=$rating.rates item=rates key=rate} + + {/foreach} + + +{/foreach} +
    {'Username'|@translate}{'Last'|@translate}{'Number of rates'|@translate}{'Average rate'|@translate}{'Variation'|@translate}{'Consensus deviation'|@translate|@replace:' ':'
    '}
    {'Consensus deviation'|@translate|@replace:' ':'
    '} {$CONSENSUS_TOP_NUMBER}
    {$rate}
    {$user}{$rating.last_date}{$rating.count}{$rating.avg|@number_format:2}{$rating.cv|@number_format:3}{$rating.cd|@number_format:3}{if !empty($rating.cdtop)}{$rating.cdtop|@number_format:3}{/if}{if !empty($rates)} + {capture assign=rate_over}{foreach from=$rates item=rate_arr}thumb-{$rate_arr.id} + {/foreach}{/capture} + {$rates|@count} + {/if}
    + +{combine_script id='jquery.cluetip' load='footer' require='jquery' path='themes/default/js/plugins/jquery.cluetip.js'} +{footer_script require='jquery.cluetip'} +jQuery(document).ready(function(){ldelim} + jQuery('.cluetip').cluetip({ldelim} + width: {$TN_WIDTH}, showTitle:false, splitTitle: '|' + }); +}) +{/footer_script} \ No newline at end of file diff --git a/sources/admin/themes/default/template/site_manager.tpl b/sources/admin/themes/default/template/site_manager.tpl new file mode 100644 index 0000000..2429060 --- /dev/null +++ b/sources/admin/themes/default/template/site_manager.tpl @@ -0,0 +1,67 @@ +{footer_script}{literal} +jQuery(document).ready(function(){ + jQuery("#showCreateSite a").click(function(){ + jQuery("#showCreateSite").hide(); + jQuery("#createSite").show(); + }); +}); +{/literal}{/footer_script} + + +
    +

    {'Site manager'|@translate}

    +
    + +{if not empty($remote_output)} +
    +
      + {foreach from=$remote_output item=remote_line} +
    • {$remote_line.CONTENT}
    • + {/foreach} +
    +
    +{/if} + +{if not empty($sites)} + + + + + + {foreach from=$sites item=site name=site} + + {/foreach} +
    {'Directory'|@translate}{'Actions'|@translate}
    + {$site.NAME}
    ({$site.TYPE}, {$site.CATEGORIES} {'Albums'|@translate}, {$pwg->l10n_dec('%d photo','%d photos',$site.IMAGES)}) +
    + [{'Synchronize'|@translate}] + {if isset($site.U_DELETE)} + [{'delete'|@translate}] + {/if} + {if not empty($site.plugin_links)} +
    + {foreach from=$site.plugin_links item=plugin_link} + [{$plugin_link.U_CAPTION}] + {/foreach} + {/if} +
    +{/if} + +

    + {'create a new site'|@translate} +

    + + + {/if} + +
    + + {if $theme.STATE == 'active'} + {'Active Themes'|@translate} + {else} + {'Inactive Themes'|@translate} + {/if} + +
    + {assign var='field_name' value=$theme.STATE} +{/if} + + {if not empty($theme.AUTHOR)} + {if not empty($theme.AUTHOR_URL)} + {assign var='author' value="%s"|@sprintf:$theme.AUTHOR_URL:$theme.AUTHOR} + {else} + {assign var='author' value=''|cat:$theme.AUTHOR|cat:''} + {/if} + {/if} + {if not empty($theme.VISIT_URL)} + {assign var='version' value=""|cat:$theme.VERSION|cat:""} + {else} + {assign var='version' value=$theme.VERSION} + {/if} + +
    +
    + {$theme.NAME} {if $theme.IS_DEFAULT}({'default'|@translate}){/if} {if $theme.IS_MOBILE}({'Mobile'|@translate}){/if} + +
    +
    +
    +
    +{if $theme.STATE == 'active'} + {if $theme.DEACTIVABLE} + {'Deactivate'|@translate} + {else} + {'Deactivate'|@translate} + {/if} + + {if not $theme.IS_DEFAULT} + | {'Default'|@translate} + {/if} + {if $theme.ADMIN_URI} +
    {'Configuration'|@translate} + {/if} +{else} + {if $theme.ACTIVABLE} + {'Activate'|@translate} + {else} + {'Activate'|@translate} + {/if} + | + {if $theme.DELETABLE} + {'Delete'|@translate} + {else} + {'Delete'|@translate} + {/if} +{/if} +
    +
    +
    + +{/foreach} +
    +
    + +
    diff --git a/sources/admin/themes/default/template/themes_new.tpl b/sources/admin/themes/default/template/themes_new.tpl new file mode 100644 index 0000000..d897dea --- /dev/null +++ b/sources/admin/themes/default/template/themes_new.tpl @@ -0,0 +1,23 @@ +{include file='include/colorbox.inc.tpl'} +{footer_script}{literal} +jQuery(document).ready(function() { + $("a.preview-box").colorbox(); +}); +{/literal}{/footer_script} +
    +

    {'Add New Theme'|@translate}

    +
    + +{if not empty($new_themes)} +
    +{foreach from=$new_themes item=theme name=themes_loop} +
    +
    {$theme.name}
    +
    + +
    +{/foreach} +
    +{else} +

    {'There is no other theme available.'|@translate}

    +{/if} \ No newline at end of file diff --git a/sources/admin/themes/default/template/updates_ext.tpl b/sources/admin/themes/default/template/updates_ext.tpl new file mode 100644 index 0000000..7d65c25 --- /dev/null +++ b/sources/admin/themes/default/template/updates_ext.tpl @@ -0,0 +1,281 @@ +{combine_script id='jquery.ajaxmanager' load='footer' require='jquery' path='themes/default/js/plugins/jquery.ajaxmanager.js'} +{combine_script id='jquery.jgrowl' load='footer' require='jquery' path='themes/default/js/plugins/jquery.jgrowl_minimized.js'} +{combine_css path="themes/default/js/plugins/jquery.jgrowl.css"} + +{footer_script require='jquery.ui.effect-blind,jquery.ajaxmanager,jquery.jgrowl'} +var pwg_token = '{$PWG_TOKEN}'; +var extType = '{$EXT_TYPE}'; +var confirmMsg = '{'Are you sure?'|@translate|@escape:'javascript'}'; +var errorHead = '{'ERROR'|@translate|@escape:'javascript'}'; +var successHead = '{'Update Complete'|@translate|@escape:'javascript'}'; +var errorMsg = '{'an error happened'|@translate|@escape:'javascript'}'; +var restoreMsg = '{'Reset ignored updates'|@translate|@escape:'javascript'}'; + +{literal} +var todo = 0; +var queuedManager = $.manageAjax.create('queued', { + queue: true, + maxRequests: 1, + beforeSend: function() { autoupdate_bar_toggle(1); }, + complete: function() { autoupdate_bar_toggle(-1); } +}); + +function updateAll() { + if (confirm(confirmMsg)) { + jQuery('.updateExtension').each( function() { + if (jQuery(this).parents('div').css('display') == 'block') + jQuery(this).click(); + }); + } +}; + +function ignoreAll() { + jQuery('.ignoreExtension').each( function() { + if (jQuery(this).parents('div').css('display') == 'block') + jQuery(this).click(); + }); +}; + +function resetIgnored() { + jQuery.ajax({ + type: 'GET', + url: 'ws.php', + dataType: 'json', + data: { method: 'pwg.extensions.ignoreUpdate', reset: true, type: extType, pwg_token: pwg_token, format: 'json' }, + success: function(data) { + if (data['stat'] == 'ok') { + jQuery(".pluginBox, fieldset").show(); + jQuery("#update_all").show(); + jQuery("#ignore_all").show(); + jQuery("#up_to_date").hide(); + jQuery("#reset_ignore").hide(); + jQuery("#ignored").hide(); + checkFieldsets(); + } + } + }); +}; + +function checkFieldsets() { + var types = new Array('plugins', 'themes', 'languages'); + var total = 0; + var ignored = 0; + for (i=0;i<3;i++) { + nbExtensions = 0; + jQuery("div[id^='"+types[i]+"_']").each(function(index) { + if (jQuery(this).css('display') == 'block') + nbExtensions++; + else + ignored++; + }); + total = total + nbExtensions; + if (nbExtensions == 0) + jQuery("#"+types[i]).hide(); + } + + if (total == 0) { + jQuery("#update_all").hide(); + jQuery("#ignore_all").hide(); + jQuery("#up_to_date").show(); + } + if (ignored > 0) { + jQuery("#reset_ignore").val(restoreMsg + ' (' + ignored + ')'); + } +}; + +function updateExtension(type, id, revision) { + queuedManager.add({ + type: 'GET', + dataType: 'json', + url: 'ws.php', + data: { method: 'pwg.extensions.update', type: type, id: id, revision: revision, pwg_token: pwg_token, format: 'json' }, + success: function(data) { + if (data['stat'] == 'ok') { + jQuery.jGrowl( data['result'], { theme: 'success', header: successHead, life: 4000, sticky: false }); + jQuery("#"+type+"_"+id).remove(); + checkFieldsets(); + } else { + jQuery.jGrowl( data['result'], { theme: 'error', header: errorHead, sticky: true }); + } + }, + error: function(data) { + jQuery.jGrowl( errorMsg, { theme: 'error', header: errorHead, sticky: true }); + } + }); +}; + +function ignoreExtension(type, id) { + queuedManager.add({ + type: 'GET', + url: 'ws.php', + dataType: 'json', + data: { method: 'pwg.extensions.ignoreUpdate', type: type, id: id, pwg_token: pwg_token, format: 'json' }, + success: function(data) { + if (data['stat'] == 'ok') { + jQuery("#"+type+"_"+id).hide(); + jQuery("#reset_ignore").show(); + checkFieldsets(); + } + } + }); +}; + +function autoupdate_bar_toggle(i) { + todo = todo + i; + if ((i == 1 && todo == 1) || (i == -1 && todo == 0)) + jQuery('.autoupdate_bar').toggle(); +} + +jQuery(document).ready(function() { + jQuery("td[id^='desc_'], p[id^='revdesc_']").click(function() { + id = this.id.split('_'); + jQuery("#revdesc_"+id[1]).toggle('blind'); + jQuery(".button_"+id[1]).toggle(); + return false; + }); +}); + +checkFieldsets(); +{/literal} +{/footer_script} + +
    +

    {'Updates'|@translate}

    +
    + +
    + + + +
    + + + + +{if not empty($update_plugins)} +
    +
    +{'Plugins'|@translate} +{foreach from=$update_plugins item=plugin name=plugins_loop} +
    + + + + + + + + + + + + + +
    + {$plugin.EXT_NAME} + + {'Install'|@translate} + | {'Download'|@translate} + | {'Ignore this update'|@translate} +
    + {'Version'|@translate} {$plugin.CURRENT_VERSION} + + {'Downloads'|@translate}: {$plugin.DOWNLOADS} + + + {'New Version'|@translate} : {$plugin.NEW_VERSION} + | {'By %s'|@translate:$plugin.AUTHOR} +
    + +
    +
    +{/foreach} +
    +
    +{/if} + +{if not empty($update_themes)} +
    +
    +{'Themes'|@translate} +{foreach from=$update_themes item=theme name=themes_loop} +
    + + + + + + + + + + + + + +
    + {$theme.EXT_NAME} + + {'Install'|@translate} + | {'Download'|@translate} + | {'Ignore this update'|@translate} +
    + {'Version'|@translate} {$theme.CURRENT_VERSION} + + {'Downloads'|@translate}: {$theme.DOWNLOADS} + + + {'New Version'|@translate} : {$theme.NEW_VERSION} + | {'By %s'|@translate:$theme.AUTHOR} +
    + +
    +
    +{/foreach} +
    +
    +{/if} + +{if not empty($update_languages)} +
    +
    +{'Languages'|@translate} +{foreach from=$update_languages item=language name=languages_loop} +
    + + + + + + + + + + + + + +
    + {$language.EXT_NAME} + + {'Install'|@translate} + | {'Download'|@translate} + | {'Ignore this update'|@translate} +
    + {'Version'|@translate} {$language.CURRENT_VERSION} + + {'Downloads'|@translate}: {$language.DOWNLOADS} + + + {'New Version'|@translate} : {$language.NEW_VERSION} + | {'By %s'|@translate:$language.AUTHOR} +
    + +
    +
    +{/foreach} +
    +
    +{/if} diff --git a/sources/admin/themes/default/template/updates_pwg.tpl b/sources/admin/themes/default/template/updates_pwg.tpl new file mode 100644 index 0000000..8205d9f --- /dev/null +++ b/sources/admin/themes/default/template/updates_pwg.tpl @@ -0,0 +1,99 @@ +{footer_script} +jQuery(document).ready(function() {ldelim} + jQuery('input[name="submit"]').click(function() {ldelim} + if(!confirm('{'Are you sure?'|@translate}')) + return false; + jQuery(this).hide(); + jQuery('.autoupdate_bar').show(); + }); + jQuery('[name="understand"]').click(function() {ldelim} + jQuery('[name="submit"]').attr('disabled', !this.checked); + }); +}); +{/footer_script} + +{html_head} +{literal} + +{/literal} +{/html_head} + +
    +

    {'Updates'|@translate}

    +
    + +{if $STEP == 0} + {if $CHECK_VERSION} +

    {'You are running the latest version of Piwigo.'|@translate}

    + {elseif $DEV_VERSION} +

    {'You are running on development sources, no check possible.'|@translate}

    + {else} +

    {'Check for update failed for unknown reasons.'|@translate}

    + {/if} +{/if} + +{if $STEP == 1} +

    {'Two updates are available'|@translate}:

    +

    +

    +

    +

    {'You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'|@translate:$MAJOR_VERSION:$MINOR_VERSION}

    +{/if} + +{if $STEP == 2} +

    + {'A new version of Piwigo is available.'|@translate}
    + {'This is a minor update, with only bug corrections.'|@translate} +

    +
    +

    + +

    +
    +{/if} + +{if $STEP == 3} +

    + {'A new version of Piwigo is available.'|@translate}
    + {'This is a major update, with new exciting features.'|@translate:$RELEASE_URL} {'Some themes and plugins may be not available yet.'|@translate} +

    +
    + +{counter assign=i} +
    + {'Dump Database'|@translate} +

      {'Include history data (Warning: server memory limit may be exceeded)'|@translate}

    +

    +
    + +{counter assign=i} +
    + {'Update to Piwigo %s'|@translate:$UPGRADE_TO} + {if !empty($missing.plugins)} +

    {'Following plugins may not be compatible with the new version of Piwigo:'|@translate}

    +


    + {/if} + {if !empty($missing.themes)} +

    {'Following themes may not be compatible with the new version of Piwigo:'|@translate}

    +


    + {/if} +

    + {if !empty($missing.plugins) or !empty($missing.themes)} +

    + {/if} +

    +

    + +
    + +

    +
    +{/if} \ No newline at end of file diff --git a/sources/admin/themes/default/template/upgrade.tpl b/sources/admin/themes/default/template/upgrade.tpl new file mode 100644 index 0000000..f126d06 --- /dev/null +++ b/sources/admin/themes/default/template/upgrade.tpl @@ -0,0 +1,225 @@ + + + + + + + + +{get_combined_css} +{foreach from=$themes item=theme} +{if $theme.load_css} +{combine_css path="admin/themes/`$theme.id`/theme.css" order=-10} +{/if} +{/foreach} + + + + +{get_combined_scripts load='header'} + + +{literal} + +{/literal} +Piwigo {$RELEASE} - {'Upgrade'|@translate} + + + +
    +
    +
    + +{if isset($introduction)} +

    {'Version'|@translate} {$RELEASE} - {'Upgrade'|@translate}

    + +{if isset($errors)} +
    +
      + {foreach from=$errors item=error} +
    • {$error}
    • + {/foreach} +
    +
    +{/if} + +
    + +
    + + + + + +
    {'Language'|@translate} + +
    + +

    {'This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'|@translate:$introduction.CURRENT_RELEASE}

    +{if isset($login)} +

    {'Only administrator can run upgrade: please sign in below.'|@translate}

    +{/if} + +{if isset($login)} + + + + + + + + + +
    {'Username'|@translate}
    {'Password'|@translate}
    +{/if} +
    +

    + +

    +
    + + +{/if} + +{if isset($upgrade)} +

    {'Upgrade from version %s to %s'|@translate:$upgrade.VERSION:$RELEASE}

    + +
    +{'Statistics'|@translate} +
      +
    • {'total upgrade time'|@translate} : {$upgrade.TOTAL_TIME}
    • +
    • {'total SQL time'|@translate} : {$upgrade.SQL_TIME}
    • +
    • {'SQL queries'|@translate} : {$upgrade.NB_QUERIES}
    • +
    +
    + +
    +{'Upgrade informations'|@translate} +
      + {foreach from=$infos item=info} +
    • {$info}
    • + {/foreach} +
    +
    + +

    + {'Home'|@translate} +

    +{/if} + +
    {* content *} +
    {$L_UPGRADE_HELP}
    +
    {* the_page *} + + diff --git a/sources/admin/themes/default/template/user_list.tpl b/sources/admin/themes/default/template/user_list.tpl new file mode 100644 index 0000000..4aba958 --- /dev/null +++ b/sources/admin/themes/default/template/user_list.tpl @@ -0,0 +1,1142 @@ +{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} + +{combine_script id='jquery.dataTables' load='footer' path='themes/default/js/plugins/jquery.dataTables.js'} +{combine_css path="themes/default/js/plugins/datatables/css/jquery.dataTables.css"} + +{combine_script id='jquery.chosen' load='footer' path='themes/default/js/plugins/chosen.jquery.min.js'} +{combine_css path="themes/default/js/plugins/chosen.css"} + +{combine_script id='jquery.underscore' load='footer' path='themes/default/js/plugins/underscore.js'} + +{combine_script id='jquery.ui.slider' require='jquery.ui' load='footer' path='themes/default/js/ui/minified/jquery.ui.slider.min.js'} +{combine_css path="themes/default/js/ui/theme/jquery.ui.slider.css"} + +{footer_script} +var selectedMessage_pattern = "{'%d of %d users selected'|translate|escape:javascript}"; +var selectedMessage_none = "{'No user selected of %d users'|translate|escape:javascript}"; +var selectedMessage_all = "{'All %d users are selected'|translate|escape:javascript}"; +var applyOnDetails_pattern = "{'on the %d selected users'|translate|escape:javascript}"; +var newUser_pattern = "✔ {'User %s added'|translate|escape:javascript}"; +var registeredOn_pattern = "{'Registered on %s, %s.'|translate|escape:javascript}"; +var lastVisit_pattern = "{'Last visit on %s, %s.'|translate|escape:javascript}"; +var missingConfirm = "{'You need to confirm deletion'|translate|escape:javascript}"; +var missingUsername = "{'Please, enter a login'|translate|escape:javascript}"; + +var allUsers = [{$all_users}]; +var selection = [{$selection}]; +var pwg_token = "{$PWG_TOKEN}"; + +var protectedUsers = [{$protected_users}]; +var guestUser = {$guest_user}; + +var truefalse = { + 'true':"{'Yes'|translate}", + 'false':"{'No'|translate}", +}; +{/footer_script} + +{footer_script}{literal} +jQuery(document).ready(function() { + /** + * Add user + */ + jQuery("#addUser").click(function() { + jQuery("#addUserForm").toggle(); + jQuery("#showAddUser .infos").hide(); + jQuery("input[name=username]").focus(); + return false; + }); + + jQuery("#addUserClose").click(function() { + jQuery("#addUserForm").hide(); + return false; + }); + + jQuery("#addUserForm").submit(function() { + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.add", + type:"POST", + data: jQuery(this).serialize()+"&pwg_token="+pwg_token, + beforeSend: function() { + jQuery("#addUserForm .errors").hide(); + + if (jQuery("input[name=username]").val() == "") { + jQuery("#addUserForm .errors").html('✘ '+missingUsername).show(); + return false; + } + + jQuery("#addUserForm .loading").show(); + }, + success:function(data) { + oTable.fnDraw(); + jQuery("#addUserForm .loading").hide(); + + var data = jQuery.parseJSON(data); + if (data.stat == 'ok') { + jQuery("#addUserForm input[type=text], #addUserForm input[type=password]").val(""); + + var new_user = data.result.users[0]; + allUsers.push(parseInt(new_user.id)); + jQuery("#showAddUser .infos").html(sprintf(newUser_pattern, new_user.username)).show(); + checkSelection(); + + jQuery("#addUserForm").hide(); + } + else { + jQuery("#addUserForm .errors").html('✘ '+data.message).show(); + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + jQuery("#addUserForm .loading").hide(); + } + }); + + return false; + }); + + /** + * Table with users + */ + /** + * find the key from a value in the startStopValues array + */ + function getSliderKeyFromValue(value, values) { + for (var key in values) { + if (values[key] >= value) { + return key; + } + } + return 0; + } + + var recent_period_values = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,30,40,50,60,80,99]; + + function getRecentPeriodInfoFromIdx(idx) { + return sprintf( + "{/literal}{'%d days'|@translate}{literal}", + recent_period_values[idx] + ); + } + + var nb_image_page_values = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,35,40,45,50,60,70,80,90,100,200,300,500,999]; + + function getNbImagePageInfoFromIdx(idx) { + return sprintf( + "{/literal}{'%d photos per page'|@translate}{literal}", + nb_image_page_values[idx] + ); + } + + /* nb_image_page slider */ + var nb_image_page_init = getSliderKeyFromValue(jQuery('#action_nb_image_page input[name=nb_image_page]').val(), nb_image_page_values); + + jQuery('#action_nb_image_page .nb_image_page_infos').html(getNbImagePageInfoFromIdx(nb_image_page_init)); + + jQuery('#action_nb_image_page .nb_image_page').slider({ + range: "min", + min: 0, + max: nb_image_page_values.length - 1, + value: nb_image_page_init, + slide: function( event, ui ) { + jQuery('#action_nb_image_page .nb_image_page_infos').html(getNbImagePageInfoFromIdx(ui.value)); + }, + stop: function( event, ui ) { + jQuery('#action_nb_image_page input[name=nb_image_page]').val(nb_image_page_values[ui.value]).trigger('change'); + } + }); + + /* recent_period slider */ + var recent_period_init = getSliderKeyFromValue(jQuery('#action_recent_period input[name=recent_period]').val(), recent_period_values); + jQuery('#action_recent_period .recent_period_infos').html(getRecentPeriodInfoFromIdx(recent_period_init)); + + jQuery('#action_recent_period .recent_period').slider({ + range: "min", + min: 0, + max: recent_period_values.length - 1, + value: recent_period_init, + slide: function( event, ui ) { + jQuery('#action_recent_period .recent_period_infos').html(getRecentPeriodInfoFromIdx(ui.value)); + }, + stop: function( event, ui ) { + jQuery('#action_recent_period input[name=recent_period]').val(recent_period_values[ui.value]).trigger('change'); + } + }); + + /* Formating function for row details */ + function fnFormatDetails(oTable, nTr) { + var userId = oTable.fnGetData(nTr)[0]; + console.log("userId = "+userId); + var sOut = null; + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.getList", + type:"POST", + data: { + user_id: userId, + display: "all", + }, + success:function(data) { + jQuery("#user"+userId+" .loading").hide(); + + var data = jQuery.parseJSON(data); + if (data.stat == 'ok') { + var user = data.result.users[0]; + + /* Prepare data for template */ + user.statusOptions = []; + jQuery("#action select[name=status] option").each(function() { + var option = {value:jQuery(this).val(), label:jQuery(this).html(), isSelected:false}; + + if (user.status == jQuery(this).val()) { + option.isSelected = true; + } + + user.statusOptions.push(option); + }); + + user.levelOptions = []; + jQuery("#action select[name=level] option").each(function() { + var option = {value:jQuery(this).val(), label:jQuery(this).html(), isSelected:false}; + + if (user.level == jQuery(this).val()) { + option.isSelected = true; + } + + user.levelOptions.push(option); + }); + + user.groupOptions = []; + jQuery("#action select[name=associate] option").each(function() { + var option = {value:jQuery(this).val(), label:jQuery(this).html(), isSelected:false}; + + if (user.groups.indexOf( parseInt(jQuery(this).val()) ) != -1) { + option.isSelected = true; + } + + user.groupOptions.push(option); + }); + + user.themeOptions = []; + jQuery("#action select[name=theme] option").each(function() { + var option = {value:jQuery(this).val(), label:jQuery(this).html(), isSelected:false}; + + if (user.theme == jQuery(this).val()) { + option.isSelected = true; + } + + user.themeOptions.push(option); + }); + + user.languageOptions = []; + jQuery("#action select[name=language] option").each(function() { + var option = {value:jQuery(this).val(), label:jQuery(this).html(), isSelected:false}; + + if (user.language == jQuery(this).val()) { + option.isSelected = true; + } + + user.languageOptions.push(option); + }); + + user.isGuest = (parseInt(userId) == guestUser); + user.isProtected = (protectedUsers.indexOf(parseInt(userId)) != -1); + + user.registeredOn_string = sprintf( + registeredOn_pattern, + user.registration_date_string, + user.registration_date_since + ); + + user.lastVisit_string = ""; + if (typeof user.last_visit != 'undefined') { + user.lastVisit_string = sprintf(lastVisit_pattern, user.last_visit_string, user.last_visit_since); + } + + user.updateString = sprintf( + "{/literal}{'User %s updated'|translate|escape:javascript}{literal}", + user.username + ); + + user.email = user.email || ''; + + jQuery("#action select[name=status] option").each(function() { + if (user.status == jQuery(this).val()) { + user.statusLabel = jQuery(this).html(); + } + }); + + /* Render the underscore template */ + _.templateSettings.variable = "user"; + + var template = _.template( + jQuery("script.userDetails").html() + ); + + jQuery("#user"+userId).append(template(user)); + + jQuery(".chzn-select").chosen(); + + /* nb_image_page slider */ + var nb_image_page_init = getSliderKeyFromValue(jQuery('#user'+userId+' input[name=nb_image_page]').val(), nb_image_page_values); + + jQuery('#user'+userId+' .nb_image_page_infos').html(getNbImagePageInfoFromIdx(nb_image_page_init)); + + jQuery('#user'+userId+' .nb_image_page').slider({ + range: "min", + min: 0, + max: nb_image_page_values.length - 1, + value: nb_image_page_init, + slide: function( event, ui ) { + jQuery('#user'+userId+' .nb_image_page_infos').html(getNbImagePageInfoFromIdx(ui.value)); + }, + stop: function( event, ui ) { + jQuery('#user'+userId+' input[name=nb_image_page]').val(nb_image_page_values[ui.value]).trigger('change'); + } + }); + + /* recent_period slider */ + var recent_period_init = getSliderKeyFromValue(jQuery('#user'+userId+' input[name=recent_period]').val(), recent_period_values); + jQuery('#user'+userId+' .recent_period_infos').html(getRecentPeriodInfoFromIdx(recent_period_init)); + + jQuery('#user'+userId+' .recent_period').slider({ + range: "min", + min: 0, + max: recent_period_values.length - 1, + value: recent_period_init, + slide: function( event, ui ) { + jQuery('#user'+userId+' .recent_period_infos').html(getRecentPeriodInfoFromIdx(ui.value)); + }, + stop: function( event, ui ) { + jQuery('#user'+userId+' input[name=recent_period]').val(recent_period_values[ui.value]).trigger('change'); + } + }); + } + else { + console.log('error loading user details'); + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + console.log('technical error loading user details'); + } + }); + + return '
    '; + } + + /* change password */ + jQuery(document).on('click', '.changePasswordOpen', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + + jQuery(this).hide(); + jQuery('#user'+userId+' .changePasswordDone').hide(); + jQuery('#user'+userId+' .changePassword').show(); + jQuery('#user'+userId+' .changePassword input[type=text]').focus(); + + return false; + }); + + jQuery(document).on('click', '.changePassword a.updatePassword', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + + jQuery('#user'+userId+' .changePassword a .text').hide(); + jQuery('#user'+userId+' .changePassword a img').show(); + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.setInfo", + type:"POST", + data: { + pwg_token:pwg_token, + user_id:userId, + password: jQuery('#user'+userId+' .changePassword input[type=text]').val() + }, + beforeSend: function() { + jQuery('#user'+userId+' .changePassword input[type=text]').val(""); + }, + success:function(data) { + jQuery('#user'+userId+' .changePassword a .text').show(); + jQuery('#user'+userId+' .changePassword a img').hide(); + jQuery('#user'+userId+' .changePassword').hide(); + jQuery('#user'+userId+' .changePasswordOpen').show(); + jQuery('#user'+userId+' .changePasswordDone').show(); + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + } + }); + + return false; + }); + + jQuery(document).on('click', '.changePassword a.cancel', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + + jQuery('#user'+userId+' .changePassword').hide(); + jQuery('#user'+userId+' .changePasswordOpen').show(); + + return false; + }); + + /* change username */ + jQuery(document).on('click', '.changeUsernameOpen a', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + var username = jQuery('#user'+userId+' .username').html(); + + jQuery('#user'+userId+' .changeUsernameOpen').hide(); + jQuery('#user'+userId+' .changeUsername').show(); + jQuery('#user'+userId+' .changeUsername input[type=text]').val(username).focus(); + + return false; + }); + + jQuery(document).on('click', 'a.updateUsername', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + + jQuery('#user'+userId+' .changeUsername a .text').hide(); + jQuery('#user'+userId+' .changeUsername a img').show(); + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.setInfo", + type:"POST", + data: { + pwg_token:pwg_token, + user_id:userId, + username: jQuery('#user'+userId+' .changeUsername input[type=text]').val() + }, + success:function(data) { + jQuery('#user'+userId+' .changeUsername a .text').show(); + jQuery('#user'+userId+' .changeUsername a img').hide(); + jQuery('#user'+userId+' .changeUsername').hide(); + jQuery('#user'+userId+' .changeUsernameOpen').show(); + + var data = jQuery.parseJSON(data); + jQuery('#user'+userId+' .username').html(data.result.users[0].username); + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + } + }); + + return false; + }); + + jQuery(document).on('click', '.changeUsername a.cancel', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + + jQuery('#user'+userId+' .changeUsername').hide(); + jQuery('#user'+userId+' .changeUsernameOpen').show(); + + return false; + }); + + /* display the "save" button when a field changes */ + jQuery(document).on('change', '.userProperties input, .userProperties select', function() { + var userId = jQuery(this).parentsUntil('form').parent().find('input[name=user_id]').val(); + + jQuery('#user'+userId+' input[type=submit]').show(); + jQuery('#user'+userId+' .propertiesUpdateDone').hide(); + }); + + /* delete user */ + jQuery(document).on('click', '.userDelete a', function() { + if (!confirm("{/literal}{'Are you sure?'|translate|escape:javascript}{literal}")) { + return false; + } + + var userId = jQuery(this).data('user_id'); + var username = jQuery('#user'+userId+' .username').html(); + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.delete", + type:"POST", + data: { + user_id:userId, + pwg_token:pwg_token + }, + beforeSend: function() { + jQuery('#user'+userId+' .userDelete .loading').show(); + }, + success:function(data) { + oTable.fnDraw(); + jQuery('#showAddUser .infos').html('✔ User '+username+' deleted').show(); + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + jQuery('#user'+userId+' .userDelete .loading').hide(); + } + }); + + return false; + }); + + jQuery(document).on('click', '.userProperties input[type=submit]', function() { + var userId = jQuery(this).data('user_id'); + + var formData = jQuery('#user'+userId+' form').serialize(); + formData += '&pwg_token='+pwg_token; + + if (jQuery('#user'+userId+' form select[name="group_id[]"] option:selected').length == 0) { + formData += '&group_id=-1'; + } + + if (!jQuery('#user'+userId+' form input[name=enabled_high]').is(':checked')) { + formData += '&enabled_high=false'; + } + + if (!jQuery('#user'+userId+' form input[name=expand]').is(':checked')) { + formData += '&expand=false'; + } + + if (!jQuery('#user'+userId+' form input[name=show_nb_hits]').is(':checked')) { + formData += '&show_nb_hits=false'; + } + + if (!jQuery('#user'+userId+' form input[name=show_nb_comments]').is(':checked')) { + formData += '&show_nb_comments=false'; + } + + jQuery.ajax({ + url: "ws.php?format=json&method=pwg.users.setInfo", + type:"POST", + data: formData, + beforeSend: function() { + jQuery('#user'+userId+' .submitWait').show(); + }, + success:function(data) { + jQuery('#user'+userId+' .submitWait').hide(); + jQuery('#user'+userId+' input[type=submit]').hide(); + jQuery('#user'+userId+' .propertiesUpdateDone').show(); + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + jQuery('#user'+userId+' .submitWait').hide(); + } + }); + + return false; + }); + + /* Add event listener for opening and closing details + * Note that the indicator for showing which row is open is not controlled by DataTables, + * rather it is done here + */ + jQuery(document).on('click', '#userList tbody td .openUserDetails', function() { + var nTr = this.parentNode.parentNode; + if (jQuery(this).hasClass('icon-cancel-circled')) { + /* This row is already open - close it */ + jQuery(this) + .removeClass('icon-cancel-circled') + .addClass('icon-pencil') + .attr('title', "{/literal}{'Open user details'|translate|escape:'javascript'}{literal}") + .html("{/literal}{'edit'|translate|escape:'javascript'}{literal}") + ; + + oTable.fnClose( nTr ); + } + else { + /* Open this row */ + jQuery(this) + .removeClass('icon-pencil') + .addClass('icon-cancel-circled') + .attr('title', "{/literal}{'Close user details'|translate|escape:'javascript'}{literal}") + .html("{/literal}{'close'|translate|escape:'javascript'}{literal}") + ; + + oTable.fnOpen( nTr, fnFormatDetails(oTable, nTr), 'details' ); + } + }); + + + /* first column must be prefixed with the open/close icon */ + var aoColumns = [ + { + 'bVisible':false + }, + { + "mRender": function(data, type, full) { + return ' {/literal}{'edit'|translate}{literal}'; + } + } + ]; + + for (i=2; i'+"{/literal}{'Search'|translate|escape:'javascript'}{literal}", + "sLoadingRecords": "{/literal}{'Loading...'|translate|escape:'javascript'}{literal}", + "oPaginate": { + "sFirst": "{/literal}{'First'|translate|escape:'javascript'}{literal}", + "sPrevious": '← '+"{/literal}{'Previous'|translate|escape:'javascript'}{literal}", + "sNext": "{/literal}{'Next'|translate|escape:'javascript'}{literal}"+' →', + "sLast": "{/literal}{'Last'|translate|escape:'javascript'}{literal}", + } + }, + "fnDrawCallback": function( oSettings ) { + jQuery("#userList input[type=checkbox]").each(function() { + var user_id = jQuery(this).data("user_id"); + jQuery(this).prop('checked', (selection.indexOf(user_id) != -1)); + }); + }, + "aoColumns": aoColumns + }); + + /** + * Selection management + */ + function checkSelection() { + if (selection.length > 0) { + jQuery("#forbidAction").hide(); + jQuery("#permitAction").show(); + + jQuery("#applyOnDetails").text( + sprintf( + applyOnDetails_pattern, + selection.length + ) + ); + + if (selection.length == allUsers.length) { + jQuery("#selectedMessage").text( + sprintf( + selectedMessage_all, + allUsers.length + ) + ); + } + else { + jQuery("#selectedMessage").text( + sprintf( + selectedMessage_pattern, + selection.length, + allUsers.length + ) + ); + } + } + else { + jQuery("#forbidAction").show(); + jQuery("#permitAction").hide(); + + jQuery("#selectedMessage").text( + sprintf( + selectedMessage_none, + allUsers.length + ) + ); + } + + jQuery("#applyActionBlock .infos").hide(); + } + + jQuery(document).on('change', '#userList input[type=checkbox]', function() { + var user_id = jQuery(this).data("user_id"); + + array_delete(selection, user_id); + + if (jQuery(this).is(":checked")) { + selection.push(user_id); + } + + checkSelection(); + }); + + jQuery("#selectAll").click(function () { + selection = allUsers; + jQuery("#userList input[type=checkbox]").prop('checked', true); + checkSelection(); + return false; + }); + + jQuery("#selectNone").click(function () { + selection = []; + jQuery("#userList input[type=checkbox]").prop('checked', false); + checkSelection(); + return false; + }); + + jQuery("#selectInvert").click(function () { + var newSelection = []; + for(var i in allUsers) + { + if (selection.indexOf(allUsers[i]) == -1) { + newSelection.push(allUsers[i]); + } + } + selection = newSelection; + + jQuery("#userList input[type=checkbox]").each(function() { + var user_id = jQuery(this).data("user_id"); + jQuery(this).prop('checked', (selection.indexOf(user_id) != -1)); + }); + + checkSelection(); + return false; + }); + + /** + * Action management + */ + jQuery("[id^=action_]").hide(); + + jQuery("select[name=selectAction]").change(function () { + jQuery("#applyActionBlock .infos").hide(); + + jQuery("[id^=action_]").hide(); + + jQuery("#action_"+$(this).prop("value")).show(); + + if (jQuery(this).val() != -1) { + jQuery("#applyActionBlock").show(); + } + else { + jQuery("#applyActionBlock").hide(); + } + }); + + jQuery("#permitAction input, #permitAction select").click(function() { + jQuery("#applyActionBlock .infos").hide(); + }); + + jQuery("#applyAction").click(function() { + var action = jQuery("select[name=selectAction]").prop("value"); + var method = 'pwg.users.setInfo'; + var data = { + pwg_token: pwg_token, + user_id: selection + }; + + switch (action) { + case 'delete': + if (!jQuery("input[name=confirm_deletion]").is(':checked')) { + alert(missingConfirm); + return false; + } + method = 'pwg.users.delete'; + break; + case 'group_associate': + method = 'pwg.groups.addUser'; + data.group_id = jQuery("select[name=associate]").prop("value"); + break; + case 'group_dissociate': + method = 'pwg.groups.deleteUser'; + data.group_id = jQuery("select[name=dissociate]").prop("value"); + break; + case 'status': + data.status = jQuery("select[name=status]").prop("value"); + break; + case 'enabled_high': + data.enabled_high = jQuery("input[name=enabled_high]:checked").val(); + break; + case 'level': + data.level = jQuery("select[name=level]").val(); + break; + case 'nb_image_page': + data.nb_image_page = jQuery("input[name=nb_image_page]").val(); + break; + case 'theme': + data.theme = jQuery("select[name=theme]").val(); + break; + case 'language': + data.language = jQuery("select[name=language]").val(); + break; + case 'recent_period': + data.recent_period = jQuery("input[name=recent_period]").val(); + break; + case 'expand': + data.expand = jQuery("input[name=expand]:checked").val(); + break; + case 'show_nb_comments': + data.show_nb_comments = jQuery("input[name=show_nb_comments]:checked").val(); + break; + case 'show_nb_hits': + data.show_nb_hits = jQuery("input[name=show_nb_hits]:checked").val(); + break; + default: + alert("Unexpected action"); + return false; + } + + jQuery.ajax({ + url: "ws.php?format=json&method="+method, + type:"POST", + data: data, + beforeSend: function() { + jQuery("#applyActionLoading").show(); + }, + success:function(data) { + oTable.fnDraw(); + jQuery("#applyActionLoading").hide(); + jQuery("#applyActionBlock .infos").show(); + + if (action == 'delete') { + var allUsers_new = []; + for(var i in allUsers) + { + if (selection.indexOf(allUsers[i]) == -1) { + allUsers_new.push(allUsers[i]); + } + } + allUsers = allUsers_new; + console.log('allUsers_new.length = '+allUsers_new.length); + selection = []; + checkSelection(); + } + }, + error:function(XMLHttpRequest, textStatus, errorThrows) { + jQuery("#applyActionLoading").hide(); + } + }); + + return false; + }); + +}); +{/literal}{/footer_script} + +{html_style}{literal} +.dataTables_wrapper, .dataTables_info {clear:none;} +table.dataTable {clear:right;padding-top:10px;} +.dataTable td img {margin-bottom: -6px;margin-left: -6px;} +.paginate_enabled_previous, .paginate_enabled_previous:hover, .paginate_disabled_previous, .paginate_enabled_next, .paginate_enabled_next:hover, .paginate_disabled_next {background:none;} +.paginate_enabled_previous, .paginate_enabled_next {color:#005E89 !important;} +.paginate_enabled_previous:hover, .paginate_enabled_next:hover {color:#D54E21 !important; text-decoration:underline !important;} + +.paginate_disabled_next, .paginate_enabled_next {padding-right:3px;} +.bulkAction {margin-top:10px;} +#addUserForm p {margin-left:0;} +#applyActionBlock .actionButtons {margin-left:0;} +span.infos, span.errors {background-image:none; padding:2px 5px; margin:0;border-radius:5px;} + +.userStats {margin-top:10px;} +.recent_period_infos {margin-left:10px;} +.nb_image_page, .recent_period {width:340px;margin-top:5px;} +#action_recent_period .recent_period {display:inline-block;} +{/literal}{/html_style} + +
    +

    {'User list'|@translate}

    +
    + +

    + {'Add a user'|translate} + +

    + + + +
    + + + + + + + + + + + + + +
    id{'Username'|@translate}{'Status'|@translate}{'Email address'|@translate}{'Groups'|@translate}{'Privacy level'|@translate}{'registration date'|@translate}
    + +
    + +

    + {'Select:'|@translate} + {'All'|@translate}, + {'None'|@translate}, + {'Invert'|@translate} + + +

    + +
    + {'Action'|@translate} + + + {* #permitAction *} +
    + +
    + +{* Underscore Template Definition *} + diff --git a/sources/admin/themes/default/template/user_perm.tpl b/sources/admin/themes/default/template/user_perm.tpl new file mode 100644 index 0000000..031ab70 --- /dev/null +++ b/sources/admin/themes/default/template/user_perm.tpl @@ -0,0 +1,22 @@ +

    {$TITLE}

    + +{if isset($categories_because_of_groups) } +
    + {'Albums authorized thanks to group associations'|@translate} + +
      + {foreach from=$categories_because_of_groups item=cat } +
    • {$cat}
    • + {/foreach} +
    +
    +{/if} + + +
    + {'Other private albums'|@translate} + +
    + {$DOUBLE_SELECT} +
    +
    diff --git a/sources/admin/themes/default/theme.css b/sources/admin/themes/default/theme.css new file mode 100644 index 0000000..6546855 --- /dev/null +++ b/sources/admin/themes/default/theme.css @@ -0,0 +1,1173 @@ +/* content.css */ +[class*="icon-"]:before { text-decoration:none !important; } + +.showInfo { font-size:15px;cursor:pointer;line-height:15px; } + +/* .Content is on every pages so it is common and it will no longer be a specific css */ +.content h2 {margin: 0; padding: 5px 0.5em 5px 0.5em; text-align: right; font-size: 120%;} +.content .navigationBar { margin: 10px 0; text-align: center; } +.content form { text-align: left; } +.content dt { margin-bottom: 5px; font-style: italic; + font-size: 110%; } +ul.categoryActions { margin: 0 2px; width: auto; list-style-position:outside; + padding: 0; text-indent: 0; list-style: none; text-align: center; } +.content div.titrePage { padding: 0 0 3px; } +.content div.comment { margin: 0 0 0.5em 0; padding: 0; + overflow: hidden; width: 100%; /* don't ask why. It's a very usefull trick */ } + +.content DIV.comment A.illustration { + display: block; + float: left; + margin: 0.5em 30px 0 0.5em; +} + +.content div.comment p.commentHeader { + text-align: right; margin: 0.5em 0.5em 0 0; } +.content div.comment ul.actions { text-align: center; margin: 0.2em; } +.content div.comment blockquote { + margin-right: 0.5em; overflow: visible; /*avoid a very strange margin behaviour (all browsers) */ } + +.commentFilterSelected {color:#666;text-decoration:underline;} +.comment .pendingFlag {font-style:italic;color:red;} + +/* not used but should be */ +#thePopuphelpPage .content { margin: 1em; } + +/* thumbnails.css */ +UL.thumbnails { + margin: 0; padding: 0; list-style: none; + text-align: center; /* to center the whole collection in .content */ + float: left; +} +UL.thumbnails LI { display: inline } +UL.thumbnails li.rank-of-image { + float: left; + background-color: #333; + color: #666; + border-radius: 5px; + display: block; + width: 120px; + height: 120px; + cursor: move; + margin: 4px; + overflow: hidden; +} +.clipwrapper { + position:relative; + width: 96px; + height: 96px; + margin: 3px; +} +.clip { + position:absolute; +} + +UL.thumbnails SPAN.wrap1 { + margin: 5px; + display: table-cell; display: inline-table; + display: inline-block; /* Why 3 display option ??? */ + vertical-align: top; /* OK with Opera and IE6 not Geko */ + text-align: center; /* to center the thumbnail and legend in Geko/Opera */ +} +UL.thumbnails SPAN.wrap2 { + margin: 0; /* important reset the margins */ + display: table-cell; /* block prevents vertical-align here */ + vertical-align: middle; /* Ok with Opera and Geko not IE6 */ + border-radius: 4px; +} +UL.thumbnails LABEL { + position: relative; + display: block; + border-bottom: none; +} + +UL.thumbnails IMG { + vertical-align: middle; + margin-top: 12px; +} + +UL.thumbnails INPUT { + position: absolute; + left: 2px; top: 2px; +} +UL.thumbnails .levelIndicatorB { +display:block; position:absolute; z-index:100; padding:7px 0 0 2px; color:black; font-weight:bold; font-size:120%; +} +UL.thumbnails .levelIndicatorF { +display:block; position:absolute; z-index:101; padding:8px 0 0 3px; color:white; font-weight:bold; font-size:120%; +} + +/* default-layout.css */ + +/* History tables */ +TABLE.table2 { + border: 1px solid #111; + margin: 0 auto; + padding: 0; +} + +TABLE.table2 TD, TABLE.table2 TH { + padding: 0 5px; +} + +TABLE.table2 TR { + text-align: left; +} + +TABLE.table2 THEAD TD { padding:7px 10px 3px 10px; } +TABLE.table2 TR.throw { text-align: center; } +.sort { display:block; padding:8px 5px 0px 1px; clear: right; float:left; } + + +.hour { + white-space: pre; +} + +.number { + text-align: right; +} + +TABLE#dailyStats { + width: 60%; +} + +TABLE#detailedStats { + width: 99%; +} + +/* Plugins, languages tables */ +TABLE.plugins, +TABLE.languages { + min-width: 500px; +} +TABLE.plugins A { border: 0; } +TABLE.plugins TR TD { padding: 4px 10px; } +TABLE.languages TR TD { padding: 7px 20px; } + + +/* categoryOrdering */ +FORM#categoryOrdering .orderParams { + line-height:30px; + margin-bottom:10px; +} + +SELECT.categoryList { + width: 100%; +} + +FORM#categoryOrdering p { + text-align: left; + /* margin-top: 1em; */ + /* margin-bottom: 1em; */ +} +UL.categoryUl { + list-style: none; + padding: 0; + margin: 1em; +} + +LI.categoryLi { +/* + width: 100%; +*/ + padding: 5px; + margin-bottom: 5px; + border-radius:5px; +} + + +/* menuOrdering */ +FORM#menuOrdering { + padding-left: 1em; + padding-right: 1em; +} +FORM#menuOrdering p { + text-align: left; + margin: 0 10px; +} +FORM#menuOrdering p span { + float:right; +} +FORM#menuOrdering input { + vertical-align: middle; + margin:0 10px; +} +FORM#menuOrdering .menuAuthor { + margin: 5px 0 0 40px; +} +FORM#menuOrdering .menuSubmit { + margin: 20px 0; +} + +UL.menuUl { + list-style: none; + padding: 0; + margin: 0; +} + +LI.menuLi { + width: 100%; + border: 1px solid #666; + padding: 12px 0; + margin-bottom: 5px; +} +/* */ + +FORM#catModify TABLE { width: auto; } + +#catModify p { + line-height: 20px; + margin: 0 0 1.5em; + text-align: left; +} + +FIELDSET.elementEdit .thumb { + display: block; + float: right; + text-align: center; +} + +TABLE.doubleSelect { + text-align: center; + margin: 0 auto; + width: 100%; +} + +TABLE.doubleSelect TD { + padding: 0 3px; + width: 50%; +} + +TABLE.doubleSelect SELECT.categoryList { + width: 100%; max-width: 100%; overflow-x: auto; +} + +.statBar { + height: 10px; + background-color: #ff7700; + border: 1px solid #666; +} + +.over{ +position: relative; +z-index: 0; +} + +.over:hover{ +background-color: transparent; +z-index: 50; +} + +.over SPAN{ /*CSS for enlarged image*/ +position: absolute; +background-color: #222; +padding: 5px; +left: -1000px; +border: 1px solid #ff3363; +visibility: hidden; +color: black; +text-decoration: none; +} + +.over SPAN IMG{ /*CSS for enlarged image*/ +border-width: 0; +padding: 2px; +} + +.over:hover SPAN{ /*CSS for enlarged image on hover*/ +visibility: visible; +top: 0; +left: 60px; /*position where enlarged image should offset horizontally */ +} + +BODY { + font-size: 0.8em; + font-family: "Lucida Grande",Verdana,Arial,"Bitstream Vera Sans",sans-serif; + text-align: center; /* be nice to IE5 */ + min-width: 60em; /* ~ 3* #menubar width */ +} + +H1 { +color:#eee; +letter-spacing:1px; +text-align: left; +font-size: 150%; +font-weight: normal; +font-style:italic; +padding: 2px 0 0 10px; +margin: 0; +float:left; +} + +#pwgHead { + color: #aaa; + background-color: #464646; + height: 36px; +} + +#pwgHead A {color:#ccc;} +#pwgHead A:hover {color:#fff} + +#headActions {float:right; height:36px; line-height:36px; margin-right:10px;} + +A { + text-decoration: none; +} +A:hover { + text-decoration: underline; +} +IMG { + border: none; +} + +/** General defaults **/ +INPUT, SELECT { + margin: 0; + font-size: 1em; /* <= some browsers don't set it correctly */ +} +UL, DL, OL { text-align: left;} +TABLE { /* horizontaly centered */ + margin-left: auto; + margin-right: auto; +} +/* for debugging purpose */ +PRE { text-align:left; } + +/** forms **/ + +FORM { padding: 0em; } + +FORM P { + text-align: center; + margin:1em; +} + +form p.field { + text-align: left; +} + +form p.formButtons {text-align:left;} + +FORM FIELDSET P { + margin-top: 1em; + margin-bottom: 0; + text-align:left; +} + +.small { + font-size: 80%; +} + +TEXTAREA.description { + height: 6em; + width: 40em; + overflow: auto; +} + +SELECT.categoryList { + height: 20em; + width: auto; +} + +DIV.comment BLOCKQUOTE { + padding: 0.5em; + overflow: auto; /* no solution for IE6 */ + min-height: 2.75em; /* fix a Gecko bug whith scrollbar and 1 line only */ +} + + +/** + * Filter forms are displayed label by label with the input (or select...) + * below the label. Use an UL to make a group (radiobox for instance). + * Use a SPAN to group objects in line + */ +FIELDSET { + padding: 1em; + margin: 1em; +} + +FORM.filter FIELDSET UL { + margin: 0; +} +FORM.filter FIELDSET UL, +FORM.filter FIELDSET LABEL { + display: block; + float: left; + margin-right: 1em; + padding: 0; +} + +FORM.filter FIELDSET LI { + list-style: none; + margin-bottom: 0.5em; +} + +FORM.filter FIELDSET LI LABEL { + display: inline; + float: none; +} + +FORM.filter FIELDSET UL.tagSelection LABEL { + display: inline; + float: none; + margin-right:0.5em;/*reduce from above*/ +} + +/* cannot use FIELDSET>LABEL because of IE<=6 */ +FORM.filter FIELDSET LABEL INPUT, +FORM.filter FIELDSET LABEL SELECT, +FORM.filter FIELDSET LABEL SPAN, +FORM.filter FIELDSET LABEL TEXTAREA { + display: block; + margin: 0.5em 0; +} +FORM.filter FIELDSET * LABEL INPUT, +FORM.filter FIELDSET * LABEL SELECT, +FORM.filter FIELDSET * LABEL TEXTAREA, +FORM.filter FIELDSET LABEL SPAN INPUT, +FORM.filter FIELDSET LABEL SPAN SELECT, +FORM.filter FIELDSET LABEL SPAN TEXTAREA { + display: inline; + vertical-align: top; + margin: 0 0.5em 0 0; +} + +/* following declaration is important to avoid strange FF behaviour */ +FORM.filter FIELDSET LABEL SPAN SELECT { + margin: 0; +} + +FORM.filter FIELDSET P +{ + clear: left; + display: block; +} + +/*FORM.filter INPUT[type="submit"] { + margin-top: 1.8em; +}*/ + +FORM.properties UL, FORM#update UL { + list-style-type: none; + margin: 0; + padding: 0; +} + +FORM.properties LI, FORM#update UL { + margin-bottom: 0.5em; + padding: 0; + line-height: 1.8em; + clear: left; +} + +FORM.properties SPAN.property { + font-weight: bold; + float: left; + width: 50%; + text-align: right; + margin: 0; + padding: 0 0.5em 0 0; +} + +#configContent fieldset { + border:none; + padding-left:20px; +} +#configContent fieldset:not(.no-border) { + border-top:1px solid #bbb; +} +#configContent legend { + padding-left:0; + margin-left:-20px; +} +#configContent label:not(.no-bold) { + font-weight: bold; +} + +#notifyAdmin label { + white-space:nowrap; +} + +#theHeader H1 { + margin-bottom: 0.5em; +} + +/* button tools */ +UL.actions { + text-indent: 0; + list-style: none; +} +UL.actions LI { + display: inline; +} + +UL.tagSelection { + width: 99%; + margin: 1em 0 1em 0; + padding: 0; +} + +UL.tagSelection LI { + display:inline-block; + width:150px!important; + overflow:hidden; + white-space: nowrap; +} + +/* jQuery tooltips */ +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} + +.cluetip-outer { + position: relative; + border: 1px solid #111111; + color: #dddddd; + background-color: #222222; + text-align: left; +} +.cluetip-title { + margin: 0 0 5px; + padding: 8px; + color: #666666; + background-color: #d3d3d3; + font-size: 1.1em; + font-weight: bold; +} +.cluetip-inner { + padding: 10px; +} + +/* jQuery datepicker */ +img.ui-datepicker-trigger { + cursor : pointer; + vertical-align: middle; + margin:-3px 5px 2px 5px; +} + +/* Add photos, direct mode */ +#uploadBoxes P { + margin:0; + margin-bottom:2px; + padding:0; +} + +#batchLink { + text-align:center; +} + +.category_selection { + min-height:65px; + margin-top:5px; +} + +.category_selection TABLE { + margin:0; +} + +#photosAddContent { + text-align:left; +} + +#photosAddContent FIELDSET { + width:650px; + margin:0 auto 20px auto; +} + +#photosAddContent P { + margin:0; +} + +#photosAddContent TH { + text-align:right; + padding-right: 5px; +} + +#uploadFormSettings input[type="text"] { + text-align:right; +} + +#uploadFormSettings TH { + width:50%; +} + +html, body {height:100%; margin:0; padding:0;} +#the_page {min-height:100%; position:absolute; width:100%; padding:0;margin:0;} + +#pwgMain { + padding: 10px 5px 60px; +} + +#footer { + position:absolute; + bottom:0; + width:100%; + height: 34px; + line-height: 34px; + background-repeat: no-repeat; + background-position: 7px 2px; + background-color:#464646; + color:#aaa; +} + +#footer A {color:#ccc;} +#footer A:hover {color:#fff} + +#adminHome { + text-align:center; + margin-bottom:15px; + line-height:30px; + width:200px; + margin-left:5px; + -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; +} + +#adminHome A {display:block; font-size:1.1em; font-weight:bold;} +#adminHome A {text-decoration:none;} + +#piwigoInfos {float:left; margin-left:140px;} +#pageInfos {float:right; margin-right:10px;} + +/* TipTip CSS - Version 1.2 */ + +#tiptip_holder { + display: none; + position: absolute; + top: 0; + left: 0; + z-index: 99999; +} + +#tiptip_holder.tip_top { + padding-bottom: 5px; +} + +#tiptip_holder.tip_bottom { + padding-top: 5px; +} + +#tiptip_holder.tip_right { + padding-left: 5px; +} + +#tiptip_holder.tip_left { + padding-right: 5px; +} + +#tiptip_content { + font-size: 11px; + color: #fff; + text-shadow: 0 0 2px #000; + padding: 4px 8px; + border: 1px solid rgba(255,255,255,0.25); + background-color: rgb(25,25,25); + background-color: rgba(25,25,25,0.92); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(transparent), to(#000)); + border-radius: 3px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + box-shadow: 0 0 3px #555; + -webkit-box-shadow: 0 0 3px #555; + -moz-box-shadow: 0 0 3px #555; +} + +#tiptip_arrow, #tiptip_arrow_inner { + position: absolute; + border-color: transparent; + border-style: solid; + border-width: 6px; + height: 0; + width: 0; +} + +#tiptip_holder.tip_top #tiptip_arrow { + border-top-color: #fff; + border-top-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_bottom #tiptip_arrow { + border-bottom-color: #fff; + border-bottom-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_right #tiptip_arrow { + border-right-color: #fff; + border-right-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_left #tiptip_arrow { + border-left-color: #fff; + border-left-color: rgba(255,255,255,0.35); +} + +#tiptip_holder.tip_top #tiptip_arrow_inner { + margin-top: -7px; + margin-left: -6px; + border-top-color: rgb(25,25,25); + border-top-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_bottom #tiptip_arrow_inner { + margin-top: -5px; + margin-left: -6px; + border-bottom-color: rgb(25,25,25); + border-bottom-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_right #tiptip_arrow_inner { + margin-top: -6px; + margin-left: -5px; + border-right-color: rgb(25,25,25); + border-right-color: rgba(25,25,25,0.92); +} + +#tiptip_holder.tip_left #tiptip_arrow_inner { + margin-top: -6px; + margin-left: -7px; + border-left-color: rgb(25,25,25); + border-left-color: rgba(25,25,25,0.92); +} + +/* Webkit Hacks */ +@media screen and (-webkit-min-device-pixel-ratio:0) { + #tiptip_content { + padding: 4px 8px 5px 8px; + background-color: rgba(45,45,45,0.88); + } + #tiptip_holder.tip_bottom #tiptip_arrow_inner { + border-bottom-color: rgba(45,45,45,0.88); + } + #tiptip_holder.tip_top #tiptip_arrow_inner { + border-top-color: rgba(20,20,20,0.92); + } +} + +/* Set the width of the menubar for the galery */ +#menubar { + width: 18em; + margin: 10px 0 50px 5px; + display: inline; + float: left; + left: 0; +} + +#menubar dt [class^=icon-] { + font-size:120%; +} + +#menubar dd [class^="icon-"]:before { + margin-right: 0.5em; +} + +.content { + padding:0 5px 0 0; + margin: 0 5px 0 227px; + z-index:99; +} + +#thePopuphelpPage { + min-width: 0; /*reset default min width because no scrollbar here*/ +} + +#thePopuphelpPage #pwgHead {display:none} +#thePopuphelpPage #footer {display:none} + +.themeBox {display:inline-table; text-align:center; height:192px; background-color:#eee; margin:5px; border-radius:5px; overflow:hidden; } + +.themeBox IMG {border:1px solid white; margin:0 15px;} +.themeName {font-size:1em; margin:5px 0; position:relative; } +.themeActions {display: table-row; font-size:12px; height: 43px; } +.themeActions DIV {display: table-cell; vertical-align: middle; line-height:18px; } +.themeActions A {} + +#themesContent .themeBox IMG {width:150px; height:120px;} +#themesContent H3 {font-size:16px; text-align:left; border-bottom:1px solid #444; letter-spacing:1px; margin:5px;} +.themeBoxes {min-height:0;text-align:left;} + +h2 { letter-spacing:1px; font-weight:bold;} +h2:lang(en) { text-transform:capitalize; } + +#pluginsMenuSeparator {width:80%; margin:5px auto;} + +#helpContent P {text-align:left; margin-left:10px;} +#helpContent LI, #ftpPage LI {margin-top:10px;} +#helpContent P.nextStepLink {text-align:center; font-weight:bold; margin-bottom:20px;} + +#availablePlugins FIELDSET {border:none;} + +/** + * Informations box in administration + */ +.infos, .errors, .warnings { + text-align: left; + margin: 5px; + padding: 10px 50px 10px 10px; + font-weight:bold; + background-repeat: no-repeat; + background-position: 5px 5px; + padding:5px 70px 0pt 53px; + min-height: 54px; +} + +.infos { + color: #0a0; + background-color:#c2f5c2; + background-image: url(icon/infos.png); +} + +.errors { + color: #f22; + background-color: #ffd5dc; + background-image: url(icon/errors.png); +} + +.warnings { + color: #ee8800; + background-color:#ffdd99; + background-image: url(icon/warnings.png); +} + +.infos li, .errors li, .warnings li { list-style-type:square; } +.infos .submit {margin-left:30px;} + +.checkActions {text-align:left;padding:0;margin:0;} + +.pluginBoxes { + text-align:left; + position:relative; +} + +.pluginBox { + margin-bottom:10px; + border-width:1px; + border-style:solid; + border-radius:5px; + -moz-border-radius:5px; + } +.pluginBox table {width:99%;} +.pluginBox td {text-align:left;} +.pluginBox td.pluginDesc img {vertical-align:middle;} +.pluginBoxNameCell {width:180px; vertical-align:top;} +.pluginBoxes .inactive, .pluginBoxes .uninstalled {opacity:0.8;filter:alpha(opacity=80);} + +.pluginMiniBox { + display:inline-table; + text-align:center; + width:250px; + height:40px; + margin:5px; + border-width:1px; + border-style:solid; + border-radius:5px; + -moz-border-radius:5px; + overflow:hidden; + } +.pluginMiniBoxNameCell {font-size:1.05em; margin:5px 0;position:relative;} +.pluginActions {display: table-row; font-size:0.95em; color:#777;} +.pluginActions DIV {display: table-cell; vertical-align: middle; line-height:18px; } +.pluginMiniBox .showInfo, .themeBox .showInfo { display:block;position:absolute;top:0;right:5px;width:15px; } + +.warning:before {content:url(icon/warning.png);vertical-align:top;} +.deactivate_all {text-align:right;font-size:0.95em;} +.showDetails {text-align:right; margin-bottom:-15px; margin-top:-10px; padding-right:1em;} + +.languageBoxes {min-height:0;text-align:left;} +.languageBox {display:inline-table; text-align:center; width:200px; height:40px; margin:5px; -moz-border-radius:5px;border-radius:5px; overflow:hidden; } +.languageName {font-size:1.1em; margin:5px 0;} +.languageActions {display: table-row; font-size:12px; } +.languageActions DIV {display: table-cell; vertical-align: middle; line-height:18px; } + +#ui-datepicker-div {-moz-border-radius:5px; border-radius:5px;} +#ui-datepicker-div .ui-icon-circle-triangle-w, #ui-datepicker-div .ui-icon-circle-triangle-e {color:transparent;} +#ui-datepicker-div A.ui-datepicker-prev, #ui-datepicker-div A.ui-datepicker-next {background-color:transparent;} +#ui-datepicker-div A.ui-datepicker-prev:hover, #ui-datepicker-div A.ui-datepicker-next:hover {-moz-border-radius:5px;} + +.HelpActions { + float:right; + margin:0; + padding:0; + padding-top:2px; + padding-left:3px; +} + +.HelpActions a { border:0; margin:0; } +.HelpActions li {list-style-image:none; list-style-position:outside; list-style-type:none; text-align:center; text-indent:0pt; } + +legend {text-align:left;} + +/* local-layout */ +/* You can modify this file */ + +/* default-colors */ +/* So that non-links are slightly greyed out */ +.content .navigationBar { + color: #999; +} + +/* Tables & forms */ + +SELECT, TEXTAREA { + color:#999; + background-color: #666; +} + +INPUT:focus, SELECT:focus, TEXTAREA:focus { + background-color: #444; /* whitesmoke */ +} + +/* some theme set a border on INPUT which is not pretty for radio/checkbox */ +INPUT[type="radio"], INPUT[type="checkbox"] { + border: none; /* <= Opera needs this */ +} + + +/** + * Header message like upgrade + */ +.header_msgs { + text-align:center; + font-weight: bold; + color:#333; + background-color: transparent; + margin: 1px; + padding: 1px; +} + +/** + * Header notes box in public/administration + */ +.header_notes { + border: 1px solid #666; + background: transparent url(icon/note.png) no-repeat right top; + font-weight: bold; + margin: 14px 24px 14px 14px; + padding: 5px 0 0 0; + top: 90px; + position: absolute; + text-align: right; +} + +LEGEND { + font-weight: bold; + letter-spacing: 1px; + padding: 0 10px; +} + +/* Batch Manager, global mode */ +#batchManagerGlobal #action p {text-align:left;} +#batchManagerGlobal .bulkAction {text-align:left;margin:15px 0;padding:0;} +#batchManagerGlobal #action_del_tags ul.tagSelection {margin:0 !important; width:620px;} +#batchManagerGlobal #checkActions {text-align:left; margin:0 0 20px 0;} +#batchManagerGlobal ul.thumbnails div.actions {display:none;position:absolute;top:0;right:5px;color:#fff} +#batchManagerGlobal ul.thumbnails div.actions a {color:#fff;} +#batchManagerGlobal ul.thumbnails span.wrap1:hover div.actions {display:block;} +#batchManagerGlobal #selectedMessage {padding:5px; border-radius:5px;} +#batchManagerGlobal #applyOnDetails {font-style:italic;} +#batchManagerGlobal .actionButtons {text-align:left;} +#batchManagerGlobal #filterList {padding-left:5px;} +#batchManagerGlobal #filterList li {margin-bottom:5px; list-style-type:none;} +#batchManagerGlobal a.removeFilter {background: url(icon/remove_filter.png) no-repeat top left;width:7px;height:7px;display:inline-block;} +#batchManagerGlobal a.removeFilter:hover {background: url(icon/remove_filter_hover.png);} +#batchManagerGlobal .removeFilter span {display:none} +#batchManagerGlobal #applyFilterBlock {margin-top:20px;} +#batchManagerGlobal .useFilterCheckbox {display:none;} + +#batchManagerGlobal #filter_dimension blockquote {margin:5px 0 20px 15px;} +#batchManagerGlobal #filter_dimension .ui-slider-horizontal {width:650px;margin:5px 0 10px 0;} + +#order_filters a.addFilter {font-weight:normal;margin-left:20px;} +#order_filters a.removeFilter {font-weight:normal;} +#order_filters span.property span.filter:first-child a.removeFilter {display:none;} /* can't delete the first field */ +#order_filters span.filter {display:block;margin-left:20px;} +#order_filters .transparent {opacity:0.5;filter:alpha(opacity=50);} +#order_filters .order_by_is_custom {display:block;font-weight:normal;font-style:italic;margin-left:20px;} + +/* Upload Form */ +#uploadBoxes .file {margin-bottom:5px;text-align:left;} +#uploadBoxes {margin-top:20px;} +#addUploadBox {margin-bottom:2em;} + +p.uploadInfo {text-align:left;font-size:90%;color:#999;} +p#uploadWarningsSummary {text-align:left;margin-bottom:1em;font-size:90%;color:#999;} +p#uploadWarningsSummary .showInfo {margin-left:3px;} +p#uploadWarnings {display:none;text-align:left;margin-bottom:1em;font-size:90%;color:#999;} +p#uploadModeInfos {text-align:left;margin-top:1em;font-size:90%;color:#999;} + +#photosAddContent p.showFieldset {text-align:left;margin: 0 auto 10px auto;width: 650px;} + +#uploadProgress {width:650px; margin:10px auto;font-size:90%;} +#progressbar {border:1px solid #ccc; background-color:#eee;} +.ui-progressbar-value { background-image: url(images/pbar-ani.gif); height:10px;margin:-1px;border:1px solid #E78F08;} + +/* Tag Manager */ +.warningDeletion {display:none;font-style:italic;} + +#debug { margin-left: 227px; font-size:12px; } + +/* Album Properties */ +#albumThumbnail { + width:1%; + padding-right:10px; + text-align:center; +} + +#albumThumbnail img { + border:2px solid #ddd; +} + +#albumLinks { + vertical-align:top; + border-left:2px solid #ddd; + padding-left:10px; +} + +#albumLinks ul, .photoLinks ul { + padding-left:0; +} + +#albumLinks li, .photoLinks li { + list-style:none; +} + +.photoLinks { + vertical-align:top; +} + +.photoLinks ul { + margin:0; +} + +/* Album Manager */ +#addAlbumForm input[name="category_name"], #formCreateAlbum input[name="virtual_name"] { + width:300px; +} + +/* Pending Comments */ +#pendingComments { + padding:0 5px 0 10px; +} + +#pendingComments table { + width:100%; +} + +#pendingComments .bottomButtons { + text-align:left; +} + +.commentFilter {text-align:left;margin:5px 1em;} +.commentFilter .navigationBar {float:right; margin:0;} + +FORM#categoryOrdering p.albumTitle {margin:0;} +FORM#categoryOrdering p.albumActions, FORM#categoryOrdering span.albumInfos {visibility:hidden; margin:0} +FORM#categoryOrdering .categoryLi:hover p.albumActions, FORM#categoryOrdering .categoryLi:hover span.albumInfos {visibility:visible;} + +.showCreateAlbum {text-align:left; margin:0 1em 1em 1em;line-height:22px;} +#autoOrder p, #createAlbum p {text-align:left; margin:0 0 1em 0;} +#autoOrder p.actionButtons, #createAlbum p.actionButtons {margin-bottom:0;} + +#ftpPage p {text-align:left;margin:1em;} +#ftpPage fieldset p {margin:0;} + +/* watermark configuration screen */ +#watermarkPositionBox { + border:2px solid #ccc; + width:500px; + padding:5px; + background-color:#e5e5e5; +} + +#watermarkPositionBox label { + font-weight:normal; + display:block; + color:#444; +} + +#watermarkPositionBox label.middle { + margin:50px; + text-align:center; +} + +#watermarkPositionBox label.right { + float:right; +} + +#positionCustomDetails { + margin-left:20px; + display:none; +} + +#positionCustomDetails label { + font-weight:normal; +} + +input[type="text"].dError {border-color:#ff7070; background-color:#FFe5e5;} +.dErrorDesc {background-color:red; color:white; padding:0 5px;border-radius:10px; font-weight:bold;cursor:help;} + +#wImg {max-height:100px;border:2px solid #ccc;margin-top:5px;} +#addWatermark {display:none;} + +.adminMenubarCounter { + background-color:#666; + color:white; + padding:1px 5px; + border-radius:10px; + -moz-border-radius:10px; + -webkit-border-radius:10px; + margin-left:5px; +} + +.groups { + text-align:center; +} +.groups li { + vertical-align: middle; + position: relative; + display: inline-block; + text-align: left; + height: 300px; + width: 250px; + margin: 5px; + border-radius: 5px; +} +.groups p { + text-align:left; +} +.groups label>p { + margin: 0; + border-radius: 5px 5px 0 0; + padding: 2px; + text-align: center; +} + +.groups input { + float: right; +} +p.list_user { + text-align: left; + max-height: 200px; + overflow: auto; +} +a.group_perm { + position: absolute; + bottom: 5px; + right: 5px; +} + +#userList .openUserDetails {visibility:hidden;} +#userList tr:hover .openUserDetails {visibility:visible;} +#userList .icon-cancel-circled {visibility:visible;} + +.userProperties {max-width:730px;} +.userPropertiesContainer {border-top:1px solid #ddd;margin-top:1em;} +.userPropertiesSet {width:350px;float:left;padding-top:5px} +.userPropertiesSetTitle {font-weight:bold;margin-bottom:1em;} +.userPrefs {border-left:1px solid #ddd;padding-left:10px;} +.userProperty {width:340px;float:left;margin-bottom:15px;} +.userActions {float:right;text-align:right;} + diff --git a/sources/admin/themes/default/themeconf.inc.php b/sources/admin/themes/default/themeconf.inc.php new file mode 100644 index 0000000..9a6b8fe --- /dev/null +++ b/sources/admin/themes/default/themeconf.inc.php @@ -0,0 +1,9 @@ + 'default', + 'icon_dir' => 'themes/default/icon', + 'admin_icon_dir' => 'admin/themes/default/icon', + 'mime_icon_dir' => 'themes/default/icon/mimetypes/', + 'local_head' => 'local_head.tpl', +); +?> diff --git a/sources/admin/themes/roma/icon/home.png b/sources/admin/themes/roma/icon/home.png new file mode 100644 index 0000000..81b6bdd Binary files /dev/null and b/sources/admin/themes/roma/icon/home.png differ diff --git a/sources/admin/themes/roma/icon/next.png b/sources/admin/themes/roma/icon/next.png new file mode 100644 index 0000000..aad9016 Binary files /dev/null and b/sources/admin/themes/roma/icon/next.png differ diff --git a/sources/admin/themes/roma/icon/prev.png b/sources/admin/themes/roma/icon/prev.png new file mode 100644 index 0000000..bf220e3 Binary files /dev/null and b/sources/admin/themes/roma/icon/prev.png differ diff --git a/sources/admin/themes/roma/images/active_tab.png b/sources/admin/themes/roma/images/active_tab.png new file mode 100644 index 0000000..f0fbcfa Binary files /dev/null and b/sources/admin/themes/roma/images/active_tab.png differ diff --git a/sources/admin/themes/roma/images/active_tab2.png b/sources/admin/themes/roma/images/active_tab2.png new file mode 100644 index 0000000..29ffdee Binary files /dev/null and b/sources/admin/themes/roma/images/active_tab2.png differ diff --git a/sources/admin/themes/roma/images/active_tab3.png b/sources/admin/themes/roma/images/active_tab3.png new file mode 100644 index 0000000..b84c40c Binary files /dev/null and b/sources/admin/themes/roma/images/active_tab3.png differ diff --git a/sources/admin/themes/roma/images/external_active.png b/sources/admin/themes/roma/images/external_active.png new file mode 100644 index 0000000..03c50fb Binary files /dev/null and b/sources/admin/themes/roma/images/external_active.png differ diff --git a/sources/admin/themes/roma/images/external_inactive.png b/sources/admin/themes/roma/images/external_inactive.png new file mode 100644 index 0000000..9186403 Binary files /dev/null and b/sources/admin/themes/roma/images/external_inactive.png differ diff --git a/sources/admin/themes/roma/images/fillet.png b/sources/admin/themes/roma/images/fillet.png new file mode 100644 index 0000000..c56a51a Binary files /dev/null and b/sources/admin/themes/roma/images/fillet.png differ diff --git a/sources/admin/themes/roma/images/header_msgs-bg.gif b/sources/admin/themes/roma/images/header_msgs-bg.gif new file mode 100644 index 0000000..0879e1b Binary files /dev/null and b/sources/admin/themes/roma/images/header_msgs-bg.gif differ diff --git a/sources/admin/themes/roma/images/inactive_tab.png b/sources/admin/themes/roma/images/inactive_tab.png new file mode 100644 index 0000000..8834859 Binary files /dev/null and b/sources/admin/themes/roma/images/inactive_tab.png differ diff --git a/sources/admin/themes/roma/images/inactive_tab2.png b/sources/admin/themes/roma/images/inactive_tab2.png new file mode 100644 index 0000000..8d4183b Binary files /dev/null and b/sources/admin/themes/roma/images/inactive_tab2.png differ diff --git a/sources/admin/themes/roma/images/inactive_tab3.png b/sources/admin/themes/roma/images/inactive_tab3.png new file mode 100644 index 0000000..2b22c8e Binary files /dev/null and b/sources/admin/themes/roma/images/inactive_tab3.png differ diff --git a/sources/admin/themes/roma/images/menuBoxBottom_new.png b/sources/admin/themes/roma/images/menuBoxBottom_new.png new file mode 100644 index 0000000..4df220e Binary files /dev/null and b/sources/admin/themes/roma/images/menuBoxBottom_new.png differ diff --git a/sources/admin/themes/roma/images/menuBoxTop_new.png b/sources/admin/themes/roma/images/menuBoxTop_new.png new file mode 100644 index 0000000..c8cecd2 Binary files /dev/null and b/sources/admin/themes/roma/images/menuBoxTop_new.png differ diff --git a/sources/admin/themes/roma/images/menubar-detail.png b/sources/admin/themes/roma/images/menubar-detail.png new file mode 100644 index 0000000..d7f4f24 Binary files /dev/null and b/sources/admin/themes/roma/images/menubar-detail.png differ diff --git a/sources/admin/themes/roma/images/menubar-top.png b/sources/admin/themes/roma/images/menubar-top.png new file mode 100644 index 0000000..3da3bca Binary files /dev/null and b/sources/admin/themes/roma/images/menubar-top.png differ diff --git a/sources/admin/themes/roma/images/missing_screenshot.png b/sources/admin/themes/roma/images/missing_screenshot.png new file mode 100644 index 0000000..d830ece Binary files /dev/null and b/sources/admin/themes/roma/images/missing_screenshot.png differ diff --git a/sources/admin/themes/roma/images/piwigo_logo_small.png b/sources/admin/themes/roma/images/piwigo_logo_small.png new file mode 100644 index 0000000..5ee4bd5 Binary files /dev/null and b/sources/admin/themes/roma/images/piwigo_logo_small.png differ diff --git a/sources/admin/themes/roma/images/quickLocalSync_hover.png b/sources/admin/themes/roma/images/quickLocalSync_hover.png new file mode 100644 index 0000000..a8b9ed9 Binary files /dev/null and b/sources/admin/themes/roma/images/quickLocalSync_hover.png differ diff --git a/sources/admin/themes/roma/images/quickLocalSync_inactiv.png b/sources/admin/themes/roma/images/quickLocalSync_inactiv.png new file mode 100644 index 0000000..b26b230 Binary files /dev/null and b/sources/admin/themes/roma/images/quickLocalSync_inactiv.png differ diff --git a/sources/admin/themes/roma/images/resizable-e.gif b/sources/admin/themes/roma/images/resizable-e.gif new file mode 100644 index 0000000..36451a6 Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-e.gif differ diff --git a/sources/admin/themes/roma/images/resizable-n.gif b/sources/admin/themes/roma/images/resizable-n.gif new file mode 100644 index 0000000..fe11bf4 Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-n.gif differ diff --git a/sources/admin/themes/roma/images/resizable-ne.gif b/sources/admin/themes/roma/images/resizable-ne.gif new file mode 100644 index 0000000..4819fdf Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-ne.gif differ diff --git a/sources/admin/themes/roma/images/resizable-nw.gif b/sources/admin/themes/roma/images/resizable-nw.gif new file mode 100644 index 0000000..7f128da Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-nw.gif differ diff --git a/sources/admin/themes/roma/images/resizable-s.gif b/sources/admin/themes/roma/images/resizable-s.gif new file mode 100644 index 0000000..908576c Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-s.gif differ diff --git a/sources/admin/themes/roma/images/resizable-se.gif b/sources/admin/themes/roma/images/resizable-se.gif new file mode 100644 index 0000000..0db4398 Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-se.gif differ diff --git a/sources/admin/themes/roma/images/resizable-sw.gif b/sources/admin/themes/roma/images/resizable-sw.gif new file mode 100644 index 0000000..e983320 Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-sw.gif differ diff --git a/sources/admin/themes/roma/images/resizable-w.gif b/sources/admin/themes/roma/images/resizable-w.gif new file mode 100644 index 0000000..fe2a790 Binary files /dev/null and b/sources/admin/themes/roma/images/resizable-w.gif differ diff --git a/sources/admin/themes/roma/images/stripe-cat.png b/sources/admin/themes/roma/images/stripe-cat.png new file mode 100644 index 0000000..8234473 Binary files /dev/null and b/sources/admin/themes/roma/images/stripe-cat.png differ diff --git a/sources/admin/themes/roma/images/transparent.gif b/sources/admin/themes/roma/images/transparent.gif new file mode 100644 index 0000000..e565824 Binary files /dev/null and b/sources/admin/themes/roma/images/transparent.gif differ diff --git a/sources/admin/themes/roma/index.php b/sources/admin/themes/roma/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/admin/themes/roma/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/admin/themes/roma/mail-css.tpl b/sources/admin/themes/roma/mail-css.tpl new file mode 100644 index 0000000..a8da286 --- /dev/null +++ b/sources/admin/themes/roma/mail-css.tpl @@ -0,0 +1,18 @@ +/* Theme wipi mail css */ + +body {ldelim} background-color:#111; color:#69c;} +#the_page {ldelim} background: #111 url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/mailbody-bg.png) repeat-y scroll left top;} +#content {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/header-bg.png) no-repeat scroll left top;} +#copyright {ldelim} background: transparent url({$ROOT_URL}template/{$themeconf.template}/mail/text/html/images/footer-bg.png) no-repeat scroll left bottom; +color: #69c;} +h2 {ldelim} background-color: #222;color:#eee;background-image: url({$ROOT_URL}template/{$themeconf.template}/themes/{$themeconf.theme}/images/tableh1_bg.png);} +img {ldelim} margin: 16px; padding:15px;border:1px solid #eee; -moz-border-radius: 4px; border-radius: 4px 4px; } +img:hover {ldelim} border:1px solid #69c; -moz-border-radius: 4px; border-radius: 4px 4px; } +a {ldelim} color: #69c; background: transparent; } +a:hover {ldelim} color: #f92; } +a.PWG {ldelim} border: 0px; } +a.PWG .P {ldelim} color : #f92; } +a.PWG .W {ldelim} color : #aaa; } +a.PWG .G {ldelim} color : #69c; } +a.PWG:hover .P {ldelim} color : #69c; } +a.PWG:hover .G {ldelim} color : #f92; } diff --git a/sources/admin/themes/roma/theme.css b/sources/admin/themes/roma/theme.css new file mode 100644 index 0000000..a259653 --- /dev/null +++ b/sources/admin/themes/roma/theme.css @@ -0,0 +1,340 @@ +/* generic colors - roma +.gcText { color: #666666; } used for text +.gcText2 { color: #FF3366; } used for table header +.gcText3 { color: #FF3366; } used for tabs text +.gcTextInput { color:#999999; } used for inputs +.gcLink { color: #FF7700; } used for link +.gcLinkHover { color: #FF3333; } used for link +.gcBgPage { background-color: #111111; } used for page background +.gcBgTabSheet { background-color: #222222; } used inside tabsheet & menu +.gcBgTableRow1 { background-color: #111111; } used in for tables rows background +.gcBgTableRow2 { background-color: #222222; } used in tables rows & some widgets background +.gcBgInput { background-color:#444444; } used for inputs +.gcBorder { border-color: #FF3363; } used for borders +.gcBorder2 { border-color: #666666; } used for widgets borders +.gcBorderInput { border-color:#666666; } used for inputs +*/ +/* text color */ +body, h3, dt, .throw, .content, label, LEGEND { + color:#666; +} + +INPUT, select, textarea { color:#999; background-color: #444; } +option[disabled] { background-color: #999; color: #444; } +input[type="radio"], input[type="checkbox"] { background-color: transparent; } + + +.showInfo { color:#666; } +.showInfo:hover { color:#999; } + +h2 { color: #ccc; } + +.header_notes { + background: transparent url(../default/icon/note.png) no-repeat right top; + border: none; + min-height: 48px; + padding: 15px 60px 0 0; + right: 0; + width: 550px; +} +html, body { min-height: 100%; } + +body { + background-color:#111111; +} + +/* #the_page { margin: 0; padding: 0; z-index: 1; top:0px; */ +/* padding-top: 0; min-height: 100%; width:100%; position:absolute; left:0px; } */ +h3, .row2, .content { background-color: #222; } +.throw, .row1 { background-color:#111; } +.throw em { font-style: normal; color: #ff3363; } + +#content { + border: 1px solid #222; + min-height: 466px; + margin-top: 15px; +} + +.content h3 { font-size:20px; letter-spacing:-0.4px; margin:0 20px 12px 0; text-align:center; background:none; border: 0; } +.content h3 ~ h3{ margin-top: 40px; } +.content h4 { font-size:14px; text-align:left; padding:3px; margin: 2px;} + +.content dl, dd { margin:5px; } + + +UL.thumbnails span.wrap2:hover { background-color#7CBA0F; color:#666; } +UL.thumbnails span.wrap2 { + background-color:#333; +} + +/* .throw, */ td h3 { + background-image: url(images/fillet.png); background-repeat: repeat-x; } +/* borders */ +fieldset { border: 2px solid #333; } + +.buttonLike, INPUT, SELECT, TEXTAREA { + border: 1px solid #666; +} +input:focus, select:focus, textarea:focus { + background-color: #444; + color: #999; +} + +TEXTAREA { cursor:text; font-size: 13px; } +.tagSelection label { padding-right:12px; } +.tagSelection LI.tagSelected {background-color:#aaa;} +.tagSelected LABEL {color:#000;} +ul.thumbnails input { color:#999; font-size:10px; margin:0; background-color:#444; text-align: center;} +INPUT[type="submit"]:hover , INPUT[type="reset"]:hover { cursor: pointer; } +INPUT.bigbutton:hover { background-color: #222; color:#f33; border: 0; } +.throw { font-size: 120%; line-height: 26px; padding-top: 10px; font-weight: bold; color: #ff3363; } +label { cursor:pointer } +.categoryLi, .menuLi { background: #333 } +.menuLi_hidden { background: #333 !important; } +a.Piwigo { + font-family: verdana, arial, helvetica, sans-serif !important; + font-size: 11px; font-weight: normal; letter-spacing: 0; + color : #F33; text-decoration: none; border: 0; } +a.Piwigo:hover span.Piwigo { + border-bottom: 1px solid #FF3363; +} + +.categoryUl>li:not(.virtual_cat) { + background:url(images/stripe-cat.png); +} + +/* RADU - I comment this because it makes FF form controls activation very slow) +*, *:focus, *:active, input:active, a:active, input:focus, a:focus { outline: none; -moz-outline-width: 0px; } +*/ + +a { color:#f70; } +a:hover, a:active { color: #f33; cursor: pointer; } +.content .navigationBar {color:#666;} +ul.actions, .content form#waiting {text-align:center;} + +.header_msgs { background:transparent url(images/header_msgs-bg.gif) repeat scroll right top; +border:0; color:#333; font-size:24px; height:30px; margin:0; padding:10px 0 0; +text-align:center; width:100%; } + +/* tabsheets are often used in admin pages => No specific css files */ +#tabsheet { width:auto; margin:-1px; margin-right:-6px; padding:0; +border:1px solid #111111; border-bottom:1px solid #ff3363; background-color:#111111;} +.tabsheet { display:table; white-space:nowrap; padding-left:10px; margin:0; width:auto; +font-family:verdana,arial,helvetica,sans-serif; font-size:8px; +list-style-type:none; list-style-image:none; text-decoration:none; } +.tabsheet li { background:#222222; float:left; margin:0 6px 0 0; overflow:hidden; text-align:right; border:1px solid #ff3363; border-bottom:none; position:relative; top:11px; -moz-border-radius-topleft:5px; -moz-border-radius-topright:5px;-webkit-border-top-left-radius:5px; -webkit-border-top-right-radius:5px;border-radius:5px 5px 0 0;} +.tabsheet a { +outline:none; color:#666; display:block; font-size:11px; border:0; +font-weight:bold; overflow:hidden; padding:6px; +text-align:right; text-decoration:none; margin: 0; } +.tabsheet a:first-letter { text-transform:capitalize; } +.tabsheet li.selected_tab { + border-bottom:1px solid #222222; +} +.tabsheet li:hover, .tabsheet li.selected_tab { +margin-top:4px; padding-bottom:3px; padding-top:3px; top:1px; + } +.tabsheet a:hover, .tabsheet li.selected_tab a { color: #F36; } +.tabsheet a span { background-color:#222; font-size:10px; margin-right:2px; padding:0 3px 0 1px; } +/* menubar is on all admin pages => No specific css file */ +#menubar { +background:transparent url(images/menuBoxBottom_new.png) no-repeat scroll left bottom; +border:0; +padding:0; width:207px; z-index:99; text-align: left; +} + +#menubar dd { +background: transparent url(images/menubar-detail.png) repeat-y top left; +margin: 0; padding: 0 0 10px 0; } +#menubar dl { +background:transparent url(images/menuBoxTop_new.png) no-repeat scroll left top; +width: 207px; border:0; margin: 0; padding: 0; display: block; min-height:35px; } +#menubar dl.first { +background:transparent url(images/menubar-top.png) no-repeat scroll left 1px; } +#menubar dl.last { padding: 0 0 24px 0;} +#menubar dt { + margin: 0; display: block; background: none; left:10px; font-weight:bold; + position:relative; padding: 5px 1px 4px 5px; top:-8px; font-size: 13px; color: #666; outline:none; + cursor:pointer; +} +#menubar dt span { background-color: #111; } +#menubar li { margin: 0 0 0 12px; } +#menubar li.external { list-style-image:url(images/external_inactive.png); padding:10px 0px 0pt 10px; } +#menubar li.external:hover { list-style-image:url(images/external_active.png); } +#menubar ul { color: #333; margin:0 9px 0 9px; line-height: 16px; + list-style-type: none; list-style-position: inside; padding: 0; } +#menubar ul.scroll { overflow-y:auto; max-height:500px;} + +#menubar dd [class^="icon-"]:before { + color: #666; +} + +/* jQuery tooltips */ +.ui-tooltip { + color: #eee; + background-color: #000; +} +.cluetip-outer { border-color: #666; color: #666; background-color: #222; } +.cluetip-title { color: #ff3363; background-color: #111; } +/* jQuery ui resizable */ +.ui-resizable { position: relative; } +.ui-wrapper { border: 0; } +.ui-wrapper input, .ui-wrapper textarea { border: 0; } + +/* Global handle styles */ +.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; } +.ui-resizable .ui-resizable-handle { display: block; } +body .ui-resizable-disabled .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */ +body .ui-resizable-autohide .ui-resizable-handle { display: none; } /* use 'body' to make it more specific (css order) */ +.ui-resizable-n { cursor: n-resize; height: 6px; width: 100%; top: 0px; left: 0px; background: transparent url(images/resizable-n.gif) no-repeat scroll center top; } +.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; background: transparent url(images/resizable-s.gif) no-repeat scroll center top; } +.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-e.gif) no-repeat scroll right center; } +.ui-resizable-w { cursor: w-resize; width: 6px; left: 0px; top: 0px; height: 100%; background: transparent url(images/resizable-w.gif) no-repeat scroll right center; } +.ui-resizable-se { cursor: se-resize; width: 9px; height: 9px; right: 0px; bottom: 0px; background: transparent url(images/resizable-se.gif); } +.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: 0px; bottom: 0px; background: transparent url(images/resizable-sw.gif); } +.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: 0px; top: 0px; background: transparent url(images/resizable-nw.gif); } +.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: 0px; top: 0px; background: transparent url(images/resizable-ne.gif); } + +#ui-datepicker-div {background-color: #555; border:2px solid #333;} +#ui-datepicker-div .ui-datepicker-title {color:white;} +#ui-datepicker-div .ui-icon-circle-triangle-w {background: transparent url(icon/prev.png) no-repeat;} +#ui-datepicker-div .ui-icon-circle-triangle-e {background: transparent url(icon/next.png) no-repeat;} +#ui-datepicker-div A.ui-datepicker-prev:hover, +#ui-datepicker-div A.ui-datepicker-next:hover +{ + background-color:#eee;border:1px solid #aaa; +} +.ui-datepicker th {color:#ccc;} +.ui-state-disabled {color:#aaa;} +.ui-timepicker-div, .ui-timepicker-div dt {color:#ccc;} + +.ui-slider { background:#444;border-radius:2px;border:1px solid #666; } +.ui-slider .ui-slider-handle { border:1px solid #f36;background:#222;border-radius:0.6em; } +.ui-slider .ui-slider-range { background:#666;border-radius:2px; } + +#ui-datepicker-div .ui-datepicker-control, #ui-datepicker-div a { background-color: #111; color: #f70 !important;} +#ui-datepicker-div .ui-datepicker-days-row { background-color: #444;} +#ui-datepicker-div .ui-datepicker-week-end-cell, #ui-datepicker-div .ui-datepicker-week-end-cell a { background-color: #222; color: #f33; border-color: #444; border-top-color: #222; border-left-color: #222;} +#ui-datepicker-div .ui-datepicker-title-row { background-color: #111;} +#ui-datepicker-div .ui-datepicker-title-row .ui-datepicker-week-end-cell a { color: #f33;} +#ui-datepicker-div a:hover { color: #ff3333 !important; border: 0; background-color: #111 !important;} +#ui-datepicker-div .ui-datepicker-header select { background-color:#444; color:#999; font-weight:normal;} +#ui-datepicker-div .ui-datepicker-links { background-color:#222;} +#ui-datepicker-div .ui-datepicker-header { background-color:#444;} +#ui-datepicker-div .ui-datepicker-current-day { background-color: #111 !important; border-color: #444; border-top-color: #111; border-left-color: #111;} +#ui-datepicker-div .ui-datepicker-days-cell { background-color:#444; border:1px solid #222; border-top-color: #444; border-left-color: #444;} +INPUT[type="text"].large { width: 317px; } + +.buttonLike, input[type="button"], input[type="submit"], input[type="reset"] { + color:#ff3363; + background-color:#222; + border-color: #ff3363; + padding: 1px 15px; +} + +.buttonLike:hover, input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover { + color:#999; + border-color: #666; + text-decoration: none; +} + +.bigbutton { background:transparent url(images/quickLocalSync_inactiv.png) no-repeat scroll left top; display: block; +color:#111; font-size:28px; height:161px; margin: 0 20px 0 auto; padding:0 18px 0; text-align:center; width:625px; +position:relative; z-index: 50;} +.bigtext { display:block; font-weight:bold; left:225px; position:relative; top:35px; width:320px; z-index: 55; cursor:pointer; } +.bigbutton:hover { background:transparent url(images/quickLocalSync_hover.png) no-repeat scroll left top; color: #000; } +.bigbutton input { background:transparent url(images/transparent.gif) repeat scroll left top; border:0; +display:block; height:85px; left:225px; position:relative; top:-42px; width:313px; z-index:99; padding:0; +color:transparent;} +.bigbutton input:hover { cursor:pointer; background:transparent url(images/transparent.gif) repeat scroll left top; border:0; padding:0;color:transparent;} +/* hacks */ +* html[lang="en"] body .content h2 , *+html[lang="en"] body .content h2 { text-transform:capitalize; } /* IE */ +*+html .bigtext { left: 70px; } +*+html .bigbutton input, * html .bigbutton input { left:0px; position:relative; top:-40px; } + +* html .bigtext { margin-right: 300px; } + +#adminHome {background-color:#222;} +#adminHome:hover {background-color:#333;} + +.themeBox {background-color:#333;} +.themeBox IMG {border:1px solid #666;} +.themeName {color:#ccc;} +.themeActions A {border-bottom:none;} +.themeDefault {background-color:#555;} + +#pluginsMenuSeparator {border:1px solid #333;} + +#helpContent, #pLoaderPage, #ftpPage, #ftpPage LEGEND {color:#aaa;} + +#pwgHead, #footer {background-color:#222;} +#footer {background-image: url(images/piwigo_logo_small.png);} + +.pluginBox, .pluginMiniBox, .groups li {background-color:#333;color:#999;border-color:#333;} +.pluginBoxNameCell, .pluginMiniBoxNameCell {color:#ddd;} +.pluginBox.incompatible, .pluginMiniBox.incompatible {border-color:#800 !important;} +.pluginBoxes .merged, .pluginBoxes .missing {background-color:#422;border:1px solid #800;} +.languageBox {background-color:#333;} +.languageName {color:#ccc;} +.languageDefault {background-color:#555; color:#aaa;} + +#batchManagerGlobal .thumbSelected {background-color:#555 !important} +#batchManagerGlobal #selectedMessage {background-color:#555; color:#ddd;} + +/* TokenInput (with Facebook style for ROMA) */ +ul.token-input-list {border-color:#666 !important;background-color:#444 !important;} +ul.token-input-list li input {background-color:#444 !important;} +li.token-input-token span {color:#878787 !important;} +div.token-input-dropdown {background-color:#eee !important;border-color:#666 !important;} +div.token-input-dropdown ul li {background-color:#eee !important;} +div.token-input-dropdown ul li.token-input-selected-dropdown-item {background-color:#FF7800 !important;} + +#progressbar {border:1px solid #666; background-color:#666;} + +/* Album Properties */ +#albumThumbnail img, #albumLinks { + border-color:#333; +} + +.selectedComment {background-color:#555; color:#fff;} + +.groups label>p { + color: #ccc; + font-size: 1.2em; + background-color:#111; +} +label>p.group_select { + color: #fff; + background-color:#555; +} + +.userSeparator { + color:#666; +} + +#configContent fieldset:not(.no-border) { + border-top-color:#444; +} + +table.dataTable tr.even { + background-color: #111 !important; +} + +table.dataTable tr.even td.sorting_1 { + background-color: #181818 !important; +} + +table.dataTable tr.odd { + background-color: #222 !important; +} + +table.dataTable tr.odd td.sorting_1 { + background-color: #282828 !important; +} + +table.dataTable thead th { + border-color: #333 !important; +} + +.userPropertiesContainer {border-color:#333;} +.userPrefs {border-color:#333;} diff --git a/sources/admin/themes/roma/themeconf.inc.php b/sources/admin/themes/roma/themeconf.inc.php new file mode 100644 index 0000000..f6ec175 --- /dev/null +++ b/sources/admin/themes/roma/themeconf.inc.php @@ -0,0 +1,6 @@ + 'roma', + 'parent' => 'default', +); +?> diff --git a/sources/admin/themes_installed.php b/sources/admin/themes_installed.php new file mode 100644 index 0000000..d699956 --- /dev/null +++ b/sources/admin/themes_installed.php @@ -0,0 +1,178 @@ +perform_action($_GET['action'], $_GET['theme']); + + if (empty($page['errors'])) + { + if ($_GET['action'] == 'activate' or $_GET['action'] == 'deactivate') + { + $template->delete_compiled_templates(); + } + redirect($base_url); + } +} + +// +-----------------------------------------------------------------------+ +// | start template output | +// +-----------------------------------------------------------------------+ + +$themes->sort_fs_themes(); + +$default_theme = get_default_theme(); + +$db_themes = $themes->get_db_themes(); +$db_theme_ids = array(); +foreach ($db_themes as $db_theme) +{ + $db_theme_ids[] = $db_theme['id']; +} + +$tpl_themes = array(); + +foreach ($themes->fs_themes as $theme_id => $fs_theme) +{ + if ($theme_id == 'default') + { + continue; + } + + $tpl_theme = array( + 'ID' => $theme_id, + 'NAME' => $fs_theme['name'], + 'VISIT_URL' => $fs_theme['uri'], + 'VERSION' => $fs_theme['version'], + 'DESC' => $fs_theme['description'], + 'AUTHOR' => $fs_theme['author'], + 'AUTHOR_URL' => @$fs_theme['author uri'], + 'PARENT' => @$fs_theme['parent'], + 'SCREENSHOT' => $fs_theme['screenshot'], + 'IS_MOBILE' => $fs_theme['mobile'], + 'ADMIN_URI' => @$fs_theme['admin_uri'], + ); + + if (in_array($theme_id, $db_theme_ids)) + { + $tpl_theme['STATE'] = 'active'; + $tpl_theme['DEACTIVABLE'] = true; + + if (count($db_theme_ids) <= 1) + { + $tpl_theme['DEACTIVABLE'] = false; + $tpl_theme['DEACTIVATE_TOOLTIP'] = l10n('Impossible to deactivate this theme, you need at least one theme.'); + } + + $tpl_theme['IS_DEFAULT'] = ($theme_id == $default_theme); + } + else + { + $tpl_theme['STATE'] = 'inactive'; + + // is the theme "activable" ? + if (isset($fs_theme['activable']) and !$fs_theme['activable']) + { + $tpl_theme['ACTIVABLE'] = false; + $tpl_theme['ACTIVABLE_TOOLTIP'] = l10n('This theme was not designed to be directly activated'); + } + else + { + $tpl_theme['ACTIVABLE'] = true; + } + + $missing_parent = $themes->missing_parent_theme($theme_id); + if (isset($missing_parent)) + { + $tpl_theme['ACTIVABLE'] = false; + + $tpl_theme['ACTIVABLE_TOOLTIP'] = l10n( + 'Impossible to activate this theme, the parent theme is missing: %s', + $missing_parent + ); + } + + // is the theme "deletable" ? + $children = $themes->get_children_themes($theme_id); + + $tpl_theme['DELETABLE'] = true; + + if (count($children) > 0) + { + $tpl_theme['DELETABLE'] = false; + + $tpl_theme['DELETE_TOOLTIP'] = l10n( + 'Impossible to delete this theme. Other themes depends on it: %s', + implode(', ', $children) + ); + } + } + + $tpl_themes[] = $tpl_theme; +} + +// sort themes by state then by name +function cmp($a, $b) +{ + $s = array('active' => 0, 'inactive' => 1); + + if (@$a['IS_DEFAULT']) return -1; + if (@$b['IS_DEFAULT']) return 1; + + if($a['STATE'] == $b['STATE']) + return strcasecmp($a['NAME'], $b['NAME']); + else + return $s[$a['STATE']] >= $s[$b['STATE']]; +} +usort($tpl_themes, 'cmp'); + +$template->assign( + array( + 'activate_baseurl' => $base_url.'&action=activate&theme=', + 'deactivate_baseurl' => $base_url.'&action=deactivate&theme=', + 'set_default_baseurl' => $base_url.'&action=set_default&theme=', + 'delete_baseurl' => $base_url.'&action=delete&theme=', + + 'tpl_themes' => $tpl_themes, + ) + ); + + +$template->set_filenames(array('themes' => 'themes_installed.tpl')); +$template->assign_var_from_handle('ADMIN_CONTENT', 'themes'); +?> diff --git a/sources/admin/themes_new.php b/sources/admin/themes_new.php new file mode 100644 index 0000000..803327e --- /dev/null +++ b/sources/admin/themes_new.php @@ -0,0 +1,138 @@ +extract_theme_files( + 'install', + $_GET['revision'], + $_GET['extension'] + ); + + redirect($base_url.'&installstatus='.$install_status); + } +} + +// +-----------------------------------------------------------------------+ +// | installation result | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['installstatus'])) +{ + switch ($_GET['installstatus']) + { + case 'ok': + $page['infos'][] = l10n('Theme has been successfully installed'); + break; + + case 'temp_path_error': + $page['errors'][] = l10n('Can\'t create temporary file.'); + break; + + case 'dl_archive_error': + $page['errors'][] = l10n('Can\'t download archive.'); + break; + + case 'archive_error': + $page['errors'][] = l10n('Can\'t read or extract archive.'); + break; + + default: + $page['errors'][] = l10n( + 'An error occured during extraction (%s).', + htmlspecialchars($_GET['installstatus']) + ); + } +} + +// +-----------------------------------------------------------------------+ +// | template output | +// +-----------------------------------------------------------------------+ + +$template->set_filenames(array('themes' => 'themes_new.tpl')); + +if ($themes->get_server_themes(true)) // only new themes +{ + foreach($themes->server_themes as $theme) + { + $url_auto_install = htmlentities($base_url) + . '&revision=' . $theme['revision_id'] + . '&extension=' . $theme['extension_id'] + . '&pwg_token='.get_pwg_token() + ; + + $template->append( + 'new_themes', + array( + 'name' => $theme['extension_name'], + 'thumbnail' => PEM_URL.'/upload/extension-'.$theme['extension_id'].'/thumbnail.jpg', + 'screenshot' => PEM_URL.'/upload/extension-'.$theme['extension_id'].'/screenshot.jpg', + 'install_url' => $url_auto_install, + ) + ); + } +} +else +{ + $page['errors'][] = l10n('Can\'t connect to server.'); +} + +$template->assign('default_screenshot', + get_root_url().'admin/themes/'.$conf['admin_theme'].'/images/missing_screenshot.png' +); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'themes'); +?> \ No newline at end of file diff --git a/sources/admin/updates.php b/sources/admin/updates.php new file mode 100644 index 0000000..bfd6b6a --- /dev/null +++ b/sources/admin/updates.php @@ -0,0 +1,45 @@ +set_id('updates'); +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +include(PHPWG_ROOT_PATH.'admin/updates_'.$page['tab'].'.php'); + +?> \ No newline at end of file diff --git a/sources/admin/updates_ext.php b/sources/admin/updates_ext.php new file mode 100644 index 0000000..72b2e13 --- /dev/null +++ b/sources/admin/updates_ext.php @@ -0,0 +1,95 @@ +get_server_extensions()) +{ + $page['errors'][] = l10n('Can\'t connect to server.'); + return; // TODO: remove this return and add a proper "page killer" +} + +foreach ($autoupdate->types as $type) +{ + $fs = 'fs_'.$type; + $server = 'server_'.$type; + $server_ext = $autoupdate->$type->$server; + $fs_ext = $autoupdate->$type->$fs; + + if (empty($server_ext)) + { + continue; + } + + foreach($fs_ext as $ext_id => $fs_ext) + { + if (!isset($fs_ext['extension']) or !isset($server_ext[$fs_ext['extension']])) + { + continue; + } + + $ext_info = $server_ext[$fs_ext['extension']]; + + if (!safe_version_compare($fs_ext['version'], $ext_info['revision_name'], '>=')) + { + $template->append('update_'.$type, array( + 'ID' => $ext_info['extension_id'], + 'REVISION_ID' => $ext_info['revision_id'], + 'EXT_ID' => $ext_id, + 'EXT_NAME' => $fs_ext['name'], + 'EXT_URL' => PEM_URL.'/extension_view.php?eid='.$ext_info['extension_id'], + 'EXT_DESC' => trim($ext_info['extension_description'], " \n\r"), + 'REV_DESC' => trim($ext_info['revision_description'], " \n\r"), + 'CURRENT_VERSION' => $fs_ext['version'], + 'NEW_VERSION' => $ext_info['revision_name'], + 'AUTHOR' => $ext_info['author_name'], + 'DOWNLOADS' => $ext_info['extension_nb_downloads'], + 'URL_DOWNLOAD' => $ext_info['download_url'] . '&origin=piwigo_download', + 'IGNORED' => in_array($ext_id, $conf['updates_ignored'][$type]), + ) + ); + } + } + + if (!empty($conf['updates_ignored'][$type])) + { + $show_reset = true; + } +} + +$template->assign('SHOW_RESET', $show_reset); +$template->assign('PWG_TOKEN', get_pwg_token()); +$template->assign('EXT_TYPE', $page['page'] == 'updates' ? 'extensions' : $page['page']); +$template->set_filename('plugin_admin_content', 'updates_ext.tpl'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); + +?> \ No newline at end of file diff --git a/sources/admin/updates_pwg.php b/sources/admin/updates_pwg.php new file mode 100644 index 0000000..4619ad3 --- /dev/null +++ b/sources/admin/updates_pwg.php @@ -0,0 +1,168 @@ + user may choose upgrade. +2 = upgrade on same branch +3 = upgrade on different branch +*/ +$step = isset($_GET['step']) ? $_GET['step'] : 0; +$upgrade_to = isset($_GET['to']) ? $_GET['to'] : ''; + +// +-----------------------------------------------------------------------+ +// | Step 0 | +// +-----------------------------------------------------------------------+ +if ($step == 0) +{ + $template->assign(array( + 'CHECK_VERSION' => false, + 'DEV_VERSION' => false, + ) + ); + + if (preg_match('/(\d+\.\d+)\.(\d+)/', PHPWG_VERSION, $matches)) + { + $url = PHPWG_URL.'/download/all_versions.php'; + $url .= '?rand='.md5(uniqid(rand(), true)); // Avoid server cache + + if (@fetchRemote($url, $result) + and $all_versions = @explode("\n", $result) + and is_array($all_versions)) + { + $template->assign('CHECK_VERSION', true); + + $last_version = trim($all_versions[0]); + $upgrade_to = $last_version; + + if (version_compare(PHPWG_VERSION, $last_version, '<')) + { + $new_branch = preg_replace('/(\d+\.\d+)\.\d+/', '$1', $last_version); + $actual_branch = $matches[1]; + + if ($new_branch == $actual_branch) + { + $step = 2; + } + else + { + $step = 3; + + // Check if new version exists in same branch + foreach ($all_versions as $version) + { + $new_branch = preg_replace('/(\d+\.\d+)\.\d+/', '$1', $version); + + if ($new_branch == $actual_branch) + { + if (version_compare(PHPWG_VERSION, $version, '<')) + { + $step = 1; + } + break; + } + } + } + } + } + } + else + { + $template->assign('DEV_VERSION', true); + } +} + +// +-----------------------------------------------------------------------+ +// | Step 1 | +// +-----------------------------------------------------------------------+ +if ($step == 1) +{ + $template->assign(array( + 'MINOR_VERSION' => $version, + 'MAJOR_VERSION' => $last_version, + ) + ); +} + +// +-----------------------------------------------------------------------+ +// | Step 2 | +// +-----------------------------------------------------------------------+ +if ($step == 2 and is_webmaster()) +{ + if (isset($_POST['submit']) and isset($_POST['upgrade_to'])) + { + updates::upgrade_to($_POST['upgrade_to'], $step); + } +} + +// +-----------------------------------------------------------------------+ +// | Step 3 | +// +-----------------------------------------------------------------------+ +if ($step == 3 and is_webmaster()) +{ + if (isset($_POST['dumpDatabase'])) + { + updates::dump_database(isset($_POST['includeHistory'])); + } + + if (isset($_POST['submit']) and isset($_POST['upgrade_to'])) + { + updates::upgrade_to($_POST['upgrade_to'], $step); + } + + $updates = new updates(); + $updates->get_merged_extensions($upgrade_to); + $updates->get_server_extensions($upgrade_to); + $template->assign('missing', $updates->missing); +} + +// +-----------------------------------------------------------------------+ +// | Process template | +// +-----------------------------------------------------------------------+ + +if (!is_webmaster()) +{ + $page['errors'][] = l10n('Webmaster status is required.'); +} + +$template->assign(array( + 'STEP' => $step, + 'PHPWG_VERSION' => PHPWG_VERSION, + 'UPGRADE_TO' => $upgrade_to, + 'RELEASE_URL' => PHPWG_URL.'/releases/'.$upgrade_to, + ) +); + +$template->set_filename('plugin_admin_content', 'updates_pwg.tpl'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); + +?> \ No newline at end of file diff --git a/sources/admin/user_list.php b/sources/admin/user_list.php new file mode 100644 index 0000000..cda20a0 --- /dev/null +++ b/sources/admin/user_list.php @@ -0,0 +1,143 @@ +set_id('users'); +$tabsheet->select('user_list'); +$tabsheet->assign(); + +// +-----------------------------------------------------------------------+ +// | groups list | +// +-----------------------------------------------------------------------+ + +$groups = array(); + +$query = ' +SELECT id, name + FROM '.GROUPS_TABLE.' + ORDER BY name ASC +;'; +$result = pwg_query($query); + +while ($row = pwg_db_fetch_assoc($result)) +{ + $groups[$row['id']] = $row['name']; +} + +// +-----------------------------------------------------------------------+ +// | template | +// +-----------------------------------------------------------------------+ + +$template->set_filenames(array('user_list'=>'user_list.tpl')); + +$query = ' +SELECT + DISTINCT u.'.$conf['user_fields']['id'].' AS id, + u.'.$conf['user_fields']['username'].' AS username, + u.'.$conf['user_fields']['email'].' AS email, + ui.status, + ui.enabled_high, + ui.level + FROM '.USERS_TABLE.' AS u + INNER JOIN '.USER_INFOS_TABLE.' AS ui ON u.'.$conf['user_fields']['id'].' = ui.user_id + WHERE u.'.$conf['user_fields']['id'].' > 0 +;'; + +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $users[] = $row; + $user_ids[] = $row['id']; +} + +$template->assign( + array( + 'users' => $users, + 'all_users' => join(',', $user_ids), + 'Double_Password' => $conf['double_password_type_in_admin'] + ) + ); + +$default_user = get_default_user_info(true); + +$protected_users = array( + $user['id'], + $conf['guest_id'], + $conf['default_user_id'], + $conf['webmaster_id'], + ); + +$template->assign( + array( + 'PWG_TOKEN' => get_pwg_token(), + 'NB_IMAGE_PAGE' => $default_user['nb_image_page'], + 'RECENT_PERIOD' => $default_user['recent_period'], + 'theme_options' => get_pwg_themes(), + 'theme_selected' => get_default_theme(), + 'language_options' => get_languages(), + 'language_selected' => get_default_language(), + 'association_options' => $groups, + 'protected_users' => implode(',', array_unique($protected_users)), + 'guest_user' => $conf['guest_id'], + ) + ); + +// Status options +foreach (get_enums(USER_INFOS_TABLE, 'status') as $status) +{ + // Only status <= can be assign + if (is_autorize_status(get_access_type_status($status))) + { + $pref_status_options[$status] = l10n('user_status_'.$status); + } +} +$template->assign('pref_status_options', $pref_status_options); +$template->assign('pref_status_selected', 'normal'); + +// user level options +foreach ($conf['available_permission_levels'] as $level) +{ + $level_options[$level] = l10n(sprintf('Level %d', $level)); +} +$template->assign('level_options', $level_options); +$template->assign('level_selected', $default_user['level']); + + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'user_list'); +?> \ No newline at end of file diff --git a/sources/admin/user_list_backend.php b/sources/admin/user_list_backend.php new file mode 100644 index 0000000..1edaa13 --- /dev/null +++ b/sources/admin/user_list_backend.php @@ -0,0 +1,239 @@ + intval($_REQUEST['sEcho']), + "iTotalRecords" => $iTotal, + "iTotalDisplayRecords" => $iFilteredTotal, + "aaData" => array() + ); + +$user_ids = array(); + +while ( $aRow = pwg_db_fetch_array( $rResult ) ) +{ + $user_ids[] = $aRow[ $conf['user_fields']['id'] ]; + + $row = array(); + for ( $i=0 ; $i $alias) + { + if ($aColumns[$i] == $real_name) + { + $colname = $alias; + } + } + + $row[] = $aRow[$colname]; + } + + } + $output['aaData'][] = $row; +} + +// replace "recent_period" by the list of groups +if (count($user_ids) > 0) +{ + $groups_of_user = array(); + + $query = ' +SELECT + user_id, + GROUP_CONCAT(name ORDER BY name SEPARATOR ", ") AS groups + FROM '.USER_GROUP_TABLE.' + JOIN '.GROUPS_TABLE.' ON id = group_id + WHERE user_id IN ('.implode(',', $user_ids).') + GROUP BY user_id +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $groups_of_user[ $row['user_id'] ] = $row['groups']; + } + + $key_replace = array_search('recent_period', $aColumns); + + // replacement + foreach (array_keys($output['aaData']) as $idx) + { + $user_id = $output['aaData'][$idx][0]; + $output['aaData'][$idx][$key_replace] = isset($groups_of_user[$user_id]) ? $groups_of_user[$user_id] : ''; + } +} + +$output = trigger_change('after_render_user_list', $output); + +echo json_encode( $output ); +?> \ No newline at end of file diff --git a/sources/admin/user_perm.php b/sources/admin/user_perm.php new file mode 100644 index 0000000..e40c064 --- /dev/null +++ b/sources/admin/user_perm.php @@ -0,0 +1,182 @@ + 0) +{ + // if you forbid access to a category, all sub-categories become + // automatically forbidden + $subcats = get_subcat_ids($_POST['cat_true']); + $query = ' +DELETE FROM '.USER_ACCESS_TABLE.' + WHERE user_id = '.$page['user'].' + AND cat_id IN ('.implode(',', $subcats).') +;'; + pwg_query($query); +} +elseif (isset($_POST['trueify']) + and isset($_POST['cat_false']) + and count($_POST['cat_false']) > 0) +{ + add_permission_on_category($_POST['cat_false'], $page['user']); +} + +// +-----------------------------------------------------------------------+ +// | template init | +// +-----------------------------------------------------------------------+ + +$template->set_filenames( + array( + 'user_perm' => 'user_perm.tpl', + 'double_select' => 'double_select.tpl' + ) + ); + +$template->assign( + array( + 'TITLE' => + l10n( + 'Manage permissions for user "%s"', + get_username($page['user']) + ), + 'L_CAT_OPTIONS_TRUE'=>l10n('Authorized'), + 'L_CAT_OPTIONS_FALSE'=>l10n('Forbidden'), + + 'F_ACTION' => + PHPWG_ROOT_PATH. + 'admin.php?page=user_perm'. + '&user_id='.$page['user'] + ) + ); + + +// retrieve category ids authorized to the groups the user belongs to +$group_authorized = array(); + +$query = ' +SELECT DISTINCT cat_id, c.uppercats, c.global_rank + FROM '.USER_GROUP_TABLE.' AS ug + INNER JOIN '.GROUP_ACCESS_TABLE.' AS ga + ON ug.group_id = ga.group_id + INNER JOIN '.CATEGORIES_TABLE.' AS c + ON c.id = ga.cat_id + WHERE ug.user_id = '.$page['user'].' +;'; +$result = pwg_query($query); + +if (pwg_db_num_rows($result) > 0) +{ + $cats = array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $cats[] = $row; + $group_authorized[] = $row['cat_id']; + } + usort($cats, 'global_rank_compare'); + + foreach ($cats as $category) + { + $template->append( + 'categories_because_of_groups', + get_cat_display_name_cache($category['uppercats'], null) + ); + } +} + +// only private categories are listed +$query_true = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_ACCESS_TABLE.' ON cat_id = id + WHERE status = \'private\' + AND user_id = '.$page['user']; +if (count($group_authorized) > 0) +{ + $query_true.= ' + AND cat_id NOT IN ('.implode(',', $group_authorized).')'; +} +$query_true.= ' +;'; +display_select_cat_wrapper($query_true,array(),'category_option_true'); + +$result = pwg_query($query_true); +$authorized_ids = array(); +while ($row = pwg_db_fetch_assoc($result)) +{ + $authorized_ids[] = $row['id']; +} + +$query_false = ' +SELECT id,name,uppercats,global_rank + FROM '.CATEGORIES_TABLE.' + WHERE status = \'private\''; +if (count($authorized_ids) > 0) +{ + $query_false.= ' + AND id NOT IN ('.implode(',', $authorized_ids).')'; +} +if (count($group_authorized) > 0) +{ + $query_false.= ' + AND id NOT IN ('.implode(',', $group_authorized).')'; +} +$query_false.= ' +;'; +display_select_cat_wrapper($query_false,array(),'category_option_false'); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('DOUBLE_SELECT', 'double_select'); +$template->assign_var_from_handle('ADMIN_CONTENT', 'user_perm'); +?> diff --git a/sources/category.php b/sources/category.php new file mode 100644 index 0000000..1310980 --- /dev/null +++ b/sources/category.php @@ -0,0 +1,65 @@ + diff --git a/sources/comments.php b/sources/comments.php new file mode 100644 index 0000000..a41e0c5 --- /dev/null +++ b/sources/comments.php @@ -0,0 +1,564 @@ + l10n('descending'), + 'ASC' => l10n('ascending') + ); + +// sort_by : database fields proposed for sorting comments list +$sort_by = array( + 'date' => l10n('comment date'), + 'image_id' => l10n('photo') + ); + +// items_number : list of number of items to display per page +$items_number = array(5,10,20,50,'all'); + +// if the default value is not in the expected values, we add it in the $items_number array +if (!in_array($conf['comments_page_nb_comments'], $items_number)) +{ + $items_number_new = array(); + + $is_inserted = false; + + foreach ($items_number as $number) + { + if ($number > $conf['comments_page_nb_comments'] or ($number == 'all' and !$is_inserted)) + { + $items_number_new[] = $conf['comments_page_nb_comments']; + $is_inserted = true; + } + + $items_number_new[] = $number; + } + + $items_number = $items_number_new; +} + +// since when display comments ? +// +$since_options = array( + 1 => array('label' => l10n('today'), + 'clause' => 'date > '.pwg_db_get_recent_period_expression(1)), + 2 => array('label' => l10n('last %d days', 7), + 'clause' => 'date > '.pwg_db_get_recent_period_expression(7)), + 3 => array('label' => l10n('last %d days', 30), + 'clause' => 'date > '.pwg_db_get_recent_period_expression(30)), + 4 => array('label' => l10n('the beginning'), + 'clause' => '1=1') // stupid but generic + ); + +trigger_action('loc_begin_comments'); + +if (!empty($_GET['since']) && is_numeric($_GET['since'])) +{ + $page['since'] = $_GET['since']; +} +else +{ + $page['since'] = 4; +} + +// on which field sorting +// +$page['sort_by'] = 'date'; +// if the form was submitted, it overloads default behaviour +if (isset($_GET['sort_by']) and isset($sort_by[$_GET['sort_by']]) ) +{ + $page['sort_by'] = $_GET['sort_by']; +} + +// order to sort +// +$page['sort_order'] = 'DESC'; +// if the form was submitted, it overloads default behaviour +if (isset($_GET['sort_order']) and isset($sort_order[$_GET['sort_order']])) +{ + $page['sort_order'] = $_GET['sort_order']; +} + +// number of items to display +// +$page['items_number'] = $conf['comments_page_nb_comments']; +if (isset($_GET['items_number'])) +{ + $page['items_number'] = $_GET['items_number']; +} +if ( !is_numeric($page['items_number']) and $page['items_number']!='all' ) +{ + $page['items_number'] = 10; +} + +$page['where_clauses'] = array(); + +// which category to filter on ? +if (isset($_GET['cat']) and 0 != $_GET['cat']) +{ + check_input_parameter('cat', $_GET, false, PATTERN_ID); + + $category_ids = get_subcat_ids(array($_GET['cat'])); + if (empty($category_ids)) + { + $category_ids = array(-1); + } + + $page['where_clauses'][] = + 'category_id IN ('.implode(',', $category_ids).')'; +} + +// search a particular author +if (!empty($_GET['author'])) +{ + $page['where_clauses'][] = + '(u.'.$conf['user_fields']['username'].' = \''.$_GET['author'].'\' OR author = \''.$_GET['author'].'\')'; +} + +// search a specific comment (if you're coming directly from an admin +// notification email) +if (!empty($_GET['comment_id'])) +{ + check_input_parameter('comment_id', $_GET, false, PATTERN_ID); + + // currently, the $_GET['comment_id'] is only used by admins from email + // for management purpose (validate/delete) + if (!is_admin()) + { + $login_url = + get_root_url().'identification.php?redirect=' + .urlencode(urlencode($_SERVER['REQUEST_URI'])) + ; + redirect($login_url); + } + + $page['where_clauses'][] = 'com.id = '.$_GET['comment_id']; +} + +// search a substring among comments content +if (!empty($_GET['keyword'])) +{ + $page['where_clauses'][] = + '('. + implode(' AND ', + array_map( + create_function( + '$s', + 'return "content LIKE \'%$s%\'";' + ), + preg_split('/[\s,;]+/', $_GET['keyword'] ) + ) + ). + ')'; +} + +$page['where_clauses'][] = $since_options[$page['since']]['clause']; + +// which status to filter on ? +if ( !is_admin() ) +{ + $page['where_clauses'][] = 'validated=\'true\''; +} + +$page['where_clauses'][] = get_sql_condition_FandF + ( + array + ( + 'forbidden_categories' => 'category_id', + 'visible_categories' => 'category_id', + 'visible_images' => 'ic.image_id' + ), + '', true + ); + +// +-----------------------------------------------------------------------+ +// | comments management | +// +-----------------------------------------------------------------------+ + +$comment_id = null; +$action = null; + +$actions = array('delete', 'validate', 'edit'); +foreach ($actions as $loop_action) +{ + if (isset($_GET[$loop_action])) + { + $action = $loop_action; + check_input_parameter($action, $_GET, false, PATTERN_ID); + $comment_id = $_GET[$action]; + break; + } +} + +if (isset($action)) +{ + $comment_author_id = get_comment_author_id($comment_id); + + if (can_manage_comment($action, $comment_author_id)) + { + $perform_redirect = false; + + if ('delete' == $action) + { + check_pwg_token(); + delete_user_comment($comment_id); + $perform_redirect = true; + } + + if ('validate' == $action) + { + check_pwg_token(); + validate_user_comment($comment_id); + $perform_redirect = true; + } + + if ('edit' == $action) + { + if (!empty($_POST['content'])) + { + check_pwg_token(); + $comment_action = update_user_comment( + array( + 'comment_id' => $_GET['edit'], + 'image_id' => $_POST['image_id'], + 'content' => $_POST['content'], + 'website_url' => @$_POST['website_url'], + ), + $_POST['key'] + ); + + switch ($comment_action) + { + case 'moderate': + $_SESSION['page_infos'][] = l10n('An administrator must authorize your comment before it is visible.'); + case 'validate': + $_SESSION['page_infos'][] = l10n('Your comment has been registered'); + $perform_redirect = true; + break; + case 'reject': + $_SESSION['page_errors'][] = l10n('Your comment has NOT been registered because it did not pass the validation rules'); + break; + default: + trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING); + } + } + + $edit_comment = $_GET['edit']; + } + + if ($perform_redirect) + { + redirect($url_self); + } + } +} + +// +-----------------------------------------------------------------------+ +// | page header and options | +// +-----------------------------------------------------------------------+ + +$title= l10n('User comments'); +$page['body_id'] = 'theCommentsPage'; + +$template->set_filenames(array('comments'=>'comments.tpl')); +$template->assign( + array( + 'F_ACTION'=>PHPWG_ROOT_PATH.'comments.php', + 'F_KEYWORD'=> @htmlspecialchars(stripslashes($_GET['keyword'], ENT_QUOTES, 'utf-8')), + 'F_AUTHOR'=> @htmlspecialchars(stripslashes($_GET['author'], ENT_QUOTES, 'utf-8')), + ) + ); + +// +-----------------------------------------------------------------------+ +// | form construction | +// +-----------------------------------------------------------------------+ + +// Search in a particular category +$blockname = 'categories'; + +$query = ' +SELECT id, name, uppercats, global_rank + FROM '.CATEGORIES_TABLE.' +'.get_sql_condition_FandF + ( + array + ( + 'forbidden_categories' => 'id', + 'visible_categories' => 'id' + ), + 'WHERE' + ).' +;'; +display_select_cat_wrapper($query, array(@$_GET['cat']), $blockname, true); + +// Filter on recent comments... +$tpl_var=array(); +foreach ($since_options as $id => $option) +{ + $tpl_var[ $id ] = $option['label']; +} +$template->assign( 'since_options', $tpl_var); +$template->assign( 'since_options_selected', $page['since']); + +// Sort by +$template->assign( 'sort_by_options', $sort_by); +$template->assign( 'sort_by_options_selected', $page['sort_by']); + +// Sorting order +$template->assign( 'sort_order_options', $sort_order); +$template->assign( 'sort_order_options_selected', $page['sort_order']); + + +// Number of items +$blockname = 'items_number_option'; +$tpl_var=array(); +foreach ($items_number as $option) +{ + $tpl_var[ $option ] = is_numeric($option) ? $option : l10n($option); +} +$template->assign( 'item_number_options', $tpl_var); +$template->assign( 'item_number_options_selected', $page['items_number']); + + +// +-----------------------------------------------------------------------+ +// | navigation bar | +// +-----------------------------------------------------------------------+ + +if (isset($_GET['start']) and is_numeric($_GET['start'])) +{ + $start = $_GET['start']; +} +else +{ + $start = 0; +} + +// +-----------------------------------------------------------------------+ +// | last comments display | +// +-----------------------------------------------------------------------+ + +$comments = array(); +$element_ids = array(); +$category_ids = array(); + +$query = ' +SELECT SQL_CALC_FOUND_ROWS com.id AS comment_id, + com.image_id, + ic.category_id, + com.author, + com.author_id, + u.'.$conf['user_fields']['email'].' AS user_email, + com.email, + com.date, + com.website_url, + com.content, + com.validated + FROM '.IMAGE_CATEGORY_TABLE.' AS ic + INNER JOIN '.COMMENTS_TABLE.' AS com + ON ic.image_id = com.image_id + LEFT JOIN '.USERS_TABLE.' As u + ON u.'.$conf['user_fields']['id'].' = com.author_id + WHERE '.implode(' + AND ', $page['where_clauses']).' + GROUP BY comment_id + ORDER BY '.$page['sort_by'].' '.$page['sort_order']; +if ('all' != $page['items_number']) +{ + $query.= ' + LIMIT '.$page['items_number'].' OFFSET '.$start; +} +$query.= ' +;'; +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + $comments[] = $row; + $element_ids[] = $row['image_id']; + $category_ids[] = $row['category_id']; +} +list($counter) = pwg_db_fetch_row(pwg_query('SELECT FOUND_ROWS()')); + +$url = PHPWG_ROOT_PATH.'comments.php' + .get_query_string_diff(array('start','edit','delete','validate','pwg_token')); + +$navbar = create_navigation_bar($url, + $counter, + $start, + $page['items_number'], + ''); + +$template->assign('navbar', $navbar); + + +if (count($comments) > 0) +{ + // retrieving element informations + $query = ' +SELECT * + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $element_ids).') +;'; + $elements = hash_from_query($query, 'id'); + + // retrieving category informations + $query = 'SELECT id, name, permalink, uppercats + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',', $category_ids).')'; + $categories = hash_from_query($query, 'id'); + + foreach ($comments as $comment) + { + if (!empty($elements[$comment['image_id']]['name'])) + { + $name=$elements[$comment['image_id']]['name']; + } + else + { + $name=get_name_from_file($elements[$comment['image_id']]['file']); + } + + // source of the thumbnail picture + $src_image = new SrcImage($elements[$comment['image_id']]); + + // link to the full size picture + $url = make_picture_url( + array( + 'category' => $categories[ $comment['category_id'] ], + 'image_id' => $comment['image_id'], + 'image_file' => $elements[$comment['image_id']]['file'], + ) + ); + + $email = null; + if (!empty($comment['user_email'])) + { + $email = $comment['user_email']; + } + else if (!empty($comment['email'])) + { + $email = $comment['email']; + } + + $tpl_comment = array( + 'ID' => $comment['comment_id'], + 'U_PICTURE' => $url, + 'src_image' => $src_image, + 'ALT' => $name, + 'AUTHOR' => trigger_event('render_comment_author', $comment['author']), + 'WEBSITE_URL' => $comment['website_url'], + 'DATE'=>format_date($comment['date'], true), + 'CONTENT'=>trigger_event('render_comment_content',$comment['content']), + ); + + if (is_admin()) + { + $tpl_comment['EMAIL'] = $email; + } + + if (can_manage_comment('delete', $comment['author_id'])) + { + $tpl_comment['U_DELETE'] = add_url_params( + $url_self, + array( + 'delete' => $comment['comment_id'], + 'pwg_token' => get_pwg_token(), + ) + ); + } + + if (can_manage_comment('edit', $comment['author_id'])) + { + $tpl_comment['U_EDIT'] = add_url_params( + $url_self, + array( + 'edit' => $comment['comment_id'] + ) + ); + + if (isset($edit_comment) and ($comment['comment_id'] == $edit_comment)) + { + $tpl_comment['IN_EDIT'] = true; + $key = get_ephemeral_key(2, $comment['image_id']); + $tpl_comment['KEY'] = $key; + $tpl_comment['IMAGE_ID'] = $comment['image_id']; + $tpl_comment['CONTENT'] = $comment['content']; + $tpl_comment['PWG_TOKEN'] = get_pwg_token(); + $tpl_comment['U_CANCEL'] = $url_self; + } + } + + if (can_manage_comment('validate', $comment['author_id'])) + { + if ('true' != $comment['validated']) + { + $tpl_comment['U_VALIDATE'] = add_url_params( + $url_self, + array( + 'validate'=> $comment['comment_id'], + 'pwg_token' => get_pwg_token(), + ) + ); + } + } + $template->append('comments', $tpl_comment); + } +} + +$derivative_params = trigger_event('get_comments_derivative_params', ImageStdParams::get_by_type(IMG_THUMB) ); +$template->assign( 'derivative_params', $derivative_params ); + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theCommentsPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_comments'); +flush_page_messages(); +$template->pparse('comments'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> \ No newline at end of file diff --git a/sources/doc/COPYING b/sources/doc/COPYING new file mode 100644 index 0000000..5b6e7c6 --- /dev/null +++ b/sources/doc/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/sources/doc/README_ca.txt b/sources/doc/README_ca.txt new file mode 100644 index 0000000..9253fa3 --- /dev/null +++ b/sources/doc/README_ca.txt @@ -0,0 +1,61 @@ +======= +Piwigo +======= + +Lloc Web: http://piwigo.org +Instal·lació: http://piwigo.org/basics/installation +Actualització: http://piwigo.org/basics/upgrade + +Com començar +============ + +Un cop instal·lat o actualitzat, la galeria està a punt per funcionar. +Situa't al directori d'instal·lació del teu navegador: + +http://el.teu.domini/photos + +A continuació, identifica't com a administrador. Apareixerà un nou enllaç +a la pàgina del menú d'identificació: Administració. Aneu al panell d'administració. + +Al panell d'administració, pren-te tot el temps que et calgui per llegir +detingudament les instruccions que expliquen com utilitzar la galeria PIWIGO. + +Comunicació +============= + +Butlletí de notícies +-------------------- + +http://piwigo.org/basics/newsletter + +És *altament* recomanable inscriu-re's al butlletí de Piwigo. +Tot i què aqusta secció té poquíssim moviment, podràs assabentar-te +de la notificació d'errors greus o del llançament de noves versions de Piwigo. + +Estigues al dia +--------------- + +http://freecode.com/projects/piwigo + +Mantinguet informat per a cada nova versió, tant estable com en desenvolupament. +El butlletí de notícies no envia notificacions de les versions en desenvolupament. + +Registre d'errors +----------------- + +http://piwigo.org/bugs + +Errors i registre i seguiment de canvis. La millor forma de tindre els errors corregits: +No te n'oblidis. (així com el fòrum). + +Documentació +------------ + +http://piwigo.org/doc + +Documentació Wiki: Tothom pot participar per millorar el contingut de la documentació. + +Fòrum +----- + +http://piwigo.org/forum diff --git a/sources/doc/README_en.txt b/sources/doc/README_en.txt new file mode 100644 index 0000000..cc842da --- /dev/null +++ b/sources/doc/README_en.txt @@ -0,0 +1,62 @@ +======= +Piwigo +======= + +website: http://piwigo.org +Installation: http://piwigo.org/basics/installation +Upgrade: http://piwigo.org/basics/upgrade + +How to start +============ + +Once installed or upgraded, your gallery is ready to run. Start by +displaying the installation directory in your browser : + +http://your.domain/photos + +Then identify as an administrator. A new link in Identification menu of main +page will appear : Administration. Enter the administration panel. + +In the administration panel, take all your time for reading instructions +explaining how to use your gallery. + +Communication +============= + +Newsletter +---------- + +http://piwigo.org/basics/newsletter + +It is *highly* recommended to subscribe to Piwigo newsletter. This is +extremely low-traffic, but will provide you with announcements of new +Piwigo releases and serious bug notification. + +Freshmeat +--------- + +http://freecode.com/projects/piwigo + +Want to stay informed at each release, stable and development +release. Development releases notification are not send in the newsletter. + +Bugtracker +---------- + +http://piwigo.org/bugs + +Bugs and change requests tracking. The best way to have your bug corrected: +it won't be forgotten (as in the forum). + +Documentation +------------- + +http://piwigo.org/doc + +Wiki documentation: everyone can participate to improve documentation +content. + +Forum +----- + +http://piwigo.org/forum diff --git a/sources/doc/README_fr.txt b/sources/doc/README_fr.txt new file mode 100644 index 0000000..7e9479e --- /dev/null +++ b/sources/doc/README_fr.txt @@ -0,0 +1,74 @@ +======= +Piwigo +======= + +Site web: http://fr.piwigo.org +Installation: http://fr.piwigo.org/basics/installation +Mise jour: http://fr.piwigo.org/basics/upgrade + +Prendre un bon dpart +===================== + +Une fois installe ou mise jour, votre galerie est prte +fonctionner. Commencez par vous rendre sur le rpertoire d'installation dans +votre navigateur : + +http://votre.domaine/photos + +Ensuite, identifiez-vous en tant qu'un administrateur. Un nouveau lien dans +le menu d'identification de la page principale va apparatre : +Administration. Suivre ce lien :-) + +Dans la zone d'administration, prenez tout le temps ncessaire pour +consulter les instructions, expliquant comment utiliser votre galerie. + +Communication +============= + +Newsletter +---------- + +http://fr.piwigo.org/basics/newsletter + +Il est *fortement* recommand de souscrire la newsletter de +Piwigo. Trs peu de mails sont envoys, mais les informations sont +importantes : nouvelles versions de l'application, notification de bugs +importants (relatifs la scurit). + +Freshmeat +--------- + +http://freecode.com/projects/piwigo + +Permet d'tre au courant des sorties de toutes les releases, et en +exclusivit les builds de la branche de dveloppement (ce qui n'est pas +prvu sur les mailing lists "announce"). + +Outil de suivi de bogues +------------------------ + +http://piwigo.org/bugs + +Gestion des bugs, mais aussi demande de nouvelles fonctionnalits. Rien de +plus efficace pour qu'un bug soit corrig : tant qu'il ne l'est pas, la +"fiche" reste l attendre, on ne l'oublie pas comme un topic sur le +forum. + +Les demandes d'volutions sont galement gres dans cet outil. Ce n'est pas +forcment idal car il ne s'agit pas de la mme chose, mais le suivi du dev +d'une nouvelle fonctionnalit peut se modliser de la mme faon que le +suivi de la correction d'un bug. + +Documentation +------------- + +http://fr.piwigo.org/doc + +Forum de discussion +------------------- + +http://fr.piwigo.org/forum + +Un forum est disponible et recommand pour toutes les questions autres que +les demandes d'volution et rapport de bogue (installation, discussions +techniques). diff --git a/sources/doc/index.php b/sources/doc/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/doc/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/feed.php b/sources/feed.php new file mode 100644 index 0000000..24e9f68 --- /dev/null +++ b/sources/feed.php @@ -0,0 +1,201 @@ +'.generate_key(50).''; +if ( !empty($feed_id) ) +{ + $query = ' +SELECT user_id, + last_check + FROM '.USER_FEED_TABLE.' + WHERE id = \''.$feed_id.'\' +;'; + $feed_row = pwg_db_fetch_assoc(pwg_query($query)); + if ( empty($feed_row) ) + { + page_not_found(l10n('Unknown feed identifier')); + } + if ($feed_row['user_id']!=$user['id']) + { // new user + $user = build_user( $feed_row['user_id'], true ); + } +} +else +{ + $image_only = true; + if (!is_a_guest()) + {// auto session was created - so switch to guest + $user = build_user( $conf['guest_id'], true ); + } +} + +// Check the status now after the user has been loaded +check_status(ACCESS_GUEST); + +list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();')); + +include_once(PHPWG_ROOT_PATH.'include/feedcreator.class.php'); + +set_make_full_url(); + +$rss = new UniversalFeedCreator(); +$rss->encoding=get_pwg_charset(); +$rss->title = $conf['gallery_title']; +$rss->title.= ' (as '.stripslashes($user['username']).')'; + +$rss->link = get_gallery_home_url(); + +// +-----------------------------------------------------------------------+ +// | Feed creation | +// +-----------------------------------------------------------------------+ + +$news = array(); +if (!$image_only) +{ + $news = news($feed_row['last_check'], $dbnow, true, true); + + if (count($news) > 0) + { + $item = new FeedItem(); + $item->title = l10n('New on %s', format_date($dbnow) ); + $item->link = get_gallery_home_url(); + + // content creation + $item->description = '
      '; + foreach ($news as $line) + { + $item->description.= '
    • '.$line.'
    • '; + } + $item->description.= '
    '; + $item->descriptionHtmlSyndicated = true; + + $item->date = ts_to_iso8601(datetime_to_ts($dbnow)); + $item->author = $conf['rss_feed_author']; + $item->guid= sprintf('%s', $dbnow);; + + $rss->addItem($item); + + $query = ' +UPDATE '.USER_FEED_TABLE.' + SET last_check = \''.$dbnow.'\' + WHERE id = \''.$feed_id.'\' +;'; + pwg_query($query); + } +} + +if ( !empty($feed_id) and empty($news) ) +{// update the last check from time to time to avoid deletion by maintenance tasks + if ( !isset($feed_row['last_check']) + or time()-datetime_to_ts($feed_row['last_check']) > 30*24*3600 ) + { + $query = ' +UPDATE '.USER_FEED_TABLE.' + SET last_check = '.pwg_db_get_recent_period_expression(-15, $dbnow).' + WHERE id = \''.$feed_id.'\' +;'; + pwg_query($query); + } +} + +$dates = get_recent_post_dates_array($conf['recent_post_dates']['RSS']); + +foreach($dates as $date_detail) +{ // for each recent post date we create a feed item + $item = new FeedItem(); + $date = $date_detail['date_available']; + $item->title = get_title_recent_post_date($date_detail); + $item->link = make_index_url( + array( + 'chronology_field' => 'posted', + 'chronology_style'=> 'monthly', + 'chronology_view' => 'calendar', + 'chronology_date' => explode('-', substr($date,0,10) ) + ) + ); + + $item->description .= + ''.$conf['gallery_title'].'
    '; + + $item->description .= get_html_description_recent_post_date($date_detail); + + $item->descriptionHtmlSyndicated = true; + + $item->date = ts_to_iso8601(datetime_to_ts($date)); + $item->author = $conf['rss_feed_author']; + $item->guid= sprintf('%s', 'pics-'.$date);; + + $rss->addItem($item); +} + +$fileName= PHPWG_ROOT_PATH.$conf['data_location'].'tmp'; +mkgetdir($fileName); // just in case +$fileName.='/feed.xml'; +// send XML feed +echo $rss->saveFeed('RSS2.0', $fileName, true); +?> \ No newline at end of file diff --git a/sources/galleries/index.php b/sources/galleries/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/galleries/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/i.php b/sources/i.php new file mode 100644 index 0000000..8ca3b68 --- /dev/null +++ b/sources/i.php @@ -0,0 +1,630 @@ +=400) + { + $protocol = $_SERVER["SERVER_PROTOCOL"]; + if ( ('HTTP/1.1' != $protocol) && ('HTTP/1.0' != $protocol) ) + $protocol = 'HTTP/1.0'; + + header( "$protocol $code $msg", true, $code ); + } + //todo improve + echo $msg; + ilog('ERROR', $code, $msg, $_SERVER['REQUEST_URI']); + exit; +} + +function time_step( &$step ) +{ + $tmp = $step; + $step = microtime(true); + return intval(1000*($step - $tmp)); +} + +function url_to_size($s) +{ + $pos = strpos($s, 'x'); + if ($pos===false) + { + return array((int)$s, (int)$s); + } + return array((int)substr($s,0,$pos), (int)substr($s,$pos+1)); +} + +function parse_custom_params($tokens) +{ + if (count($tokens)<1) + ierror('Empty array while parsing Sizing', 400); + + $crop = 0; + $min_size = null; + + $token = array_shift($tokens); + if ($token[0]=='s') + { + $size = url_to_size( substr($token,1) ); + } + elseif ($token[0]=='e') + { + $crop = 1; + $size = $min_size = url_to_size( substr($token,1) ); + } + else + { + $size = url_to_size( $token ); + if (count($tokens)<2) + ierror('Sizing arr', 400); + + $token = array_shift($tokens); + $crop = char_to_fraction($token); + + $token = array_shift($tokens); + $min_size = url_to_size( $token ); + } + return new DerivativeParams( new SizingParams($size, $crop, $min_size) ); +} + +function parse_request() +{ + global $conf, $page; + + if ( $conf['question_mark_in_urls']==false and + isset($_SERVER["PATH_INFO"]) and !empty($_SERVER["PATH_INFO"]) ) + { + $req = $_SERVER["PATH_INFO"]; + $req = str_replace('//', '/', $req); + $path_count = count( explode('/', $req) ); + $page['root_path'] = PHPWG_ROOT_PATH.str_repeat('../', $path_count-1); + } + else + { + $req = $_SERVER["QUERY_STRING"]; + if ($pos=strpos($req, '&')) + { + $req = substr($req, 0, $pos); + } + $req = rawurldecode($req); + /*foreach (array_keys($_GET) as $keynum => $key) + { + $req = $key; + break; + }*/ + $page['root_path'] = PHPWG_ROOT_PATH; + } + + $req = ltrim($req, '/'); + + foreach (preg_split('#/+#', $req) as $token) + { + preg_match($conf['sync_chars_regex'], $token) or ierror('Invalid chars in request', 400); + } + + $page['derivative_path'] = PHPWG_ROOT_PATH.PWG_DERIVATIVE_DIR.$req; + + $pos = strrpos($req, '.'); + $pos!== false || ierror('Missing .', 400); + $ext = substr($req, $pos); + $page['derivative_ext'] = $ext; + $req = substr($req, 0, $pos); + + $pos = strrpos($req, '-'); + $pos!== false || ierror('Missing -', 400); + $deriv = substr($req, $pos+1); + $req = substr($req, 0, $pos); + + $deriv = explode('_', $deriv); + foreach (ImageStdParams::get_defined_type_map() as $type => $params) + { + if ( derivative_to_url($type) == $deriv[0]) + { + $page['derivative_type'] = $type; + $page['derivative_params'] = $params; + break; + } + } + + if (!isset($page['derivative_type'])) + { + if (derivative_to_url(IMG_CUSTOM) == $deriv[0]) + { + $page['derivative_type'] = IMG_CUSTOM; + } + else + { + ierror('Unknown parsing type', 400); + } + } + array_shift($deriv); + + if ($page['derivative_type'] == IMG_CUSTOM) + { + $params = $page['derivative_params'] = parse_custom_params($deriv); + ImageStdParams::apply_global($params); + + if ($params->sizing->ideal_size[0] < 20 or $params->sizing->ideal_size[1] < 20) + { + ierror('Invalid size', 400); + } + if ($params->sizing->max_crop < 0 or $params->sizing->max_crop > 1) + { + ierror('Invalid crop', 400); + } + $greatest = ImageStdParams::get_by_type(IMG_XXLARGE); + + $key = array(); + $params->add_url_tokens($key); + $key = implode('_', $key); + if (!isset(ImageStdParams::$custom[$key])) + { + ierror('Size not allowed', 403); + } + } + + if (is_file(PHPWG_ROOT_PATH.$req.$ext)) + { + $req = './'.$req; // will be used to match #iamges.path + } + elseif (is_file(PHPWG_ROOT_PATH.'../'.$req.$ext)) + { + $req = '../'.$req; + } + + $page['src_location'] = $req.$ext; + $page['src_path'] = PHPWG_ROOT_PATH.$page['src_location']; + $page['src_url'] = $page['root_path'].$page['src_location']; +} + +function try_switch_source(DerivativeParams $params, $original_mtime) +{ + global $page; + if (!isset($page['original_size'])) + return false; + + $original_size = $page['original_size']; + if ($page['rotation_angle']==90 || $page['rotation_angle']==270) + { + $tmp = $original_size[0]; + $original_size[0] = $original_size[1]; + $original_size[1] = $tmp; + } + $dsize = $params->compute_final_size($original_size); + + $use_watermark = $params->use_watermark; + if ($use_watermark) + { + $use_watermark = $params->will_watermark($dsize); + } + + $candidates = array(); + foreach(ImageStdParams::get_defined_type_map() as $candidate) + { + if ($candidate->type == $params->type) + continue; + if ($candidate->use_watermark != $use_watermark) + continue; + if ($candidate->max_width() < $params->max_width() || $candidate->max_height() < $params->max_height()) + continue; + $candidate_size = $candidate->compute_final_size($original_size); + if ($dsize != $params->compute_final_size($candidate_size)) + continue; + + if ($params->sizing->max_crop==0) + { + if ($candidate->sizing->max_crop!=0) + continue; + } + else + { + if ($candidate->sizing->max_crop!=0) + continue; // this could be optimized + if ($candidate_size[0] < $params->sizing->min_size[0] || $candidate_size[1] < $params->sizing->min_size[1] ) + continue; + } + $candidates[] = $candidate; + } + + foreach( array_reverse($candidates) as $candidate) + { + $candidate_path = $page['derivative_path']; + $candidate_path = str_replace( '-'.derivative_to_url($params->type), '-'.derivative_to_url($candidate->type), $candidate_path); + $candidate_mtime = @filemtime($candidate_path); + if ($candidate_mtime === false + || $candidate_mtime < $original_mtime + || $candidate_mtime < $candidate->last_mod_time) + continue; + $params->use_watermark = false; + $params->sharpen = min(1, $params->sharpen); + $page['src_path'] = $candidate_path; + $page['src_url'] = $page['root_path'] . substr($candidate_path, strlen(PHPWG_ROOT_PATH)); + $page['rotation_angle'] = 0; + return true; + } + return false; +} + +function send_derivative($expires) +{ + global $page; + + if (isset($_GET['ajaxload']) and $_GET['ajaxload'] == 'true') + { + include_once(PHPWG_ROOT_PATH.'include/functions_cookie.inc.php'); + include_once(PHPWG_ROOT_PATH.'include/functions_url.inc.php'); + + echo json_encode( array( 'url'=>embellish_url(get_absolute_root_url().$page['derivative_path']) ) ); + return; + } + $fp = fopen($page['derivative_path'], 'rb'); + + $fstat = fstat($fp); + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $fstat['mtime']).' GMT'); + if ($expires!==false) + { + header('Expires: '.gmdate('D, d M Y H:i:s', $expires).' GMT'); + } + header('Content-length: '.$fstat['size']); + header('Connection: close'); + + $ctype="application/octet-stream"; + switch (strtolower($page['derivative_ext'])) + { + case ".jpe": case ".jpeg": case ".jpg": $ctype="image/jpeg"; break; + case ".png": $ctype="image/png"; break; + case ".gif": $ctype="image/gif"; break; + } + header("Content-Type: $ctype"); + + fpassthru($fp); + fclose($fp); +} + +$page=array(); +$begin = $step = microtime(true); +$timing=array(); +foreach( explode(',','load,rotate,crop,scale,sharpen,watermark,save,send') as $k ) +{ + $timing[$k] = ''; +} + +include_once(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php'); +include_once( PHPWG_ROOT_PATH .'/include/derivative_params.inc.php'); +include_once( PHPWG_ROOT_PATH .'/include/derivative_std_params.inc.php'); + +try +{ + pwg_db_connect($conf['db_host'], $conf['db_user'], + $conf['db_password'], $conf['db_base']); +} +catch (Exception $e) +{ + ilog("db error", $e->getMessage()); +} +pwg_db_check_charset(); + +list($conf['derivatives']) = pwg_db_fetch_row(pwg_query('SELECT value FROM '.$prefixeTable.'config WHERE param=\'derivatives\'')); +ImageStdParams::load_from_db(); + + +parse_request(); +//var_export($page); + +$params = $page['derivative_params']; + +$src_mtime = @filemtime($page['src_path']); +if ($src_mtime === false) +{ + ierror('Source not found', 404); +} + +$need_generate = false; +$derivative_mtime = @filemtime($page['derivative_path']); +if ($derivative_mtime === false or + $derivative_mtime < $src_mtime or + $derivative_mtime < $params->last_mod_time) +{ + $need_generate = true; +} + +$expires=false; +$now = time(); +if ( isset($_GET['b']) ) +{ + $expires = $now + 100; + header("Cache-control: no-store, max-age=100"); +} +elseif ( $now > (max($src_mtime, $params->last_mod_time) + 24*3600) ) +{// somehow arbitrary - if derivative params or src didn't change for the last 24 hours, we send an expire header for several days + $expires = $now + 10*24*3600; +} + +if (!$need_generate) +{ + if ( isset( $_SERVER['HTTP_IF_MODIFIED_SINCE'] ) + and strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) == $derivative_mtime) + {// send the last mod time of the file back + header('Last-Modified: '.gmdate('D, d M Y H:i:s', $derivative_mtime).' GMT', true, 304); + header('Expires: '.gmdate('D, d M Y H:i:s', time()+10*24*3600).' GMT', true, 304); + exit; + } + send_derivative($expires); + exit; +} + +include_once(PHPWG_ROOT_PATH . 'admin/include/image.class.php'); +$page['coi'] = null; +if (strpos($page['src_location'], '/pwg_representative/')===false + && strpos($page['src_location'], 'themes/')===false + && strpos($page['src_location'], 'plugins/')===false) +{ + try + { + $query = ' +SELECT * + FROM '.$prefixeTable.'images + WHERE path=\''.$page['src_location'].'\' +;'; + + if ( ($row=pwg_db_fetch_assoc(pwg_query($query))) ) + { + if (isset($row['width'])) + { + $page['original_size'] = array($row['width'],$row['height']); + } + $page['coi'] = $row['coi']; + + if (!isset($row['rotation'])) + { + $page['rotation_angle'] = pwg_image::get_rotation_angle($page['src_path']); + + single_update( + $prefixeTable.'images', + array('rotation' => pwg_image::get_rotation_code_from_angle($page['rotation_angle'])), + array('id' => $row['id']) + ); + } + else + { + $page['rotation_angle'] = pwg_image::get_rotation_angle_from_code($row['rotation']); + } + } + if (!$row) + { + ierror('Db file path not found', 404); + } + } + catch (Exception $e) + { + ilog("db error", $e->getMessage()); + } +} +else +{ + $page['rotation_angle'] = 0; +} +pwg_db_close(); + +if (!try_switch_source($params, $src_mtime) && $params->type==IMG_CUSTOM) +{ + $sharpen = 0; + foreach (ImageStdParams::get_defined_type_map() as $std_params) + { + $sharpen += $std_params->sharpen; + } + $params->sharpen = round($sharpen / count(ImageStdParams::get_defined_type_map()) ); +} + +if (!mkgetdir(dirname($page['derivative_path']))) +{ + ierror("dir create error", 500); +} + +ignore_user_abort(true); +@set_time_limit(0); + +$image = new pwg_image($page['src_path']); +$timing['load'] = time_step($step); + +$changes = 0; + +// rotate +if (0 != $page['rotation_angle']) +{ + $image->rotate($page['rotation_angle']); + $changes++; + $timing['rotate'] = time_step($step); +} + +// Crop & scale +$o_size = $d_size = array($image->get_width(),$image->get_height()); +$params->sizing->compute($o_size , $page['coi'], $crop_rect, $scaled_size ); +if ($crop_rect) +{ + $changes++; + $image->crop( $crop_rect->width(), $crop_rect->height(), $crop_rect->l, $crop_rect->t); + $timing['crop'] = time_step($step); +} + +if ($scaled_size) +{ + $changes++; + $image->resize( $scaled_size[0], $scaled_size[1] ); + $d_size = $scaled_size; + $timing['scale'] = time_step($step); +} + +if ($params->sharpen) +{ + $changes += $image->sharpen( $params->sharpen ); + $timing['sharpen'] = time_step($step); +} + +if ($params->will_watermark($d_size)) +{ + $wm = ImageStdParams::get_watermark(); + $wm_image = new pwg_image(PHPWG_ROOT_PATH.$wm->file); + $wm_size = array($wm_image->get_width(),$wm_image->get_height()); + if ($d_size[0]<$wm_size[0] or $d_size[1]<$wm_size[1]) + { + $wm_scaling_params = SizingParams::classic($d_size[0], $d_size[1]); + $wm_scaling_params->compute($wm_size, null, $tmp, $wm_scaled_size); + $wm_size = $wm_scaled_size; + $wm_image->resize( $wm_scaled_size[0], $wm_scaled_size[1] ); + } + $x = round( ($wm->xpos/100)*($d_size[0]-$wm_size[0]) ); + $y = round( ($wm->ypos/100)*($d_size[1]-$wm_size[1]) ); + if ($image->compose($wm_image, $x, $y, $wm->opacity)) + { + $changes++; + if ($wm->xrepeat) + { + // todo + $pad = $wm_size[0] + max(30, round($wm_size[0]/4)); + for($i=-$wm->xrepeat; $i<=$wm->xrepeat; $i++) + { + if (!$i) continue; + $x2 = $x + $i * $pad; + if ($x2>=0 && $x2+$wm_size[0]<$d_size[0]) + if (!$image->compose($wm_image, $x2, $y, $wm->opacity)) + break; + } + } + } + $wm_image->destroy(); + $timing['watermark'] = time_step($step); +} + +// no change required - redirect to source +if (!$changes) +{ + header("X-i: No change"); + ierror( $page['src_url'], 301); +} + +if ($d_size[0]*$d_size[1] < $conf['derivatives_strip_metadata_threshold']) +{// strip metadata for small images + $image->strip(); +} + +$image->set_compression_quality( ImageStdParams::$quality ); +$image->write( $page['derivative_path'] ); +$image->destroy(); +@chmod($page['derivative_path'], 0644); +$timing['save'] = time_step($step); + +send_derivative($expires); +$timing['send'] = time_step($step); + +ilog('perf', + basename($page['src_path']), $o_size, $o_size[0]*$o_size[1], + basename($page['derivative_path']), $d_size, $d_size[0]*$d_size[1], + function_exists('memory_get_peak_usage') ? round( memory_get_peak_usage()/(1024*1024), 1) : '', + time_step($begin), + '|', $timing); +?> \ No newline at end of file diff --git a/sources/identification.php b/sources/identification.php new file mode 100644 index 0000000..c9fc360 --- /dev/null +++ b/sources/identification.php @@ -0,0 +1,113 @@ +set_filenames( array('identification'=>'identification.tpl') ); + +$template->assign( + array( + 'U_REDIRECT' => $redirect_to, + + 'F_LOGIN_ACTION' => get_root_url().'identification.php', + 'authorize_remembering' => $conf['authorize_remembering'], + )); + +if (!$conf['gallery_locked'] && $conf['allow_user_registration']) +{ + $template->assign('U_REGISTER', get_root_url().'register.php' ); +} + +if (!$conf['gallery_locked']) +{ + $template->assign('U_LOST_PASSWORD', get_root_url().'password.php' ); +} + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!$conf['gallery_locked'] && (!isset($themeconf['hide_menu_on']) OR !in_array('theIdentificationPage', $themeconf['hide_menu_on']))) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +//----------------------------------------------------------- html code display +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_identification'); +flush_page_messages(); +$template->pparse('identification'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> diff --git a/sources/include/block.class.php b/sources/include/block.class.php new file mode 100644 index 0000000..966573a --- /dev/null +++ b/sources/include/block.class.php @@ -0,0 +1,337 @@ +id = $id; + } + + /** + * Triggers a notice that allows plugins of menu blocks to register the blocks. + */ + public function load_registered_blocks() + { + trigger_action('blockmanager_register_blocks', array(&$this)); + } + + /** + * @return string + */ + public function get_id() + { + return $this->id; + } + + /** + * @return RegisteredBlock[] + */ + public function get_registered_blocks() + { + return $this->registered_blocks; + } + + /** + * Add a block with the menu. Usually called in 'blockmanager_register_blocks' event. + * + * @param RegisteredBlock &$block + */ + public function register_block(&$block) + { + if (isset($this->registered_blocks[$block->get_id()])) + { + trigger_error("Block '".$block->get_id()."' is already registered", E_USER_WARNING); + return false; + } + $this->registered_blocks[$block->get_id()] = &$block; + return true; + } + + /** + * Performs one time preparation of registered blocks for display. + * Triggers 'blockmanager_prepare_display' event where plugins can + * reposition or hide blocks + */ + public function prepare_display() + { + global $conf; + $conf_id = 'blk_'.$this->id; + $mb_conf = isset($conf[$conf_id]) ? $conf[$conf_id] : array(); + if (!is_array($mb_conf)) + { + $mb_conf = @unserialize($mb_conf); + } + + $idx = 1; + foreach ($this->registered_blocks as $id => $block) + { + $pos = isset($mb_conf[$id]) ? $mb_conf[$id] : $idx*50; + if ($pos>0) + { + $this->display_blocks[$id] = new DisplayBlock($block); + $this->display_blocks[$id]->set_position($pos); + } + $idx++; + } + $this->sort_blocks(); + trigger_action('blockmanager_prepare_display', array(&$this)); + $this->sort_blocks(); + } + + /** + * Returns true if the block is hidden. + * + * @param string $block_id + * @return bool + */ + public function is_hidden($block_id) + { + return !isset($this->display_blocks[$block_id]); + } + + /** + * Remove a block from the displayed blocks. + * + * @param string $block_id + */ + public function hide_block($block_id) + { + unset($this->display_blocks[$block_id]); + } + + /** + * Returns a visible block. + * + * @param string $block_id + * @return &DisplayBlock|null + */ + public function &get_block($block_id) + { + $tmp = null; + if (isset($this->display_blocks[$block_id])) + { + return $this->display_blocks[$block_id]; + } + return $tmp; + } + + /** + * Changes the position of a block. + * + * @param string $block_id + * @param int $position + */ + public function set_block_position($block_id, $position) + { + if (isset($this->display_blocks[$block_id])) + { + $this->display_blocks[$block_id]->set_position($position); + } + } + + /** + * Sorts the blocks. + */ + protected function sort_blocks() + { + uasort($this->display_blocks, array('BlockManager', 'cmp_by_position')); + } + + /** + * Callback for blocks sorting. + */ + static protected function cmp_by_position($a, $b) + { + return $a->get_position() - $b->get_position(); + } + + /** + * Parse the menu and assign the result in a template variable. + * + * @param string $var + * @param string $file + */ + public function apply($var, $file) + { + global $template; + + $template->set_filename('menubar', $file); + trigger_action('blockmanager_apply', array(&$this) ); + + foreach ($this->display_blocks as $id=>$block) + { + if (empty($block->raw_content) and empty($block->template)) + { + $this->hide_block($id); + } + } + $this->sort_blocks(); + $template->assign('blocks', $this->display_blocks); + $template->assign_var_from_handle($var, 'menubar'); + } +} + + +/** + * Represents a menu block registered in a BlockManager object. + */ +class RegisteredBlock +{ + /** @var string */ + protected $id; + /** @var string */ + protected $name; + /** @var string */ + protected $owner; + + /** + * @param string $id + * @param string $name + * @param string $owner + */ + public function __construct($id, $name, $owner) + { + $this->id = $id; + $this->name = $name; + $this->owner = $owner; + } + + /** + * @return string + */ + public function get_id() + { + return $this->id; + } + + /** + * @return string + */ + public function get_name() + { + return $this->name; + } + + /** + * @return string + */ + public function get_owner() + { + return $this->owner; + } +} + + +/** + * Represents a menu block ready for display in the BlockManager object. + */ +class DisplayBlock +{ + /** @var RegisteredBlock */ + protected $_registeredBlock; + /** @var int */ + protected $_position; + /** @var string */ + protected $_title; + + /** @var mixed */ + public $data; + /** @var string */ + public $template; + /** @var string */ + public $raw_content; + + /** + * @param RegisteredBlock &$block + */ + public function __construct($block) + { + $this->_registeredBlock = &$block; + } + + /** + * @return &RegisteredBlock + */ + public function &get_block() + { + return $this->_registeredBlock; + } + + /** + * @return int + */ + public function get_position() + { + return $this->_position; + } + + /** + * @param int $position + */ + public function set_position($position) + { + $this->_position = $position; + } + + /** + * @return string + */ + public function get_title() + { + if (isset($this->_title)) + { + return $this->_title; + } + else + { + return $this->_registeredBlock->get_name(); + } + } + + /** + * @param string + */ + public function set_title($title) + { + $this->_title = $title; + } +} + +?> \ No newline at end of file diff --git a/sources/include/calendar_base.class.php b/sources/include/calendar_base.class.php new file mode 100644 index 0000000..ac2d33c --- /dev/null +++ b/sources/include/calendar_base.class.php @@ -0,0 +1,376 @@ +date_field = 'date_available'; + } + else + { + $this->date_field = 'date_creation'; + } + $this->inner_sql = $inner_sql; + } + + /** + * Returns the calendar title (with HTML). + * + * @return string + */ + function get_display_name() + { + global $conf, $page; + $res = ''; + + for ($i=0; $i$chronology_date ), + array( 'start' ) + ); + $res .= + '' + .$this->get_date_component_label($i, $page['chronology_date'][$i]) + .''; + } + else + { + $res .= + '' + .$this->get_date_component_label($i, $page['chronology_date'][$i]) + .''; + } + } + return $res; + } + + /** + * Returns a display name for a date component optionally using labels. + * + * @return string + */ + protected function get_date_component_label($level, $date_component) + { + $label = $date_component; + if (isset($this->calendar_levels[$level]['labels'][$date_component])) + { + $label = $this->calendar_levels[$level]['labels'][$date_component]; + } + elseif ('any' === $date_component ) + { + $label = l10n('All'); + } + return $label; + } + + /** + * Gets a nice display name for a date to be shown in previous/next links + * + * @param string $date + * @return string + */ + protected function get_date_nice_name($date) + { + $date_components = explode('-', $date); + $res = ''; + for ($i=count($date_components)-1; $i>=0; $i--) + { + if ('any' !== $date_components[$i]) + { + $label = $this->get_date_component_label($i, $date_components[$i] ); + if ( $res!='' ) + { + $res .= ' '; + } + $res .= $label; + } + } + return $res; + } + + /** + * Creates a calendar navigation bar. + * + * @param array $date_components + * @param array $items - hash of items to put in the bar (e.g. 2005,2006) + * @param bool $show_any - adds any link to the end of the bar + * @param bool $show_empty - shows all labels even those without items + * @param array $labels - optional labels for items (e.g. Jan,Feb,...) + * @return string + */ + protected function get_nav_bar_from_items($date_components, $items, + $show_any, + $show_empty=false, $labels=null) + { + global $conf, $page, $template; + + $nav_bar_datas=array(); + + if ($conf['calendar_show_empty'] and $show_empty and !empty($labels) ) + { + foreach ($labels as $item => $label) + { + if ( ! isset($items[$item]) ) + { + $items[$item] = -1; + } + } + ksort($items); + } + + foreach ($items as $item => $nb_images) + { + $label = $item; + if (isset($labels[$item])) + { + $label = $labels[$item]; + } + if ($nb_images==-1) + { + $tmp_datas=array( + 'LABEL'=> $label + ); + } + else + { + $url = duplicate_index_url( + array('chronology_date'=>array_merge($date_components,array($item))), + array( 'start' ) + ); + $tmp_datas=array( + 'LABEL'=> $label, + 'URL' => $url + ); + } + if ($nb_images > 0) + { + $tmp_datas['NB_IMAGES']=$nb_images; + } + $nav_bar_datas[]=$tmp_datas; + + } + + if ($conf['calendar_show_any'] and $show_any and count($items)>1 and + count($date_components)calendar_levels)-1 ) + { + $url = duplicate_index_url( + array('chronology_date'=>array_merge($date_components,array('any'))), + array( 'start' ) + ); + $nav_bar_datas[]=array( + 'LABEL' => l10n('All'), + 'URL' => $url + ); + } + + return $nav_bar_datas; + } + + /** + * Creates a calendar navigation bar for a given level. + * + * @param int $level - 0-year, 1-month/week, 2-day + */ + protected function build_nav_bar($level, $labels=null) + { + global $template, $conf, $page; + + $query = ' +SELECT DISTINCT('.$this->calendar_levels[$level]['sql'].') as period, + COUNT(DISTINCT id) as nb_images'. +$this->inner_sql. +$this->get_date_where($level).' + GROUP BY period;'; + + $level_items = simple_hash_from_query($query, 'period', 'nb_images'); + + if ( count($level_items)==1 and + count($page['chronology_date'])calendar_levels)-1) + { + if ( ! isset($page['chronology_date'][$level]) ) + { + list($key) = array_keys($level_items); + $page['chronology_date'][$level] = (int)$key; + + if ( $levelcalendar_levels)-1 ) + { + return; + } + } + } + + $dates = $page['chronology_date']; + while ($levelget_nav_bar_from_items( + $dates, + $level_items, + true, + true, + isset($labels) ? $labels : $this->calendar_levels[$level]['labels'] + ); + + $template->append( + 'chronology_navigation_bars', + array( + 'items' => $nav_bar, + ) + ); + } + + /** + * Assigns the next/previous link to the template with regards to + * the currently choosen date. + */ + protected function build_next_prev() + { + global $template, $page; + + $prev = $next =null; + if ( empty($page['chronology_date']) ) + return; + + $sub_queries = array(); + $nb_elements = count($page['chronology_date']); + for ($i=0; $i<$nb_elements; $i++) + { + if ( 'any' === $page['chronology_date'][$i] ) + { + $sub_queries[] = '\'any\''; + } + else + { + $sub_queries[] = pwg_db_cast_to_text($this->calendar_levels[$i]['sql']); + } + } + $query = 'SELECT '.pwg_db_concat_ws($sub_queries, '-').' AS period'; + $query .= $this->inner_sql .' +AND ' . $this->date_field . ' IS NOT NULL +GROUP BY period'; + + $current = implode('-', $page['chronology_date'] ); + $upper_items = array_from_query( $query, 'period'); + + usort($upper_items, 'version_compare'); + $upper_items_rank = array_flip($upper_items); + if ( !isset($upper_items_rank[$current]) ) + { + $upper_items[] = $current;// just in case (external link) + usort($upper_items, 'version_compare'); + $upper_items_rank = array_flip($upper_items); + } + $current_rank = $upper_items_rank[$current]; + + $tpl_var = array(); + + if ( $current_rank>0 ) + { // has previous + $prev = $upper_items[$current_rank-1]; + $chronology_date = explode('-', $prev); + $tpl_var['previous'] = + array( + 'LABEL' => $this->get_date_nice_name($prev), + 'URL' => duplicate_index_url( + array('chronology_date'=>$chronology_date), array('start') + ) + ); + } + + if ( $current_rank < count($upper_items)-1 ) + { // has next + $next = $upper_items[$current_rank+1]; + $chronology_date = explode('-', $next); + $tpl_var['next'] = + array( + 'LABEL' => $this->get_date_nice_name($next), + 'URL' => duplicate_index_url( + array('chronology_date'=>$chronology_date), array('start') + ) + ); + } + + if ( !empty($tpl_var) ) + { + $existing = $template->smarty->getVariable('chronology_navigation_bars'); + if (! ($existing instanceof Undefined_Smarty_Variable)) + { + $existing->value[ sizeof($existing->value)-1 ] = + array_merge( $existing->value[ sizeof($existing->value)-1 ], $tpl_var); + } + else + { + $template->append( 'chronology_navigation_bars', $tpl_var ); + } + } + } +} + +?> \ No newline at end of file diff --git a/sources/include/calendar_monthly.class.php b/sources/include/calendar_monthly.class.php new file mode 100644 index 0000000..b9c8455 --- /dev/null +++ b/sources/include/calendar_monthly.class.php @@ -0,0 +1,497 @@ +calendar_levels = array( + array( + 'sql'=> pwg_db_get_year($this->date_field), + 'labels' => null + ), + array( + 'sql'=> pwg_db_get_month($this->date_field), + 'labels' => $lang['month'] + ), + array( + 'sql'=> pwg_db_get_dayofmonth($this->date_field), + 'labels' => null + ), + ); + } + + /** + * Generate navigation bars for category page. + * + * @return boolean false indicates that thumbnails where not included + */ + function generate_category_content() + { + global $conf, $page; + + $view_type = $page['chronology_view']; + if ($view_type==CAL_VIEW_CALENDAR) + { + global $template; + $tpl_var = array(); + if ( count($page['chronology_date'])==0 ) + {//case A: no year given - display all years+months + if ($this->build_global_calendar($tpl_var)) + { + $template->assign('chronology_calendar', $tpl_var); + return true; + } + } + + if ( count($page['chronology_date'])==1 ) + {//case B: year given - display all days in given year + if ($this->build_year_calendar($tpl_var)) + { + $template->assign('chronology_calendar', $tpl_var); + $this->build_nav_bar(CYEAR); // years + return true; + } + } + + if ( count($page['chronology_date'])==2 ) + {//case C: year+month given - display a nice month calendar + if ( $this->build_month_calendar($tpl_var) ) + { + $template->assign('chronology_calendar', $tpl_var); + } + $this->build_next_prev(); + return true; + } + } + + if ($view_type==CAL_VIEW_LIST or count($page['chronology_date'])==3) + { + if ( count($page['chronology_date'])==0 ) + { + $this->build_nav_bar(CYEAR); // years + } + if ( count($page['chronology_date'])==1) + { + $this->build_nav_bar(CMONTH); // month + } + if ( count($page['chronology_date'])==2 ) + { + $day_labels = range( 1, $this->get_all_days_in_month( + $page['chronology_date'][CYEAR] ,$page['chronology_date'][CMONTH] ) ); + array_unshift($day_labels, 0); + unset( $day_labels[0] ); + $this->build_nav_bar( CDAY, $day_labels ); // days + } + $this->build_next_prev(); + } + return false; + } + + /** + * Returns a sql WHERE subquery for the date field. + * + * @param int $max_levels (e.g. 2=only year and month) + * @return string + */ + function get_date_where($max_levels=3) + { + global $page; + + $date = $page['chronology_date']; + while (count($date)>$max_levels) + { + array_pop($date); + } + $res = ''; + if (isset($date[CYEAR]) and $date[CYEAR]!=='any') + { + $b = $date[CYEAR] . '-'; + $e = $date[CYEAR] . '-'; + if (isset($date[CMONTH]) and $date[CMONTH]!=='any') + { + $b .= sprintf('%02d-', $date[CMONTH]); + $e .= sprintf('%02d-', $date[CMONTH]); + if (isset($date[CDAY]) and $date[CDAY]!=='any') + { + $b .= sprintf('%02d', $date[CDAY]); + $e .= sprintf('%02d', $date[CDAY]); + } + else + { + $b .= '01'; + $e .= $this->get_all_days_in_month($date[CYEAR], $date[CMONTH]); + } + } + else + { + $b .= '01-01'; + $e .= '12-31'; + if (isset($date[CMONTH]) and $date[CMONTH]!=='any') + { + $res .= ' AND '.$this->calendar_levels[CMONTH]['sql'].'='.$date[CMONTH]; + } + if (isset($date[CDAY]) and $date[CDAY]!=='any') + { + $res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY]; + } + } + $res = " AND $this->date_field BETWEEN '$b' AND '$e 23:59:59'" . $res; + } + else + { + $res = ' AND '.$this->date_field.' IS NOT NULL'; + if (isset($date[CMONTH]) and $date[CMONTH]!=='any') + { + $res .= ' AND '.$this->calendar_levels[CMONTH]['sql'].'='.$date[CMONTH]; + } + if (isset($date[CDAY]) and $date[CDAY]!=='any') + { + $res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY]; + } + } + return $res; + } + + /** + * Returns an array with all the days in a given month. + * + * @param int $year + * @param int $month + * @return int[] + */ + protected function get_all_days_in_month($year, $month) + { + $md= array(1=>31,28,31,30,31,30,31,31,30,31,30,31); + + if ( is_numeric($year) and $month==2) + { + $nb_days = $md[2]; + if ( ($year%4==0) and ( ($year%100!=0) or ($year%400!=0) ) ) + { + $nb_days++; + } + } + elseif ( is_numeric($month) ) + { + $nb_days = $md[ $month ]; + } + else + { + $nb_days = 31; + } + return $nb_days; + } + + /** + * Build global calendar and assign the result in _$tpl_var_ + * + * @param array $tpl_var + * @return bool + */ + protected function build_global_calendar(&$tpl_var) + { + global $page; + + assert( count($page['chronology_date']) == 0 ); + $query=' + SELECT '.pwg_db_get_date_YYYYMM($this->date_field).' as period, + COUNT(distinct id) as count'; + $query.= $this->inner_sql; + $query.= $this->get_date_where(); + $query.= ' + GROUP BY period + ORDER BY '.pwg_db_get_year($this->date_field).' DESC, '.pwg_db_get_month($this->date_field).' ASC'; + + $result = pwg_query($query); + $items=array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $y = substr($row['period'], 0, 4); + $m = (int)substr($row['period'], 4, 2); + if ( ! isset($items[$y]) ) + { + $items[$y] = array('nb_images'=>0, 'children'=>array() ); + } + $items[$y]['children'][$m] = $row['count']; + $items[$y]['nb_images'] += $row['count']; + } + //echo ('
    '. var_export($items, true) . '
    '); + if (count($items)==1) + {// only one year exists so bail out to year view + list($y) = array_keys($items); + $page['chronology_date'][CYEAR] = $y; + return false; + } + + global $lang; + foreach ( $items as $year=>$year_data) + { + $chronology_date = array( $year ); + $url = duplicate_index_url( array('chronology_date'=>$chronology_date) ); + + $nav_bar = $this->get_nav_bar_from_items( $chronology_date, + $year_data['children'], false, false, $lang['month'] ); + + $tpl_var['calendar_bars'][] = + array( + 'U_HEAD' => $url, + 'NB_IMAGES' => $year_data['nb_images'], + 'HEAD_LABEL' => $year, + 'items' => $nav_bar, + ); + } + + return true; + } + + /** + * Build year calendar and assign the result in _$tpl_var_ + * + * @param array $tpl_var + * @return bool + */ + protected function build_year_calendar(&$tpl_var) + { + global $page; + + assert( count($page['chronology_date']) == 1 ); + $query='SELECT '.pwg_db_get_date_MMDD($this->date_field).' as period, + COUNT(DISTINCT id) as count'; + $query.= $this->inner_sql; + $query.= $this->get_date_where(); + $query.= ' + GROUP BY period + ORDER BY period ASC'; + + $result = pwg_query($query); + $items=array(); + while ($row = pwg_db_fetch_assoc($result)) + { + $m = (int)substr($row['period'], 0, 2); + $d = substr($row['period'], 2, 2); + if ( ! isset($items[$m]) ) + { + $items[$m] = array('nb_images'=>0, 'children'=>array() ); + } + $items[$m]['children'][$d] = $row['count']; + $items[$m]['nb_images'] += $row['count']; + } + if (count($items)==1) + { // only one month exists so bail out to month view + list($m) = array_keys($items); + $page['chronology_date'][CMONTH] = $m; + return false; + } + global $lang; + foreach ( $items as $month=>$month_data) + { + $chronology_date = array( $page['chronology_date'][CYEAR], $month ); + $url = duplicate_index_url( array('chronology_date'=>$chronology_date) ); + + $nav_bar = $this->get_nav_bar_from_items( $chronology_date, + $month_data['children'], false ); + + $tpl_var['calendar_bars'][] = + array( + 'U_HEAD' => $url, + 'NB_IMAGES' => $month_data['nb_images'], + 'HEAD_LABEL' => $lang['month'][$month], + 'items' => $nav_bar, + ); + } + + return true; + } + + /** + * Build month calendar and assign the result in _$tpl_var_ + * + * @param array $tpl_var + * @return bool + */ + protected function build_month_calendar(&$tpl_var) + { + global $page, $lang, $conf; + + $query='SELECT '.pwg_db_get_dayofmonth($this->date_field).' as period, + COUNT(DISTINCT id) as count'; + $query.= $this->inner_sql; + $query.= $this->get_date_where(); + $query.= ' + GROUP BY period + ORDER BY period ASC'; + + $items=array(); + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $d = (int)$row['period']; + $items[$d] = array('nb_images'=>$row['count']); + } + + foreach ( $items as $day=>$data) + { + $page['chronology_date'][CDAY]=$day; + $query = ' + SELECT id, file,representative_ext,path,width,height,rotation, '.pwg_db_get_dayofweek($this->date_field).'-1 as dow'; + $query.= $this->inner_sql; + $query.= $this->get_date_where(); + $query.= ' + ORDER BY '.DB_RANDOM_FUNCTION.'() + LIMIT 1'; + unset ( $page['chronology_date'][CDAY] ); + + $row = pwg_db_fetch_assoc(pwg_query($query)); + $derivative = new DerivativeImage(IMG_SQUARE, new SrcImage($row)); + $items[$day]['derivative'] = $derivative; + $items[$day]['file'] = $row['file']; + $items[$day]['dow'] = $row['dow']; + } + + if ( !empty($items) ) + { + list($known_day) = array_keys($items); + $known_dow = $items[$known_day]['dow']; + $first_day_dow = ($known_dow-($known_day-1))%7; + if ($first_day_dow<0) + { + $first_day_dow += 7; + } + //first_day_dow = week day corresponding to the first day of this month + $wday_labels = $lang['day']; + + if ('monday' == $conf['week_starts_on']) + { + if ($first_day_dow==0) + { + $first_day_dow = 6; + } + else + { + $first_day_dow -= 1; + } + + $wday_labels[] = array_shift($wday_labels); + } + + list($cell_width, $cell_height) = ImageStdParams::get_by_type(IMG_SQUARE)->sizing->ideal_size; + + $tpl_weeks = array(); + $tpl_crt_week = array(); + + //fill the empty days in the week before first day of this month + for ($i=0; $i<$first_day_dow; $i++) + { + $tpl_crt_week[] = array(); + } + + for ( $day = 1; + $day <= $this->get_all_days_in_month( + $page['chronology_date'][CYEAR], $page['chronology_date'][CMONTH] + ); + $day++) + { + $dow = ($first_day_dow + $day-1)%7; + if ($dow==0 and $day!=1) + { + $tpl_weeks[] = $tpl_crt_week; // add finished week to week list + $tpl_crt_week = array(); // start new week + } + + if ( !isset($items[$day]) ) + {// empty day + $tpl_crt_week[] = + array( + 'DAY' => $day + ); + } + else + { + $url = duplicate_index_url( + array( + 'chronology_date' => + array( + $page['chronology_date'][CYEAR], + $page['chronology_date'][CMONTH], + $day + ) + ) + ); + + $tpl_crt_week[] = + array( + 'DAY' => $day, + 'DOW' => $dow, + 'NB_ELEMENTS' => $items[$day]['nb_images'], + 'IMAGE' => $items[$day]['derivative']->get_url(), + 'U_IMG_LINK' => $url, + 'IMAGE_ALT' => $items[$day]['file'], + ); + } + } + //fill the empty days in the week after the last day of this month + while ( $dow<6 ) + { + $tpl_crt_week[] = array(); + $dow++; + } + $tpl_weeks[] = $tpl_crt_week; + + $tpl_var['month_view'] = + array( + 'CELL_WIDTH' => $cell_width, + 'CELL_HEIGHT' => $cell_height, + 'wday_labels' => $wday_labels, + 'weeks' => $tpl_weeks, + ); + } + + return true; + } +} + +?> \ No newline at end of file diff --git a/sources/include/calendar_weekly.class.php b/sources/include/calendar_weekly.class.php new file mode 100644 index 0000000..d35e294 --- /dev/null +++ b/sources/include/calendar_weekly.class.php @@ -0,0 +1,144 @@ +calendar_levels = array( + array( + 'sql'=> pwg_db_get_year($this->date_field), + 'labels' => null + ), + array( + 'sql'=> pwg_db_get_week($this->date_field).'+1', + 'labels' => $week_no_labels, + ), + array( + 'sql'=> pwg_db_get_dayofweek($this->date_field).'-1', + 'labels' => $lang['day'] + ), + ); + //Comment next lines for week starting on Sunday or if MySQL version<4.0.17 + //WEEK(date,5) = "0-53 - Week 1=the first week with a Monday in this year" + if ('monday' == $conf['week_starts_on']) + { + $this->calendar_levels[CWEEK]['sql'] = pwg_db_get_week($this->date_field, 5).'+1'; + $this->calendar_levels[CDAY]['sql'] = pwg_db_get_weekday($this->date_field); + $this->calendar_levels[CDAY]['labels'][] = array_shift($this->calendar_levels[CDAY]['labels']); + } + } + + /** + * Generate navigation bars for category page. + * + * @return boolean false indicates that thumbnails where not included + */ + function generate_category_content() + { + global $conf, $page; + + if ( count($page['chronology_date'])==0 ) + { + $this->build_nav_bar(CYEAR); // years + } + if ( count($page['chronology_date'])==1 ) + { + $this->build_nav_bar(CWEEK, array()); // week nav bar 1-53 + } + if ( count($page['chronology_date'])==2 ) + { + $this->build_nav_bar(CDAY); // days nav bar Mon-Sun + } + $this->build_next_prev(); + return false; + } + + /** + * Returns a sql WHERE subquery for the date field. + * + * @param int $max_levels (e.g. 2=only year and month) + * @return string + */ + function get_date_where($max_levels=3) + { + global $page; + $date = $page['chronology_date']; + while (count($date)>$max_levels) + { + array_pop($date); + } + $res = ''; + if (isset($date[CYEAR]) and $date[CYEAR]!=='any') + { + $y = $date[CYEAR]; + $res = " AND $this->date_field BETWEEN '$y-01-01' AND '$y-12-31 23:59:59'"; + } + + if (isset($date[CWEEK]) and $date[CWEEK]!=='any') + { + $res .= ' AND '.$this->calendar_levels[CWEEK]['sql'].'='.$date[CWEEK]; + } + if (isset($date[CDAY]) and $date[CDAY]!=='any') + { + $res .= ' AND '.$this->calendar_levels[CDAY]['sql'].'='.$date[CDAY]; + } + if (empty($res)) + { + $res = ' AND '.$this->date_field.' IS NOT NULL'; + } + return $res; + } +} + +?> \ No newline at end of file diff --git a/sources/include/category_cats.inc.php b/sources/include/category_cats.inc.php new file mode 100644 index 0000000..bb04829 --- /dev/null +++ b/sources/include/category_cats.inc.php @@ -0,0 +1,405 @@ + 'id'), + 'AND' + ); + +if ('recent_cats' != $page['section']) +{ + $query.= ' + ORDER BY rank'; +} + +$result = pwg_query($query); +$categories = array(); +$category_ids = array(); +$image_ids = array(); +$user_representative_updates_for = array(); + +while ($row = pwg_db_fetch_assoc($result)) +{ + $row['is_child_date_last'] = @$row['max_date_last']>@$row['date_last']; + + if (!empty($row['user_representative_picture_id'])) + { + $image_id = $row['user_representative_picture_id']; + } + elseif (!empty($row['representative_picture_id'])) + { // if a representative picture is set, it has priority + $image_id = $row['representative_picture_id']; + } + elseif ($conf['allow_random_representative']) + { // searching a random representant among elements in sub-categories + $image_id = get_random_image_in_category($row); + } + elseif ($row['count_categories']>0 and $row['count_images']>0) + { // searching a random representant among representant of sub-categories + $query = ' +SELECT representative_picture_id + FROM '.CATEGORIES_TABLE.' INNER JOIN '.USER_CACHE_CATEGORIES_TABLE.' + ON id = cat_id and user_id = '.$user['id'].' + WHERE uppercats LIKE \''.$row['uppercats'].',%\' + AND representative_picture_id IS NOT NULL' + .get_sql_condition_FandF + ( + array + ( + 'visible_categories' => 'id', + ), + "\n AND" + ).' + ORDER BY '.DB_RANDOM_FUNCTION.'() + LIMIT 1 +;'; + $subresult = pwg_query($query); + if (pwg_db_num_rows($subresult) > 0) + { + list($image_id) = pwg_db_fetch_row($subresult); + } + } + + + if (isset($image_id)) + { + if ($conf['representative_cache_on_subcats'] and $row['user_representative_picture_id'] != $image_id) + { + $user_representative_updates_for[ $row['id'] ] = $image_id; + } + + $row['representative_picture_id'] = $image_id; + $image_ids[] = $image_id; + $categories[] = $row; + $category_ids[] = $row['id']; + } + unset($image_id); +} + +if ($conf['display_fromto']) +{ + $dates_of_category = array(); + if (count($category_ids) > 0) + { + $query = ' +SELECT + category_id, + MIN(date_creation) AS date_creation_min, + MAX(date_creation) AS date_creation_max + FROM '.IMAGE_CATEGORY_TABLE.' + INNER JOIN '.IMAGES_TABLE.' ON image_id = id + WHERE category_id IN ('.implode(',', $category_ids).') +'.get_sql_condition_FandF + ( + array + ( + 'visible_categories' => 'category_id', + 'visible_images' => 'id' + ), + 'AND' + ).' + GROUP BY category_id +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $dates_of_category[ $row['category_id'] ] = array( + 'from' => $row['date_creation_min'], + 'to' => $row['date_creation_max'], + ); + } + } +} + +if ($page['section']=='recent_cats') +{ + usort($categories, 'global_rank_compare'); +} + +if (count($categories) > 0) +{ + $infos_of_image = array(); + $new_image_ids = array(); + + $query = ' +SELECT * + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $image_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if ($row['level'] <= $user['level']) + { + $infos_of_image[$row['id']] = $row; + } + else + { + // problem: we must not display the thumbnail of a photo which has a + // higher privacy level than user privacy level + // + // * what is the represented category? + // * find a random photo matching user permissions + // * register it at user_representative_picture_id + // * set it as the representative_picture_id for the category + + foreach ($categories as &$category) + { + if ($row['id'] == $category['representative_picture_id']) + { + // searching a random representant among elements in sub-categories + $image_id = get_random_image_in_category($category); + + if (isset($image_id) and !in_array($image_id, $image_ids)) + { + $new_image_ids[] = $image_id; + } + + if ($conf['representative_cache_on_level']) + { + $user_representative_updates_for[ $category['id'] ] = $image_id; + } + + $category['representative_picture_id'] = $image_id; + } + } + unset($category); + } + } + + if (count($new_image_ids) > 0) + { + $query = ' +SELECT * + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $new_image_ids).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $infos_of_image[$row['id']] = $row; + } + } + + foreach ($infos_of_image as &$info) + { + $info['src_image'] = new SrcImage($info); + } + unset($info); +} + +if (count($user_representative_updates_for)) +{ + $updates = array(); + + foreach ($user_representative_updates_for as $cat_id => $image_id) + { + $updates[] = + array( + 'user_id' => $user['id'], + 'cat_id' => $cat_id, + 'user_representative_picture_id' => $image_id, + ); + } + + mass_updates( + USER_CACHE_CATEGORIES_TABLE, + array( + 'primary' => array('user_id', 'cat_id'), + 'update' => array('user_representative_picture_id') + ), + $updates + ); +} + +if (count($categories) > 0) +{ + // Update filtered data + if (function_exists('update_cats_with_filtered_data')) + { + update_cats_with_filtered_data($categories); + } + + $template->set_filename('index_category_thumbnails', 'mainpage_categories.tpl'); + + trigger_action('loc_begin_index_category_thumbnails', $categories); + + $tpl_thumbnails_var = array(); + + foreach ($categories as $category) + { + if (0 == $category['count_images']) + { + continue; + } + + $category['name'] = trigger_event( + 'render_category_name', + $category['name'], + 'subcatify_category_name' + ); + + if ($page['section']=='recent_cats') + { + $name = get_cat_display_name_cache($category['uppercats'], null); + } + else + { + $name = $category['name']; + } + + $representative_infos = $infos_of_image[ $category['representative_picture_id'] ]; + + $tpl_var = array_merge( $category, array( + 'ID' => $category['id'] /*obsolete*/, + 'representative' => $representative_infos, + 'TN_ALT' => strip_tags($category['name']), + + 'URL' => make_index_url( + array( + 'category' => $category + ) + ), + 'CAPTION_NB_IMAGES' => get_display_images_count + ( + $category['nb_images'], + $category['count_images'], + $category['count_categories'], + true, + '
    ' + ), + 'DESCRIPTION' => + trigger_event('render_category_literal_description', + trigger_event('render_category_description', + @$category['comment'], + 'subcatify_category_description')), + 'NAME' => $name, + ) ); + if ($conf['index_new_icon']) + { + $tpl_var['icon_ts'] = get_icon($category['max_date_last'], $category['is_child_date_last']); + } + + if ($conf['display_fromto']) + { + if (isset($dates_of_category[ $category['id'] ])) + { + $from = $dates_of_category[ $category['id'] ]['from']; + $to = $dates_of_category[ $category['id'] ]['to']; + + if (!empty($from)) + { + $info = ''; + + if (date('Y-m-d', strtotime($from)) == date('Y-m-d', strtotime($to))) + { + $info = format_date($from); + } + else + { + $info = l10n( + 'from %s to %s', + format_date($from), + format_date($to) + ); + } + $tpl_var['INFO_DATES'] = $info; + } + } + }//fromto + + $tpl_thumbnails_var[] = $tpl_var; + } + + // pagination + $page['total_categories'] = count($tpl_thumbnails_var); + + $tpl_thumbnails_var_selection = array_slice( + $tpl_thumbnails_var, + $page['startcat'], + $conf['nb_categories_page'] + ); + + $derivative_params = trigger_event('get_index_album_derivative_params', ImageStdParams::get_by_type(IMG_THUMB) ); + $tpl_thumbnails_var_selection = trigger_event('loc_end_index_category_thumbnails', $tpl_thumbnails_var_selection); + $template->assign( array( + 'maxRequests' =>$conf['max_requests'], + 'category_thumbnails' => $tpl_thumbnails_var_selection, + 'derivative_params' => $derivative_params, + ) ); + + $template->assign_var_from_handle('CATEGORIES', 'index_category_thumbnails'); + + // navigation bar + $page['cats_navigation_bar'] = array(); + if ($page['total_categories'] > $conf['nb_categories_page']) + { + $page['cats_navigation_bar'] = create_navigation_bar( + duplicate_index_url(array(), array('startcat')), + $page['total_categories'], + $page['startcat'], + $conf['nb_categories_page'], + true, 'startcat' + ); + } + + $template->assign('cats_navbar', $page['cats_navigation_bar'] ); +} + +pwg_debug('end include/category_cats.inc.php'); +?> \ No newline at end of file diff --git a/sources/include/category_default.inc.php b/sources/include/category_default.inc.php new file mode 100644 index 0000000..59f2195 --- /dev/null +++ b/sources/include/category_default.inc.php @@ -0,0 +1,166 @@ + 0) +{ + $rank_of = array_flip($selection); + + $query = ' +SELECT * + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $selection).') +;'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $row['rank'] = $rank_of[ $row['id'] ]; + $pictures[] = $row; + } + + usort($pictures, 'rank_compare'); + unset($rank_of); +} + +if (count($pictures) > 0) +{ + // define category slideshow url + $row = reset($pictures); + $page['cat_slideshow_url'] = + add_url_params( + duplicate_picture_url( + array( + 'image_id' => $row['id'], + 'image_file' => $row['file'] + ), + array('start') + ), + array('slideshow' => + (isset($_GET['slideshow']) ? $_GET['slideshow'] + : '' )) + ); + + if ($conf['activate_comments'] and $user['show_nb_comments']) + { + $query = ' +SELECT image_id, COUNT(*) AS nb_comments + FROM '.COMMENTS_TABLE.' + WHERE validated = \'true\' + AND image_id IN ('.implode(',', $selection).') + GROUP BY image_id +;'; + $nb_comments_of = simple_hash_from_query($query, 'image_id', 'nb_comments'); + } +} + +// template thumbnail initialization +$template->set_filenames( array( 'index_thumbnails' => 'thumbnails.tpl',)); + +trigger_action('loc_begin_index_thumbnails', $pictures); +$tpl_thumbnails_var = array(); + +foreach ($pictures as $row) +{ + // link on picture.php page + $url = duplicate_picture_url( + array( + 'image_id' => $row['id'], + 'image_file' => $row['file'] + ), + array('start') + ); + + if (isset($nb_comments_of)) + { + $row['NB_COMMENTS'] = $row['nb_comments'] = (int)@$nb_comments_of[$row['id']]; + } + + $name = render_element_name($row); + $desc = render_element_description($row, 'main_page_element_description'); + + $tpl_var = array_merge( $row, array( + 'TN_ALT' => htmlspecialchars(strip_tags($name)), + 'TN_TITLE' => get_thumbnail_title($row, $name, $desc), + 'URL' => $url, + 'DESCRIPTION' => $desc, + 'src_image' => new SrcImage($row), + ) ); + + if ($conf['index_new_icon']) + { + $tpl_var['icon_ts'] = get_icon($row['date_available']); + } + + if ($user['show_nb_hits']) + { + $tpl_var['NB_HITS'] = $row['hit']; + } + + switch ($page['section']) + { + case 'best_rated' : + { + $name = '('.$row['rating_score'].') '.$name; + break; + } + case 'most_visited' : + { + if ( !$user['show_nb_hits']) + { + $name = '('.$row['hit'].') '.$name; + } + break; + } + } + $tpl_var['NAME'] = $name; + $tpl_thumbnails_var[] = $tpl_var; +} + +$template->assign( array( + 'derivative_params' => trigger_event('get_index_derivative_params', ImageStdParams::get_by_type( pwg_get_session_var('index_deriv', IMG_THUMB) ) ), + 'maxRequests' =>$conf['max_requests'], + 'SHOW_THUMBNAIL_CAPTION' =>$conf['show_thumbnail_caption'], + ) ); +$tpl_thumbnails_var = trigger_event('loc_end_index_thumbnails', $tpl_thumbnails_var, $pictures); +$template->assign('thumbnails', $tpl_thumbnails_var); + +$template->assign_var_from_handle('THUMBNAILS', 'index_thumbnails'); +unset($pictures, $selection, $tpl_thumbnails_var); +$template->clear_assign( 'thumbnails' ); +pwg_debug('end include/category_default.inc.php'); +?> \ No newline at end of file diff --git a/sources/include/common.inc.php b/sources/include/common.inc.php new file mode 100644 index 0000000..35d3fad --- /dev/null +++ b/sources/include/common.inc.php @@ -0,0 +1,279 @@ + array(), + 'errors' => array(), + 'warnings' => array(), + ); +$user = array(); +$lang = array(); +$header_msgs = array(); +$header_notes = array(); +$filter = array(); + +foreach( array( + 'array_intersect_key', //PHP 5 >= 5.1.0RC1 + 'hash_hmac', //(hash) - enabled by default as of PHP 5.1.2 + 'preg_last_error', // PHP 5 >= 5.2.0 + 'json_encode', // PHP 5 >= 5.2.0 + ) as $func) +{ + if (!function_exists($func)) + { + include_once(PHPWG_ROOT_PATH . 'include/php_compat/'.$func.'.php'); + } +} + +include(PHPWG_ROOT_PATH . 'include/config_default.inc.php'); +@include(PHPWG_ROOT_PATH. 'local/config/config.inc.php'); + +defined('PWG_LOCAL_DIR') or define('PWG_LOCAL_DIR', 'local/'); + +@include(PHPWG_ROOT_PATH.PWG_LOCAL_DIR .'config/database.inc.php'); +if (!defined('PHPWG_INSTALLED')) +{ + header('Location: install.php'); + exit; +} +include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php'); + +if(isset($conf['show_php_errors']) && !empty($conf['show_php_errors'])) +{ + @ini_set('error_reporting', $conf['show_php_errors']); + @ini_set('display_errors', true); +} + +include(PHPWG_ROOT_PATH . 'include/constants.php'); +include(PHPWG_ROOT_PATH . 'include/functions.inc.php'); + + +// Database connection +try +{ + pwg_db_connect($conf['db_host'], $conf['db_user'], + $conf['db_password'], $conf['db_base']); +} +catch (Exception $e) +{ + my_error(l10n($e->getMessage()), true); +} + +pwg_db_check_charset(); + +load_conf_from_db(); + +if (!$conf['check_upgrade_feed']) +{ + if (!isset($conf['piwigo_db_version']) or $conf['piwigo_db_version'] != get_branch_from_version(PHPWG_VERSION)) + { + redirect(get_root_url().'upgrade.php'); + } +} + +ImageStdParams::load_from_db(); + +session_start(); +load_plugins(); + +// users can have defined a custom order pattern, incompatible with GUI form +if (isset($conf['order_by_custom'])) +{ + $conf['order_by'] = $conf['order_by_custom']; +} +if (isset($conf['order_by_inside_category_custom'])) +{ + $conf['order_by_inside_category'] = $conf['order_by_inside_category_custom']; +} + +include(PHPWG_ROOT_PATH.'include/user.inc.php'); + +if (in_array( substr($user['language'],0,2), array('fr','it','de','es','pl','hu','ru','nl','tr','da') ) ) +{ + define('PHPWG_DOMAIN', substr($user['language'],0,2).'.piwigo.org'); +} +elseif ('zh_CN' == $user['language']) { + define('PHPWG_DOMAIN', 'cn.piwigo.org'); +} +elseif ('pt_BR' == $user['language']) { + define('PHPWG_DOMAIN', 'br.piwigo.org'); +} +else { + define('PHPWG_DOMAIN', 'piwigo.org'); +} +define('PHPWG_URL', 'http://'.PHPWG_DOMAIN); + +if(isset($conf['alternative_pem_url']) and $conf['alternative_pem_url']!='') +{ + define('PEM_URL', $conf['alternative_pem_url']); +} +else +{ + define('PEM_URL', 'http://'.PHPWG_DOMAIN.'/ext'); +} + +// language files +load_language('common.lang'); +if ( is_admin() || (defined('IN_ADMIN') and IN_ADMIN) ) +{ + load_language('admin.lang'); +} +trigger_action('loading_lang'); +load_language('lang', PHPWG_ROOT_PATH.PWG_LOCAL_DIR, array('no_fallback'=>true, 'local'=>true) ); + +// only now we can set the localized username of the guest user (and not in +// include/user.inc.php) +if (is_a_guest()) +{ + $user['username'] = l10n('guest'); +} + +// template instance +if (defined('IN_ADMIN') and IN_ADMIN ) +{// Admin template + $template = new Template(PHPWG_ROOT_PATH.'admin/themes', $conf['admin_theme']); +} +else +{ // Classic template + $theme = $user['theme']; + if (script_basename() != 'ws' and mobile_theme()) + { + $theme = $conf['mobile_theme']; + } + $template = new Template(PHPWG_ROOT_PATH.'themes', $theme ); +} + +if ( !isset($conf['no_photo_yet']) ) +{ + include(PHPWG_ROOT_PATH.'include/no_photo_yet.inc.php'); +} + +if (isset($user['internal_status']['guest_must_be_guest']) + and + $user['internal_status']['guest_must_be_guest'] === true) +{ + $header_msgs[] = l10n('Bad status for user "guest", using default status. Please notify the webmaster.'); +} + +if ($conf['gallery_locked']) +{ + $header_msgs[] = l10n('The gallery is locked for maintenance. Please, come back later.'); + + if ( script_basename() != 'identification' and !is_admin() ) + { + set_status_header(503, 'Service Unavailable'); + @header('Retry-After: 900'); + header('Content-Type: text/html; charset='.get_pwg_charset()); + echo ''.l10n('The gallery is locked for maintenance. Please, come back later.').''; + echo str_repeat( ' ', 512); //IE6 doesn't error output if below a size + exit(); + } +} + +if ($conf['check_upgrade_feed']) +{ + include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php'); + if (check_upgrade_feed()) + { + $header_msgs[] = 'Some database upgrades are missing, ' + .'upgrade now'; + } +} + +if (count($header_msgs) > 0) +{ + $template->assign('header_msgs', $header_msgs); + $header_msgs=array(); +} + +if (!empty($conf['filter_pages']) and get_filter_page_value('used')) +{ + include(PHPWG_ROOT_PATH.'include/filter.inc.php'); +} +else +{ + $filter['enabled'] = false; +} + +if (isset($conf['header_notes'])) +{ + $header_notes = array_merge($header_notes, $conf['header_notes']); +} + +// default event handlers +add_event_handler('render_category_literal_description', 'render_category_literal_description'); +if ( !$conf['allow_html_descriptions'] ) +{ + add_event_handler('render_category_description', 'nl2br'); +} +add_event_handler('render_comment_content', 'render_comment_content'); +add_event_handler('render_comment_author', 'strip_tags'); +add_event_handler('render_tag_url', 'str2url'); +add_event_handler('blockmanager_register_blocks', 'register_default_menubar_blocks', EVENT_HANDLER_PRIORITY_NEUTRAL-1); +if ( !empty($conf['original_url_protection']) ) +{ + add_event_handler('get_element_url', 'get_element_url_protection_handler', EVENT_HANDLER_PRIORITY_NEUTRAL, 2 ); + add_event_handler('get_src_image_url', 'get_src_image_url_protection_handler', EVENT_HANDLER_PRIORITY_NEUTRAL, 2 ); +} +trigger_action('init'); +?> diff --git a/sources/include/config_default.inc.php b/sources/include/config_default.inc.php new file mode 100644 index 0000000..7d6eda3 --- /dev/null +++ b/sources/include/config_default.inc.php @@ -0,0 +1,802 @@ + 'PWG website', +// 'http://piwigo.org/forum' => 'PWG forum', +// ); +// +// Advenced use: +// You can also used special options. Instead to pass a string like parameter value +// you can pass a array with different optional parameter values +// $conf['links'] = array( +// 'http://piwigo.org' => array('label' => 'PWG website', 'new_window' => false, 'eval_visible' => 'return true;'), +// 'http://piwigo.org/forum' => array('label' => 'For ADMIN', 'new_window' => true, 'eval_visible' => 'return is_admin();'), +// 'http://piwigo.org/ext' => array('label' => 'For Guest', 'new_window' => true, 'eval_visible' => 'return is_a_guest();'), +// 'http://piwigo.org/downloads' => +// array('label' => 'PopUp', 'new_window' => true, +// 'nw_name' => 'PopUp', 'nw_features' => 'width=800,height=450,location=no,status=no,toolbar=no,scrollbars=no,menubar=no'), +// ); +// Parameters: +// 'label': +// Label to display for the link, must be defined +// 'new_window': +// If true open link on tab/window +// [Default value is true if it's not defined] +// 'nw_name': +// Name use when new_window is true +// [Default value is '' if it's not defined] +// 'nw_features': +// features use when new_window is true +// [Default value is '' if it's not defined] +// 'eval_visible': +// It's php code witch must return if the link is visible or not +// [Default value is true if it's not defined] +// +// Equivalence: +// $conf['links'] = array( +// 'http://piwigo.org' => 'PWG website', +// ); +// $conf['links'] = array( +// 'http://piwigo.org' => array('label' => 'PWG website', 'new_window' => false, 'visible' => 'return true;'), +// ); +// +// If the array is empty, the "Links" box won't be displayed on the main +// page. +$conf['links'] = array(); + +// random_index_redirect: list of 'internal' links to use when no section is defined on index.php. +// An example is the best than a long explanation : +// +// for each link is associated a php condition +// '' condition is equivalent to 'return true;' +// $conf['random_index_redirect'] = array( +// PHPWG_ROOT_PATH.'index.php?/best_rated' => 'return true;', +// PHPWG_ROOT_PATH.'index.php?/recent_pics' => 'return is_a_guest();', +// PHPWG_ROOT_PATH.'random.php' => '', +// PHPWG_ROOT_PATH.'index.php?/categories' => '', +// ); +$conf['random_index_redirect'] = array(); + +// List of notes to display on all header page +// example $conf['header_notes'] = array('Test', 'Hello'); +$conf['header_notes'] = array(); + +// show_thumbnail_caption : on thumbnails page, show thumbnail captions ? +$conf['show_thumbnail_caption'] = true; + +// display_fromto: display the date creation bounds of a +// category. +$conf['display_fromto'] = false; + +// allow_random_representative : do you wish Piwigo to search among +// categories elements a new representative at each reload ? +// +// If false, an element is randomly or manually chosen to represent its +// category and remains the representative as long as an admin does not +// change it. +// +// Warning : setting this parameter to true is CPU consuming. Each time you +// change the value of this parameter from false to true, an administrator +// must update categories informations in screen [Admin > General > +// Maintenance]. +$conf['allow_random_representative'] = false; + +// representative_cache_on_level: if a thumbnail is chosen as representative +// but has higher privacy level than current user, Piwigo randomly selects +// another thumbnail. Should be store this thumbnail in cache to avoid +// another consuming SQL query on next page refresh? +$conf['representative_cache_on_level'] = true; + +// representative_cache_on_subcats: if a category (= album) only contains +// sub-categories, Piwigo randomly selects a thumbnail among sub-categories +// representative. Should we store this thumbnail in cache to avoid another +// "slightly" consuming SQL query on next page refresh? +$conf['representative_cache_on_subcats'] = true; + +// allow_html_descriptions : authorize administrators to use HTML in +// category and element description. +$conf['allow_html_descriptions'] = true; + +// users_page: how many users to display in screen +// Administration>Identification>Users? +$conf['users_page'] = 20; + +// image level permissions available in the admin interface +$conf['available_permission_levels'] = array(0,1,2,4,8); + +// check_upgrade_feed: check if there are database upgrade required. Set to +// true, a message will strongly encourage you to upgrade your database if +// needed. +// +// This configuration parameter is set to true in BSF branch and to false +// elsewhere. +$conf['check_upgrade_feed'] = false; + +// rate_items: available rates for a picture +$conf['rate_items'] = array(0,1,2,3,4,5); + +// Define default method to use ('http' or 'html' in order to do redirect) +$conf['default_redirect_method'] = 'http'; + +// Define using double password type in admin's users management panel +$conf['double_password_type_in_admin'] = false; + +// Define if logins must be case sentitive or not at users registration. ie : +// If set true, the login "user" will equal "User" or "USER" or "user", +// etc. ... And it will be impossible to use such login variation to create a +// new user account. +$conf['insensitive_case_logon'] = false; + +// how should we check for unicity when adding a photo. Can be 'md5sum' or +// 'filename' +$conf['uniqueness_mode'] = 'md5sum'; + +// Library used for image resizing. Value could be 'auto', 'imagick', +// 'ext_imagick' or 'gd'. If value is 'auto', library will be choosen in this +// order. If choosen library is not available, another one will be picked up. +$conf['graphics_library'] = 'auto'; + +// If library used is external installation of ImageMagick ('ext_imagick'), +// you can define imagemagick directory. +$conf['ext_imagick_dir'] = ''; + +// how many user comments to display by default on comments.php. Use 'all' +// to display all user comments without pagination. Default available values +// are array(5,10,20,50,'all') but you can set any other numeric value. +$conf['comments_page_nb_comments'] = 10; + +// +-----------------------------------------------------------------------+ +// | email | +// +-----------------------------------------------------------------------+ + +// send_bcc_mail_webmaster: send bcc mail to webmaster. Set true for debug +// or test. +$conf['send_bcc_mail_webmaster'] = false; + +// define the name of sender mail: if value is empty, gallery title is used +$conf['mail_sender_name'] = ''; + +// define the email of sender mail: if valie is empty, webmaster email is used +$conf['mail_sender_email'] = ''; + +// set true to allow text/html emails +$conf['mail_allow_html'] = true; + +// smtp configuration (work if fsockopen function is allowed for smtp port) +// smtp_host: smtp server host +// if null, regular mail function is used +// format: hoststring[:port] +// exemple: smtp.pwg.net:21 +// smtp_user/smtp_password: user & password for smtp identication +$conf['smtp_host'] = ''; +$conf['smtp_user'] = ''; +$conf['smtp_password'] = ''; + +// 'ssl' or 'tls' +$conf['smtp_secure'] = null; + +// +-----------------------------------------------------------------------+ +// | metadata | +// +-----------------------------------------------------------------------+ + +// show_iptc: Show IPTC metadata on picture.php if asked by user +$conf['show_iptc'] = false; + +// show_iptc_mapping : is used for showing IPTC metadata on picture.php +// page. For each key of the array, you need to have the same key in the +// $lang array. For example, if my first key is 'iptc_keywords' (associated +// to '2#025') then you need to have $lang['iptc_keywords'] set in +// language/$user['language']/common.lang.php. If you don't have the lang +// var set, the key will be simply displayed +// +// To know how to associated iptc_field with their meaning, use +// tools/metadata.php +$conf['show_iptc_mapping'] = array( + 'iptc_keywords' => '2#025', + 'iptc_caption_writer' => '2#122', + 'iptc_byline_title' => '2#085', + 'iptc_caption' => '2#120' + ); + +// use_iptc: Use IPTC data during database synchronization with files +// metadata +$conf['use_iptc'] = false; + +// use_iptc_mapping : in which IPTC fields will Piwigo find image +// information ? This setting is used during metadata synchronisation. It +// associates a piwigo_images column name to a IPTC key +$conf['use_iptc_mapping'] = array( + 'keywords' => '2#025', + 'date_creation' => '2#055', + 'author' => '2#122', + 'name' => '2#005', + 'comment' => '2#120' + ); + +// show_exif: Show EXIF metadata on picture.php (table or line presentation +// avalaible) +$conf['show_exif'] = true; + +// show_exif_fields : in EXIF fields, you can choose to display fields in +// sub-arrays, for example ['COMPUTED']['ApertureFNumber']. for this, add +// 'COMPUTED;ApertureFNumber' in $conf['show_exif_fields'] +// +// The key displayed in picture.php will be $lang['exif_field_Make'] for +// example and if it exists. For compound fields, only take into account the +// last part : for key 'COMPUTED;ApertureFNumber', you need +// $lang['exif_field_ApertureFNumber'] +// +// for PHP version newer than 4.1.2 : +// $conf['show_exif_fields'] = array('CameraMake','CameraModel','DateTime'); +// +$conf['show_exif_fields'] = array( + 'Make', + 'Model', + 'DateTimeOriginal', + 'COMPUTED;ApertureFNumber' + ); + +// use_exif: Use EXIF data during database synchronization with files +// metadata +$conf['use_exif'] = true; + +// use_exif_mapping: same behaviour as use_iptc_mapping +$conf['use_exif_mapping'] = array( + 'date_creation' => 'DateTimeOriginal' + ); + +// allow_html_in_metadata: in case the origin of the photo is unsecure (user +// upload), we remove HTML tags to avoid XSS (malicious execution of +// javascript) +$conf['allow_html_in_metadata'] = false; + +// +-----------------------------------------------------------------------+ +// | sessions | +// +-----------------------------------------------------------------------+ + +// session_use_cookies: specifies to use cookie to store +// the session id on client side +$conf['session_use_cookies'] = true; + +// session_use_only_cookies: specifies to only use cookie to store +// the session id on client side +$conf['session_use_only_cookies'] = true; + +// session_use_trans_sid: do not use transparent session id support +$conf['session_use_trans_sid'] = false; + +// session_name: specifies the name of the session which is used as cookie name +$conf['session_name'] = 'pwg_id'; + +// session_save_handler: comment the line below +// to use file handler for sessions. +$conf['session_save_handler'] = 'db'; + +// authorize_remembering : permits user to stay logged for a long time. It +// creates a cookie on client side. +$conf['authorize_remembering'] = true; + +// remember_me_name: specifies the name of the cookie used to stay logged +$conf['remember_me_name'] = 'pwg_remember'; + +// remember_me_length : time of validity for "remember me" cookies, in +// seconds. +$conf['remember_me_length'] = 5184000; + +// session_length : time of validity for normal session, in seconds. +$conf['session_length'] = 3600; + +// session_use_ip_address: avoid session hijacking by using a part of the IP +// address +$conf['session_use_ip_address'] = true; + +// +-----------------------------------------------------------------------+ +// | debug/performance | +// +-----------------------------------------------------------------------+ + +// show_queries : for debug purpose, show queries and execution times +$conf['show_queries'] = false; + +// show_gt : display generation time at the bottom of each page +$conf['show_gt'] = false; + +// debug_l10n : display a warning message each time an unset language key is +// accessed +$conf['debug_l10n'] = false; + +// activate template debugging - a new window will appear +$conf['debug_template'] = false; + +// save copies of sent mails into local data dir +$conf['debug_mail'] = false; + +// die_on_sql_error: if an SQL query fails, should everything stop? +$conf['die_on_sql_error'] = false; + +// if true, some language strings are replaced during template compilation +// (insted of template output). this results in better performance. however +// any change in the language file will not be propagated until you purge +// the compiled templates from the admin / maintenance menu +$conf['compiled_template_cache_language'] = false; + +// This tells Smarty whether to check for recompiling or not. Recompiling +// does not need to happen unless a template is changed. false results in +// better performance. +$conf['template_compile_check'] = true; + +// This forces Smarty to (re)compile templates on every invocation. This is +// handy for development and debugging. It should never be used in a +// production environment. +$conf['template_force_compile'] = false; + +// activate merging of javascript / css files +$conf['template_combine_files'] = true; + +// this permit to show the php errors reporting (see INI 'error_reporting' +// for possible values) +// gives an empty value '' to deactivate +$conf['show_php_errors'] = E_ALL; + +// enable log for i derivative script +$conf['enable_i_log'] = false; + +// +-----------------------------------------------------------------------+ +// | authentication | +// +-----------------------------------------------------------------------+ + +// apache_authentication : use Apache authentication as reference instead of +// users table ? +$conf['apache_authentication'] = false; + +// users_table: which table is the reference for users? Can be a different +// table than Piwigo table +// +// If you decide to use another table than the default one, you need to +// prepare your database by deleting some datas : +// +// delete from piwigo_user_access; +// delete from piwigo_user_cache; +// delete from piwigo_user_feed; +// delete from piwigo_user_group; +// delete from piwigo_user_infos; +// delete from piwigo_sessions; +// delete from piwigo_rate; +// update piwigo_images set rating_score = null, added_by = ; +// delete from piwigo_caddie; +// delete from piwigo_favorites; +// +// All informations contained in these tables and column are related to +// piwigo_users table. +$conf['users_table'] = null; + +// If you decide to use external authentication +// change conf below by $conf['external_authentification'] = true; +$conf['external_authentification'] = false; + +// Other tables can be changed, if you define associated constants +// Example: +// define('USER_INFOS_TABLE', 'pwg_main'.'user_infos'); + +// user_fields : mapping between generic field names and table specific +// field names. For example, in PWG, the mail address is names +// "mail_address" and in punbb, it's called "email". +$conf['user_fields'] = array( + 'id' => 'id', + 'username' => 'username', + 'password' => 'password', + 'email' => 'mail_address' + ); + +// password_hash: function hash the clear user password to store it in the +// database. The function takes only one parameter: the clear password. +$conf['password_hash'] = 'pwg_password_hash'; + +// password_verify: function that checks the password against its hash. The +// function takes 2 mandatory parameter : clear password, hashed password + +// an optional parameter user_id. The user_id is used to update the password +// with the new hash introduced in Piwigo 2.5. See function +// pwg_password_verify in include/functions_user.inc.php +$conf['password_verify'] = 'pwg_password_verify'; + +// guest_id : id of the anonymous user +$conf['guest_id'] = 2; + +// default_user_id : id of user used for default value +$conf['default_user_id'] = $conf['guest_id']; + +// Registering process and guest/generic members get language from the browser +// if language isn't available PHPWG_DEFAULT_LANGUAGE is used as previously +$conf['browser_language'] = true; + +// webmaster_id : webmaster'id. +$conf['webmaster_id'] = 1; + +// does the guest have access ? +// (not a security feature, set your categories "private" too) +// If false it'll be redirected from index.php to identification.php +$conf['guest_access'] = true; + +// +-----------------------------------------------------------------------+ +// | history | +// +-----------------------------------------------------------------------+ + +// nb_logs_page : how many logs to display on a page +$conf['nb_logs_page'] = 300; + +// +-----------------------------------------------------------------------+ +// | urls | +// +-----------------------------------------------------------------------+ + +// gallery_url : you can set a specific URL for the home page of your +// gallery. This is for very specific use and you don't need to change this +// setting when move your gallery to a new directory or a new domain name. +$conf['gallery_url'] = null; + +// question_mark_in_urls : the generated urls contain a ? sign. This can be +// changed to false only if the server translates PATH_INFO variable +// (depends on the server AcceptPathInfo directive configuration) +$conf['question_mark_in_urls'] = true; + +// php_extension_in_urls : if true, the urls generated for picture and +// category will not contain the .php extension. This will work only if +// .htaccess defines Options +MultiViews parameter or url rewriting rules +// are active. +$conf['php_extension_in_urls'] = true; + +// category_url_style : one of 'id' (default) or 'id-name'. 'id-name' +// means that an simplified ascii represntation of the category name will +// appear in the url +$conf['category_url_style'] = 'id'; + +// picture_url_style : one of 'id' (default), 'id-file' or 'file'. 'id-file' +// or 'file' mean that the file name (without extension will appear in the +// url). Note that one aditionnal sql query will occur if 'file' is choosen. +// Note that you might experience navigation issues if you choose 'file' +// and your file names are not unique +$conf['picture_url_style'] = 'id'; + +// tag_url_style : one of 'id-tag' (default), 'id' or 'tag'. +// Note that if you choose 'tag' and the url (ascii) representation of your +// tags is not unique, all tags with the same url representation will be shown +$conf['tag_url_style'] = 'id-tag'; + +// +-----------------------------------------------------------------------+ +// | tags | +// +-----------------------------------------------------------------------+ + +// full_tag_cloud_items_number: number of tags to show in the full tag +// cloud. Only the most represented tags will be shown +$conf['full_tag_cloud_items_number'] = 200; + +// menubar_tag_cloud_items_number: number of tags to show in the tag +// cloud in the menubar. Only the most represented tags will be shown +$conf['menubar_tag_cloud_items_number'] = 20; + +// content_tag_cloud_items_number: number of related tags to show in the tag +// cloud on the content page, when the current section is not a set of +// tags. Only the most represented tags will be shown +$conf['content_tag_cloud_items_number'] = 12; + +// tags_levels: number of levels to use for display. Each level is bind to a +// CSS class tagLevelX. +$conf['tags_levels'] = 5; + +// tags_default_display_mode: group tags by letter or display a tag cloud by +// default? 'letters' or 'cloud'. +$conf['tags_default_display_mode'] = 'cloud'; + +// tag_letters_column_number: how many columns to display tags by letter +$conf['tag_letters_column_number'] = 4; + +// +-----------------------------------------------------------------------+ +// | Notification by mail | +// +-----------------------------------------------------------------------+ + +// Default Value for nbm user +$conf['nbm_default_value_user_enabled'] = false; + +// Search list user to send quickly (List all without to check news) +// More quickly but less fun to use +$conf['nbm_list_all_enabled_users_to_send'] = false; + +// Max time used on one pass in order to send mails. +// Timeout delay ratio. +$conf['nbm_max_treatment_timeout_percent'] = 0.8; + +// If timeout cannot be compite with nbm_max_treatment_timeout_percent, +// nbm_treatment_timeout_default is used by default +$conf['nbm_treatment_timeout_default'] = 20; + +// Parameters used in get_recent_post_dates for the 2 kind of notification +$conf['recent_post_dates'] = array( + 'RSS' => array('max_dates' => 5, 'max_elements' => 6, 'max_cats' => 6), + 'NBM' => array('max_dates' => 7, 'max_elements' => 3, 'max_cats' => 9) + ); + +// the author shown in the RSS feed element +$conf['rss_feed_author'] = 'Piwigo notifier'; + +// +-----------------------------------------------------------------------+ +// | Set admin layout | +// +-----------------------------------------------------------------------+ + +$conf['admin_theme'] = 'clear'; + +// should we load the active plugins ? true=Yes, false=No +$conf['enable_plugins']=true; + +// Web services are allowed (true) or completely forbidden (false) +$conf['allow_web_services'] = true; + +// enable log for web services +$conf['ws_enable_log'] = false; + +// web services log file path +$conf['ws_log_filepath'] = '/tmp/piwigo_ws.log'; + +// Maximum number of images to be returned foreach call to the web service +$conf['ws_max_images_per_page'] = 500; + +// Maximum number of users to be returned foreach call to the web service +$conf['ws_max_users_per_page'] = 1000; + +// Display a link to subscribe to Piwigo Announcements Newsletter +$conf['show_newsletter_subscription'] = true; + +// +-----------------------------------------------------------------------+ +// | Filter | +// +-----------------------------------------------------------------------+ +// $conf['filter_pages'] contains configuration for each pages +// o If values are not defined for a specific page, default value are used +// o Array is composed by the basename of each page without extention +// o List of value names: +// - used: filter function are used +// (if false nothing is done [start, cancel, stop, ...] +// - cancel: cancel current started filter +// - add_notes: add notes about current started filter on the header +// o Empty configuration in order to disable completely filter functions +// No filter, No icon,... +// $conf['filter_pages'] = array(); +$conf['filter_pages'] = array + ( + // Default page + 'default' => array( + 'used' => true, 'cancel' => false, 'add_notes' => false), + // Real pages + 'index' => array('add_notes' => true), + 'tags' => array('add_notes' => true), + 'search' => array('add_notes' => true), + 'comments' => array('add_notes' => true), + 'admin' => array('used' => false), + 'feed' => array('used' => false), + 'notification' => array('used' => false), + 'nbm' => array('used' => false), + 'popuphelp' => array('used' => false), + 'profile' => array('used' => false), + 'ws' => array('used' => false), + 'identification' => array('cancel' => true), + 'install' => array('cancel' => true), + 'password' => array('cancel' => true), + 'register' => array('cancel' => true), + ); + +// +-----------------------------------------------------------------------+ +// | Slideshow | +// +-----------------------------------------------------------------------+ +// slideshow_period : waiting time in seconds before loading a new page +// during automated slideshow +// slideshow_period_min, slideshow_period_max are bounds of slideshow_period +// slideshow_period_step is the step of navigation between min and max +$conf['slideshow_period_min'] = 1; +$conf['slideshow_period_max'] = 10; +$conf['slideshow_period_step'] = 1; +$conf['slideshow_period'] = 4; + +// slideshow_repeat : slideshow loops on pictures +$conf['slideshow_repeat'] = true; + +// $conf['light_slideshow'] indicates to use slideshow.tpl in state of +// picture.tpl for slideshow +// Take care to have slideshow.tpl in all available templates +// Or set it false. +// Check if Picture's plugins are compliant with it +// Every plugin from 1.7 would be design to manage light_slideshow case. +$conf['light_slideshow'] = true; + +// the local data directory is used to store data such as compiled templates, +// plugin variables, combined css/javascript or resized images. Beware of +// mandatory trailing slash. +$conf['data_location'] = '_data/'; + +// where should the API/UploadForm add photos? This path must be relative to +// the Piwigo installation directory (but can be outside, as long as it's +// reachable from your webserver). +$conf['upload_dir'] = './upload'; + +// where should the user be guided when there is no photo in his gallery yet? +$conf['no_photo_yet_url'] = 'admin.php?page=photos_add'; + +// directory with themes inside +$conf['themes_dir'] = PHPWG_ROOT_PATH.'themes'; + +// pLoader direct download url for windows +$conf['ploader_download_windows'] = 'http://piwigo.org/ext/download.php?eid=270'; + +// pLoader direct download url for mac +$conf['ploader_download_mac'] = 'http://piwigo.org/ext/download.php?eid=353'; + +// pLoader direct download url for linux +$conf['ploader_download_linux'] = 'http://piwigo.org/ext/download.php?eid=269'; + +// enable the synchronization method for adding photos +$conf['enable_synchronization'] = true; + +// permitted characters for files/directoris during synchronization +$conf['sync_chars_regex'] = '/^[a-zA-Z0-9-_.]+$/'; + +// PEM url (default is http://piwigo.org/ext) +$conf['alternative_pem_url'] = ''; + +// categories ID on PEM +$conf['pem_plugins_category'] = 12; +$conf['pem_themes_category'] = 10; +$conf['pem_languages_category'] = 8; + +// based on the EXIF "orientation" tag, should we rotate photos added in the +// upload form or through pwg.images.addSimple web API method? +$conf['upload_form_automatic_rotation'] = true; + +// 0-'auto', 1-'derivative' 2-'script' +$conf['derivative_url_style']=0; + +$conf['chmod_value']= substr_compare(PHP_SAPI, 'apa', 0, 3)==0 ? 0777 : 0755; + +// 'small', 'medium' or 'large' +$conf['derivative_default_size'] = 'medium'; + +// below which size (in pixels, ie width*height) do we remove metadata +// EXIF/IPTC... from derivative? +$conf['derivatives_strip_metadata_threshold'] = 256000; + +//Maximum Ajax requests at once, for thumbnails on-the-fly generation +$conf['max_requests']=3; + +// one of '', 'images', 'all' +//TODO: Put this in admin and also manage .htaccess in #sites and upload folders +$conf['original_url_protection'] = ''; + + +// Default behaviour when a new album is created: should the new album inherit the group/user +// permissions from its parent? Note that config is only used for Ftp synchro, +// and if that option is not explicitly transmit when the album is created. +$conf['inheritance_by_default'] = false; + +// 'png' or 'jpg': your uploaded TIF photos will have a representative in +// JPEG or PNG file format +$conf['tiff_representative_ext'] = 'png'; +?> diff --git a/sources/include/constants.php b/sources/include/constants.php new file mode 100644 index 0000000..98eb9e4 --- /dev/null +++ b/sources/include/constants.php @@ -0,0 +1,109 @@ + diff --git a/sources/include/cssmin.class.php b/sources/include/cssmin.class.php new file mode 100644 index 0000000..f84111a --- /dev/null +++ b/sources/include/cssmin.class.php @@ -0,0 +1,35 @@ + + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * -- + * + * @package CssMin + * @link http://code.google.com/p/cssmin/ + * @author Joe Scylla + * @copyright 2008 - 2011 Joe Scylla + * @license http://opensource.org/licenses/mit-license.php MIT License + * @version 3.0.1 + */ + abstract class aCssToken { abstract public function __toString(); } abstract class aCssRulesetStartToken extends aCssToken { } abstract class aCssRulesetEndToken extends aCssToken { public function __toString() { return "}"; } } abstract class aCssParserPlugin { protected $configuration = array(); protected $parser = null; protected $buffer = ""; public function __construct(CssParser $parser, array $configuration = null) { $this->configuration = $configuration; $this->parser = $parser; } abstract public function getTriggerChars(); abstract public function getTriggerStates(); abstract public function parse($index, $char, $previousChar, $state); } abstract class aCssMinifierPlugin { protected $configuration = array(); protected $minifier = null; public function __construct(CssMinifier $minifier, array $configuration = array()) { $this->configuration = $configuration; $this->minifier = $minifier; } abstract public function apply(aCssToken &$token); abstract public function getTriggerTokens(); } abstract class aCssMinifierFilter { protected $configuration = array(); protected $minifier = null; public function __construct(CssMinifier $minifier, array $configuration = array()) { $this->configuration = $configuration; $this->minifier = $minifier; } abstract public function apply(array &$tokens); } abstract class aCssFormatter { protected $indent = " "; protected $padding = 0; protected $tokens = array(); public function __construct(array $tokens, $indent = null, $padding = null) { $this->tokens = $tokens; $this->indent = !is_null($indent) ? $indent : $this->indent; $this->padding = !is_null($padding) ? $padding : $this->padding; } abstract public function __toString(); } abstract class aCssDeclarationToken extends aCssToken { public $IsImportant = false; public $IsLast = false; public $Property = ""; public $Value = ""; public function __construct($property, $value, $isImportant = false, $isLast = false) { $this->Property = $property; $this->Value = $value; $this->IsImportant = $isImportant; $this->IsLast = $isLast; } public function __toString() { return $this->Property . ":" . $this->Value . ($this->IsImportant ? " !important" : "") . ($this->IsLast ? "" : ";"); } } abstract class aCssAtBlockStartToken extends aCssToken { } abstract class aCssAtBlockEndToken extends aCssToken { public function __toString() { return "}"; } } class CssWhitesmithsFormatter extends aCssFormatter { public function __toString() { $r = array(); $level = 0; for ($i = 0, $l = count($this->tokens); $i < $l; $i++) { $token = $this->tokens[$i]; $class = get_class($token); $indent = str_repeat($this->indent, $level); if ($class === "CssCommentToken") { $lines = array_map("trim", explode("\n", $token->Comment)); for ($ii = 0, $ll = count($lines); $ii < $ll; $ii++) { $r[] = $indent . (substr($lines[$ii], 0, 1) == "*" ? " " : "") . $lines[$ii]; } } elseif ($class === "CssAtCharsetToken") { $r[] = $indent . "@charset " . $token->Charset . ";"; } elseif ($class === "CssAtFontFaceStartToken") { $r[] = $indent . "@font-face"; $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtImportToken") { $r[] = $indent . "@import " . $token->Import . " " . implode(", ", $token->MediaTypes) . ";"; } elseif ($class === "CssAtKeyframesStartToken") { $r[] = $indent . "@keyframes \"" . $token->Name . "\""; $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtMediaStartToken") { $r[] = $indent . "@media " . implode(", ", $token->MediaTypes); $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtPageStartToken") { $r[] = $indent . "@page"; $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssAtVariablesStartToken") { $r[] = $indent . "@variables " . implode(", ", $token->MediaTypes); $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class === "CssRulesetStartToken" || $class === "CssAtKeyframesRulesetStartToken") { $r[] = $indent . implode(", ", $token->Selectors); $r[] = $this->indent . $indent . "{"; $level++; } elseif ($class == "CssAtFontFaceDeclarationToken" || $class === "CssAtKeyframesRulesetDeclarationToken" || $class === "CssAtPageDeclarationToken" || $class == "CssAtVariablesDeclarationToken" || $class === "CssRulesetDeclarationToken" ) { $declaration = $indent . $token->Property . ": "; if ($this->padding) { $declaration = str_pad($declaration, $this->padding, " ", STR_PAD_RIGHT); } $r[] = $declaration . $token->Value . ($token->IsImportant ? " !important" : "") . ";"; } elseif ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtKeyframesEndToken" || $class === "CssAtKeyframesRulesetEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken" || $class === "CssRulesetEndToken" ) { $r[] = $indent . "}"; $level--; } } return implode("\n", $r); } } class CssVariablesMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/var\((.+)\)/iSU"; private $variables = null; public function getVariables() { return $this->variables; } public function apply(aCssToken &$token) { if (stripos($token->Value, "var") !== false && preg_match_all($this->reMatch, $token->Value, $m)) { $mediaTypes = $token->MediaTypes; if (!in_array("all", $mediaTypes)) { $mediaTypes[] = "all"; } for ($i = 0, $l = count($m[0]); $i < $l; $i++) { $variable = trim($m[1][$i]); foreach ($mediaTypes as $mediaType) { if (isset($this->variables[$mediaType], $this->variables[$mediaType][$variable])) { $token->Value = str_replace($m[0][$i], $this->variables[$mediaType][$variable], $token->Value); continue 2; } } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": No value found for variable " . $variable . " in media types " . implode(", ", $mediaTypes) . "", (string) $token)); $token = new CssNullToken(); return true; } } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } public function setVariables(array $variables) { $this->variables = $variables; } } class CssVariablesMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $variables = array(); $defaultMediaTypes = array("all"); $mediaTypes = array(); $remove = array(); for($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtVariablesStartToken") { $remove[] = $i; $mediaTypes = (count($tokens[$i]->MediaTypes) == 0 ? $defaultMediaTypes : $tokens[$i]->MediaTypes); foreach ($mediaTypes as $mediaType) { if (!isset($variables[$mediaType])) { $variables[$mediaType] = array(); } } for($i = $i; $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtVariablesDeclarationToken") { foreach ($mediaTypes as $mediaType) { $variables[$mediaType][$tokens[$i]->Property] = $tokens[$i]->Value; } $remove[] = $i; } elseif (get_class($tokens[$i]) === "CssAtVariablesEndToken") { $remove[] = $i; break; } } } } foreach($variables as $mediaType => $null) { foreach($variables[$mediaType] as $variable => $value) { if (stripos($value, "var") !== false && preg_match_all("/var\((.+)\)/iSU", $value, $m)) { for ($i = 0, $l = count($m[0]); $i < $l; $i++) { $variables[$mediaType][$variable] = str_replace($m[0][$i], (isset($variables[$mediaType][$m[1][$i]]) ? $variables[$mediaType][$m[1][$i]] : ""), $variables[$mediaType][$variable]); } } } } foreach ($remove as $i) { $tokens[$i] = null; } if (!($plugin = $this->minifier->getPlugin("CssVariablesMinifierPlugin"))) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin CssVariablesMinifierPlugin was not found but is required for " . __CLASS__ . "")); } else { $plugin->setVariables($variables); } return count($remove); } } class CssUrlParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("(", ")"); } public function getTriggerStates() { return false; } public function parse($index, $char, $previousChar, $state) { if ($char === "(" && strtolower(substr($this->parser->getSource(), $index - 3, 4)) === "url(" && $state !== "T_URL") { $this->parser->pushState("T_URL"); $this->parser->setExclusive(__CLASS__); } elseif ($char === "\n" && $previousChar === "\\" && $state === "T_URL") { $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -2)); } elseif ($char === "\n" && $previousChar !== "\\" && $state === "T_URL") { $line = $this->parser->getBuffer(); $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -1) . ")"); $this->parser->popState(); $this->parser->unsetExclusive(); CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated string literal", $line . "_")); } elseif ($char === ")" && $state === "T_URL") { $this->parser->popState(); $this->parser->unsetExclusive(); } else { return false; } return true; } } class CssStringParserPlugin extends aCssParserPlugin { private $delimiterChar = null; public function getTriggerChars() { return array("\"", "'", "\n"); } public function getTriggerStates() { return false; } public function parse($index, $char, $previousChar, $state) { if (($char === "\"" || $char === "'") && $state !== "T_STRING") { $this->delimiterChar = $char; $this->parser->pushState("T_STRING"); $this->parser->setExclusive(__CLASS__); } elseif ($char === "\n" && $previousChar === "\\" && $state === "T_STRING") { $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -2)); } elseif ($char === "\n" && $previousChar !== "\\" && $state === "T_STRING") { $line = $this->parser->getBuffer(); $this->parser->popState(); $this->parser->unsetExclusive(); $this->parser->setBuffer(substr($this->parser->getBuffer(), 0, -1) . $this->delimiterChar); CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated string literal", $line . "_")); $this->delimiterChar = null; } elseif ($char === $this->delimiterChar && $state === "T_STRING") { if ($previousChar == "\\") { $source = $this->parser->getSource(); $c = 1; $i = $index - 2; while (substr($source, $i, 1) === "\\") { $c++; $i--; } if ($c % 2) { return false; } } $this->parser->popState(); $this->parser->unsetExclusive(); $this->delimiterChar = null; } else { return false; } return true; } } class CssSortRulesetPropertiesMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) !== "CssRulesetStartToken") { continue; } $endIndex = false; for ($ii = $i + 1; $ii < $l; $ii++) { if (get_class($tokens[$ii]) !== "CssRulesetEndToken") { continue; } $endIndex = $ii; break; } if (!$endIndex) { break; } $startIndex = $i; $i = $endIndex; if ($endIndex - $startIndex <= 2) { continue; } for ($ii = $startIndex + 1; $ii < $endIndex; $ii++) { if (get_class($tokens[$ii]) !== "CssRulesetDeclarationToken") { continue(2); } } $declarations = array_slice($tokens, $startIndex + 1, $endIndex - $startIndex - 1); $sortRequired = $lastPropertyName = false; foreach ($declarations as $declaration) { if ($lastPropertyName) { if (strcmp($lastPropertyName, $declaration->Property) > 0) { $sortRequired = true; break; } } $lastPropertyName = $declaration->Property; } if (!$sortRequired) { continue; } usort($declarations, array(__CLASS__, "userDefinedSort1")); for ($ii = 0, $ll = count($declarations) - 1; $ii <= $ll; $ii++) { if ($ii == $ll) { $declarations[$ii]->IsLast = true; } else { $declarations[$ii]->IsLast = false; } } array_splice($tokens, $startIndex + 1, $endIndex - $startIndex - 1, $declarations); $r += $endIndex - $startIndex - 1; } return $r; } public static function userDefinedSort1($a, $b) { return strcmp($a->Property, $b->Property); } } class CssRulesetStartToken extends aCssRulesetStartToken { public $Selectors = array(); public function __construct(array $selectors = array()) { $this->Selectors = $selectors; } public function __toString() { return implode(",", $this->Selectors) . "{"; } } class CssRulesetParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array(",", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_MEDIA", "T_RULESET::SELECTORS", "T_RULESET", "T_RULESET_DECLARATION"); } private $selectors = array(); public function parse($index, $char, $previousChar, $state) { if ($char === "," && ($state === "T_DOCUMENT" || $state === "T_AT_MEDIA" || $state === "T_RULESET::SELECTORS")) { if ($state !== "T_RULESET::SELECTORS") { $this->parser->pushState("T_RULESET::SELECTORS"); } $this->selectors[] = $this->parser->getAndClearBuffer(",{"); } elseif ($char === "{" && ($state === "T_DOCUMENT" || $state === "T_AT_MEDIA" || $state === "T_RULESET::SELECTORS")) { if ($this->parser->getBuffer() !== "") { $this->selectors[] = $this->parser->getAndClearBuffer(",{"); if ($state == "T_RULESET::SELECTORS") { $this->parser->popState(); } $this->parser->pushState("T_RULESET"); $this->parser->appendToken(new CssRulesetStartToken($this->selectors)); $this->selectors = array(); } } elseif ($char === ":" && $state === "T_RULESET") { $this->parser->pushState("T_RULESET_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":;", true); } elseif ($char === ":" && $state === "T_RULESET_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_RULESET_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssRulesetDeclarationToken($this->buffer, $value, $this->parser->getMediaTypes(), $isImportant)); if ($char === "}") { $this->parser->appendToken(new CssRulesetEndToken()); $this->parser->popState(); } $this->buffer = ""; } elseif ($char === "}" && $state === "T_RULESET") { $this->parser->popState(); $this->parser->clearBuffer(); $this->parser->appendToken(new CssRulesetEndToken()); $this->buffer = ""; $this->selectors = array(); } else { return false; } return true; } } class CssRulesetEndToken extends aCssRulesetEndToken { } class CssRulesetDeclarationToken extends aCssDeclarationToken { public $MediaTypes = array("all"); public function __construct($property, $value, $mediaTypes = null, $isImportant = false, $isLast = false) { parent::__construct($property, $value, $isImportant, $isLast); $this->MediaTypes = $mediaTypes ? $mediaTypes : array("all"); } } class CssRemoveLastDelarationSemiColonMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { for ($i = 0, $l = count($tokens); $i < $l; $i++) { $current = get_class($tokens[$i]); $next = isset($tokens[$i+1]) ? get_class($tokens[$i+1]) : false; if (($current === "CssRulesetDeclarationToken" && $next === "CssRulesetEndToken") || ($current === "CssAtFontFaceDeclarationToken" && $next === "CssAtFontFaceEndToken") || ($current === "CssAtPageDeclarationToken" && $next === "CssAtPageEndToken")) { $tokens[$i]->IsLast = true; } } return 0; } } class CssRemoveEmptyRulesetsMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { $current = get_class($tokens[$i]); $next = isset($tokens[$i + 1]) ? get_class($tokens[$i + 1]) : false; if (($current === "CssRulesetStartToken" && $next === "CssRulesetEndToken") || ($current === "CssAtKeyframesRulesetStartToken" && $next === "CssAtKeyframesRulesetEndToken" && !array_intersect(array("from", "0%", "to", "100%"), array_map("strtolower", $tokens[$i]->Selectors))) ) { $tokens[$i] = null; $tokens[$i + 1] = null; $i++; $r = $r + 2; } } return $r; } } class CssRemoveEmptyAtBlocksMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { $current = get_class($tokens[$i]); $next = isset($tokens[$i + 1]) ? get_class($tokens[$i + 1]) : false; if (($current === "CssAtFontFaceStartToken" && $next === "CssAtFontFaceEndToken") || ($current === "CssAtKeyframesStartToken" && $next === "CssAtKeyframesEndToken") || ($current === "CssAtPageStartToken" && $next === "CssAtPageEndToken") || ($current === "CssAtMediaStartToken" && $next === "CssAtMediaEndToken")) { $tokens[$i] = null; $tokens[$i + 1] = null; $i++; $r = $r + 2; } } return $r; } } class CssRemoveCommentsMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssCommentToken") { $tokens[$i] = null; $r++; } } return $r; } } class CssParser { private $buffer = ""; private $plugins = array(); private $source = ""; private $state = "T_DOCUMENT"; private $stateExclusive = false; private $stateMediaTypes = false; private $states = array("T_DOCUMENT"); private $tokens = array(); public function __construct($source = null, array $plugins = null) { $plugins = array_merge(array ( "Comment" => true, "String" => true, "Url" => true, "Expression" => true, "Ruleset" => true, "AtCharset" => true, "AtFontFace" => true, "AtImport" => true, "AtKeyframes" => true, "AtMedia" => true, "AtPage" => true, "AtVariables" => true ), is_array($plugins) ? $plugins : array()); foreach ($plugins as $name => $config) { if ($config !== false) { $class = "Css" . $name . "ParserPlugin"; $config = is_array($config) ? $config : array(); if (class_exists($class)) { $this->plugins[] = new $class($this, $config); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin " . $name . " with the class name " . $class . " was not found")); } } } if (!is_null($source)) { $this->parse($source); } } public function appendToken(aCssToken $token) { $this->tokens[] = $token; } public function clearBuffer() { $this->buffer = ""; } public function getAndClearBuffer($trim = "", $tolower = false) { $r = $this->getBuffer($trim, $tolower); $this->buffer = ""; return $r; } public function getBuffer($trim = "", $tolower = false) { $r = $this->buffer; if ($trim) { $r = trim($r, " \t\n\r\0\x0B" . $trim); } if ($tolower) { $r = strtolower($r); } return $r; } public function getMediaTypes() { return $this->stateMediaTypes; } public function getSource() { return $this->source; } public function getState() { return $this->state; } public function getPlugin($class) { static $index = null; if (is_null($index)) { $index = array(); for ($i = 0, $l = count($this->plugins); $i < $l; $i++) { $index[get_class($this->plugins[$i])] = $i; } } return isset($index[$class]) ? $this->plugins[$index[$class]] : false; } public function getTokens() { return $this->tokens; } public function isState($state) { return ($this->state == $state); } public function parse($source) { $this->source = ""; $this->tokens = array(); $globalTriggerChars = ""; $plugins = $this->plugins; $pluginCount = count($plugins); $pluginIndex = array(); $pluginTriggerStates = array(); $pluginTriggerChars = array(); for ($i = 0, $l = count($plugins); $i < $l; $i++) { $tPluginClassName = get_class($plugins[$i]); $pluginTriggerChars[$i] = implode("", $plugins[$i]->getTriggerChars()); $tPluginTriggerStates = $plugins[$i]->getTriggerStates(); $pluginTriggerStates[$i] = $tPluginTriggerStates === false ? false : "|" . implode("|", $tPluginTriggerStates) . "|"; $pluginIndex[$tPluginClassName] = $i; for ($ii = 0, $ll = strlen($pluginTriggerChars[$i]); $ii < $ll; $ii++) { $c = substr($pluginTriggerChars[$i], $ii, 1); if (strpos($globalTriggerChars, $c) === false) { $globalTriggerChars .= $c; } } } $source = str_replace("\r\n", "\n", $source); $source = str_replace("\r", "\n", $source); $this->source = $source; $buffer = &$this->buffer; $exclusive = &$this->stateExclusive; $state = &$this->state; $c = $p = null; for ($i = 0, $l = strlen($source); $i < $l; $i++) { $c = $source[$i]; if ($exclusive === false) { if ($c === "\n" || $c === "\t") { $c = " "; } if ($c === " " && $p === " ") { continue; } } $buffer .= $c; if (strpos($globalTriggerChars, $c) !== false) { if ($exclusive) { $tPluginIndex = $pluginIndex[$exclusive]; if (strpos($pluginTriggerChars[$tPluginIndex], $c) !== false && ($pluginTriggerStates[$tPluginIndex] === false || strpos($pluginTriggerStates[$tPluginIndex], $state) !== false)) { $r = $plugins[$tPluginIndex]->parse($i, $c, $p, $state); if ($r === true) { continue; } elseif ($r !== false && $r != $i) { $i = $r; continue; } } } else { $triggerState = "|" . $state . "|"; for ($ii = 0, $ll = $pluginCount; $ii < $ll; $ii++) { if (strpos($pluginTriggerChars[$ii], $c) !== false && ($pluginTriggerStates[$ii] === false || strpos($pluginTriggerStates[$ii], $triggerState) !== false)) { $r = $plugins[$ii]->parse($i, $c, $p, $state); if ($r === true) { break; } elseif ($r !== false && $r != $i) { $i = $r; break; } } } } } $p = $c; } return $this->tokens; } public function popState() { $r = array_pop($this->states); $this->state = $this->states[count($this->states) - 1]; return $r; } public function pushState($state) { $r = array_push($this->states, $state); $this->state = $this->states[count($this->states) - 1]; return $r; } public function setBuffer($buffer) { $this->buffer = $buffer; } public function setExclusive($exclusive) { $this->stateExclusive = $exclusive; } public function setMediaTypes(array $mediaTypes) { $this->stateMediaTypes = $mediaTypes; } public function setState($state) { $r = array_pop($this->states); array_push($this->states, $state); $this->state = $this->states[count($this->states) - 1]; return $r; } public function unsetExclusive() { $this->stateExclusive = false; } public function unsetMediaTypes() { $this->stateMediaTypes = false; } } class CssOtbsFormatter extends aCssFormatter { public function __toString() { $r = array(); $level = 0; for ($i = 0, $l = count($this->tokens); $i < $l; $i++) { $token = $this->tokens[$i]; $class = get_class($token); $indent = str_repeat($this->indent, $level); if ($class === "CssCommentToken") { $lines = array_map("trim", explode("\n", $token->Comment)); for ($ii = 0, $ll = count($lines); $ii < $ll; $ii++) { $r[] = $indent . (substr($lines[$ii], 0, 1) == "*" ? " " : "") . $lines[$ii]; } } elseif ($class === "CssAtCharsetToken") { $r[] = $indent . "@charset " . $token->Charset . ";"; } elseif ($class === "CssAtFontFaceStartToken") { $r[] = $indent . "@font-face {"; $level++; } elseif ($class === "CssAtImportToken") { $r[] = $indent . "@import " . $token->Import . " " . implode(", ", $token->MediaTypes) . ";"; } elseif ($class === "CssAtKeyframesStartToken") { $r[] = $indent . "@keyframes \"" . $token->Name . "\" {"; $level++; } elseif ($class === "CssAtMediaStartToken") { $r[] = $indent . "@media " . implode(", ", $token->MediaTypes) . " {"; $level++; } elseif ($class === "CssAtPageStartToken") { $r[] = $indent . "@page {"; $level++; } elseif ($class === "CssAtVariablesStartToken") { $r[] = $indent . "@variables " . implode(", ", $token->MediaTypes) . " {"; $level++; } elseif ($class === "CssRulesetStartToken" || $class === "CssAtKeyframesRulesetStartToken") { $r[] = $indent . implode(", ", $token->Selectors) . " {"; $level++; } elseif ($class == "CssAtFontFaceDeclarationToken" || $class === "CssAtKeyframesRulesetDeclarationToken" || $class === "CssAtPageDeclarationToken" || $class == "CssAtVariablesDeclarationToken" || $class === "CssRulesetDeclarationToken" ) { $declaration = $indent . $token->Property . ": "; if ($this->padding) { $declaration = str_pad($declaration, $this->padding, " ", STR_PAD_RIGHT); } $r[] = $declaration . $token->Value . ($token->IsImportant ? " !important" : "") . ";"; } elseif ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtKeyframesEndToken" || $class === "CssAtKeyframesRulesetEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken" || $class === "CssRulesetEndToken" ) { $level--; $r[] = str_repeat($indent, $level) . "}"; } } return implode("\n", $r); } } class CssNullToken extends aCssToken { public function __toString() { return ""; } } class CssMinifier { private $filters = array(); private $plugins = array(); private $minified = ""; public function __construct($source = null, array $filters = null, array $plugins = null) { $filters = array_merge(array ( "ImportImports" => false, "RemoveComments" => true, "RemoveEmptyRulesets" => true, "RemoveEmptyAtBlocks" => true, "ConvertLevel3Properties" => false, "ConvertLevel3AtKeyframes" => false, "Variables" => true, "RemoveLastDelarationSemiColon" => true ), is_array($filters) ? $filters : array()); $plugins = array_merge(array ( "Variables" => true, "ConvertFontWeight" => false, "ConvertHslColors" => false, "ConvertRgbColors" => false, "ConvertNamedColors" => false, "CompressColorValues" => false, "CompressUnitValues" => false, "CompressExpressionValues" => false ), is_array($plugins) ? $plugins : array()); foreach ($filters as $name => $config) { if ($config !== false) { $class = "Css" . $name . "MinifierFilter"; $config = is_array($config) ? $config : array(); if (class_exists($class)) { $this->filters[] = new $class($this, $config); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The filter " . $name . " with the class name " . $class . " was not found")); } } } foreach ($plugins as $name => $config) { if ($config !== false) { $class = "Css" . $name . "MinifierPlugin"; $config = is_array($config) ? $config : array(); if (class_exists($class)) { $this->plugins[] = new $class($this, $config); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": The plugin " . $name . " with the class name " . $class . " was not found")); } } } if (!is_null($source)) { $this->minify($source); } } public function getMinified() { return $this->minified; } public function getPlugin($class) { static $index = null; if (is_null($index)) { $index = array(); for ($i = 0, $l = count($this->plugins); $i < $l; $i++) { $index[get_class($this->plugins[$i])] = $i; } } return isset($index[$class]) ? $this->plugins[$index[$class]] : false; } public function minify($source) { $r = ""; $parser = new CssParser($source); $tokens = $parser->getTokens(); $filters = $this->filters; $filterCount = count($this->filters); $plugins = $this->plugins; $pluginCount = count($plugins); $pluginIndex = array(); $pluginTriggerTokens = array(); $globalTriggerTokens = array(); for ($i = 0, $l = count($plugins); $i < $l; $i++) { $tPluginClassName = get_class($plugins[$i]); $pluginTriggerTokens[$i] = $plugins[$i]->getTriggerTokens(); foreach ($pluginTriggerTokens[$i] as $v) { if (!in_array($v, $globalTriggerTokens)) { $globalTriggerTokens[] = $v; } } $pluginTriggerTokens[$i] = "|" . implode("|", $pluginTriggerTokens[$i]) . "|"; $pluginIndex[$tPluginClassName] = $i; } $globalTriggerTokens = "|" . implode("|", $globalTriggerTokens) . "|"; for($i = 0; $i < $filterCount; $i++) { if ($filters[$i]->apply($tokens) > 0) { $tokens = array_values(array_filter($tokens)); } } $tokenCount = count($tokens); for($i = 0; $i < $tokenCount; $i++) { $triggerToken = "|" . get_class($tokens[$i]) . "|"; if (strpos($globalTriggerTokens, $triggerToken) !== false) { for($ii = 0; $ii < $pluginCount; $ii++) { if (strpos($pluginTriggerTokens[$ii], $triggerToken) !== false || $pluginTriggerTokens[$ii] === false) { if ($plugins[$ii]->apply($tokens[$i]) === true) { continue 2; } } } } } for($i = 0; $i < $tokenCount; $i++) { $r .= (string) $tokens[$i]; } $this->minified = $r; return $r; } } class CssMin { private static $classIndex = array(); private static $errors = array(); private static $isVerbose = false; public static function autoload($class) { if (isset(self::$classIndex[$class])) { require(self::$classIndex[$class]); } } public static function getErrors() { return self::$errors; } public static function hasErrors() { return count(self::$errors) > 0; } public static function initialise() { $paths = array(dirname(__FILE__)); while (list($i, $path) = each($paths)) { $subDirectorys = glob($path . "*", GLOB_MARK | GLOB_ONLYDIR | GLOB_NOSORT); if (is_array($subDirectorys)) { foreach ($subDirectorys as $subDirectory) { $paths[] = $subDirectory; } } $files = glob($path . "*.php", 0); if (is_array($files)) { foreach ($files as $file) { $class = substr(basename($file), 0, -4); self::$classIndex[$class] = $file; } } } krsort(self::$classIndex); if (function_exists("spl_autoload_register") && !is_callable("__autoload")) { spl_autoload_register(array(__CLASS__, "autoload")); } else { foreach (self::$classIndex as $class => $file) { if (!class_exists($class)) { require_once($file); } } } } public static function minify($source, array $filters = null, array $plugins = null) { self::$errors = array(); $minifier = new CssMinifier($source, $filters, $plugins); return $minifier->getMinified(); } public static function parse($source, array $plugins = null) { self::$errors = array(); $parser = new CssParser($source, $plugins); return $parser->getTokens(); } public static function setVerbose($to) { self::$isVerbose = (boolean) $to; return self::$isVerbose; } public static function triggerError(CssError $error) { self::$errors[] = $error; if (self::$isVerbose) { trigger_error((string) $error, E_USER_WARNING); } } } CssMin::initialise(); class CssImportImportsMinifierFilter extends aCssMinifierFilter { private $imported = array(); public function apply(array &$tokens) { if (!isset($this->configuration["BasePath"]) || !is_dir($this->configuration["BasePath"])) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Base path " . ($this->configuration["BasePath"] ? $this->configuration["BasePath"] : "null"). " is not a directory")); return 0; } for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtImportToken") { $import = $this->configuration["BasePath"] . "/" . $tokens[$i]->Import; if (!is_file($import)) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Import file " . $import. " was not found.", (string) $tokens[$i])); } elseif (in_array($import, $this->imported)) { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Import file " . $import. " was already imported.", (string) $tokens[$i])); $tokens[$i] = null; } else { $this->imported[] = $import; $parser = new CssParser(file_get_contents($import)); $import = $parser->getTokens(); if (count($tokens[$i]->MediaTypes) > 0 && !(count($tokens[$i]->MediaTypes) == 1 && $tokens[$i]->MediaTypes[0] == "all")) { $blocks = array(); for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtImportToken") { if (count($import[$ii]->MediaTypes) == 0 || (count($import[$ii]->MediaTypes) == 1 && $import[$ii]->MediaTypes[0] == "all")) { $import[$ii]->MediaTypes = $tokens[$i]->MediaTypes; } elseif (count($import[$ii]->MediaTypes > 0)) { foreach ($import[$ii]->MediaTypes as $index => $mediaType) { if (!in_array($mediaType, $tokens[$i]->MediaTypes)) { unset($import[$ii]->MediaTypes[$index]); } } $import[$ii]->MediaTypes = array_values($import[$ii]->MediaTypes); if (count($import[$ii]->MediaTypes) == 0) { $import[$ii] = null; } } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtMediaStartToken") { foreach ($import[$ii]->MediaTypes as $index => $mediaType) { if (!in_array($mediaType, $tokens[$i]->MediaTypes)) { unset($import[$ii]->MediaTypes[$index]); } $import[$ii]->MediaTypes = array_values($import[$ii]->MediaTypes); } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtMediaStartToken") { if (count($import[$ii]->MediaTypes) === 0) { for ($iii = $ii; $iii < $ll; $iii++) { if (get_class($import[$iii]) === "CssAtMediaEndToken") { break; } } if (get_class($import[$iii]) === "CssAtMediaEndToken") { array_splice($import, $ii, $iii - $ii + 1, array()); $ll = count($import); } } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { if (get_class($import[$ii]) === "CssAtMediaStartToken" && count(array_diff($tokens[$i]->MediaTypes, $import[$ii]->MediaTypes)) === 0) { for ($iii = $ii; $iii < $ll; $iii++) { if (get_class($import[$iii]) == "CssAtMediaEndToken") { break; } } if (get_class($import[$iii]) == "CssAtMediaEndToken") { unset($import[$ii]); unset($import[$iii]); $import = array_values($import); $ll = count($import); } } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { $class = get_class($import[$ii]); if ($class === "CssAtImportToken" || $class === "CssAtCharsetToken") { $blocks = array_merge($blocks, array_splice($import, $ii, 1, array())); $ll = count($import); } } for($ii = 0, $ll = count($import); $ii < $ll; $ii++) { $class = get_class($import[$ii]); if ($class === "CssAtFontFaceStartToken" || $class === "CssAtMediaStartToken" || $class === "CssAtPageStartToken" || $class === "CssAtVariablesStartToken") { for ($iii = $ii; $iii < $ll; $iii++) { $class = get_class($import[$iii]); if ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken") { break; } } $class = get_class($import[$iii]); if (isset($import[$iii]) && ($class === "CssAtFontFaceEndToken" || $class === "CssAtMediaEndToken" || $class === "CssAtPageEndToken" || $class === "CssAtVariablesEndToken")) { $blocks = array_merge($blocks, array_splice($import, $ii, $iii - $ii + 1, array())); $ll = count($import); } } } $import = array_merge($blocks, array(new CssAtMediaStartToken($tokens[$i]->MediaTypes)), $import, array(new CssAtMediaEndToken())); } array_splice($tokens, $i, 1, $import); $i--; $l = count($tokens); } } } } } class CssExpressionParserPlugin extends aCssParserPlugin { private $leftBraces = 0; private $rightBraces = 0; public function getTriggerChars() { return array("(", ")", ";", "}"); } public function getTriggerStates() { return false; } public function parse($index, $char, $previousChar, $state) { if ($char === "(" && strtolower(substr($this->parser->getSource(), $index - 10, 11)) === "expression(" && $state !== "T_EXPRESSION") { $this->parser->pushState("T_EXPRESSION"); $this->leftBraces++; } elseif ($char === "(" && $state === "T_EXPRESSION") { $this->leftBraces++; } elseif ($char === ")" && $state === "T_EXPRESSION") { $this->rightBraces++; } elseif (($char === ";" || $char === "}") && $state === "T_EXPRESSION" && $this->leftBraces === $this->rightBraces) { $this->leftBraces = $this->rightBraces = 0; $this->parser->popState(); return $index - 1; } else { return false; } return true; } } class CssError { public $File = ""; public $Line = 0; public $Message = ""; public $Source = ""; public function __construct($file, $line, $message, $source = "") { $this->File = $file; $this->Line = $line; $this->Message = $message; $this->Source = $source; } public function __toString() { return $this->Message . ($this->Source ? ":
    " . $this->Source . "": "") . "
    in file " . $this->File . " at line " . $this->Line; } } class CssConvertRgbColorsMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/rgb\s*\(\s*([0-9%]+)\s*,\s*([0-9%]+)\s*,\s*([0-9%]+)\s*\)/iS"; public function apply(aCssToken &$token) { if (stripos($token->Value, "rgb") !== false && preg_match($this->reMatch, $token->Value, $m)) { for ($i = 1, $l = count($m); $i < $l; $i++) { if (strpos("%", $m[$i]) !== false) { $m[$i] = substr($m[$i], 0, -1); $m[$i] = (int) (256 * ($m[$i] / 100)); } $m[$i] = str_pad(dechex($m[$i]), 2, "0", STR_PAD_LEFT); } $token->Value = str_replace($m[0], "#" . $m[1] . $m[2] . $m[3], $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssConvertNamedColorsMinifierPlugin extends aCssMinifierPlugin { private $reMatch = null; private $reReplace = "\"\${1}\" . \$this->transformation[strtolower(\"\${2}\")] . \"\${3}\""; private $transformation = array ( "aliceblue" => "#f0f8ff", "antiquewhite" => "#faebd7", "aqua" => "#0ff", "aquamarine" => "#7fffd4", "azure" => "#f0ffff", "beige" => "#f5f5dc", "black" => "#000", "blue" => "#00f", "blueviolet" => "#8a2be2", "brown" => "#a52a2a", "burlywood" => "#deb887", "cadetblue" => "#5f9ea0", "chartreuse" => "#7fff00", "chocolate" => "#d2691e", "coral" => "#ff7f50", "cornflowerblue" => "#6495ed", "cornsilk" => "#fff8dc", "crimson" => "#dc143c", "darkblue" => "#00008b", "darkcyan" => "#008b8b", "darkgoldenrod" => "#b8860b", "darkgray" => "#a9a9a9", "darkgreen" => "#006400", "darkkhaki" => "#bdb76b", "darkmagenta" => "#8b008b", "darkolivegreen" => "#556b2f", "darkorange" => "#ff8c00", "darkorchid" => "#9932cc", "darkred" => "#8b0000", "darksalmon" => "#e9967a", "darkseagreen" => "#8fbc8f", "darkslateblue" => "#483d8b", "darkslategray" => "#2f4f4f", "darkturquoise" => "#00ced1", "darkviolet" => "#9400d3", "deeppink" => "#ff1493", "deepskyblue" => "#00bfff", "dimgray" => "#696969", "dodgerblue" => "#1e90ff", "firebrick" => "#b22222", "floralwhite" => "#fffaf0", "forestgreen" => "#228b22", "fuchsia" => "#f0f", "gainsboro" => "#dcdcdc", "ghostwhite" => "#f8f8ff", "gold" => "#ffd700", "goldenrod" => "#daa520", "gray" => "#808080", "green" => "#008000", "greenyellow" => "#adff2f", "honeydew" => "#f0fff0", "hotpink" => "#ff69b4", "indianred" => "#cd5c5c", "indigo" => "#4b0082", "ivory" => "#fffff0", "khaki" => "#f0e68c", "lavender" => "#e6e6fa", "lavenderblush" => "#fff0f5", "lawngreen" => "#7cfc00", "lemonchiffon" => "#fffacd", "lightblue" => "#add8e6", "lightcoral" => "#f08080", "lightcyan" => "#e0ffff", "lightgoldenrodyellow" => "#fafad2", "lightgreen" => "#90ee90", "lightgrey" => "#d3d3d3", "lightpink" => "#ffb6c1", "lightsalmon" => "#ffa07a", "lightseagreen" => "#20b2aa", "lightskyblue" => "#87cefa", "lightslategray" => "#789", "lightsteelblue" => "#b0c4de", "lightyellow" => "#ffffe0", "lime" => "#0f0", "limegreen" => "#32cd32", "linen" => "#faf0e6", "maroon" => "#800000", "mediumaquamarine" => "#66cdaa", "mediumblue" => "#0000cd", "mediumorchid" => "#ba55d3", "mediumpurple" => "#9370db", "mediumseagreen" => "#3cb371", "mediumslateblue" => "#7b68ee", "mediumspringgreen" => "#00fa9a", "mediumturquoise" => "#48d1cc", "mediumvioletred" => "#c71585", "midnightblue" => "#191970", "mintcream" => "#f5fffa", "mistyrose" => "#ffe4e1", "moccasin" => "#ffe4b5", "navajowhite" => "#ffdead", "navy" => "#000080", "oldlace" => "#fdf5e6", "olive" => "#808000", "olivedrab" => "#6b8e23", "orange" => "#ffa500", "orangered" => "#ff4500", "orchid" => "#da70d6", "palegoldenrod" => "#eee8aa", "palegreen" => "#98fb98", "paleturquoise" => "#afeeee", "palevioletred" => "#db7093", "papayawhip" => "#ffefd5", "peachpuff" => "#ffdab9", "peru" => "#cd853f", "pink" => "#ffc0cb", "plum" => "#dda0dd", "powderblue" => "#b0e0e6", "purple" => "#800080", "red" => "#f00", "rosybrown" => "#bc8f8f", "royalblue" => "#4169e1", "saddlebrown" => "#8b4513", "salmon" => "#fa8072", "sandybrown" => "#f4a460", "seagreen" => "#2e8b57", "seashell" => "#fff5ee", "sienna" => "#a0522d", "silver" => "#c0c0c0", "skyblue" => "#87ceeb", "slateblue" => "#6a5acd", "slategray" => "#708090", "snow" => "#fffafa", "springgreen" => "#00ff7f", "steelblue" => "#4682b4", "tan" => "#d2b48c", "teal" => "#008080", "thistle" => "#d8bfd8", "tomato" => "#ff6347", "turquoise" => "#40e0d0", "violet" => "#ee82ee", "wheat" => "#f5deb3", "white" => "#fff", "whitesmoke" => "#f5f5f5", "yellow" => "#ff0", "yellowgreen" => "#9acd32" ); public function __construct(CssMinifier $minifier, array $configuration = array()) { $this->reMatch = "/(^|\s)+(" . implode("|", array_keys($this->transformation)) . ")(\s|$)+/eiS"; parent::__construct($minifier, $configuration); } public function apply(aCssToken &$token) { $lcValue = strtolower($token->Value); if (isset($this->transformation[$lcValue])) { $token->Value = $this->transformation[$lcValue]; } elseif (preg_match($this->reMatch, $token->Value)) { $token->Value = preg_replace($this->reMatch, $this->reReplace, $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssConvertLevel3PropertiesMinifierFilter extends aCssMinifierFilter { private $transformations = array ( "animation" => array(null, "-webkit-animation", null, null), "animation-delay" => array(null, "-webkit-animation-delay", null, null), "animation-direction" => array(null, "-webkit-animation-direction", null, null), "animation-duration" => array(null, "-webkit-animation-duration", null, null), "animation-fill-mode" => array(null, "-webkit-animation-fill-mode", null, null), "animation-iteration-count" => array(null, "-webkit-animation-iteration-count", null, null), "animation-name" => array(null, "-webkit-animation-name", null, null), "animation-play-state" => array(null, "-webkit-animation-play-state", null, null), "animation-timing-function" => array(null, "-webkit-animation-timing-function", null, null), "appearance" => array("-moz-appearance", "-webkit-appearance", null, null), "backface-visibility" => array(null, "-webkit-backface-visibility", null, null), "background-clip" => array(null, "-webkit-background-clip", null, null), "background-composite" => array(null, "-webkit-background-composite", null, null), "background-inline-policy" => array("-moz-background-inline-policy", null, null, null), "background-origin" => array(null, "-webkit-background-origin", null, null), "background-position-x" => array(null, null, null, "-ms-background-position-x"), "background-position-y" => array(null, null, null, "-ms-background-position-y"), "background-size" => array(null, "-webkit-background-size", null, null), "behavior" => array(null, null, null, "-ms-behavior"), "binding" => array("-moz-binding", null, null, null), "border-after" => array(null, "-webkit-border-after", null, null), "border-after-color" => array(null, "-webkit-border-after-color", null, null), "border-after-style" => array(null, "-webkit-border-after-style", null, null), "border-after-width" => array(null, "-webkit-border-after-width", null, null), "border-before" => array(null, "-webkit-border-before", null, null), "border-before-color" => array(null, "-webkit-border-before-color", null, null), "border-before-style" => array(null, "-webkit-border-before-style", null, null), "border-before-width" => array(null, "-webkit-border-before-width", null, null), "border-border-bottom-colors" => array("-moz-border-bottom-colors", null, null, null), "border-bottom-left-radius" => array("-moz-border-radius-bottomleft", "-webkit-border-bottom-left-radius", null, null), "border-bottom-right-radius" => array("-moz-border-radius-bottomright", "-webkit-border-bottom-right-radius", null, null), "border-end" => array("-moz-border-end", "-webkit-border-end", null, null), "border-end-color" => array("-moz-border-end-color", "-webkit-border-end-color", null, null), "border-end-style" => array("-moz-border-end-style", "-webkit-border-end-style", null, null), "border-end-width" => array("-moz-border-end-width", "-webkit-border-end-width", null, null), "border-fit" => array(null, "-webkit-border-fit", null, null), "border-horizontal-spacing" => array(null, "-webkit-border-horizontal-spacing", null, null), "border-image" => array("-moz-border-image", "-webkit-border-image", null, null), "border-left-colors" => array("-moz-border-left-colors", null, null, null), "border-radius" => array("-moz-border-radius", "-webkit-border-radius", null, null), "border-border-right-colors" => array("-moz-border-right-colors", null, null, null), "border-start" => array("-moz-border-start", "-webkit-border-start", null, null), "border-start-color" => array("-moz-border-start-color", "-webkit-border-start-color", null, null), "border-start-style" => array("-moz-border-start-style", "-webkit-border-start-style", null, null), "border-start-width" => array("-moz-border-start-width", "-webkit-border-start-width", null, null), "border-top-colors" => array("-moz-border-top-colors", null, null, null), "border-top-left-radius" => array("-moz-border-radius-topleft", "-webkit-border-top-left-radius", null, null), "border-top-right-radius" => array("-moz-border-radius-topright", "-webkit-border-top-right-radius", null, null), "border-vertical-spacing" => array(null, "-webkit-border-vertical-spacing", null, null), "box-align" => array("-moz-box-align", "-webkit-box-align", null, null), "box-direction" => array("-moz-box-direction", "-webkit-box-direction", null, null), "box-flex" => array("-moz-box-flex", "-webkit-box-flex", null, null), "box-flex-group" => array(null, "-webkit-box-flex-group", null, null), "box-flex-lines" => array(null, "-webkit-box-flex-lines", null, null), "box-ordinal-group" => array("-moz-box-ordinal-group", "-webkit-box-ordinal-group", null, null), "box-orient" => array("-moz-box-orient", "-webkit-box-orient", null, null), "box-pack" => array("-moz-box-pack", "-webkit-box-pack", null, null), "box-reflect" => array(null, "-webkit-box-reflect", null, null), "box-shadow" => array("-moz-box-shadow", "-webkit-box-shadow", null, null), "box-sizing" => array("-moz-box-sizing", null, null, null), "color-correction" => array(null, "-webkit-color-correction", null, null), "column-break-after" => array(null, "-webkit-column-break-after", null, null), "column-break-before" => array(null, "-webkit-column-break-before", null, null), "column-break-inside" => array(null, "-webkit-column-break-inside", null, null), "column-count" => array("-moz-column-count", "-webkit-column-count", null, null), "column-gap" => array("-moz-column-gap", "-webkit-column-gap", null, null), "column-rule" => array("-moz-column-rule", "-webkit-column-rule", null, null), "column-rule-color" => array("-moz-column-rule-color", "-webkit-column-rule-color", null, null), "column-rule-style" => array("-moz-column-rule-style", "-webkit-column-rule-style", null, null), "column-rule-width" => array("-moz-column-rule-width", "-webkit-column-rule-width", null, null), "column-span" => array(null, "-webkit-column-span", null, null), "column-width" => array("-moz-column-width", "-webkit-column-width", null, null), "columns" => array(null, "-webkit-columns", null, null), "filter" => array(__CLASS__, "filter"), "float-edge" => array("-moz-float-edge", null, null, null), "font-feature-settings" => array("-moz-font-feature-settings", null, null, null), "font-language-override" => array("-moz-font-language-override", null, null, null), "font-size-delta" => array(null, "-webkit-font-size-delta", null, null), "font-smoothing" => array(null, "-webkit-font-smoothing", null, null), "force-broken-image-icon" => array("-moz-force-broken-image-icon", null, null, null), "highlight" => array(null, "-webkit-highlight", null, null), "hyphenate-character" => array(null, "-webkit-hyphenate-character", null, null), "hyphenate-locale" => array(null, "-webkit-hyphenate-locale", null, null), "hyphens" => array(null, "-webkit-hyphens", null, null), "force-broken-image-icon" => array("-moz-image-region", null, null, null), "ime-mode" => array(null, null, null, "-ms-ime-mode"), "interpolation-mode" => array(null, null, null, "-ms-interpolation-mode"), "layout-flow" => array(null, null, null, "-ms-layout-flow"), "layout-grid" => array(null, null, null, "-ms-layout-grid"), "layout-grid-char" => array(null, null, null, "-ms-layout-grid-char"), "layout-grid-line" => array(null, null, null, "-ms-layout-grid-line"), "layout-grid-mode" => array(null, null, null, "-ms-layout-grid-mode"), "layout-grid-type" => array(null, null, null, "-ms-layout-grid-type"), "line-break" => array(null, "-webkit-line-break", null, "-ms-line-break"), "line-clamp" => array(null, "-webkit-line-clamp", null, null), "line-grid-mode" => array(null, null, null, "-ms-line-grid-mode"), "logical-height" => array(null, "-webkit-logical-height", null, null), "logical-width" => array(null, "-webkit-logical-width", null, null), "margin-after" => array(null, "-webkit-margin-after", null, null), "margin-after-collapse" => array(null, "-webkit-margin-after-collapse", null, null), "margin-before" => array(null, "-webkit-margin-before", null, null), "margin-before-collapse" => array(null, "-webkit-margin-before-collapse", null, null), "margin-bottom-collapse" => array(null, "-webkit-margin-bottom-collapse", null, null), "margin-collapse" => array(null, "-webkit-margin-collapse", null, null), "margin-end" => array("-moz-margin-end", "-webkit-margin-end", null, null), "margin-start" => array("-moz-margin-start", "-webkit-margin-start", null, null), "margin-top-collapse" => array(null, "-webkit-margin-top-collapse", null, null), "marquee " => array(null, "-webkit-marquee", null, null), "marquee-direction" => array(null, "-webkit-marquee-direction", null, null), "marquee-increment" => array(null, "-webkit-marquee-increment", null, null), "marquee-repetition" => array(null, "-webkit-marquee-repetition", null, null), "marquee-speed" => array(null, "-webkit-marquee-speed", null, null), "marquee-style" => array(null, "-webkit-marquee-style", null, null), "mask" => array(null, "-webkit-mask", null, null), "mask-attachment" => array(null, "-webkit-mask-attachment", null, null), "mask-box-image" => array(null, "-webkit-mask-box-image", null, null), "mask-clip" => array(null, "-webkit-mask-clip", null, null), "mask-composite" => array(null, "-webkit-mask-composite", null, null), "mask-image" => array(null, "-webkit-mask-image", null, null), "mask-origin" => array(null, "-webkit-mask-origin", null, null), "mask-position" => array(null, "-webkit-mask-position", null, null), "mask-position-x" => array(null, "-webkit-mask-position-x", null, null), "mask-position-y" => array(null, "-webkit-mask-position-y", null, null), "mask-repeat" => array(null, "-webkit-mask-repeat", null, null), "mask-repeat-x" => array(null, "-webkit-mask-repeat-x", null, null), "mask-repeat-y" => array(null, "-webkit-mask-repeat-y", null, null), "mask-size" => array(null, "-webkit-mask-size", null, null), "match-nearest-mail-blockquote-color" => array(null, "-webkit-match-nearest-mail-blockquote-color", null, null), "max-logical-height" => array(null, "-webkit-max-logical-height", null, null), "max-logical-width" => array(null, "-webkit-max-logical-width", null, null), "min-logical-height" => array(null, "-webkit-min-logical-height", null, null), "min-logical-width" => array(null, "-webkit-min-logical-width", null, null), "object-fit" => array(null, null, "-o-object-fit", null), "object-position" => array(null, null, "-o-object-position", null), "opacity" => array(__CLASS__, "opacity"), "outline-radius" => array("-moz-outline-radius", null, null, null), "outline-bottom-left-radius" => array("-moz-outline-radius-bottomleft", null, null, null), "outline-bottom-right-radius" => array("-moz-outline-radius-bottomright", null, null, null), "outline-top-left-radius" => array("-moz-outline-radius-topleft", null, null, null), "outline-top-right-radius" => array("-moz-outline-radius-topright", null, null, null), "padding-after" => array(null, "-webkit-padding-after", null, null), "padding-before" => array(null, "-webkit-padding-before", null, null), "padding-end" => array("-moz-padding-end", "-webkit-padding-end", null, null), "padding-start" => array("-moz-padding-start", "-webkit-padding-start", null, null), "perspective" => array(null, "-webkit-perspective", null, null), "perspective-origin" => array(null, "-webkit-perspective-origin", null, null), "perspective-origin-x" => array(null, "-webkit-perspective-origin-x", null, null), "perspective-origin-y" => array(null, "-webkit-perspective-origin-y", null, null), "rtl-ordering" => array(null, "-webkit-rtl-ordering", null, null), "scrollbar-3dlight-color" => array(null, null, null, "-ms-scrollbar-3dlight-color"), "scrollbar-arrow-color" => array(null, null, null, "-ms-scrollbar-arrow-color"), "scrollbar-base-color" => array(null, null, null, "-ms-scrollbar-base-color"), "scrollbar-darkshadow-color" => array(null, null, null, "-ms-scrollbar-darkshadow-color"), "scrollbar-face-color" => array(null, null, null, "-ms-scrollbar-face-color"), "scrollbar-highlight-color" => array(null, null, null, "-ms-scrollbar-highlight-color"), "scrollbar-shadow-color" => array(null, null, null, "-ms-scrollbar-shadow-color"), "scrollbar-track-color" => array(null, null, null, "-ms-scrollbar-track-color"), "stack-sizing" => array("-moz-stack-sizing", null, null, null), "svg-shadow" => array(null, "-webkit-svg-shadow", null, null), "tab-size" => array("-moz-tab-size", null, "-o-tab-size", null), "table-baseline" => array(null, null, "-o-table-baseline", null), "text-align-last" => array(null, null, null, "-ms-text-align-last"), "text-autospace" => array(null, null, null, "-ms-text-autospace"), "text-combine" => array(null, "-webkit-text-combine", null, null), "text-decorations-in-effect" => array(null, "-webkit-text-decorations-in-effect", null, null), "text-emphasis" => array(null, "-webkit-text-emphasis", null, null), "text-emphasis-color" => array(null, "-webkit-text-emphasis-color", null, null), "text-emphasis-position" => array(null, "-webkit-text-emphasis-position", null, null), "text-emphasis-style" => array(null, "-webkit-text-emphasis-style", null, null), "text-fill-color" => array(null, "-webkit-text-fill-color", null, null), "text-justify" => array(null, null, null, "-ms-text-justify"), "text-kashida-space" => array(null, null, null, "-ms-text-kashida-space"), "text-overflow" => array(null, null, "-o-text-overflow", "-ms-text-overflow"), "text-security" => array(null, "-webkit-text-security", null, null), "text-size-adjust" => array(null, "-webkit-text-size-adjust", null, "-ms-text-size-adjust"), "text-stroke" => array(null, "-webkit-text-stroke", null, null), "text-stroke-color" => array(null, "-webkit-text-stroke-color", null, null), "text-stroke-width" => array(null, "-webkit-text-stroke-width", null, null), "text-underline-position" => array(null, null, null, "-ms-text-underline-position"), "transform" => array("-moz-transform", "-webkit-transform", "-o-transform", null), "transform-origin" => array("-moz-transform-origin", "-webkit-transform-origin", "-o-transform-origin", null), "transform-origin-x" => array(null, "-webkit-transform-origin-x", null, null), "transform-origin-y" => array(null, "-webkit-transform-origin-y", null, null), "transform-origin-z" => array(null, "-webkit-transform-origin-z", null, null), "transform-style" => array(null, "-webkit-transform-style", null, null), "transition" => array("-moz-transition", "-webkit-transition", "-o-transition", null), "transition-delay" => array("-moz-transition-delay", "-webkit-transition-delay", "-o-transition-delay", null), "transition-duration" => array("-moz-transition-duration", "-webkit-transition-duration", "-o-transition-duration", null), "transition-property" => array("-moz-transition-property", "-webkit-transition-property", "-o-transition-property", null), "transition-timing-function" => array("-moz-transition-timing-function", "-webkit-transition-timing-function", "-o-transition-timing-function", null), "user-drag" => array(null, "-webkit-user-drag", null, null), "user-focus" => array("-moz-user-focus", null, null, null), "user-input" => array("-moz-user-input", null, null, null), "user-modify" => array("-moz-user-modify", "-webkit-user-modify", null, null), "user-select" => array("-moz-user-select", "-webkit-user-select", null, null), "white-space" => array(__CLASS__, "whiteSpace"), "window-shadow" => array("-moz-window-shadow", null, null, null), "word-break" => array(null, null, null, "-ms-word-break"), "word-wrap" => array(null, null, null, "-ms-word-wrap"), "writing-mode" => array(null, "-webkit-writing-mode", null, "-ms-writing-mode"), "zoom" => array(null, null, null, "-ms-zoom") ); public function apply(array &$tokens) { $r = 0; $transformations = &$this->transformations; for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssRulesetDeclarationToken") { $tProperty = $tokens[$i]->Property; if (isset($transformations[$tProperty])) { $result = array(); if (is_callable($transformations[$tProperty])) { $result = call_user_func_array($transformations[$tProperty], array($tokens[$i])); if (!is_array($result) && is_object($result)) { $result = array($result); } } else { $tValue = $tokens[$i]->Value; $tMediaTypes = $tokens[$i]->MediaTypes; foreach ($transformations[$tProperty] as $property) { if ($property !== null) { $result[] = new CssRulesetDeclarationToken($property, $tValue, $tMediaTypes); } } } if (count($result) > 0) { array_splice($tokens, $i + 1, 0, $result); $i += count($result); $l += count($result); } } } } return $r; } private static function filter($token) { $r = array ( new CssRulesetDeclarationToken("-ms-filter", "\"" . $token->Value . "\"", $token->MediaTypes), ); return $r; } private static function opacity($token) { $ieValue = (int) ((float) $token->Value * 100); $r = array ( new CssRulesetDeclarationToken("-ms-filter", "\"alpha(opacity=" . $ieValue . ")\"", $token->MediaTypes), new CssRulesetDeclarationToken("filter", "alpha(opacity=" . $ieValue . ")", $token->MediaTypes), new CssRulesetDeclarationToken("zoom", "1", $token->MediaTypes) ); return $r; } private static function whiteSpace($token) { if (strtolower($token->Value) === "pre-wrap") { $r = array ( new CssRulesetDeclarationToken("white-space", "-moz-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("white-space", "-webkit-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("white-space", "-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("white-space", "-o-pre-wrap", $token->MediaTypes), new CssRulesetDeclarationToken("word-wrap", "break-word", $token->MediaTypes) ); return $r; } else { return array(); } } } class CssConvertLevel3AtKeyframesMinifierFilter extends aCssMinifierFilter { public function apply(array &$tokens) { $r = 0; $transformations = array("-moz-keyframes", "-webkit-keyframes"); for ($i = 0, $l = count($tokens); $i < $l; $i++) { if (get_class($tokens[$i]) === "CssAtKeyframesStartToken") { for ($ii = $i; $ii < $l; $ii++) { if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken") { break; } } if (get_class($tokens[$ii]) === "CssAtKeyframesEndToken") { $add = array(); $source = array(); for ($iii = $i; $iii <= $ii; $iii++) { $source[] = clone($tokens[$iii]); } foreach ($transformations as $transformation) { $t = array(); foreach ($source as $token) { $t[] = clone($token); } $t[0]->AtRuleName = $transformation; $add = array_merge($add, $t); } if (isset($this->configuration["RemoveSource"]) && $this->configuration["RemoveSource"] === true) { array_splice($tokens, $i, $ii - $i + 1, $add); } else { array_splice($tokens, $ii + 1, 0, $add); } $l = count($tokens); $i = $ii + count($add); $r += count($add); } } } return $r; } } class CssConvertHslColorsMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/^hsl\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*%\s*,\s*([0-9]+)\s*%\s*\)/iS"; public function apply(aCssToken &$token) { if (stripos($token->Value, "hsl") !== false && preg_match($this->reMatch, $token->Value, $m)) { $token->Value = str_replace($m[0], $this->hsl2hex($m[1], $m[2], $m[3]), $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } private function hsl2hex($hue, $saturation, $lightness) { $hue = $hue / 360; $saturation = $saturation / 100; $lightness = $lightness / 100; if ($saturation == 0) { $red = $lightness * 255; $green = $lightness * 255; $blue = $lightness * 255; } else { if ($lightness < 0.5 ) { $v2 = $lightness * (1 + $saturation); } else { $v2 = ($lightness + $saturation) - ($saturation * $lightness); } $v1 = 2 * $lightness - $v2; $red = 255 * self::hue2rgb($v1, $v2, $hue + (1 / 3)); $green = 255 * self::hue2rgb($v1, $v2, $hue); $blue = 255 * self::hue2rgb($v1, $v2, $hue - (1 / 3)); } return "#" . str_pad(dechex(round($red)), 2, "0", STR_PAD_LEFT) . str_pad(dechex(round($green)), 2, "0", STR_PAD_LEFT) . str_pad(dechex(round($blue)), 2, "0", STR_PAD_LEFT); } private function hue2rgb($v1, $v2, $hue) { if ($hue < 0) { $hue += 1; } if ($hue > 1) { $hue -= 1; } if ((6 * $hue) < 1) { return ($v1 + ($v2 - $v1) * 6 * $hue); } if ((2 * $hue) < 1) { return ($v2); } if ((3 * $hue) < 2) { return ($v1 + ($v2 - $v1) * (( 2 / 3) - $hue) * 6); } return $v1; } } class CssConvertFontWeightMinifierPlugin extends aCssMinifierPlugin { private $include = array ( "font", "font-weight" ); private $reMatch = null; private $reReplace = "\"\${1}\" . \$this->transformation[\"\${2}\"] . \"\${3}\""; private $transformation = array ( "normal" => "400", "bold" => "700" ); public function __construct(CssMinifier $minifier) { $this->reMatch = "/(^|\s)+(" . implode("|", array_keys($this->transformation)). ")(\s|$)+/eiS"; parent::__construct($minifier); } public function apply(aCssToken &$token) { if (in_array($token->Property, $this->include) && preg_match($this->reMatch, $token->Value, $m)) { $token->Value = preg_replace($this->reMatch, $this->reReplace, $token->Value); } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCompressUnitValuesMinifierPlugin extends aCssMinifierPlugin { private $re = array ( "/(^| |-)0\.([0-9]+?)(0+)?(%|em|ex|px|in|cm|mm|pt|pc)/iS" => "\${1}.\${2}\${4}", "/(^| )-?(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)/iS" => "\${1}0", "/(^0\s0\s0\s0)|(^0\s0\s0$)|(^0\s0$)/iS" => "0" ); private $reMatch = "/(^| |-)0\.([0-9]+?)(0+)?(%|em|ex|px|in|cm|mm|pt|pc)|(^| )-?(\.?)0(%|em|ex|px|in|cm|mm|pt|pc)|(^0\s0\s0\s0$)|(^0\s0\s0$)|(^0\s0$)/iS"; public function apply(aCssToken &$token) { if (preg_match($this->reMatch, $token->Value)) { foreach ($this->re as $reMatch => $reReplace) { $token->Value = preg_replace($reMatch, $reReplace, $token->Value); } } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCompressExpressionValuesMinifierPlugin extends aCssMinifierPlugin { public function apply(aCssToken &$token) { if (class_exists("JSMin") && stripos($token->Value, "expression(") !== false) { $value = $token->Value; $value = substr($token->Value, stripos($token->Value, "expression(") + 10); $value = trim(JSMin::minify($value)); $token->Value = "expression(" . $value . ")"; } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCompressColorValuesMinifierPlugin extends aCssMinifierPlugin { private $reMatch = "/\#([0-9a-f]{6})/iS"; public function apply(aCssToken &$token) { if (strpos($token->Value, "#") !== false && preg_match($this->reMatch, $token->Value, $m)) { $value = strtolower($m[1]); if ($value[0] == $value[1] && $value[2] == $value[3] && $value[4] == $value[5]) { $token->Value = str_replace($m[0], "#" . $value[0] . $value[2] . $value[4], $token->Value); } } return false; } public function getTriggerTokens() { return array ( "CssAtFontFaceDeclarationToken", "CssAtPageDeclarationToken", "CssRulesetDeclarationToken" ); } } class CssCommentToken extends aCssToken { public $Comment = ""; public function __construct($comment) { $this->Comment = $comment; } public function __toString() { return $this->Comment; } } class CssCommentParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("*", "/"); } public function getTriggerStates() { return false; } private $restoreBuffer = ""; public function parse($index, $char, $previousChar, $state) { if ($char === "*" && $previousChar === "/" && $state !== "T_COMMENT") { $this->parser->pushState("T_COMMENT"); $this->parser->setExclusive(__CLASS__); $this->restoreBuffer = substr($this->parser->getAndClearBuffer(), 0, -2); } elseif ($char === "/" && $previousChar === "*" && $state === "T_COMMENT") { $this->parser->popState(); $this->parser->unsetExclusive(); $this->parser->appendToken(new CssCommentToken("/*" . $this->parser->getAndClearBuffer())); $this->parser->setBuffer($this->restoreBuffer); } else { return false; } return true; } } class CssAtVariablesStartToken extends aCssAtBlockStartToken { public $MediaTypes = array(); public function __construct($mediaTypes = null) { $this->MediaTypes = $mediaTypes ? $mediaTypes : array("all"); } public function __toString() { return ""; } } class CssAtVariablesParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_VARIABLES::PREPARE", "T_AT_VARIABLES", "T_AT_VARIABLES_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@variables") { $this->parser->pushState("T_AT_VARIABLES::PREPARE"); $this->parser->clearBuffer(); return $index + 10; } elseif ($char === "{" && $state === "T_AT_VARIABLES::PREPARE") { $this->parser->setState("T_AT_VARIABLES"); $mediaTypes = array_filter(array_map("trim", explode(",", $this->parser->getAndClearBuffer("{")))); $this->parser->appendToken(new CssAtVariablesStartToken($mediaTypes)); } if ($char === ":" && $state === "T_AT_VARIABLES") { $this->buffer = $this->parser->getAndClearBuffer(":"); $this->parser->pushState("T_AT_VARIABLES_DECLARATION"); } elseif ($char === ":" && $state === "T_AT_VARIABLES_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @variables declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_AT_VARIABLES_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtVariablesDeclarationToken($this->buffer, $value, $isImportant)); $this->buffer = ""; } elseif ($char === "}" && $state === "T_AT_VARIABLES") { $this->parser->popState(); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtVariablesEndToken()); } else { return false; } return true; } } class CssAtVariablesEndToken extends aCssAtBlockEndToken { public function __toString() { return ""; } } class CssAtVariablesDeclarationToken extends aCssDeclarationToken { public function __toString() { return ""; } } class CssAtPageStartToken extends aCssAtBlockStartToken { public $Selector = ""; public function __construct($selector = "") { $this->Selector = $selector; } public function __toString() { return "@page" . ($this->Selector ? " " . $this->Selector : "") . "{"; } } class CssAtPageParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_PAGE::SELECTOR", "T_AT_PAGE", "T_AT_PAGE_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 5)) === "@page") { $this->parser->pushState("T_AT_PAGE::SELECTOR"); $this->parser->clearBuffer(); return $index + 5; } elseif ($char === "{" && $state === "T_AT_PAGE::SELECTOR") { $selector = $this->parser->getAndClearBuffer("{"); $this->parser->setState("T_AT_PAGE"); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtPageStartToken($selector)); } elseif ($char === ":" && $state === "T_AT_PAGE") { $this->parser->pushState("T_AT_PAGE_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":", true); } elseif ($char === ":" && $state === "T_AT_PAGE_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @page declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state == "T_AT_PAGE_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) == "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtPageDeclarationToken($this->buffer, $value, $isImportant)); if ($char === "}") { $this->parser->popState(); $this->parser->appendToken(new CssAtPageEndToken()); } $this->buffer = ""; } elseif ($char === "}" && $state === "T_AT_PAGE") { $this->parser->popState(); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtPageEndToken()); } else { return false; } return true; } } class CssAtPageEndToken extends aCssAtBlockEndToken { } class CssAtPageDeclarationToken extends aCssDeclarationToken { } class CssAtMediaStartToken extends aCssAtBlockStartToken { public function __construct(array $mediaTypes = array()) { $this->MediaTypes = $mediaTypes; } public function __toString() { return "@media " . implode(",", $this->MediaTypes) . "{"; } } class CssAtMediaParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_MEDIA::PREPARE", "T_AT_MEDIA"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 6)) === "@media") { $this->parser->pushState("T_AT_MEDIA::PREPARE"); $this->parser->clearBuffer(); return $index + 6; } elseif ($char === "{" && $state === "T_AT_MEDIA::PREPARE") { $mediaTypes = array_filter(array_map("trim", explode(",", $this->parser->getAndClearBuffer("{")))); $this->parser->setMediaTypes($mediaTypes); $this->parser->setState("T_AT_MEDIA"); $this->parser->appendToken(new CssAtMediaStartToken($mediaTypes)); } elseif ($char === "}" && $state === "T_AT_MEDIA") { $this->parser->appendToken(new CssAtMediaEndToken()); $this->parser->clearBuffer(); $this->parser->unsetMediaTypes(); $this->parser->popState(); } else { return false; } return true; } } class CssAtMediaEndToken extends aCssAtBlockEndToken { } class CssAtKeyframesStartToken extends aCssAtBlockStartToken { public $AtRuleName = "keyframes"; public $Name = ""; public function __construct($name, $atRuleName = null) { $this->Name = $name; if (!is_null($atRuleName)) { $this->AtRuleName = $atRuleName; } } public function __toString() { return "@" . $this->AtRuleName . " " . $this->Name . "{"; } } class CssAtKeyframesRulesetStartToken extends aCssRulesetStartToken { public $Selectors = array(); public function __construct(array $selectors = array()) { $this->Selectors = $selectors; } public function __toString() { return implode(",", $this->Selectors) . "{"; } } class CssAtKeyframesRulesetEndToken extends aCssRulesetEndToken { } class CssAtKeyframesRulesetDeclarationToken extends aCssDeclarationToken { } class CssAtKeyframesParserPlugin extends aCssParserPlugin { private $atRuleName = ""; private $selectors = array(); public function getTriggerChars() { return array("@", "{", "}", ":", ",", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_KEYFRAMES::NAME", "T_AT_KEYFRAMES", "T_AT_KEYFRAMES_RULESETS", "T_AT_KEYFRAMES_RULESET", "T_AT_KEYFRAMES_RULESET_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@keyframes") { $this->atRuleName = "keyframes"; $this->parser->pushState("T_AT_KEYFRAMES::NAME"); $this->parser->clearBuffer(); return $index + 10; } elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 15)) === "@-moz-keyframes") { $this->atRuleName = "-moz-keyframes"; $this->parser->pushState("T_AT_KEYFRAMES::NAME"); $this->parser->clearBuffer(); return $index + 15; } elseif ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 18)) === "@-webkit-keyframes") { $this->atRuleName = "-webkit-keyframes"; $this->parser->pushState("T_AT_KEYFRAMES::NAME"); $this->parser->clearBuffer(); return $index + 18; } elseif ($char === "{" && $state === "T_AT_KEYFRAMES::NAME") { $name = $this->parser->getAndClearBuffer("{\"'"); $this->parser->setState("T_AT_KEYFRAMES_RULESETS"); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtKeyframesStartToken($name, $this->atRuleName)); } if ($char === "," && $state === "T_AT_KEYFRAMES_RULESETS") { $this->selectors[] = $this->parser->getAndClearBuffer(",{"); } elseif ($char === "{" && $state === "T_AT_KEYFRAMES_RULESETS") { if ($this->parser->getBuffer() !== "") { $this->selectors[] = $this->parser->getAndClearBuffer(",{"); $this->parser->pushState("T_AT_KEYFRAMES_RULESET"); $this->parser->appendToken(new CssAtKeyframesRulesetStartToken($this->selectors)); $this->selectors = array(); } } elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET") { $this->parser->pushState("T_AT_KEYFRAMES_RULESET_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":;", true); } elseif ($char === ":" && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @keyframes ruleset declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_AT_KEYFRAMES_RULESET_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtKeyframesRulesetDeclarationToken($this->buffer, $value, $isImportant)); if ($char === "}") { $this->parser->appendToken(new CssAtKeyframesRulesetEndToken()); $this->parser->popState(); } $this->buffer = ""; } elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESET") { $this->parser->clearBuffer(); $this->parser->popState(); $this->parser->appendToken(new CssAtKeyframesRulesetEndToken()); } elseif ($char === "}" && $state === "T_AT_KEYFRAMES_RULESETS") { $this->parser->clearBuffer(); $this->parser->popState(); $this->parser->appendToken(new CssAtKeyframesEndToken()); } else { return false; } return true; } } class CssAtKeyframesEndToken extends aCssAtBlockEndToken { } class CssAtImportToken extends aCssToken { public $Import = ""; public $MediaTypes = array(); public function __construct($import, $mediaTypes) { $this->Import = $import; $this->MediaTypes = $mediaTypes ? $mediaTypes : array(); } public function __toString() { return "@import \"" . $this->Import . "\"" . (count($this->MediaTypes) > 0 ? " " . implode(",", $this->MediaTypes) : ""). ";"; } } class CssAtImportParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", ";", ",", "\n"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_IMPORT"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 7)) === "@import") { $this->parser->pushState("T_AT_IMPORT"); $this->parser->clearBuffer(); return $index + 7; } elseif (($char === ";" || $char === "\n") && $state === "T_AT_IMPORT") { $this->buffer = $this->parser->getAndClearBuffer(";"); $pos = false; foreach (array(")", "\"", "'") as $needle) { if (($pos = strrpos($this->buffer, $needle)) !== false) { break; } } $import = substr($this->buffer, 0, $pos + 1); if (stripos($import, "url(") === 0) { $import = substr($import, 4, -1); } $import = trim($import, " \t\n\r\0\x0B'\""); $mediaTypes = array_filter(array_map("trim", explode(",", trim(substr($this->buffer, $pos + 1), " \t\n\r\0\x0B{")))); if ($pos) { $this->parser->appendToken(new CssAtImportToken($import, $mediaTypes)); } else { CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Invalid @import at-rule syntax", $this->parser->buffer)); } $this->parser->popState(); } else { return false; } return true; } } class CssAtFontFaceStartToken extends aCssAtBlockStartToken { public function __toString() { return "@font-face{"; } } class CssAtFontFaceParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", "{", "}", ":", ";"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_FONT_FACE::PREPARE", "T_AT_FONT_FACE", "T_AT_FONT_FACE_DECLARATION"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 10)) === "@font-face") { $this->parser->pushState("T_AT_FONT_FACE::PREPARE"); $this->parser->clearBuffer(); return $index + 10; } elseif ($char === "{" && $state === "T_AT_FONT_FACE::PREPARE") { $this->parser->setState("T_AT_FONT_FACE"); $this->parser->clearBuffer(); $this->parser->appendToken(new CssAtFontFaceStartToken()); } elseif ($char === ":" && $state === "T_AT_FONT_FACE") { $this->parser->pushState("T_AT_FONT_FACE_DECLARATION"); $this->buffer = $this->parser->getAndClearBuffer(":", true); } elseif ($char === ":" && $state === "T_AT_FONT_FACE_DECLARATION") { if ($this->buffer === "filter") { return false; } CssMin::triggerError(new CssError(__FILE__, __LINE__, __METHOD__ . ": Unterminated @font-face declaration", $this->buffer . ":" . $this->parser->getBuffer() . "_")); } elseif (($char === ";" || $char === "}") && $state === "T_AT_FONT_FACE_DECLARATION") { $value = $this->parser->getAndClearBuffer(";}"); if (strtolower(substr($value, -10, 10)) === "!important") { $value = trim(substr($value, 0, -10)); $isImportant = true; } else { $isImportant = false; } $this->parser->popState(); $this->parser->appendToken(new CssAtFontFaceDeclarationToken($this->buffer, $value, $isImportant)); $this->buffer = ""; if ($char === "}") { $this->parser->appendToken(new CssAtFontFaceEndToken()); $this->parser->popState(); } } elseif ($char === "}" && $state === "T_AT_FONT_FACE") { $this->parser->appendToken(new CssAtFontFaceEndToken()); $this->parser->clearBuffer(); $this->parser->popState(); } else { return false; } return true; } } class CssAtFontFaceEndToken extends aCssAtBlockEndToken { } class CssAtFontFaceDeclarationToken extends aCssDeclarationToken { } class CssAtCharsetToken extends aCssToken { public $Charset = ""; public function __construct($charset) { $this->Charset = $charset; } public function __toString() { return "@charset " . $this->Charset . ";"; } } class CssAtCharsetParserPlugin extends aCssParserPlugin { public function getTriggerChars() { return array("@", ";", "\n"); } public function getTriggerStates() { return array("T_DOCUMENT", "T_AT_CHARSET"); } public function parse($index, $char, $previousChar, $state) { if ($char === "@" && $state === "T_DOCUMENT" && strtolower(substr($this->parser->getSource(), $index, 8)) === "@charset") { $this->parser->pushState("T_AT_CHARSET"); $this->parser->clearBuffer(); return $index + 8; } elseif (($char === ";" || $char === "\n") && $state === "T_AT_CHARSET") { $charset = $this->parser->getAndClearBuffer(";"); $this->parser->popState(); $this->parser->appendToken(new CssAtCharsetToken($charset)); } else { return false; } return true; } } +?> \ No newline at end of file diff --git a/sources/include/dblayer/functions_mysql.inc.php b/sources/include/dblayer/functions_mysql.inc.php new file mode 100644 index 0000000..c90a550 --- /dev/null +++ b/sources/include/dblayer/functions_mysql.inc.php @@ -0,0 +1,763 @@ +['.$page['count_queries'].'] '; + $output.= "\n".$query; + $output.= "\n".'(this query time : '; + $output.= ''.number_format($time, 3, '.', ' ').' s)'; + $output.= "\n".'(total SQL time : '; + $output.= number_format($page['queries_time'], 3, '.', ' ').' s)'; + $output.= "\n".'(total time : '; + $output.= number_format( ($time+$start-$t2), 3, '.', ' ').' s)'; + if ( $result!=null and preg_match('/\s*SELECT\s+/i',$query) ) + { + $output.= "\n".'(num rows : '; + $output.= mysql_num_rows($result).' )'; + } + elseif ( $result!=null + and preg_match('/\s*INSERT|UPDATE|REPLACE|DELETE\s+/i',$query) ) + { + $output.= "\n".'(affected rows : '; + $output.= mysql_affected_rows().' )'; + } + $output.= "\n"; + + $debug .= $output; + } + + return $result; +} + +function pwg_db_nextval($column, $table) +{ + $query = ' +SELECT IF(MAX('.$column.')+1 IS NULL, 1, MAX('.$column.')+1) + FROM '.$table; + list($next) = pwg_db_fetch_row(pwg_query($query)); + + return $next; +} + +function pwg_db_changes() +{ + return mysql_affected_rows(); +} + +function pwg_db_num_rows($result) +{ + return mysql_num_rows($result); +} + +function pwg_db_fetch_array($result) +{ + return mysql_fetch_array($result); +} + +function pwg_db_fetch_assoc($result) +{ + return mysql_fetch_assoc($result); +} + +function pwg_db_fetch_row($result) +{ + return mysql_fetch_row($result); +} + +function pwg_db_fetch_object($result) +{ + return mysql_fetch_object($result); +} + +function pwg_db_free_result($result) +{ + return mysql_free_result($result); +} + +function pwg_db_real_escape_string($s) +{ + return mysql_real_escape_string($s); +} + +function pwg_db_insert_id() +{ + return mysql_insert_id(); +} + +function pwg_db_errno() +{ + return mysql_errno(); +} + +function pwg_db_error() +{ + return mysql_error(); +} + +function pwg_db_close() +{ + return mysql_close(); +} + +/** + * + * complex functions + * + */ + +define('MASS_UPDATES_SKIP_EMPTY', 1); +/** + * updates multiple lines in a table + * + * @param string table_name + * @param array dbfields + * @param array datas + * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones + * @return void + */ +function mass_updates($tablename, $dbfields, $datas, $flags=0) +{ + if (count($datas) == 0) + return; + + // depending on the MySQL version, we use the multi table update or N update queries + if (count($datas) < 10) + { + foreach ($datas as $data) + { + $query = ' +UPDATE '.$tablename.' + SET '; + $is_first = true; + foreach ($dbfields['update'] as $key) + { + $separator = $is_first ? '' : ",\n "; + + if (isset($data[$key]) and $data[$key] != '') + { + $query.= $separator.$key.' = \''.$data[$key].'\''; + } + else + { + if ( $flags & MASS_UPDATES_SKIP_EMPTY ) + continue; // next field + $query.= "$separator$key = NULL"; + } + $is_first = false; + } + if (!$is_first) + {// only if one field at least updated + $query.= ' + WHERE '; + $is_first = true; + foreach ($dbfields['primary'] as $key) + { + if (!$is_first) + { + $query.= ' AND '; + } + if ( isset($data[$key]) ) + { + $query.= $key.' = \''.$data[$key].'\''; + } + else + { + $query.= $key.' IS NULL'; + } + $is_first = false; + } + pwg_query($query); + } + } // foreach update + } // if mysql_ver or count $value) + { + $separator = $is_first ? '' : ",\n "; + + if (isset($value) and $value !== '') + { + $query.= $separator.$key.' = \''.$value.'\''; + } + else + { + if ( $flags & MASS_UPDATES_SKIP_EMPTY ) + continue; // next field + $query.= "$separator$key = NULL"; + } + $is_first = false; + } + if (!$is_first) + {// only if one field at least updated + $query.= ' + WHERE '; + $is_first = true; + foreach ($where_fields as $key => $value) + { + if (!$is_first) + { + $query.= ' AND '; + } + if ( isset($value) ) + { + $query.= $key.' = \''.$value.'\''; + } + else + { + $query.= $key.' IS NULL'; + } + $is_first = false; + } + pwg_query($query); + } +} + + +/** + * inserts multiple lines in a table + * + * @param string table_name + * @param array dbfields + * @param array inserts + * @return void + */ +function mass_inserts($table_name, $dbfields, $datas, $options=array()) +{ + $ignore = ''; + if (isset($options['ignore']) and $options['ignore']) + { + $ignore = 'IGNORE'; + } + + if (count($datas) != 0) + { + $first = true; + + $query = 'SHOW VARIABLES LIKE \'max_allowed_packet\''; + list(, $packet_size) = pwg_db_fetch_row(pwg_query($query)); + $packet_size = $packet_size - 2000; // The last list of values MUST not exceed 2000 character*/ + $query = ''; + + foreach ($datas as $insert) + { + if (strlen($query) >= $packet_size) + { + pwg_query($query); + $first = true; + } + + if ($first) + { + $query = ' +INSERT '.$ignore.' INTO '.$table_name.' + ('.implode(',', $dbfields).') + VALUES'; + $first = false; + } + else + { + $query .= ' + , '; + } + + $query .= '('; + foreach ($dbfields as $field_id => $dbfield) + { + if ($field_id > 0) + { + $query .= ','; + } + + if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') + { + $query .= 'NULL'; + } + else + { + $query .= "'".$insert[$dbfield]."'"; + } + } + $query .= ')'; + } + pwg_query($query); + } +} + +/** + * inserts one line in a table + * + * @param string table_name + * @param array dbfields + * @param array insert + * @return void + */ +function single_insert($table_name, $data) +{ + if (count($data) != 0) + { + $query = ' +INSERT INTO '.$table_name.' + ('.implode(',', array_keys($data)).') + VALUES'; + + $query .= '('; + $is_first = true; + foreach ($data as $key => $value) + { + if (!$is_first) + { + $query .= ','; + } + else + { + $is_first = false; + } + + if ($value === '') + { + $query .= 'NULL'; + } + else + { + $query .= "'".$value."'"; + } + } + $query .= ')'; + + pwg_query($query); + } +} + +/** + * Do maintenance on all PWG tables + * + * @return none + */ +function do_maintenance_all_tables() +{ + global $prefixeTable, $page; + + $all_tables = array(); + + // List all tables + $query = 'SHOW TABLES LIKE \''.$prefixeTable.'%\''; + $result = pwg_query($query); + while ($row = pwg_db_fetch_row($result)) + { + $all_tables[] = $row[0]; + } + + // Repair all tables + $query = 'REPAIR TABLE '.implode(', ', $all_tables); + $mysql_rc = pwg_query($query); + + // Re-Order all tables + foreach ($all_tables as $table_name) + { + $all_primary_key = array(); + + $query = 'DESC '.$table_name.';'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if ($row['Key'] == 'PRI') + { + $all_primary_key[] = $row['Field']; + } + } + + if (count($all_primary_key) != 0) + { + $query = 'ALTER TABLE '.$table_name.' ORDER BY '.implode(', ', $all_primary_key).';'; + $mysql_rc = $mysql_rc && pwg_query($query); + } + } + + // Optimize all tables + $query = 'OPTIMIZE TABLE '.implode(', ', $all_tables); + $mysql_rc = $mysql_rc && pwg_query($query); + if ($mysql_rc) + { + $page['infos'][] = l10n('All optimizations have been successfully completed.'); + } + else + { + $page['errors'][] = l10n('Optimizations have been completed with some errors.'); + } +} + +function pwg_db_concat($array) +{ + $string = implode($array, ','); + return 'CONCAT('. $string.')'; +} + +function pwg_db_concat_ws($array, $separator) +{ + $string = implode($array, ','); + return 'CONCAT_WS(\''.$separator.'\','. $string.')'; +} + +function pwg_db_cast_to_text($string) +{ + return $string; +} + +/** + * returns an array containing the possible values of an enum field + * + * @param string tablename + * @param string fieldname + */ +function get_enums($table, $field) +{ + // retrieving the properties of the table. Each line represents a field : + // columns are 'Field', 'Type' + $result = pwg_query('desc '.$table); + while ($row = pwg_db_fetch_assoc($result)) + { + // we are only interested in the the field given in parameter for the + // function + if ($row['Field'] == $field) + { + // retrieving possible values of the enum field + // enum('blue','green','black') + $options = explode(',', substr($row['Type'], 5, -1)); + foreach ($options as $i => $option) + { + $options[$i] = str_replace("'", '',$option); + } + } + } + pwg_db_free_result($result); + return $options; +} + +/** + * Smartly checks if a variable is equivalent to true or false + * + * @param mixed input + * @return bool + */ +function get_boolean($input) +{ + if ('false' === strtolower($input)) + { + return false; + } + + return (bool)$input; +} + +/** + * returns boolean string 'true' or 'false' if the given var is boolean + * + * @param mixed $var + * @return mixed + */ +function boolean_to_string($var) +{ + if (is_bool($var)) + { + return $var ? 'true' : 'false'; + } + else + { + return $var; + } +} + +/** + * + * interval and date functions + * + */ + +function pwg_db_get_recent_period_expression($period, $date='CURRENT_DATE') +{ + if ($date!='CURRENT_DATE') + { + $date = '\''.$date.'\''; + } + + return 'SUBDATE('.$date.',INTERVAL '.$period.' DAY)'; +} + +function pwg_db_get_recent_period($period, $date='CURRENT_DATE') +{ + $query = ' +SELECT '.pwg_db_get_recent_period_expression($period); + list($d) = pwg_db_fetch_row(pwg_query($query)); + + return $d; +} + +function pwg_db_get_flood_period_expression($seconds) +{ + return 'SUBDATE(now(), INTERVAL '.$seconds.' SECOND)'; +} + +function pwg_db_get_hour($date) +{ + return 'hour('.$date.')'; +} + +function pwg_db_get_date_YYYYMM($date) +{ + return 'DATE_FORMAT('.$date.', \'%Y%m\')'; +} + +function pwg_db_get_date_MMDD($date) +{ + return 'DATE_FORMAT('.$date.', \'%m%d\')'; +} + +function pwg_db_get_year($date) +{ + return 'YEAR('.$date.')'; +} + +function pwg_db_get_month($date) +{ + return 'MONTH('.$date.')'; +} + +function pwg_db_get_week($date, $mode=null) +{ + if ($mode) + { + return 'WEEK('.$date.', '.$mode.')'; + } + else + { + return 'WEEK('.$date.')'; + } +} + +function pwg_db_get_dayofmonth($date) +{ + return 'DAYOFMONTH('.$date.')'; +} + +function pwg_db_get_dayofweek($date) +{ + return 'DAYOFWEEK('.$date.')'; +} + +function pwg_db_get_weekday($date) +{ + return 'WEEKDAY('.$date.')'; +} + +function pwg_db_date_to_ts($date) +{ + return 'UNIX_TIMESTAMP('.$date.')'; +} + +// my_error returns (or send to standard output) the message concerning the +// error occured for the last mysql query. +function my_error($header, $die) +{ + $error = "[mysql error ".mysql_errno().'] '.mysql_error()."\n"; + $error .= $header; + + if ($die) + { + fatal_error($error); + } + echo("
    ");
    +  trigger_error($error, E_USER_WARNING);
    +  echo("
    "); +} + +?> \ No newline at end of file diff --git a/sources/include/dblayer/functions_mysqli.inc.php b/sources/include/dblayer/functions_mysqli.inc.php new file mode 100644 index 0000000..41ada25 --- /dev/null +++ b/sources/include/dblayer/functions_mysqli.inc.php @@ -0,0 +1,802 @@ +select_db($database)) + { + throw new Exception('Connection to server succeed, but it was impossible to connect to database'); + } +} + +function pwg_db_check_charset() +{ + $db_charset = 'utf8'; + if (defined('DB_CHARSET') and DB_CHARSET != '') + { + $db_charset = DB_CHARSET; + } + pwg_query('SET NAMES "'.$db_charset.'"'); +} + +function pwg_db_check_version() +{ + $current_mysql = pwg_get_db_version(); + if (version_compare($current_mysql, REQUIRED_MYSQL_VERSION, '<')) + { + fatal_error( + sprintf( + 'your MySQL version is too old, you have "%s" and you need at least "%s"', + $current_mysql, + REQUIRED_MYSQL_VERSION + ) + ); + } +} + +function pwg_get_db_version() +{ + global $mysqli; + + return $mysqli->server_info; +} + +function pwg_query($query) +{ + global $mysqli, $conf, $page, $debug, $t2; + + $start = microtime(true); + ($result = $mysqli->query($query)) or my_error($query, $conf['die_on_sql_error']); + + $time = microtime(true) - $start; + + if (!isset($page['count_queries'])) + { + $page['count_queries'] = 0; + $page['queries_time'] = 0; + } + + $page['count_queries']++; + $page['queries_time']+= $time; + + if ($conf['show_queries']) + { + $output = ''; + $output.= '
    ['.$page['count_queries'].'] ';
    +    $output.= "\n".$query;
    +    $output.= "\n".'(this query time : ';
    +    $output.= ''.number_format($time, 3, '.', ' ').' s)';
    +    $output.= "\n".'(total SQL time  : ';
    +    $output.= number_format($page['queries_time'], 3, '.', ' ').' s)';
    +    $output.= "\n".'(total time      : ';
    +    $output.= number_format( ($time+$start-$t2), 3, '.', ' ').' s)';
    +    if ( $result!=null and preg_match('/\s*SELECT\s+/i',$query) )
    +    {
    +      $output.= "\n".'(num rows        : ';
    +      $output.= pwg_db_num_rows($result).' )';
    +    }
    +    elseif ( $result!=null
    +      and preg_match('/\s*INSERT|UPDATE|REPLACE|DELETE\s+/i',$query) )
    +    {
    +      $output.= "\n".'(affected rows   : ';
    +      $output.= pwg_db_changes().' )';
    +    }
    +    $output.= "
    \n"; + + $debug .= $output; + } + + return $result; +} + +function pwg_db_nextval($column, $table) +{ + $query = ' +SELECT IF(MAX('.$column.')+1 IS NULL, 1, MAX('.$column.')+1) + FROM '.$table; + list($next) = pwg_db_fetch_row(pwg_query($query)); + + return $next; +} + +function pwg_db_changes() +{ + global $mysqli; + + return $mysqli->affected_rows; +} + +function pwg_db_num_rows($result) +{ + return $result->num_rows; +} + +function pwg_db_fetch_array($result) +{ + return $result->fetch_array(); +} + +function pwg_db_fetch_assoc($result) +{ + return $result->fetch_assoc(); +} + +function pwg_db_fetch_row($result) +{ + return $result->fetch_row(); +} + +function pwg_db_fetch_object($result) +{ + return $result->fetch_object(); +} + +function pwg_db_free_result($result) +{ + return $result->free_result(); +} + +function pwg_db_real_escape_string($s) +{ + global $mysqli; + + return $mysqli->real_escape_string($s); +} + +function pwg_db_insert_id() +{ + global $mysqli; + + return $mysqli->insert_id; +} + +function pwg_db_errno() +{ + global $mysqli; + + return $mysqli->errno; +} + +function pwg_db_error() +{ + global $mysqli; + + return $mysqli->error; +} + +function pwg_db_close() +{ + global $mysqli; + + return $mysqli->close(); +} + +/** + * + * complex functions + * + */ + +define('MASS_UPDATES_SKIP_EMPTY', 1); +/** + * updates multiple lines in a table + * + * @param string table_name + * @param array dbfields + * @param array datas + * @param int flags - if MASS_UPDATES_SKIP_EMPTY - empty values do not overwrite existing ones + * @return void + */ +function mass_updates($tablename, $dbfields, $datas, $flags=0) +{ + if (count($datas) == 0) + return; + + // depending on the MySQL version, we use the multi table update or N update queries + if (count($datas) < 10) + { + foreach ($datas as $data) + { + $query = ' +UPDATE '.$tablename.' + SET '; + $is_first = true; + foreach ($dbfields['update'] as $key) + { + $separator = $is_first ? '' : ",\n "; + + if (isset($data[$key]) and $data[$key] != '') + { + $query.= $separator.$key.' = \''.$data[$key].'\''; + } + else + { + if ( $flags & MASS_UPDATES_SKIP_EMPTY ) + continue; // next field + $query.= "$separator$key = NULL"; + } + $is_first = false; + } + if (!$is_first) + {// only if one field at least updated + $query.= ' + WHERE '; + $is_first = true; + foreach ($dbfields['primary'] as $key) + { + if (!$is_first) + { + $query.= ' AND '; + } + if ( isset($data[$key]) ) + { + $query.= $key.' = \''.$data[$key].'\''; + } + else + { + $query.= $key.' IS NULL'; + } + $is_first = false; + } + pwg_query($query); + } + } // foreach update + } // if mysqli_ver or count $value) + { + $separator = $is_first ? '' : ",\n "; + + if (isset($value) and $value !== '') + { + $query.= $separator.$key.' = \''.$value.'\''; + } + else + { + if ( $flags & MASS_UPDATES_SKIP_EMPTY ) + continue; // next field + $query.= "$separator$key = NULL"; + } + $is_first = false; + } + if (!$is_first) + {// only if one field at least updated + $query.= ' + WHERE '; + $is_first = true; + foreach ($where_fields as $key => $value) + { + if (!$is_first) + { + $query.= ' AND '; + } + if ( isset($value) ) + { + $query.= $key.' = \''.$value.'\''; + } + else + { + $query.= $key.' IS NULL'; + } + $is_first = false; + } + pwg_query($query); + } +} + + +/** + * inserts multiple lines in a table + * + * @param string table_name + * @param array dbfields + * @param array inserts + * @return void + */ +function mass_inserts($table_name, $dbfields, $datas, $options=array()) +{ + $ignore = ''; + if (isset($options['ignore']) and $options['ignore']) + { + $ignore = 'IGNORE'; + } + + if (count($datas) != 0) + { + $first = true; + + $query = 'SHOW VARIABLES LIKE \'max_allowed_packet\''; + list(, $packet_size) = pwg_db_fetch_row(pwg_query($query)); + $packet_size = $packet_size - 2000; // The last list of values MUST not exceed 2000 character*/ + $query = ''; + + foreach ($datas as $insert) + { + if (strlen($query) >= $packet_size) + { + pwg_query($query); + $first = true; + } + + if ($first) + { + $query = ' +INSERT '.$ignore.' INTO '.$table_name.' + ('.implode(',', $dbfields).') + VALUES'; + $first = false; + } + else + { + $query .= ' + , '; + } + + $query .= '('; + foreach ($dbfields as $field_id => $dbfield) + { + if ($field_id > 0) + { + $query .= ','; + } + + if (!isset($insert[$dbfield]) or $insert[$dbfield] === '') + { + $query .= 'NULL'; + } + else + { + $query .= "'".$insert[$dbfield]."'"; + } + } + $query .= ')'; + } + pwg_query($query); + } +} + +/** + * inserts one line in a table + * + * @param string table_name + * @param array dbfields + * @param array insert + * @return void + */ +function single_insert($table_name, $data) +{ + if (count($data) != 0) + { + $query = ' +INSERT INTO '.$table_name.' + ('.implode(',', array_keys($data)).') + VALUES'; + + $query .= '('; + $is_first = true; + foreach ($data as $key => $value) + { + if (!$is_first) + { + $query .= ','; + } + else + { + $is_first = false; + } + + if ($value === '') + { + $query .= 'NULL'; + } + else + { + $query .= "'".$value."'"; + } + } + $query .= ')'; + + pwg_query($query); + } +} + +/** + * Do maintenance on all PWG tables + * + * @return none + */ +function do_maintenance_all_tables() +{ + global $prefixeTable, $page; + + $all_tables = array(); + + // List all tables + $query = 'SHOW TABLES LIKE \''.$prefixeTable.'%\''; + $result = pwg_query($query); + while ($row = pwg_db_fetch_row($result)) + { + $all_tables[] = $row[0]; + } + + // Repair all tables + $query = 'REPAIR TABLE '.implode(', ', $all_tables); + $mysqli_rc = pwg_query($query); + + // Re-Order all tables + foreach ($all_tables as $table_name) + { + $all_primary_key = array(); + + $query = 'DESC '.$table_name.';'; + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + if ($row['Key'] == 'PRI') + { + $all_primary_key[] = $row['Field']; + } + } + + if (count($all_primary_key) != 0) + { + $query = 'ALTER TABLE '.$table_name.' ORDER BY '.implode(', ', $all_primary_key).';'; + $mysqli_rc = $mysqli_rc && pwg_query($query); + } + } + + // Optimize all tables + $query = 'OPTIMIZE TABLE '.implode(', ', $all_tables); + $mysqli_rc = $mysqli_rc && pwg_query($query); + if ($mysqli_rc) + { + $page['infos'][] = l10n('All optimizations have been successfully completed.'); + } + else + { + $page['errors'][] = l10n('Optimizations have been completed with some errors.'); + } +} + +function pwg_db_concat($array) +{ + $string = implode($array, ','); + return 'CONCAT('. $string.')'; +} + +function pwg_db_concat_ws($array, $separator) +{ + $string = implode($array, ','); + return 'CONCAT_WS(\''.$separator.'\','. $string.')'; +} + +function pwg_db_cast_to_text($string) +{ + return $string; +} + +/** + * returns an array containing the possible values of an enum field + * + * @param string tablename + * @param string fieldname + */ +function get_enums($table, $field) +{ + // retrieving the properties of the table. Each line represents a field : + // columns are 'Field', 'Type' + $result = pwg_query('desc '.$table); + while ($row = pwg_db_fetch_assoc($result)) + { + // we are only interested in the the field given in parameter for the + // function + if ($row['Field'] == $field) + { + // retrieving possible values of the enum field + // enum('blue','green','black') + $options = explode(',', substr($row['Type'], 5, -1)); + foreach ($options as $i => $option) + { + $options[$i] = str_replace("'", '',$option); + } + } + } + pwg_db_free_result($result); + return $options; +} + +/** + * Smartly checks if a variable is equivalent to true or false + * + * @param mixed input + * @return bool + */ +function get_boolean($input) +{ + if ('false' === strtolower($input)) + { + return false; + } + + return (bool)$input; +} + +/** + * returns boolean string 'true' or 'false' if the given var is boolean + * + * @param mixed $var + * @return mixed + */ +function boolean_to_string($var) +{ + if (is_bool($var)) + { + return $var ? 'true' : 'false'; + } + else + { + return $var; + } +} + +/** + * + * interval and date functions + * + */ + +function pwg_db_get_recent_period_expression($period, $date='CURRENT_DATE') +{ + if ($date!='CURRENT_DATE') + { + $date = '\''.$date.'\''; + } + + return 'SUBDATE('.$date.',INTERVAL '.$period.' DAY)'; +} + +function pwg_db_get_recent_period($period, $date='CURRENT_DATE') +{ + $query = ' +SELECT '.pwg_db_get_recent_period_expression($period); + list($d) = pwg_db_fetch_row(pwg_query($query)); + + return $d; +} + +function pwg_db_get_flood_period_expression($seconds) +{ + return 'SUBDATE(now(), INTERVAL '.$seconds.' SECOND)'; +} + +function pwg_db_get_hour($date) +{ + return 'hour('.$date.')'; +} + +function pwg_db_get_date_YYYYMM($date) +{ + return 'DATE_FORMAT('.$date.', \'%Y%m\')'; +} + +function pwg_db_get_date_MMDD($date) +{ + return 'DATE_FORMAT('.$date.', \'%m%d\')'; +} + +function pwg_db_get_year($date) +{ + return 'YEAR('.$date.')'; +} + +function pwg_db_get_month($date) +{ + return 'MONTH('.$date.')'; +} + +function pwg_db_get_week($date, $mode=null) +{ + if ($mode) + { + return 'WEEK('.$date.', '.$mode.')'; + } + else + { + return 'WEEK('.$date.')'; + } +} + +function pwg_db_get_dayofmonth($date) +{ + return 'DAYOFMONTH('.$date.')'; +} + +function pwg_db_get_dayofweek($date) +{ + return 'DAYOFWEEK('.$date.')'; +} + +function pwg_db_get_weekday($date) +{ + return 'WEEKDAY('.$date.')'; +} + +function pwg_db_date_to_ts($date) +{ + return 'UNIX_TIMESTAMP('.$date.')'; +} + +// my_error returns (or send to standard output) the message concerning the +// error occured for the last mysql query. +function my_error($header, $die) +{ + global $mysqli; + + $error = "[mysql error ".$mysqli->errno.'] '.$mysqli->error."\n"; + $error .= $header; + + if ($die) + { + fatal_error($error); + } + echo("
    ");
    +  trigger_error($error, E_USER_WARNING);
    +  echo("
    "); +} + +?> \ No newline at end of file diff --git a/sources/include/derivative.inc.php b/sources/include/derivative.inc.php new file mode 100644 index 0000000..49fa9d0 --- /dev/null +++ b/sources/include/derivative.inc.php @@ -0,0 +1,540 @@ +id = $infos['id']; + $ext = get_extension($infos['path']); + if (in_array($ext, $conf['picture_ext'])) + { + $this->rel_path = $infos['path']; + $this->flags |= self::IS_ORIGINAL; + } + elseif (!empty($infos['representative_ext'])) + { + $this->rel_path = original_to_representative($infos['path'], $infos['representative_ext']); + } + else + { + $ext = strtolower($ext); + $this->rel_path = trigger_event('get_mimetype_location', get_themeconf('mime_icon_dir').$ext.'.png', $ext ); + $this->flags |= self::IS_MIMETYPE; + if ( ($size=@getimagesize(PHPWG_ROOT_PATH.$this->rel_path)) === false) + { + $this->rel_path = 'themes/default/icon/mimetypes/unknown.png'; + $size = getimagesize(PHPWG_ROOT_PATH.$this->rel_path); + } + $this->size = array($size[0],$size[1]); + } + + if (!$this->size) + { + if (isset($infos['width']) && isset($infos['height'])) + { + $width = $infos['width']; + $height = $infos['height']; + + $this->rotation = intval($infos['rotation']) % 4; + // 1 or 5 => 90 clockwise + // 3 or 7 => 270 clockwise + if ($this->rotation % 2) + { + $width = $infos['height']; + $height = $infos['width']; + } + + $this->size = array($width, $height); + } + elseif (!array_key_exists('width', $infos)) + { + $this->flags |= self::DIM_NOT_GIVEN; + } + } + } + + /** + * @return bool + */ + function is_original() + { + return $this->flags & self::IS_ORIGINAL; + } + + /** + * @return bool + */ + function is_mimetype() + { + return $this->flags & self::IS_MIMETYPE; + } + + /** + * @return string + */ + function get_path() + { + return PHPWG_ROOT_PATH.$this->rel_path; + } + + /** + * @return string + */ + function get_url() + { + $url = get_root_url().$this->rel_path; + if ( !($this->flags & self::IS_MIMETYPE) ) + { + $url = trigger_event('get_src_image_url', $url, $this); + } + return embellish_url($url); + } + + /** + * @return bool + */ + function has_size() + { + return $this->size != null; + } + + /** + * @return int[]|null 0=width, 1=height or null if fail to compute size + */ + function get_size() + { + if ($this->size == null) + { + if ($this->flags & self::DIM_NOT_GIVEN) + fatal_error('SrcImage dimensions required but not provided'); + // probably not metadata synced + if ( ($size = getimagesize( $this->get_path() )) !== false) + { + $this->size = array($size[0],$size[1]); + pwg_query('UPDATE '.IMAGES_TABLE.' SET width='.$size[0].', height='.$size[1].' WHERE id='.$this->id); + } + } + return $this->size; + } +} + + +/** + * Holds information (path, url, dimensions) about a derivative image. + * A derivative image is constructed from a source image (SrcImage class) + * and derivative parameters (DerivativeParams class). + */ +final class DerivativeImage +{ + /** @var SrcImage */ + public $src_image; + /** @var array */ + private $params; + /** @var string */ + private $rel_path; + /** @var string */ + private $rel_url; + /** @var bool */ + private $is_cached=true; + + /** + * @param string|DerivativeParams $type standard derivative param type (e.g. IMG_*) + * or a DerivativeParams object + * @param SrcImage $src_image the source image of this derivative + */ + function __construct($type, SrcImage $src_image) + { + $this->src_image = $src_image; + if (is_string($type)) + { + $this->params = ImageStdParams::get_by_type($type); + } + else + { + $this->params = $type; + } + + self::build($src_image, $this->params, $this->rel_path, $this->rel_url, $this->is_cached); + } + + /** + * Generates the url of a thumbnail. + * + * @param array|SrcImage $infos array of info from db or SrcImage + * @return string + */ + static function thumb_url($infos) + { + return self::url(IMG_THUMB, $infos); + } + + /** + * Generates the url for a particular photo size. + * + * @param string|DerivativeParams $type standard derivative param type (e.g. IMG_*) + * or a DerivativeParams object + * @param array|SrcImage $infos array of info from db or SrcImage + * @return string + */ + static function url($type, $infos) + { + $src_image = is_object($infos) ? $infos : new SrcImage($infos); + $params = is_string($type) ? ImageStdParams::get_by_type($type) : $type; + self::build($src_image, $params, $rel_path, $rel_url); + if ($params == null) + { + return $src_image->get_url(); + } + return embellish_url( + trigger_event('get_derivative_url', + get_root_url().$rel_url, + $params, $src_image, $rel_url + ) ); + } + + /** + * Return associative an array of all DerivativeImage for a specific image. + * Disabled derivative types can be still found in the return, mapped to an + * enabled derivative (e.g. the values are not unique in the return array). + * This is useful for any plugin/theme to just use $deriv[IMG_XLARGE] even if + * the XLARGE is disabled. + * + * @param array|SrcImage $src_image array of info from db or SrcImage + * @return DerivativeImage[] + */ + static function get_all($src_image) + { + if (!is_object($src_image)) + { + $src_image = new SrcImage($src_image); + } + + $ret = array(); + // build enabled types + foreach (ImageStdParams::get_defined_type_map() as $type => $params) + { + $derivative = new DerivativeImage($params, $src_image); + $ret[$type] = $derivative; + } + // disabled types, fallback to enabled types + foreach (ImageStdParams::get_undefined_type_map() as $type => $type2) + { + $ret[$type] = $ret[$type2]; + } + + return $ret; + } + + /** + * Returns an instance of DerivativeImage for a specific image and size. + * Disabled derivatives fallback to an enabled derivative. + * + * @param string $type standard derivative param type (e.g. IMG_*) + * @param array|SrcImage $src_image array of info from db or SrcImage + * @return DerivativeImage|null null if $type not found + */ + static function get_one($type, $src_image) + { + if (!is_object($src_image)) + { + $src_image = new SrcImage($src_image); + } + + $defined = ImageStdParams::get_defined_type_map(); + if (isset($defined[$type])) + { + return new DerivativeImage($defined[$type], $src_image); + } + + $undefined = ImageStdParams::get_undefined_type_map(); + if (isset($undefined[$type])) + { + return new DerivativeImage($defined[ $undefined[$type] ], $src_image); + } + + return null; + } + + /** + * @todo : documentation of DerivativeImage::build + */ + private static function build($src, &$params, &$rel_path, &$rel_url, &$is_cached=null) + { + if ( $src->has_size() && $params->is_identity( $src->get_size() ) ) + {// the source image is smaller than what we should do - we do not upsample + if (!$params->will_watermark($src->get_size()) && !$src->rotation) + {// no watermark, no rotation required -> we will use the source image + $params = null; + $rel_path = $rel_url = $src->rel_path; + return; + } + $defined_types = array_keys(ImageStdParams::get_defined_type_map()); + for ($i=0; $itype) + { + for ($i--; $i>=0; $i--) + { + $smaller = ImageStdParams::get_by_type($defined_types[$i]); + if ($smaller->sizing->max_crop==$params->sizing->max_crop && $smaller->is_identity( $src->get_size() )) + { + $params = $smaller; + self::build($src, $params, $rel_path, $rel_url, $is_cached); + return; + } + } + break; + } + } + } + + $tokens=array(); + $tokens[] = substr($params->type,0,2); + + if ($params->type==IMG_CUSTOM) + { + $params->add_url_tokens($tokens); + } + + $loc = $src->rel_path; + if (substr_compare($loc, './', 0, 2)==0) + { + $loc = substr($loc, 2); + } + elseif (substr_compare($loc, '../', 0, 3)==0) + { + $loc = substr($loc, 3); + } + $loc = substr_replace($loc, '-'.implode('_', $tokens), strrpos($loc, '.'), 0 ); + + $rel_path = PWG_DERIVATIVE_DIR.$loc; + + global $conf; + $url_style=$conf['derivative_url_style']; + if (!$url_style) + { + $mtime = @filemtime(PHPWG_ROOT_PATH.$rel_path); + if ($mtime===false or $mtime < $params->last_mod_time) + { + $is_cached = false; + $url_style = 2; + } + else + { + $url_style = 1; + } + } + + if ($url_style == 2) + { + $rel_url = 'i'; + if ($conf['php_extension_in_urls']) $rel_url .= '.php'; + if ($conf['question_mark_in_urls']) $rel_url .= '?'; + $rel_url .= '/'.$loc; + } + else + { + $rel_url = $rel_path; + } + } + + /** + * @return string + */ + function get_path() + { + return PHPWG_ROOT_PATH.$this->rel_path; + } + + /** + * @return string + */ + function get_url() + { + if ($this->params == null) + { + return $this->src_image->get_url(); + } + return embellish_url( + trigger_event('get_derivative_url', + get_root_url().$this->rel_url, + $this->params, $this->src_image, $this->rel_url + ) ); + } + + /** + * @return bool + */ + function same_as_source() + { + return $this->params == null; + } + + /** + * @return string one if IMG_* or 'Original' + */ + function get_type() + { + if ($this->params == null) + return 'Original'; + return $this->params->type; + } + + /** + * @return int[] + */ + function get_size() + { + if ($this->params == null) + { + return $this->src_image->get_size(); + } + return $this->params->compute_final_size($this->src_image->get_size()); + } + + /** + * Returns the size as CSS rule. + * + * @return string + */ + function get_size_css() + { + $size = $this->get_size(); + if ($size) + { + return 'width:'.$size[0].'px; height:'.$size[1].'px'; + } + } + + /** + * Returns the size as HTML attributes. + * + * @return string + */ + function get_size_htm() + { + $size = $this->get_size(); + if ($size) + { + return 'width="'.$size[0].'" height="'.$size[1].'"'; + } + } + + /** + * Returns literal size: $widthx$height. + * + * @return string + */ + function get_size_hr() + { + $size = $this->get_size(); + if ($size) + { + return $size[0].' x '.$size[1]; + } + } + + /** + * @param int $maxw + * @param int $mawh + * @return int[] + */ + function get_scaled_size($maxw, $maxh) + { + $size = $this->get_size(); + if ($size) + { + $ratio_w = $size[0] / $maxw; + $ratio_h = $size[1] / $maxh; + if ($ratio_w>1 || $ratio_h>1) + { + if ($ratio_w > $ratio_h) + { + $size[0] = $maxw; + $size[1] = floor($size[1] / $ratio_w); + } + else + { + $size[0] = floor($size[0] / $ratio_h); + $size[1] = $maxh; + } + } + } + return $size; + } + + /** + * Returns the scaled size as HTML attributes. + * + * @param int $maxw + * @param int $mawh + * @return string + */ + function get_scaled_size_htm($maxw=9999, $maxh=9999) + { + $size = $this->get_scaled_size($maxw, $maxh); + if ($size) + { + return 'width="'.$size[0].'" height="'.$size[1].'"'; + } + } + + /** + * @return bool + */ + function is_cached() + { + return $this->is_cached; + } +} + +?> \ No newline at end of file diff --git a/sources/include/derivative_params.inc.php b/sources/include/derivative_params.inc.php new file mode 100644 index 0000000..cb1f22e --- /dev/null +++ b/sources/include/derivative_params.inc.php @@ -0,0 +1,436 @@ +l = $this->t = 0; + $this->r = $l[0]; + $this->b = $l[1]; + } + + /** + * @return int + */ + function width() + { + return $this->r - $this->l; + } + + /** + * @return int + */ + function height() + { + return $this->b - $this->t; + } + + /** + * Crops horizontally this rectangle by increasing left side and/or reducing the right side. + * + * @param int $pixels - the amount to substract from the width + * @param stirng $coi - a 4 character string (or null) containing the center of interest + */ + function crop_h($pixels, $coi) + { + if ($this->width() <= $pixels) + return; + $tlcrop = floor($pixels/2); + + if (!empty($coi)) + { + $coil = floor($this->r * char_to_fraction($coi[0])); + $coir = ceil($this->r * char_to_fraction($coi[2])); + $availableL = $coil > $this->l ? $coil - $this->l : 0; + $availableR = $coir < $this->r ? $this->r - $coir : 0; + if ($availableL + $availableR >= $pixels) + { + if ($availableL < $tlcrop) + { + $tlcrop = $availableL; + } + elseif ($availableR < $tlcrop) + { + $tlcrop = $pixels - $availableR; + } + } + } + $this->l += $tlcrop; + $this->r -= $pixels - $tlcrop; + } + + /** + * Crops vertically this rectangle by increasing top side and/or reducing the bottom side. + * + * @param int $pixels - the amount to substract from the height + * @param string $coi - a 4 character string (or null) containing the center of interest + */ + function crop_v($pixels, $coi) + { + if ($this->height() <= $pixels) + return; + $tlcrop = floor($pixels/2); + + if (!empty($coi)) + { + $coit = floor($this->b * char_to_fraction($coi[1])); + $coib = ceil($this->b * char_to_fraction($coi[3])); + $availableT = $coit > $this->t ? $coit - $this->t : 0; + $availableB = $coib < $this->b ? $this->b - $coib : 0; + if ($availableT + $availableB >= $pixels) + { + if ($availableT < $tlcrop) + { + $tlcrop = $availableT; + } + elseif ($availableB < $tlcrop) + { + $tlcrop = $pixels - $availableB; + } + } + } + $this->t += $tlcrop; + $this->b -= $pixels - $tlcrop; + } +} + + +/** + * Paramaters for derivative scaling and cropping. + * Instance of this class contained by DerivativeParams class. + */ +final class SizingParams +{ + /** @var int[] */ + var $ideal_size; + /** @var float */ + var $max_crop; + /** @var int[] */ + var $min_size; + + /** + * @param int[] $ideal_size - two element array of maximum output dimensions (width, height) + * @param float $max_crop - from 0=no cropping to 1= max cropping (100% of width/height); + * expressed as a factor of the input width/height + * @param int[] $min_size - (used only if _$max_crop_ !=0) two element array of output dimensions (width, height) + */ + function __construct($ideal_size, $max_crop=0, $min_size=null) + { + $this->ideal_size = $ideal_size; + $this->max_crop = $max_crop; + $this->min_size = $min_size; + } + + /** + * Returns a simple SizingParams object. + * + * @param int $w + * @param int $h + * @return SizingParams + */ + static function classic($w, $h) + { + return new SizingParams( array($w,$h) ); + } + + /** + * Returns a square SizingParams object. + * + * @param int $x + * @return SizingParams + */ + static function square($w) + { + return new SizingParams( array($w,$w), 1, array($w,$w) ); + } + + /** + * Adds tokens depending on sizing configuration. + * + * @param array &$tokens + */ + function add_url_tokens(&$tokens) + { + if ($this->max_crop == 0) + { + $tokens[] = 's'.size_to_url($this->ideal_size); + } + elseif ($this->max_crop == 1 && size_equals($this->ideal_size, $this->min_size) ) + { + $tokens[] = 'e'.size_to_url($this->ideal_size); + } + else + { + $tokens[] = size_to_url($this->ideal_size); + $tokens[] = fraction_to_char($this->max_crop); + $tokens[] = size_to_url($this->min_size); + } + } + + /** + * Calculates the cropping rectangle and the scaled size for an input image size. + * + * @param int[] $in_size - two element array of input dimensions (width, height) + * @param string $coi - four character encoded string containing the center of interest (unused if max_crop=0) + * @param ImageRect &$crop_rect - ImageRect containing the cropping rectangle or null if cropping is not required + * @param int[] &$scale_size - two element array containing width and height of the scaled image + */ + function compute($in_size, $coi, &$crop_rect, &$scale_size) + { + $destCrop = new ImageRect($in_size); + + if ($this->max_crop > 0) + { + $ratio_w = $destCrop->width() / $this->ideal_size[0]; + $ratio_h = $destCrop->height() / $this->ideal_size[1]; + if ($ratio_w>1 || $ratio_h>1) + { + if ($ratio_w > $ratio_h) + { + $h = $destCrop->height() / $ratio_w; + if ($h < $this->min_size[1]) + { + $idealCropPx = $destCrop->width() - floor($destCrop->height() * $this->ideal_size[0] / $this->min_size[1]); + $maxCropPx = round($this->max_crop * $destCrop->width()); + $destCrop->crop_h( min($idealCropPx, $maxCropPx), $coi); + } + } + else + { + $w = $destCrop->width() / $ratio_h; + if ($w < $this->min_size[0]) + { + $idealCropPx = $destCrop->height() - floor($destCrop->width() * $this->ideal_size[1] / $this->min_size[0]); + $maxCropPx = round($this->max_crop * $destCrop->height()); + $destCrop->crop_v( min($idealCropPx, $maxCropPx), $coi); + } + } + } + } + + $scale_size = array($destCrop->width(), $destCrop->height()); + + $ratio_w = $destCrop->width() / $this->ideal_size[0]; + $ratio_h = $destCrop->height() / $this->ideal_size[1]; + if ($ratio_w>1 || $ratio_h>1) + { + if ($ratio_w > $ratio_h) + { + $scale_size[0] = $this->ideal_size[0]; + $scale_size[1] = floor(1e-6 + $scale_size[1] / $ratio_w); + } + else + { + $scale_size[0] = floor(1e-6 + $scale_size[0] / $ratio_h); + $scale_size[1] = $this->ideal_size[1]; + } + } + else + { + $scale_size = null; + } + + $crop_rect = null; + if ($destCrop->width()!=$in_size[0] || $destCrop->height()!=$in_size[1] ) + { + $crop_rect = $destCrop; + } + } +} + + +/** + * All needed parameters to generate a derivative image. + */ +final class DerivativeParams +{ + /** @var SizingParams */ + public $sizing; + /** @var string among IMG_* */ + public $type = IMG_CUSTOM; + /** @var int used for non-custom images to regenerate the cached files */ + public $last_mod_time = 0; + /** @var bool */ + public $use_watermark = false; + /** @var float from 0=no sharpening to 1=max sharpening */ + public $sharpen = 0; + + /** + * @param SizingParams $sizing + */ + function __construct($sizing) + { + $this->sizing = $sizing; + } + + /** + * @return array + */ + public function __sleep() + { + return array('last_mod_time', 'sizing', 'sharpen'); + } + + /** + * Adds tokens depending on sizing configuration. + * + * @param array &$tokens + */ + function add_url_tokens(&$tokens) + { + $this->sizing->add_url_tokens($tokens); + } + + /** + * @return int[] + */ + function compute_final_size($in_size) + { + $this->sizing->compute( $in_size, null, $crop_rect, $scale_size ); + return $scale_size != null ? $scale_size : $in_size; + } + + /** + * @return int + */ + function max_width() + { + return $this->sizing->ideal_size[0]; + } + + /** + * @return int + */ + function max_height() + { + return $this->sizing->ideal_size[1]; + } + + /** + * @todo : description of DerivativeParams::is_identity + * + * @return bool + */ + function is_identity($in_size) + { + if ($in_size[0] > $this->sizing->ideal_size[0] or + $in_size[1] > $this->sizing->ideal_size[1] ) + { + return false; + } + return true; + } + + /** + * @return bool + */ + function will_watermark($out_size) + { + if ($this->use_watermark) + { + $min_size = ImageStdParams::get_watermark()->min_size; + return $min_size[0]<=$out_size[0] + || $min_size[1]<=$out_size[1]; + } + return false; + } +} + +?> \ No newline at end of file diff --git a/sources/include/derivative_std_params.inc.php b/sources/include/derivative_std_params.inc.php new file mode 100644 index 0000000..375eb18 --- /dev/null +++ b/sources/include/derivative_std_params.inc.php @@ -0,0 +1,283 @@ +add_url_tokens($key); + $key = implode('_',$key); + if ( @self::$custom[$key] < time() - 24*3600) + { + self::$custom[$key] = time(); + self::save(); + } + return $params; + } + + /** + * @return WatermarkParams + */ + static function get_watermark() + { + return self::$watermark; + } + + /** + * Loads derivative configuration from database or initializes it. + */ + static function load_from_db() + { + global $conf; + $arr = @unserialize($conf['derivatives']); + if (false!==$arr) + { + self::$type_map = $arr['d']; + self::$watermark = @$arr['w']; + if (!self::$watermark) self::$watermark = new WatermarkParams(); + self::$custom = @$arr['c']; + if (!self::$custom) self::$custom = array(); + if (isset($arr['q'])) self::$quality = $arr['q']; + } + else + { + self::$watermark = new WatermarkParams(); + self::$type_map = self::get_default_sizes(); + self::save(); + } + self::build_maps(); + } + + /** + * @param WatermarkParams $watermark + */ + static function set_watermark($watermark) + { + self::$watermark = $watermark; + } + + /** + * @see ImageStdParams::save() + * + * @param DerivativeParams[] $map + */ + static function set_and_save($map) + { + self::$type_map = $map; + self::save(); + self::build_maps(); + } + + /** + * Saves the configuration in database. + */ + static function save() + { + global $conf; + + $ser = serialize( array( + 'd' => self::$type_map, + 'q' => self::$quality, + 'w' => self::$watermark, + 'c' => self::$custom, + ) ); + conf_update_param('derivatives', addslashes($ser) ); + } + + /** + * @return DerivativeParams[] + */ + static function get_default_sizes() + { + $arr = array( + IMG_SQUARE => new DerivativeParams( SizingParams::square(120,120) ), + IMG_THUMB => new DerivativeParams( SizingParams::classic(144,144) ), + IMG_XXSMALL => new DerivativeParams( SizingParams::classic(240,240) ), + IMG_XSMALL => new DerivativeParams( SizingParams::classic(432,324) ), + IMG_SMALL => new DerivativeParams( SizingParams::classic(576,432) ), + IMG_MEDIUM => new DerivativeParams( SizingParams::classic(792,594) ), + IMG_LARGE => new DerivativeParams( SizingParams::classic(1008,756) ), + IMG_XLARGE => new DerivativeParams( SizingParams::classic(1224,918) ), + IMG_XXLARGE => new DerivativeParams( SizingParams::classic(1656,1242) ), + ); + $now = time(); + foreach($arr as $params) + { + $params->last_mod_time = $now; + } + return $arr; + } + + /** + * Compute 'apply_watermark' + * + * @param DerivativeParams $params + */ + static function apply_global($params) + { + $params->use_watermark = !empty(self::$watermark->file) && + (self::$watermark->min_size[0]<=$params->sizing->ideal_size[0] + or self::$watermark->min_size[1]<=$params->sizing->ideal_size[1] ); + } + + /** + * Build 'type_map', 'all_type_map' and 'undefined_type_map'. + */ + private static function build_maps() + { + foreach (self::$type_map as $type=>$params) + { + $params->type = $type; + self::apply_global($params); + } + self::$all_type_map = self::$type_map; + + for ($i=0; $i=0; $j--) + { + $target = self::$all_types[$j]; + if (isset(self::$type_map[$target])) + { + self::$all_type_map[$tocheck] = self::$type_map[$target]; + self::$undefined_type_map[$tocheck] = $target; + break; + } + } + } + } + } +} + +?> \ No newline at end of file diff --git a/sources/include/emogrifier.class.php b/sources/include/emogrifier.class.php new file mode 100644 index 0000000..744dd45 --- /dev/null +++ b/sources/include/emogrifier.class.php @@ -0,0 +1,412 @@ +XPath conversion for adjacent sibling selectors and id/class combinations... Thanks Bob V.! + 2011-06-08 Fixed an error where CSS @media types weren't being parsed correctly... Thanks Will W.! + 2011-08-03 Fixed an error where an empty selector at the beginning of the CSS would cause a parse error on the next selector... Thanks Alexei T.! + 2011-10-13 Fully fixed a bug introduced in 2011-06-08 where selectors at the beginning of the CSS would be parsed incorrectly... Thanks Thomas A.! + 2011-10-26 Added an option to allow you to output emogrified code without extended characters being turned into HTML entities. + Moved static references to class attributes so they can be manipulated. + Added the ability to clear out the (formerly) static cache when CSS is reloaded. + 2011-12-22 Fixed a bug that was overwriting existing inline styles from the original HTML... Thanks Sagi L.! + 2012-01-31 Fixed a bug that was introduced with the 2011-12-22 revision... Thanks Sagi L. and M. Bąkowski! + Added extraction of + + + +

    Smarty Debug Console - {if isset($template_name)}{$template_name|debug_print_var nofilter}{else}Total Time {$execution_time|string_format:"%.5f"}{/if}

    + +{if !empty($template_data)} +

    included templates & config files (load time in seconds)

    + +
    +{foreach $template_data as $template} + {$template.name} + + (compile {$template['compile_time']|string_format:"%.5f"}) (render {$template['render_time']|string_format:"%.5f"}) (cache {$template['cache_time']|string_format:"%.5f"}) + +
    +{/foreach} +
    +{/if} + +

    assigned template variables

    + + + {foreach $assigned_vars as $vars} + + + + {/foreach} +
    ${$vars@key|escape:'html'}{$vars|debug_print_var nofilter}
    + +

    assigned config file variables (outer template scope)

    + + + {foreach $config_vars as $vars} + + + + {/foreach} + +
    {$vars@key|escape:'html'}{$vars|debug_print_var nofilter}
    + + +{/capture} + diff --git a/sources/include/smarty/libs/plugins/block.textformat.php b/sources/include/smarty/libs/plugins/block.textformat.php new file mode 100644 index 0000000..b22b104 --- /dev/null +++ b/sources/include/smarty/libs/plugins/block.textformat.php @@ -0,0 +1,113 @@ + + * Name: textformat
    + * Purpose: format text a certain way with preset styles + * or custom wrap/indent settings
    + * Params: + *
    + * - style         - string (email)
    + * - indent        - integer (0)
    + * - wrap          - integer (80)
    + * - wrap_char     - string ("\n")
    + * - indent_char   - string (" ")
    + * - wrap_boundary - boolean (true)
    + * 
    + * + * @link http://www.smarty.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * @param array $params parameters + * @param string $content contents of the block + * @param Smarty_Internal_Template $template template object + * @param boolean &$repeat repeat flag + * @return string content re-formatted + * @author Monte Ohrt + */ +function smarty_block_textformat($params, $content, $template, &$repeat) +{ + if (is_null($content)) { + return; + } + + $style = null; + $indent = 0; + $indent_first = 0; + $indent_char = ' '; + $wrap = 80; + $wrap_char = "\n"; + $wrap_cut = false; + $assign = null; + + foreach ($params as $_key => $_val) { + switch ($_key) { + case 'style': + case 'indent_char': + case 'wrap_char': + case 'assign': + $$_key = (string)$_val; + break; + + case 'indent': + case 'indent_first': + case 'wrap': + $$_key = (int)$_val; + break; + + case 'wrap_cut': + $$_key = (bool)$_val; + break; + + default: + trigger_error("textformat: unknown attribute '$_key'"); + } + } + + if ($style == 'email') { + $wrap = 72; + } + // split into paragraphs + $_paragraphs = preg_split('![\r\n]{2}!', $content); + $_output = ''; + + + foreach ($_paragraphs as &$_paragraph) { + if (!$_paragraph) { + continue; + } + // convert mult. spaces & special chars to single space + $_paragraph = preg_replace(array('!\s+!' . Smarty::$_UTF8_MODIFIER, '!(^\s+)|(\s+$)!' . Smarty::$_UTF8_MODIFIER), array(' ', ''), $_paragraph); + // indent first line + if ($indent_first > 0) { + $_paragraph = str_repeat($indent_char, $indent_first) . $_paragraph; + } + // wordwrap sentences + if (Smarty::$_MBSTRING) { + require_once(SMARTY_PLUGINS_DIR . 'shared.mb_wordwrap.php'); + $_paragraph = smarty_mb_wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); + } else { + $_paragraph = wordwrap($_paragraph, $wrap - $indent, $wrap_char, $wrap_cut); + } + // indent lines + if ($indent > 0) { + $_paragraph = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraph); + } + } + $_output = implode($wrap_char . $wrap_char, $_paragraphs); + + if ($assign) { + $template->assign($assign, $_output); + } else { + return $_output; + } +} + +?> \ No newline at end of file diff --git a/sources/include/smarty/libs/plugins/function.counter.php b/sources/include/smarty/libs/plugins/function.counter.php new file mode 100644 index 0000000..3906bad --- /dev/null +++ b/sources/include/smarty/libs/plugins/function.counter.php @@ -0,0 +1,78 @@ + + * Name: counter
    + * Purpose: print out a counter value + * + * @author Monte Ohrt + * @link http://www.smarty.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * @param array $params parameters + * @param Smarty_Internal_Template $template template object + * @return string|null + */ +function smarty_function_counter($params, $template) +{ + static $counters = array(); + + $name = (isset($params['name'])) ? $params['name'] : 'default'; + if (!isset($counters[$name])) { + $counters[$name] = array( + 'start'=>1, + 'skip'=>1, + 'direction'=>'up', + 'count'=>1 + ); + } + $counter =& $counters[$name]; + + if (isset($params['start'])) { + $counter['start'] = $counter['count'] = (int)$params['start']; + } + + if (!empty($params['assign'])) { + $counter['assign'] = $params['assign']; + } + + if (isset($counter['assign'])) { + $template->assign($counter['assign'], $counter['count']); + } + + if (isset($params['print'])) { + $print = (bool)$params['print']; + } else { + $print = empty($counter['assign']); + } + + if ($print) { + $retval = $counter['count']; + } else { + $retval = null; + } + + if (isset($params['skip'])) { + $counter['skip'] = $params['skip']; + } + + if (isset($params['direction'])) { + $counter['direction'] = $params['direction']; + } + + if ($counter['direction'] == "down") + $counter['count'] -= $counter['skip']; + else + $counter['count'] += $counter['skip']; + + return $retval; + +} + +?> \ No newline at end of file diff --git a/sources/include/smarty/libs/plugins/function.cycle.php b/sources/include/smarty/libs/plugins/function.cycle.php new file mode 100644 index 0000000..1778ffb --- /dev/null +++ b/sources/include/smarty/libs/plugins/function.cycle.php @@ -0,0 +1,106 @@ + + * Name: cycle
    + * Date: May 3, 2002
    + * Purpose: cycle through given values
    + * Params: + *
    + * - name      - name of cycle (optional)
    + * - values    - comma separated list of values to cycle, or an array of values to cycle
    + *               (this can be left out for subsequent calls)
    + * - reset     - boolean - resets given var to true
    + * - print     - boolean - print var or not. default is true
    + * - advance   - boolean - whether or not to advance the cycle
    + * - delimiter - the value delimiter, default is ","
    + * - assign    - boolean, assigns to template var instead of printed.
    + * 
    + * Examples:
    + *
    + * {cycle values="#eeeeee,#d0d0d0d"}
    + * {cycle name=row values="one,two,three" reset=true}
    + * {cycle name=row}
    + * 
    + * + * @link http://www.smarty.net/manual/en/language.function.cycle.php {cycle} + * (Smarty online manual) + * @author Monte Ohrt + * @author credit to Mark Priatel + * @author credit to Gerard + * @author credit to Jason Sweat + * @version 1.3 + * @param array $params parameters + * @param Smarty_Internal_Template $template template object + * @return string|null + */ + +function smarty_function_cycle($params, $template) +{ + static $cycle_vars; + + $name = (empty($params['name'])) ? 'default' : $params['name']; + $print = (isset($params['print'])) ? (bool)$params['print'] : true; + $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; + $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; + + if (!isset($params['values'])) { + if(!isset($cycle_vars[$name]['values'])) { + trigger_error("cycle: missing 'values' parameter"); + return; + } + } else { + if(isset($cycle_vars[$name]['values']) + && $cycle_vars[$name]['values'] != $params['values'] ) { + $cycle_vars[$name]['index'] = 0; + } + $cycle_vars[$name]['values'] = $params['values']; + } + + if (isset($params['delimiter'])) { + $cycle_vars[$name]['delimiter'] = $params['delimiter']; + } elseif (!isset($cycle_vars[$name]['delimiter'])) { + $cycle_vars[$name]['delimiter'] = ','; + } + + if(is_array($cycle_vars[$name]['values'])) { + $cycle_array = $cycle_vars[$name]['values']; + } else { + $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); + } + + if(!isset($cycle_vars[$name]['index']) || $reset ) { + $cycle_vars[$name]['index'] = 0; + } + + if (isset($params['assign'])) { + $print = false; + $template->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); + } + + if($print) { + $retval = $cycle_array[$cycle_vars[$name]['index']]; + } else { + $retval = null; + } + + if($advance) { + if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { + $cycle_vars[$name]['index'] = 0; + } else { + $cycle_vars[$name]['index']++; + } + } + + return $retval; +} + +?> \ No newline at end of file diff --git a/sources/include/smarty/libs/plugins/function.fetch.php b/sources/include/smarty/libs/plugins/function.fetch.php new file mode 100644 index 0000000..eca1182 --- /dev/null +++ b/sources/include/smarty/libs/plugins/function.fetch.php @@ -0,0 +1,214 @@ + + * Name: fetch
    + * Purpose: fetch file, web or ftp data and display results + * + * @link http://www.smarty.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) + * @author Monte Ohrt + * @param array $params parameters + * @param Smarty_Internal_Template $template template object + * @return string|null if the assign parameter is passed, Smarty assigns the result to a template variable + */ +function smarty_function_fetch($params, $template) +{ + if (empty($params['file'])) { + trigger_error("[plugin] fetch parameter 'file' cannot be empty",E_USER_NOTICE); + return; + } + + // strip file protocol + if (stripos($params['file'], 'file://') === 0) { + $params['file'] = substr($params['file'], 7); + } + + $protocol = strpos($params['file'], '://'); + if ($protocol !== false) { + $protocol = strtolower(substr($params['file'], 0, $protocol)); + } + + if (isset($template->smarty->security_policy)) { + if ($protocol) { + // remote resource (or php stream, …) + if(!$template->smarty->security_policy->isTrustedUri($params['file'])) { + return; + } + } else { + // local file + if(!$template->smarty->security_policy->isTrustedResourceDir($params['file'])) { + return; + } + } + } + + $content = ''; + if ($protocol == 'http') { + // http fetch + if($uri_parts = parse_url($params['file'])) { + // set defaults + $host = $server_name = $uri_parts['host']; + $timeout = 30; + $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; + $agent = "Smarty Template Engine ". Smarty::SMARTY_VERSION; + $referer = ""; + $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; + $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; + $_is_proxy = false; + if(empty($uri_parts['port'])) { + $port = 80; + } else { + $port = $uri_parts['port']; + } + if(!empty($uri_parts['user'])) { + $user = $uri_parts['user']; + } + if(!empty($uri_parts['pass'])) { + $pass = $uri_parts['pass']; + } + // loop through parameters, setup headers + foreach($params as $param_key => $param_value) { + switch($param_key) { + case "file": + case "assign": + case "assign_headers": + break; + case "user": + if(!empty($param_value)) { + $user = $param_value; + } + break; + case "pass": + if(!empty($param_value)) { + $pass = $param_value; + } + break; + case "accept": + if(!empty($param_value)) { + $accept = $param_value; + } + break; + case "header": + if(!empty($param_value)) { + if(!preg_match('![\w\d-]+: .+!',$param_value)) { + trigger_error("[plugin] invalid header format '".$param_value."'",E_USER_NOTICE); + return; + } else { + $extra_headers[] = $param_value; + } + } + break; + case "proxy_host": + if(!empty($param_value)) { + $proxy_host = $param_value; + } + break; + case "proxy_port": + if(!preg_match('!\D!', $param_value)) { + $proxy_port = (int) $param_value; + } else { + trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + return; + } + break; + case "agent": + if(!empty($param_value)) { + $agent = $param_value; + } + break; + case "referer": + if(!empty($param_value)) { + $referer = $param_value; + } + break; + case "timeout": + if(!preg_match('!\D!', $param_value)) { + $timeout = (int) $param_value; + } else { + trigger_error("[plugin] invalid value for attribute '".$param_key."'",E_USER_NOTICE); + return; + } + break; + default: + trigger_error("[plugin] unrecognized attribute '".$param_key."'",E_USER_NOTICE); + return; + } + } + if(!empty($proxy_host) && !empty($proxy_port)) { + $_is_proxy = true; + $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + } else { + $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout); + } + + if(!$fp) { + trigger_error("[plugin] unable to fetch: $errstr ($errno)",E_USER_NOTICE); + return; + } else { + if($_is_proxy) { + fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); + } else { + fputs($fp, "GET $uri HTTP/1.0\r\n"); + } + if(!empty($host)) { + fputs($fp, "Host: $host\r\n"); + } + if(!empty($accept)) { + fputs($fp, "Accept: $accept\r\n"); + } + if(!empty($agent)) { + fputs($fp, "User-Agent: $agent\r\n"); + } + if(!empty($referer)) { + fputs($fp, "Referer: $referer\r\n"); + } + if(isset($extra_headers) && is_array($extra_headers)) { + foreach($extra_headers as $curr_header) { + fputs($fp, $curr_header."\r\n"); + } + } + if(!empty($user) && !empty($pass)) { + fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n"); + } + + fputs($fp, "\r\n"); + while(!feof($fp)) { + $content .= fgets($fp,4096); + } + fclose($fp); + $csplit = preg_split("!\r\n\r\n!",$content,2); + + $content = $csplit[1]; + + if(!empty($params['assign_headers'])) { + $template->assign($params['assign_headers'],preg_split("!\r\n!",$csplit[0])); + } + } + } else { + trigger_error("[plugin fetch] unable to parse URL, check syntax",E_USER_NOTICE); + return; + } + } else { + $content = @file_get_contents($params['file']); + if ($content === false) { + throw new SmartyException("{fetch} cannot read resource '" . $params['file'] ."'"); + } + } + + if (!empty($params['assign'])) { + $template->assign($params['assign'], $content); + } else { + return $content; + } +} + +?> \ No newline at end of file diff --git a/sources/include/smarty/libs/plugins/function.html_checkboxes.php b/sources/include/smarty/libs/plugins/function.html_checkboxes.php new file mode 100644 index 0000000..1866bc2 --- /dev/null +++ b/sources/include/smarty/libs/plugins/function.html_checkboxes.php @@ -0,0 +1,233 @@ + + * Type: function
    + * Name: html_checkboxes
    + * Date: 24.Feb.2003
    + * Purpose: Prints out a list of checkbox input types
    + * Examples: + *
    + * {html_checkboxes values=$ids output=$names}
    + * {html_checkboxes values=$ids name='box' separator='
    ' output=$names} + * {html_checkboxes values=$ids checked=$checked separator='
    ' output=$names} + *
    + * Params: + *
    + * - name       (optional) - string default "checkbox"
    + * - values     (required) - array
    + * - options    (optional) - associative array
    + * - checked    (optional) - array default not set
    + * - separator  (optional) - ie 
    or   + * - output (optional) - the output next to each checkbox + * - assign (optional) - assign the output as an array to this variable + * - escape (optional) - escape the content (not value), defaults to true + *
    + * + * @link http://www.smarty.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) + * @author Christopher Kvarme + * @author credits to Monte Ohrt + * @version 1.0 + * @param array $params parameters + * @param object $template template object + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_checkboxes($params, $template) +{ + require_once(SMARTY_PLUGINS_DIR . 'shared.escape_special_chars.php'); + + $name = 'checkbox'; + $values = null; + $options = null; + $selected = array(); + $separator = ''; + $escape = true; + $labels = true; + $label_ids = false; + $output = null; + + $extra = ''; + + foreach($params as $_key => $_val) { + switch($_key) { + case 'name': + case 'separator': + $$_key = (string) $_val; + break; + + case 'escape': + case 'labels': + case 'label_ids': + $$_key = (bool) $_val; + break; + + case 'options': + $$_key = (array) $_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array) $_val); + break; + + case 'checked': + case 'selected': + if (is_array($_val)) { + $selected = array(); + foreach ($_val as $_sel) { + if (is_object($_sel)) { + if (method_exists($_sel, "__toString")) { + $_sel = smarty_function_escape_special_chars((string) $_sel->__toString()); + } else { + trigger_error("html_checkboxes: selected attribute contains an object of class '". get_class($_sel) ."' without __toString() method", E_USER_NOTICE); + continue; + } + } else { + $_sel = smarty_function_escape_special_chars((string) $_sel); + } + $selected[$_sel] = true; + } + } elseif (is_object($_val)) { + if (method_exists($_val, "__toString")) { + $selected = smarty_function_escape_special_chars((string) $_val->__toString()); + } else { + trigger_error("html_checkboxes: selected attribute is an object of class '". get_class($_val) ."' without __toString() method", E_USER_NOTICE); + } + } else { + $selected = smarty_function_escape_special_chars((string) $_val); + } + break; + + case 'checkboxes': + trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); + $options = (array) $_val; + break; + + case 'assign': + break; + + case 'strict': break; + + case 'disabled': + case 'readonly': + if (!empty($params['strict'])) { + if (!is_scalar($_val)) { + trigger_error("html_options: $_key attribute must be a scalar, only boolean true or string '$_key' will actually add the attribute", E_USER_NOTICE); + } + + if ($_val === true || $_val === $_key) { + $extra .= ' ' . $_key . '="' . smarty_function_escape_special_chars($_key) . '"'; + } + + break; + } + // omit break; to fall through! + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; /* raise error here? */ + + $_html_result = array(); + + if (isset($options)) { + foreach ($options as $_key=>$_val) { + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); + } + } else { + foreach ($values as $_i=>$_key) { + $_val = isset($output[$_i]) ? $output[$_i] : ''; + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels, $label_ids, $escape); + } + } + + if(!empty($params['assign'])) { + $template->assign($params['assign'], $_html_result); + } else { + return implode("\n", $_html_result); + } + +} + +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels, $label_ids, $escape=true) { + $_output = ''; + + if (is_object($value)) { + if (method_exists($value, "__toString")) { + $value = (string) $value->__toString(); + } else { + trigger_error("html_options: value is an object of class '". get_class($value) ."' without __toString() method", E_USER_NOTICE); + return ''; + } + } else { + $value = (string) $value; + } + + if (is_object($output)) { + if (method_exists($output, "__toString")) { + $output = (string) $output->__toString(); + } else { + trigger_error("html_options: output is an object of class '". get_class($output) ."' without __toString() method", E_USER_NOTICE); + return ''; + } + } else { + $output = (string) $output; + } + + if ($labels) { + if ($label_ids) { + $_id = smarty_function_escape_special_chars(preg_replace('![^\w\-\.]!' . Smarty::$_UTF8_MODIFIER, '_', $name . '_' . $value)); + $_output .= '
    , before ?>, insert:'] = 'Във %s, преди ?>, добави:'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Само миниатюрата на префикса и webmaster имейл адреса бяха запазени от предишната конфигурация'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Направете проверка за подръжка в [Administration>Tools>Maintenance] ако имате някакви проблеми.'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Тази страница предлага да актуализира базата данни от вашия Piwigo стара версия към поновата версия. Ъпгрейд асистента мисли, че в момента използвате релииз %s (или подобна).'; +$lang['User permissions and group permissions have been erased'] = 'Разрешенията на потребителите и групите бяха изтрити'; +?> \ No newline at end of file diff --git a/sources/language/bn_IN/bn_IN.jpg b/sources/language/bn_IN/bn_IN.jpg new file mode 100644 index 0000000..a6d5c7e Binary files /dev/null and b/sources/language/bn_IN/bn_IN.jpg differ diff --git a/sources/language/bn_IN/common.lang.php b/sources/language/bn_IN/common.lang.php new file mode 100644 index 0000000..cb66ca7 --- /dev/null +++ b/sources/language/bn_IN/common.lang.php @@ -0,0 +1,65 @@ + \ No newline at end of file diff --git a/sources/language/bn_IN/iso.txt b/sources/language/bn_IN/iso.txt new file mode 100644 index 0000000..dc2da74 --- /dev/null +++ b/sources/language/bn_IN/iso.txt @@ -0,0 +1 @@ +বাংলা[IN] \ No newline at end of file diff --git a/sources/language/br_FR/about.html b/sources/language/br_FR/about.html new file mode 100644 index 0000000..f43a0d1 --- /dev/null +++ b/sources/language/br_FR/about.html @@ -0,0 +1,5 @@ +

    Ar palier-luc'hskeudennoù-mañ a zo diazezet war Piwigo.

    + +

    Ur meziant palier-luc'hskeudennoù evit ar web eo Piwigo, savet gant ur gumuniezh bev a implijerien hag a ziorroerien. Aes eo da bersonelaat Piwigo gant an astennoù. Frank ha digoust eo Piwigo zoken.

    + +

    Gweladenniñ lec'hienn web Piwigo

    \ No newline at end of file diff --git a/sources/language/br_FR/admin.lang.php b/sources/language/br_FR/admin.lang.php new file mode 100755 index 0000000..83bc658 --- /dev/null +++ b/sources/language/br_FR/admin.lang.php @@ -0,0 +1,301 @@ +new exciting features.'] = 'Un hizivadur meur eo, gant arc\'hweladurioù nevez a-feson.'; +$lang['This is a minor update, with only bug corrections.'] = 'Un hizivadur bihan eo, gant reizhadurioù drein hepken.'; +$lang['Update photos information'] = 'Hizivaat titouroù al luc\'hskeudenn'; +$lang['Two updates are available'] = 'Daou hizivadur hergerzh'; +$lang['Update All'] = 'Hizivaat pep tra'; +$lang['Update Complete'] = 'Echu eo an hizivadur'; +$lang['Update albums informations'] = 'Hizivaat titouroù ar rummadoù'; +$lang['Update in progress... Please wait.'] = 'Hizivadur war ober… Gortozit.'; +$lang['Update to Piwigo %s'] = 'Hizivaat betek Piwigo %s'; +$lang['Reject'] = 'Dinac\'h'; +$lang['%d user comment validated'] = '%d evezhiadenn implijerien kadarnaet'; +$lang['%d user comments validated'] = '%d evezhiadenn implijerien kadarnaet'; +$lang['User comments validation'] = 'Kadarnaat evezhiadennoù an implijerien'; +$lang['%d user comment rejected'] = '%d evezhiadenn implijerien diwiriekaet'; +$lang['Activate comments'] = 'Gweredekaat an evezhiadennoù'; +$lang['Comments for all'] = 'Evezhiadennoù evit an holl'; +$lang['Default comments order'] = 'Urzh an evezhiadennoù dre ziouer'; +$lang['%d user comments rejected'] = '%d evezhiadenn implijerien diwiriekaet'; +$lang['Pending Comments'] = 'Evezhiadennoù o c\'hortoz'; +$lang['%d tags'] = '%d merker'; +$lang['%d physical'] = '%d fizikel'; +$lang['%d physicals'] = '%d fizikel'; +$lang['... or '] = '… pe'; +$lang['Photo informations updated'] = 'Hizivaet titouroù al luc\'hskeudenn'; +$lang['Password updated'] = 'Hizivaet ar ger-tremen'; +$lang['Check for updates'] = 'Sell ma vez hizivadurioù'; +$lang['%d user was not updated.'] = '%d implijer n\'eo ket bet hizivaet'; +$lang['%d users were not updated.'] = '%d implijer n\'int ket bet hizivaet'; +$lang['Ignore this update'] = 'Leuskel an hizivadur-mañ'; +$lang['%d user was updated.'] = '%d implijer hizivaet'; +$lang['Album updated successfully'] = 'Rummad hizivaet mat'; +$lang['Piwigo Update'] = 'Hizivadur Piwigo'; +$lang['%d users were updated.'] = '%d implijer hizivaet'; +$lang['%s has been successfully updated.'] = '%s a zo bet hizivaet'; +$lang['Reset ignored updates'] = 'Adderaouiñ an hizivadurioù dilezet'; +$lang['Add Photos'] = 'Lakaat luc\'hskeudennoù ouzhpenn'; +$lang['Add a tag'] = 'Lakaat ur merker ouzhpenn'; +$lang['Add a user'] = 'Lakaat un implijer ouzhpenn'; +$lang['%s photos can not be regenerated'] = '%s luc\'hskeudenn a zo bet adgraet'; +$lang['%s photos have been regenerated'] = '%s luc\'hskeudenn a zo bet adgraet'; +$lang['Photos generation in progress...'] = 'Oc\'h ober al luc\'hskeudennoù…'; +$lang['Thumbnails generation in progress...'] = 'Oc\'h ober ar skeudennoùigoù…'; +$lang['Email admins when a comment requires validation'] = 'Kas ur bostel pa vez ezhom da gadarnaat un evezhiadenn'; +$lang['Validate'] = 'Kadarnaat'; +$lang['Validation'] = 'Kadarnadur'; +$lang['pending validation'] = 'o c\'hortoz ar c\'hadarnadur'; +$lang['%d waiting for validation'] = '%d o c\'hortoz ar c\'hadarnadur'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Ar restr ezkarget a zo pounneroc\'h eget sturiad MAX_FILE_SIZE lakaet e furmskrid HTML.'; +$lang['Start Upload'] = 'Kregiñ gant an ezkargañ'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Ar restr ezkarget a zo pounneroc\'h eget sturiad upload_max_filesize e php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Ar restr da ezkargañ a zo bet ezkarget a-zarn hepken'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Ar restroù ezkarget a zo pounneroc\'h eget sturiad post_max_size e php.ini: %sB'; +$lang['Unknown upload error'] = 'Fazi ezkargañ dianav'; +$lang['Upload'] = 'Ezkargañ'; +$lang['Upload Photos'] = 'Ezkargañ luc\'hskeudennoù'; +$lang['Uploaded Photos'] = 'Luc\'hskeudennoù ezkarget'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Oc\'h implij an ezkarger er merdeer emaoc\'h. Esaeit an ezkarger Flash kentoc\'h.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Oc\'h implij an ezkarger Flash emaoc\'h. Kudennoù ? Esaeit an ezkarger er merdeer kentoc\'h.'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader a zo un ezkarger Piwigo. pLoader a brient hol luc\'hskeudennoù ha treuzkas anezho eus hoc\'h urzhiater d\'ho palier luc\'hskeudennoù Piwigo.'; +$lang['%s must be to set to false in your local/config/config.inc.php file'] = 'Ret eo arventennañ %s da false en ho restr local/config/config.inc.php'; +$lang['Add'] = 'Ouzhpennañ'; +$lang['Add New Language'] = 'Lakaat ur yezh nevez ouzhpenn'; +$lang['Add New Theme'] = 'Lakaat un tem nevez ouzhpenn'; +$lang['Add a criteria'] = 'Lakaat un dezverk ouzhpenn'; +$lang['Add a filter'] = 'Lakaat ur sil ouzhpenn'; +$lang['Add group'] = 'Lakaat ur strollad ouzhpenn'; +$lang['Add tags'] = 'Lakaat merkerioù ouzhpenn'; +$lang['Add to caddie'] = 'Lakaat er baner'; +$lang['%s value is not correct file because exif are not supported'] = 'N\'eo ket reizh talvoud %s peogwir n\'eo ket skoret exif'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Gant arload Piwigo evit iOS e vo posubl deoc\'h kevreañ hoc\'h iPhone, iPad pe iPod Touch ouzh ho palier Piwigo, krouiñ rummadoù hag ezkargañ ur bern luc\'hskeudennoù en ur wech.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Gant arload Piwigo evit Android e vo posubl deoc\'h kevreañ ho pellgomzer pe tablezenn ouzh ho palier Piwigo, krouiñ rummadoù hag ezkargañ ur bern luc\'hskeudennoù en ur wech.'; +$lang['+ Add an upload box'] = '+ Lakaat ur voest-ezkargañ'; +$lang[', click on'] = ', klikit war'; +$lang['(this tag will be deleted)'] = '(ar merker-mañ a vo dilemet)'; +$lang['Delete this language'] = 'Dilemel ar yezh-mañ'; +$lang['Delete this theme'] = 'Dilemel an tem-mañ'; +$lang['Deleted on'] = 'Dilemet d\'an'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'implijerien %u o deus an aotre emgefreek peogwir int e-barzh ur strollad aotreet.'; +$lang['(filtered from %s total users)'] = '(silet etre %s implijer en holl)'; +$lang['A locked gallery is only visible to administrators'] = 'Ur palier prennet a vez gwelet gant ar verourien hepken'; +$lang['A new version of Piwigo is available.'] = 'Ur stumm nevez Piwigo a zo hegerz'; +$lang['ACCESS_0'] = 'Moned dieub'; +$lang['ACCESS_1'] = 'Gwelet gant an holl'; +$lang['ACCESS_2'] = 'Gwelet gant an implijerien enrollet'; +$lang['ACCESS_3'] = 'Gwelet gant ar verourien'; +$lang['ACCESS_4'] = 'Gwelet gant ar vistri-gwiad'; +$lang['ACCESS_5'] = 'Moned berzet'; +$lang['Active Plugins'] = 'Lugantoù gweredekaet'; +$lang['Active Themes'] = 'Temoù gweredekaet'; +$lang['Active Languages'] = 'Yezhoù gweredekaet'; +$lang['Activate icon "%s"'] = 'Gweredekaat an arlun "%s"'; +$lang['Activate icon "new" next to albums and pictures'] = 'Gweredekaat an arlun "nevez" e-kichen ar rummadoù hag al luc\'hskeudennoù'; +$lang['Activate it now'] = 'Gweredekaat anezhañ diouzhtu'; +$lang['Activate'] = 'Gweredekaat'; +$lang['Activate Navigation Bar'] = 'Gweredekaat ar varrenn verdeiñ '; +$lang['Activate Navigation Thumbnails'] = 'Gweredekaat skeudennoùigoù-merdeiñ'; +$lang['Action'] = 'Obererezh'; +$lang['Actions'] = 'Obererezhioù'; +$lang['Access type'] = 'Doare moned'; +$lang['Added by %s'] = 'Lakaet gant %s'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Peurliamm %s a zo bet implijet gant rummad %s. Dilemit anezhañ eus istor ar peurliammoù da gentañ.'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Ret eo lakaat en anv ar peurliamm lizherennoù a-z, A-Z, 0-9, "-", "_" pe "/". Arabat eo lakaat sifroù hepken, pe kregiñ gant ur sifr ha "-" goude.'; +$lang['Save to permalink history'] = 'Enrollañ en istor ar peurliammoù'; +$lang['Add/delete a permalink'] = 'Lakaat/Dilemel ur peurliamm'; +$lang['Cannot delete the old permalink !'] = 'Ar peurliamm kozh ne c\'hell ket bezañ dilemet!'; +$lang['Permalink'] = 'Peurliamm'; +$lang['Permalink %s is already used by album %s'] = 'Peurliamm %s a zo implijet gant ar rummad %s dija'; +$lang['Permalink history'] = 'Istor ar peurliammoù'; +$lang['Permalinks'] = 'Peurliammoù'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Ober kavlec\'h "%s" e penngavlec\'h ho staliadur Piwigo'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Reiñ gwirioù da skrivañ (chmod 777) e kavlec\'h "%s" eus penngavlec\'h ho staliadur Piwigo'; +$lang['Add write access to the "%s" directory'] = 'Reiñ gwirioù da skrivañ e kavlec\'h "%s"'; +$lang['Add another set of photos'] = 'Lakaat ur stroll luc\'hskeudennoù all'; +$lang['Add detailed content'] = 'Lakaat endalc\'h dre ar munud'; +$lang['Allow rating'] = 'Aotreiñ da reiñ notennoù'; +$lang['All %d photos are selected'] = 'An holl %d luc\'hskeudenn a zo diuzet'; +$lang['All %d users are selected'] = 'An holl %d implijer a zo diuzet'; +$lang['All languages are up to date.'] = 'An holl yezhoù a zo hizivaet'; +$lang['All plugins are up to date.'] = 'An holl lugantoù a zo hizivaet'; +$lang['All themes are up to date.'] = 'An holl temoù a zo hizivaet'; +$lang['Album manual order was saved'] = 'Urzh dre zorn ar rummad a zo bet enrollet'; +$lang['Album name'] = 'Anv ar rummad'; +$lang['Album photos associated to the following albums: %s'] = 'Luc\'hskeudennoù liammet gant ar rummadoù-mañ: %s'; +$lang['Albums authorized thanks to group associations'] = 'Rummadoù aotreet dre ar strolladoù'; +$lang['Albums automatically sorted'] = 'Rummadoù urzhiet emgefreek'; +$lang['Album "%s" has been added'] = 'Rummad "%s" a zo bet lakaet ouzhpenn'; +$lang['Album "%s" now contains %d photos'] = '%d luc\'hskeudenn a zo er rummad "%s" bremañ'; +$lang['Album list management'] = 'Merañ listenn ar rummadoù'; +$lang['Allowed file types: %s.'] = 'Seurtoù restroù aotreet: %s'; +$lang['All optimizations have been successfully completed.'] = 'An holl gwellekadurioù a zo bet graet.'; +$lang['Allow user customization'] = 'Aotren personeladur an implijerien'; +$lang['Allow user registration'] = 'Aotren an implijerien d\'en em enrollañ'; +$lang['Allow users to delete their own comments'] = 'Aotren an implijerien da zilemel o evezhiadennoù'; +$lang['Allow users to edit their own comments'] = 'Aotren an implijerien da cheñch o evezhiadennoù'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom a zo ur meziant graet evit merañ ur maread luc\'hskeudennoù niverel hag evit ober labour goudeproduiñ.'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam a zo ur meziant frank araokaet evit merañ luc\'hskeudennoù niverel gant Linux, Windows, pe MacOS X.'; +$lang['File upload stopped by extension'] = 'Paouezet eo bet ezkargañ ar restr gant astenn'; +$lang['Some upgrades are available for extensions.'] = 'Hizivadurioù ez eus evit astennoù.'; +$lang['All extensions are up to date.'] = 'An holl astennoù a zo hizivaet'; +$lang['Exif extension not available, admin should disable exif use'] = 'N\'eo ket hegerzh astenn exif, ret e vefe d\'ar merour diweredekaat implij exif.'; +$lang['Extensions Update'] = 'Hizivadur an astennoù'; +$lang['Administration Home'] = 'Pajenn-degemer ar merour'; +$lang['Advanced features'] = 'Arc\'hweladurioù araokaet'; +$lang['An error has occured during upgrade.'] = 'Ur fazi a zo c\'hoarvezet en ur hizivaat.'; +$lang['An error occured during extraction (%s).'] = 'Ur fazi a zo c\'hoarvezet en ur eztennañ ar restroù (%s).'; +$lang['An information email was sent to group "%s"'] = 'Ur postel gant titouroù a zo bet kaset da strollad "%s"'; +$lang['Anomaly'] = 'Direizhder'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Ur fazi a zo c\'hoarvezet en ur eztennañ. Sellit ouzh aotreoù ar restroù ho staliadur Piwigo.
    Klikit amañ evit diskouez renabl ar fazi.'; +$lang['By rank'] = 'Dre renk'; +$lang['Caddie'] = 'Karrigell'; +$lang['Caddie management'] = 'Merañ ar c\'harrigell'; +$lang['By %s'] = 'Dre %s'; +$lang['Associate to album'] = 'Liammañ ouzh ar rummad'; +$lang['Associated'] = 'Liammet'; +$lang['Authorized'] = 'Aotreet'; +$lang['Apply selected corrections'] = 'Arloañ ar reizhadurioù diuzet'; +$lang['Applications'] = 'Arloadoù'; +$lang['Apply action'] = 'Arloañ an obererezh'; +$lang['Apply to sub-albums'] = 'Arloañ d\'an iz-rummadoù'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Ar mestr-gwiad hepken a c\'hell gwellet an ivinell-mañ. Ar merourien ne c\'hellont ket.'; +$lang['Date'] = 'Deiziad'; +$lang['Configuration'] = 'Kefluniadur'; +$lang['Database'] = 'Diaz roadennoù'; +$lang['Average rate'] = 'Notenn keitad'; +$lang['Cancel'] = 'Nullañ'; +$lang['Change password'] = 'Cheñch ger-tremen'; +$lang['Watermark'] = 'Ritenn'; +$lang['add a new watermark'] = 'Lakaat ur ritenn nevez'; +$lang['Apply watermark if height is bigger than'] = 'Lakaat ur ritenn ma vez an uhelder brasoc\'h eget'; +$lang['Apply watermark if width is bigger than'] = 'Lakaat ur ritenn ma vez al ledander brasoc\'h eget'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture a zo empennet evit al luc\'hskeudennerien a-vicher, gant aezamant iPhoto.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture a zo un ostilh galloudus evit eilaozañ luc\'hskeudennoù ha merañ meur a luc\'hskeudennoù gant MacOSX.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto a zo ar merour-luc\'hskeudennoù dre ziouer gant MacOSX. Gant lugant ezporzhiañ Piwigo e vo posubl deoc\'h krouiñ rummadoù nevez, hag ezporzhiañ ho luc\'hskeudennoù eus iPhoto betek ho palier luc\'hskeudennoù Piwigo.'; +$lang['Automatic correction'] = 'Difazier emgefreek'; +$lang['Automatic sort order'] = 'Urzh rummañ emgefreek'; +$lang['Available on'] = 'Hegerzh e'; +$lang['Available only with HTML format'] = 'Hegerzh gant furmad HTML hepken'; +$lang['The anomaly will be ignored until next application version'] = 'Ne vo graet netra diwar-benn ar fazi betek stumm an arload a zeu'; +$lang['Piwigo version'] = 'Stumm Piwigo'; +$lang['You are running the latest version of Piwigo.'] = 'Emañ stumm Piwigo diwezhañ o labourat ganeoc\'h.'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Stumm %s staliet [%s] n\'eo ket kenglotus gant stumm eo ret kaout [%s]'; +$lang['GD version'] = 'Stumm GD'; +$lang['New Version'] = 'Stumm nevez'; +$lang['Version'] = 'Stumm'; +$lang['Authorize users to add comments on selected albums'] = 'Reiñ an aotre d\'an implijerien evit lakaat evezhiadennoù er rummadoù diuzet'; +$lang['Are you sure you want to delete this plugin?'] = 'Ha sur oc\'h da zilemel al lugant-se ?'; +$lang['Are you sure you want to install this plugin?'] = 'Ha sur oc\'h da staliañ al lugant-se ?'; +$lang['Delete selected photos'] = 'Dilemel al luc\'hskeudennoù diuzet'; +$lang['Drop into album'] = 'Diuzañ ur rummad'; +$lang['Choose an action'] = 'Dibabit un obererezh'; +$lang['Center of interest'] = 'Darn talvoudus'; +$lang['Change Admin Colors'] = 'Cheñch livioù ar mererezh'; +$lang['Change username'] = 'Cheñch anv implijer'; +$lang['Available versions for'] = 'Stummoù hegerz evit'; +$lang['Basic settings'] = 'Arventennoù diazez'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'An darn talvoudus e-barzh al luc\'hskeudenn a vez en he c\'hreiz dre ziouer.'; +$lang['Can\'t connect to server.'] = 'Ne oa ket posubl kevreañ ouzh ar servijer'; +$lang['Languages which need upgrade'] = 'Yezhoù o deus ezhomm un hizivadur'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Ha sur oc\'h da gregiñ gant staliadur an hizivaat-se? Ret eo deoc\'h sellout ouzh ar stumm-mañ, ma ne vez ket ezhomm da zistaliañ a-raok.'; +$lang['Plugins which need upgrade'] = 'Lugantoù da hizivaat'; +$lang['Themes which need upgrade'] = 'Temoù o deus ezhomm un hizivadur'; +$lang['Unable to check for upgrade.'] = 'Ne oa ket posubl degas an hizivadur'; +$lang['user_status_guest'] = 'Ostiziad '; +$lang['user_status_normal'] = 'Implijer'; +$lang['user_status_webmaster'] = 'Mestr-gwiad'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Diarunusted uc\'hek arnes: %dM piksel (%dx%d piksel).'; \ No newline at end of file diff --git a/sources/language/br_FR/br_FR.jpg b/sources/language/br_FR/br_FR.jpg new file mode 100644 index 0000000..2c6b6ba Binary files /dev/null and b/sources/language/br_FR/br_FR.jpg differ diff --git a/sources/language/br_FR/common.lang.php b/sources/language/br_FR/common.lang.php new file mode 100644 index 0000000..fa5ad3b --- /dev/null +++ b/sources/language/br_FR/common.lang.php @@ -0,0 +1,421 @@ +Piwigo message board.'] = 'Sikour ho peus ezhom? Savit ho goulennoù war Forom Piwigo.'; +$lang['verification'] = 'gwiriadur'; +$lang['Sorry!'] = 'Digarezit !'; +$lang['PHP 5 is required'] = 'Ret eo kaout PHP 5'; +$lang['Just another Piwigo gallery'] = 'Ur palier-luc\'hskeudennoù Piwigo all'; +$lang['Hope to see you back soon.'] = 'Ken ar wech all !'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Lennit hor foromoù evit kaout sikour: %s'; +$lang['enter a login for webmaster'] = 'Lakait anv implijer ar mestr-gwiad'; +$lang['webmaster login can\'t contain characters \' or "'] = 'Arabat eo lakaat lizherennoù \' pe " e-barzh anv implijer ar mestr-gwiad'; +$lang['Default gallery language'] = 'Yezh dre ziouer ar palier'; +$lang['Welcome to my photo gallery'] = 'Degemer mat war ma palier-luc\'hskeudennoù'; +$lang['Database table prefix'] = 'Rakger taolennoù an diaz roadennoù'; +$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Ar rakger-mañ a vo ouzhpennet da anvioù taolennoù an diaz roadennoù (Gwelloc\'h e vo mererezh ho taolennoù)'; +$lang['Database name'] = 'Anv an diaz roadennoù'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Kevreet mat ouzh ar servijer omp, met ne oa ket posubl kevreañ ouzh an diaz roadennoù.'; +?> \ No newline at end of file diff --git a/sources/language/br_FR/iso.txt b/sources/language/br_FR/iso.txt new file mode 100644 index 0000000..1e4b66d --- /dev/null +++ b/sources/language/br_FR/iso.txt @@ -0,0 +1 @@ +Brezhoneg [FR] \ No newline at end of file diff --git a/sources/language/br_FR/upgrade.lang.php b/sources/language/br_FR/upgrade.lang.php new file mode 100755 index 0000000..6d32e78 --- /dev/null +++ b/sources/language/br_FR/upgrade.lang.php @@ -0,0 +1,40 @@ +release %s
    (or equivalent).'] = 'Ar bajenn-mañ a ginnig hizivadur an diaz roadennoù eus ho stumm Piwigo kozh d\'ar stumm nevez. An ameiler hizivaat a soñj emañ stumm %s o labourat (pe gevatal).'; +$lang['User permissions and group permissions have been erased'] = 'Implijerien ha strolladoù a zo bet dilemet'; +$lang['You do not have access rights to run upgrade'] = 'Difennet eo deoc\'h hizivaat'; +$lang['Statistics'] = 'Stadegoù'; +$lang['total upgrade time'] = 'Hollad amzer an hizivadur'; +$lang['Upgrade'] = 'Hizivadur'; +$lang['Upgrade from version %s to %s'] = 'Hizivaat eus stumm %s betek %s'; +$lang['Upgrade informations'] = 'Titouroù hizivadur'; +$lang['total SQL time'] = 'Hollad an amzer SQL '; +$lang['SQL queries'] = 'Rekedoù SQL'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Ret eo bezañ merour evit hizivaat: kevreit amañ dindan mar plij.'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Gwiriit an trezalc\'h e [Mererezh>Ostilhoù>Trezalc\'h] m\'ho peus kudennoù.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Nemet rakger ar skeudennoùigoù ha postel ar mestr-gwiad a zo bet saveteet eus ar c\'hefluniadur kozh'; +$lang['In %s, before ?>, insert:'] = 'E %s, a-raok ?>, lakaat:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Evit diwall, an tenoù-se a zo bet diweredekaet. Ret e vo deoc\'h sellout ma\'z eus temoù da hizivaat a-raok gweredekaat anezho en-dro.'; +$lang['All sub-albums of private albums become private'] = 'An holl iz-rummadoù e-barzh rummadoù prevez a vo prevez'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Evit diwall, al lugantoù-se a zo bet diweredekaet. Ret e vo deoc\'h sellout ma\'z eus lugantoù da hizivaat a-raok gweredekaat anezho en-dro.'; +?> \ No newline at end of file diff --git a/sources/language/ca_ES/about.html b/sources/language/ca_ES/about.html new file mode 100644 index 0000000..1de60ca --- /dev/null +++ b/sources/language/ca_ES/about.html @@ -0,0 +1,19 @@ +

    Aquesta galeria fotogràfica es basa amb el programari Piwigo.

    + +

    Piwigo és una aplicació web de gestió d'àlbums de fotos. Està escrita en llenguatge PHP i accedeix a bases de dades MySQL.

    + +

    Originàriament fou escrita pel seu creador, Pierrick Le Gall, com a projecte personal durant la tardor de 2001 amb el nom de PhpWebGallery. A la primavera de l'any 2002, es va publicar sota la llicència GPL, i va nàixer tota una comunitat en torn al projecte i, d'avui ençà, sumen ja més de 10 anys.

    + +

    El 15 de febrer de 2009 el nom del projecte original PhpWebGallery, va evolucionar al nom actual de Piwigo. Es va optar per un nom més curt, d'una paraula, sense referències a llenguatges de programació i, a més, conservant l'acrònim PWG del seu nom original. També es va renovar intensament el lloc web amb l'objectiu d'oferir un espai més agradable, còmode, i amb un gran nombre d'eines a disposició de la comunitat per establir una base evolutiva sòlida i permanent.

    + +

    Actualment, el projecte està impulsat per una comunitat plenament activa d'usuaris i desenvolupadors que prospera constantment. A dia d'avui (2012), consta d'un equip format per 20 membres i 50 traductors i llocs web disponibles en 10 idiomes. Disposa d'un gran nombre d'extensions que n'estenen àmpliament les seves funcionalitats. Permeten incorporar nous complements, temes, eines, idiomes i modificacions que fan que sigui fàcilment personalitzable. I el millor de tot és que Piwigo és un programari madur, estable, lliure i totalment gratuït.

    + +

    La traducció de Piwigo a la llengua catalana és creada i mantinguda per: (en ordre alfabètic) +

    +Gràcies per la vostra aportació!

    + +

    Visiteu el web de Piwigo

    +

    Animi's a col·laborar amb el projecte Piwigo

    diff --git a/sources/language/ca_ES/admin.lang.php b/sources/language/ca_ES/admin.lang.php new file mode 100644 index 0000000..094b8ab --- /dev/null +++ b/sources/language/ca_ES/admin.lang.php @@ -0,0 +1,986 @@ +Piwigo Newsletter'; +$lang['Purge search history'] = 'Elimina l\'historial de cerques'; +$lang['Hide'] = 'Oculta'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Sobrepasado el tiempo de ejecución, el procesamiento debe continuar [Tiempo estimado: %d secundas].'; +$lang['Operation in progress'] = 'Tractament en progrés.'; +$lang['Please wait...'] = 'Si us plau, esperi...'; +$lang['Password is missing. Please enter the password.'] = 'Falta la clau d\'accès. Si us plau, introdueix-la.'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Falta confirmar la contrasenya. Si us plau, confirmeu la contrasenya escollida.'; +$lang['Allow users to edit their own comments'] = 'Permet que els usuaris puguin editar els seus propis comentaris'; +$lang['Allow users to delete their own comments'] = 'Permet que els usuaris puguin eliminar els seus propis comentaris'; +$lang['Email administrators when a comment is modified'] = 'Envia un correu electrònic als usuaris administradors quan es modifiqui algun comentari'; +$lang['Email administrators when a comment is deleted'] = 'Envia un correu electrònic als usuaris administradors quan s\'elimini algun comentari'; +$lang['Cannot delete the old permalink !'] = 'No s\'ha pogut eliminar l\'antic enllaç permanent!'; +$lang['Hit'] = 'Accés'; +$lang['Tools'] = 'Eines'; +$lang['Photos'] = 'Fotos'; +$lang['Themes'] = 'Temes'; +$lang['Instructions to use Piwigo'] = 'Instruccions d\'ús de Piwigo'; +$lang['Installed Themes'] = 'Temes instal·lats'; +$lang['Add New Theme'] = 'Afegeix un nou tema'; +$lang['Forbid this theme to users'] = 'Prohibeix aquest tema als usuaris'; +$lang['Set as default theme for unregistered and new users'] = 'Estableix com a tema predeterminat per als nous usuaris i usuaris no registrats'; +$lang['unknown'] = 'desconegut'; +$lang['Upload Photos'] = 'Penja fotos'; +$lang['Drop into album'] = 'Seleccioneu un àlbum'; +$lang['+ Add an upload box'] = 'Afegir'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Crea el directori "%s" a l\'arrel de la instal·lació Piwigo'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Cal concedir permisos d\'escriptura (chmod 777) al directori "%s" a l\'arrel de la instal·lació de Piwigo'; +$lang['existing album'] = 'àlbum existent'; +$lang['create a new album'] = 'creeu un nou àlbum'; +$lang['Album name'] = 'Nom de l\'àlbum'; +$lang['Album "%s" has been added'] = 'S\'ha afegit l\'àlbum "%s"'; +$lang['Uploaded Photos'] = 'Fotos penjades'; +$lang['%d photos uploaded'] = 'S\'han penjat %d fotos'; +$lang['Privacy level set to "%s"'] = 'Nivell de confidencialitat "%s"'; +$lang['Album "%s" now contains %d photos'] = 'En aquests moments l\'àlbum "%s" conté %d fotos'; +$lang['Manage this set of %d photos'] = 'Administra aquest conjunt de %d fotos'; +$lang['Select files'] = 'Seleccioneu els arxius'; +$lang['Everybody'] = 'Tothom'; +$lang['Who can see these photos?'] = 'Qui podrà veure aquestes fotos?'; +$lang['Settings'] = 'Configuració'; +$lang['Resize'] = 'Redimensionar'; +$lang['Maximum width'] = 'Amplada màxima'; +$lang['pixels'] = 'píxels'; +$lang['Maximum height'] = 'Altura máxima'; +$lang['Image Quality'] = 'Qualitat d\'imatge'; +$lang['Thumbnail'] = 'Miniatura'; +$lang['Save Settings'] = 'Desa els ajustos'; +$lang['Your configuration settings are saved'] = 'Les modificacions s\'han desat correctament'; +$lang['Active Themes'] = 'Temes actius'; +$lang['Add write access to the "%s" directory'] = 'Afegeix l\'accés l\'escriptura al directori "%s"'; +$lang['Administration Home'] = 'Taulell de control'; +$lang['Change Admin Colors'] = 'Intercanvia els colors d\'administració'; +$lang['Delete this theme'] = 'Elimina aquest tema'; +$lang['Directory does not exist'] = 'Aquest directori no existeix'; +$lang['FTP + Synchronization'] = 'FTP + Sincronització'; +$lang['Get Support on Piwigo Forum'] = 'Obteniu suport al fòrum de Piwigo'; +$lang['Help Me'] = 'Ajuda\'m'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Aquest tema no s\'ha pogut activar, degut a que falta el tema pare: %s'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Aquest tema no pot ser eliminat perquè n\'hi ha d\'altres que en depenen d\'ell: %s'; +$lang['Inactive Themes'] = 'Temes inactius'; +$lang['Install on your computer,'] = 'Instal·la al vostre ordinador,'; +$lang['Make this theme available to users'] = 'Permet aquest tema als usuaris'; +$lang['Page end'] = 'Final de pàgina'; +$lang['Piwigo Uploader'] = 'Piwigo Uploader'; +$lang['Read Piwigo Documentation'] = 'Llegiu la documentació de Piwigo'; +$lang['Start pLoader and add your photos.'] = 'Inicia pLoader i afegiu les vostres fotos.'; +$lang['Switch to clear or dark colors for administration'] = 'Canvi de colors clars a foscos per als administradors'; +$lang['Theme has been successfully installed'] = 'El tema s\'ha instal·lat amb èxit.'; +$lang['Visit Gallery'] = 'Visiteu la galeria'; +$lang['Visit Piwigo project website'] = 'Visiteu el web del projecte Piwigo'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'PLoader representa a Piwigo Uploader. Des del seu ordinador pLoader prepara les seves fotos i les trasllada a la seva galeria Piwigo.'; +$lang['Guest Settings'] = 'Ajustos de l\'usuari visitant'; +$lang['Main Page'] = 'Pàgina principal'; +$lang['Photo Page'] = 'Pàgina de la foto'; +$lang['Activate Navigation Bar'] = 'Activa la barra de navegació'; +$lang['Activate Navigation Thumbnails'] = 'Activa les miniatures de navegació'; +$lang['Activate icon "%s"'] = 'Activa la icona "%s"'; +$lang['Photo Properties'] = 'Propietats de la foto'; +$lang['Allow user customization'] = 'Permet la personalització de l\'usuari'; +$lang['Languages'] = 'Idiomes'; +$lang['Installed Languages'] = 'Idiomes instal·lats'; +$lang['Add New Language'] = 'Afegeix un nou idioma'; +$lang['Language has been successfully installed'] = 'L\'idioma s\'ha instal·lat correctament'; +$lang['Select:'] = 'Selecciona:'; +$lang['None'] = 'Cap'; +$lang['Invert'] = 'Invertir'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Aquest és l\'únic tema disponible de la galeria. Per a poder-lo desactivar cal tenir-ne un altre.'; +$lang['Webmaster status is required.'] = 'Aquesta acció només la pot dur a terme un webmaster'; +$lang['Bound Theme'] = 'Tema limitat'; +$lang['Allow rating'] = 'Permet valoracions'; +$lang['Select at least one comment'] = 'Seleccioneu al menys un comentari'; +$lang['Active Plugins'] = 'Connectors actius'; +$lang['Inactive Plugins'] = 'Connectors inactius'; +$lang['Missing Plugins'] = 'Connectors que falten'; +$lang['Uninstalled Plugins'] = 'Connectors desinstal·lats'; +$lang['By %s'] = 'Per %s'; +$lang['Visit plugin site'] = 'Visiteu el lloc web del connector'; +$lang['Active Languages'] = 'Idiomes actius'; +$lang['Delete this language'] = 'Elimina aquest idioma'; +$lang['Forbid this language to users'] = 'Prohibeix aquest idioma als usuaris'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'No es pot desactivar aquest idioma, primer definiu un altre idioma per defecte.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Aquest és l\'únic idioma disponible de la galeria. Per a poder-lo desactivar cal que tenir-ne un altre.'; +$lang['Inactive Languages'] = 'Idiomes inactius'; +$lang['Make this language available to users'] = 'Permet aquest idioma als usuaris'; +$lang['Set as default language for unregistered and new users'] = 'Estableix com a idioma predeterminat per als nous usuaris i usuaris no registrats'; +$lang['Miscellaneous'] = 'Miscel·lània '; +$lang['Virtual Links'] = 'Enllaços virtuals'; +$lang['Add Photos'] = 'Afegeix fotos'; +$lang['The following tag was deleted'] = 'S\'ha eliminat la següent etiqueta'; +$lang['There is no other language available.'] = 'No hi ha més idiomes disponibles'; +$lang['There is no other plugin available.'] = 'No hi ha cap connector disponible.'; +$lang['There is no other theme available.'] = 'No hi ha un altre tema disponible'; +$lang['By rank'] = 'Per valoració'; +$lang['Manual order'] = 'Ordre manual'; +$lang['Add another set of photos'] = 'Afegeix un altre conjunt de fotos'; +$lang['Order of menubar items has been updated successfully.'] = 'L\'ordre de la barra de menú s\'ha actualitzat correctament.'; +$lang['This theme was not designed to be directly activated'] = 'Aquest tema no va ser dissenyat per ser directament activat'; +$lang['Who can see this photo?'] = 'Qui pot veure aquesta foto?'; +$lang['Pending Comments'] = 'Comentaris pendents de validar'; +$lang['Menu Management'] = 'Gestiona els menús'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'En el vostre arxiu php.ini, la variable upload_max_filesize (%sB) es major que post_max_size (%sB), Hauríeu de canviar aquesta configuració.'; +$lang['Exif extension not available, admin should disable exif use'] = 'L\'extensió Exif no està disponible. L\'administrador hauria de deshabilitar l\'ús de metadades Exif.'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'La mida de l\'arxiu penjat excedeix el valor upload_max_filesize de l\'arxiu php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'La mida total dels arxius que esteu penjant excedeix el valor post_max_size de l\'arxiu php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'La mida de l\'arxiu penjat excedeix el MAX_FILE_SIZE definit en el formulari HTML'; +$lang['The uploaded file was only partially uploaded'] = 'L\'arxiu s\'ha pujat només parcialment.'; +$lang['No file was uploaded'] = 'No s\'ha penjat cap arxiu'; +$lang['Missing a temporary folder'] = 'No es troba el directori temporal'; +$lang['Failed to write file to disk'] = 'No s\'ha pogut escriure el fitxer al disc'; +$lang['File upload stopped by extension'] = 'La càrrega d\'arxius s\'ha aturat per extensió'; +$lang['Unknown upload error'] = 'Hi ha hagut un error desconegut en penjar les fotos'; +$lang['Error on file "%s" : %s'] = 'Error a l\'arxiu "%s": %s'; +$lang['automatic order'] = 'Ordre automàtic'; +$lang['manual order'] = 'ordre manual'; +$lang['Albums automatically sorted'] = 'Àlbums ordenats automàticament'; +$lang['Batch Manager'] = 'Gestor per lots'; +$lang['include child albums'] = 'incloure els sub-àlbums'; +$lang['Selection'] = 'Selecció'; +$lang['Action'] = 'Acció'; +$lang['Set author'] = 'Estableix autor'; +$lang['Set title'] = 'Estableix el títol'; +$lang['Set creation date'] = 'Estableix la data de creació'; +$lang['Apply action'] = 'Aplica acció'; +$lang['on the %d selected photos'] = 'en les %d fotos seleccionades'; +$lang['%d of %d photos selected'] = '%d de %d fotos seleccionades'; +$lang['No photo selected, %d photos in current set'] = 'No hi ha cap foto seleccionada entre les %d fotos l\'actual conjunt'; +$lang['All %d photos are selected'] = 'S\'han seleccionat totes les %d fotos'; +$lang['remove this filter'] = 'elimina aquest filtre'; +$lang['Add a filter'] = 'Afegeix filtre'; +$lang['Remove all filters'] = 'Elimina tots els filtres'; +$lang['Refresh photo set'] = 'Actualitza les fotos del conjunt'; +$lang['The whole page'] = 'La pàgina sencera'; +$lang['The whole set'] = 'Tot el conjunt'; +$lang['No photo in the current set.'] = 'No hi ha fotos en aquest conjunt.'; +$lang['No photo selected, no action possible.'] = 'No es pot realitzar cap acció ja que no hi ha cap foto seleccionada.'; +$lang['Choose an action'] = 'Seleccioneu una acció'; +$lang['remove author'] = 'elimina l\'autor'; +$lang['Type here the author name'] = 'Escriviu aquí el nom de l\'autor'; +$lang['remove title'] = 'eliminar el títol'; +$lang['Type here the title'] = 'Escriviu aquí el títol'; +$lang['remove creation date'] = 'elimina la data de creació'; +$lang['Album photos associated to the following albums: %s'] = 'Àlbums de fotos associats als següents àlbums: %s'; +$lang['Delete orphan tags'] = 'Elimina les etiquetes orfes'; +$lang['delete photo'] = 'Elimina la foto'; +$lang['Orphan tags deleted'] = 'S\'han eliminat les etiquetes orfes'; +$lang['Week starts on'] = 'La setmana comença en'; +$lang['You have %d orphan tags: %s.'] = 'Teniu %d etiquetes orfes: %s.'; +$lang['Remove from caddie'] = 'Treu del carret'; +$lang['Themes which need upgrade'] = 'Temes per actualitzar'; +$lang['Languages which need upgrade'] = 'Idiomes per actualitzar'; +$lang['All themes are up to date.'] = 'Tots els temes estan actualitzats.'; +$lang['All plugins are up to date.'] = 'Tots els connectors estan actualizats.'; +$lang['All languages are up to date.'] = 'Tots els idiomes estan actualitzats.'; +$lang['Visit theme site'] = 'Visiteu el web del tema'; +$lang['Visit language site'] = 'Visiteu el web de l\'idioma'; +$lang['New Version'] = 'Nova versió'; +$lang['Obsolete Plugins'] = 'Connectors obsolets'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ADVERTÈNCIA! Aquest connector sembla no ser compatible amb la vostra versió de Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Voleu activar-ho de totes maneres?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'AQUEST CONNECTOR ARA ÉS PART DEL NUCLI DE PIWIGO! DESINSTAL·LA\'L! '; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: FALTA AQUEST CONNECTOR TOT I QUE ESTÀ INSTAL·LAT. DESINSTAL·LA\'L ARA!'; +$lang['Thumbnails generation in progress...'] = 'Generació de miniatures en curs...'; +$lang['Photos generation in progress...'] = 'Generació de fotos en curs...'; +$lang['%s photos have been regenerated'] = 's\'han regenerat %s fotos'; +$lang['%s photos can not be regenerated'] = '%s fotos no es poden regenerar'; +$lang['display'] = 'Visualitza'; +$lang['Type in a search term'] = 'Escriviu un terme de cerca'; +$lang['new'] = 'nou'; +$lang['No results'] = 'Sense resultats.'; +$lang['Searching...'] = 'Buscant...'; +$lang['Activate icon "new" next to albums and pictures'] = 'Activa la icona "nou" al costat dels àlbums i de les imatges'; +$lang['Add a criteria'] = 'Afegeix criteris'; +$lang['Deactivate all'] = 'Desactiva-ho tot'; +$lang['Default photos order'] = 'Ordre per defecte de les fotos'; +$lang['Restore'] = 'Restaura'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restableix els valors de configuració predeterminats. Es perdran tots els ajustos personalitzats.'; +$lang['Show menubar'] = 'Visualitza la barra de menú'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'No es pot definir un ordre predeterminat de les fotos perquè hi ha establerta una configuració fet a mida a la configuració local de l\'aplicació.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Heu especificat $conf[\'order_by\'] en l\'arxiu de configuració local. Aquest paràmetre està obsolet. Elimineu-lo o canvieu-li el nom a $conf[\'order_by_custom\']!'; +$lang['Updates'] = 'Actualizaciones'; +$lang['Update in progress... Please wait.'] = 'Actualització en curs... Si us plau, espereu.'; +$lang['Ignore this update'] = 'Ignora aquesta actualització'; +$lang['Reset ignored updates'] = 'Restableix les actualitzacions que han estat omeses'; +$lang['Update All'] = 'Actualitza-ho tot'; +$lang['ERROR'] = 'ERROR'; +$lang['Update Complete'] = 'Actualització realitzada'; +$lang['Piwigo Update'] = 'Piwigo Update'; +$lang['Extensions Update'] = 'Actualitza les extensions'; +$lang['All extensions are up to date.'] = 'Totes les extensions estàn actualitzades.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Els següents connectors poden no ser compatibles amb la nova versió de Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Els següents temes poden no ser compatibles amb la nova versió de Piwigo:'; +$lang['I decide to update anyway'] = 'Vull actualitzar de totes maneres'; +$lang['Update to Piwigo %s'] = 'Actualitza a Piwigo %s'; +$lang['Two updates are available'] = 'Hi ha dues actualitzacions disponibles'; +$lang['This is a minor update, with only bug corrections.'] = 'Aquesta actualització és menor. Només conté correccions d\'errors.'; +$lang['This is a major update, with new exciting features.'] = 'Aquesta es una actualització major, amb noves i entusiasmadores funcions.'; +$lang['Some themes and plugins may be not available yet.'] = 'Alguns temes i connectors poden no estar disponibles.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Podeu actualitzar a Piwigo %s directament, sense necessitat d\'actualitzar a Piwigo %s (recomanat).'; +$lang['Save Template Directory'] = 'Desa el directori de plantilles'; +$lang['Dump Database'] = 'Abocar la base de dades'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclou la informació de l\'historial. (Advertència: es pot superar el limit de memòria del servidor)'; +$lang['Unable to dump database.'] = 'No és possible abocar la base de dades.'; +$lang['Some upgrades are available for extensions.'] = 'Hi ha actualitzacions disponibles per a algunes extensions'; +$lang['Ignore All'] = 'Ignora tot'; +$lang['Crop'] = 'Retalla'; +$lang['Width'] = 'Amplada'; +$lang['Height'] = 'Altura'; +$lang['Follow Orientation'] = 'Segueix la orientació'; +$lang['Graphics Library'] = 'Llibreria gràfica'; +$lang['Learn more'] = 'Més informació'; +$lang['Rate'] = 'Valoració'; +$lang['Average rate'] = 'Valoració mitjana'; +$lang['... or '] = '... o '; +$lang['Create'] = 'Crea'; +$lang['Start Upload'] = 'Inicia la càrrega'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Esteu utilitzant el carregador Flash. Problemes? Proveu el carregador del navegador.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Esteu utilitzant el carregador del navegador. Podeu provar el Carregador Flash '; +$lang['Maximum file size: %sB.'] = 'Mida màxima dels arxius: %sB.'; +$lang['Allowed file types: %s.'] = 'Tipus de fitxers permesos: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ressolució màxima aproximada: %dM píxels (és a dir %dx%d píxels).'; +$lang['Manage Permissions'] = 'Gestiona els permisos'; +$lang['Photo %s of %s'] = 'Foto %s de %s'; +$lang['show details'] = 'mostrar detalls'; +$lang['hide details'] = 'Oculta detalls'; +$lang['Merge tags'] = 'Fusiona les etiquetes'; +$lang['Select the destination tag'] = 'Seleccioneu l\'etiqueta de destí'; +$lang['(this tag will be deleted)'] = '(aquesta etiqueta serà eliminada)'; +$lang['Confirm merge'] = 'Confirmeu la fusió'; +$lang['Merge selected tags'] = 'Fusiona'; +$lang['No destination tag selected'] = 'No ha seleccionat cap etiqueta de destí'; +$lang['Tags %s merged into tag %s'] = 'Les etiquetes %s s\'han fusionat creant l\'etiqueta %s'; +$lang['Select at least two tags for merging'] = 'Seleccioneu al menys dues etiquetes per a la fusió'; +$lang['Select an album'] = 'Seleccioneu un àlbum'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Per defecte, Piwigo crearà una nova mida per a la web a partir de les vostres fotos en versió HD (high definition) '; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si no està disponible en alta definició i la mida actual es més gran que les dimensions del canvi de mida, es considerarà \'alta definició\' (HD) tot i què finalment caldrà reduir la mida de la imatge.'; +$lang['An error has occured during upgrade.'] = 'S\'ha produït un error durant el procés d\'actualització.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'S\'ha produït un error mentre l\'extracció. Reviseu els permisos dels fitxers de la instal·lació de piwigo.
    Cliqueu aquí per mostrar el registre de l\'error.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo no pot recuperar l\'arxiu d\'actualització del servidor'; +$lang['Updates'] = 'Actualitzacions'; +$lang['%s has been successfully updated.'] = '%s s\'ha actualitzat correctament.'; +$lang['A locked gallery is only visible to administrators'] = 'Una galeria bloquejada només és visible als administradors'; +$lang['Activate comments'] = 'Activa els comentaris'; +$lang['Add tags'] = 'Afegeix etiquetes'; +$lang['Add to caddie'] = 'Afegeix al carret'; +$lang['Applications'] = 'Aplicacions'; +$lang['Automatic sort order'] = 'Ordena de forma automàtica'; +$lang['Available on'] = 'Disponible en'; +$lang['Available versions for'] = 'Versions disponibles per'; +$lang['Cancel'] = 'Cancel·la'; +$lang['Center of interest'] = 'Punt d\'interès'; +$lang['Default comments order'] = 'Ordre dels comentaris per defecte'; +$lang['Delete multiple size images'] = 'Elimina les imatges de múltiples mides'; +$lang['Duplicates'] = 'Duplicades'; +$lang['Gallery unlocked'] = 'Galeria desbloquejada'; +$lang['Generate multiple size images'] = 'Genera múltiples mides d\'imatge'; +$lang['Groups and users'] = 'Grups i usuaris'; +$lang['Last import'] = 'Última importació'; +$lang['List'] = 'Llista'; +$lang['Move to album'] = 'Mou a l\'àlbum'; +$lang['Multiple Size'] = 'Mida múltiple'; +$lang['Notify administrators when a comment is'] = 'Notifica als administradors quan un comentari sigui'; +$lang['Original Size'] = 'Mida original'; +$lang['Permission granted for groups'] = 'Permisos atorgats a grups'; +$lang['Permission granted for users'] = 'Permís atorgat a usuaris'; +$lang['Photo name'] = 'Nom de la foto'; +$lang['Piwigo for Android'] = 'Piwigo per Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo per iOS (iPhone, iPad, iPod Touch)'; +$lang['Predefined filter'] = 'Filtre predeterminat'; +$lang['Resize after upload'] = 'Redimensionar després de penjar la foto al servidor'; +$lang['Save manual order'] = 'Desa l\'ordre manual'; +$lang['Save visits in history for'] = 'Desa les visites a l\'historial pels'; +$lang['Select a file'] = 'Seleccioneu un arxiu'; +$lang['Select groups...'] = 'Seleccioneu els grups...'; +$lang['Select users...'] = 'Seleccioneu els usuaris...'; +$lang['Send connection settings by email'] = 'Envia la configuració de la connexió per correu electrònic'; +$lang['Synchronize metadata'] = 'Sincronitza les metadades'; +$lang['The original image quality must be a number between %d and %d'] = 'La qualitat de la foto original ha de ser un número comprès entre %d i %d.'; +$lang['There is no group in this gallery.'] = 'No hi ha cap grup en aquesta galeria.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Aquest àlbum conté %d fotos, afegides entre %s i %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Aquest àlbum conté %d fotos, afegides el %s.'; +$lang['This album contains no photo.'] = 'Aquest àlbum no conté fotos.'; +$lang['Unlock gallery'] = 'Desbloqueja la galeria'; +$lang['With no album'] = 'Sense àlbums'; +$lang['With no tag'] = 'Sense etiquetes'; +$lang['With no virtual album'] = 'Sense àlbum virtual'; +$lang['You can activate only one mobile theme.'] = 'Nomes podeu activar un tema mòbil. '; +$lang['Zoom'] = 'Zoom'; +$lang['add a new watermark'] = 'afegeix una nova marca d\'aigua'; +$lang['administrators'] = 'administradors'; +$lang['apply automatic sort order'] = 'Aplica l\'ordenació automàtica'; +$lang['cancel manual order'] = 'Cancel·la l\'ordre manual'; +$lang['custom'] = 'Fet a mida'; +$lang['modified'] = 'modificat'; +$lang['pending validation'] = 'pendent de validar'; +$lang['registered users'] = 'usuaris registrats'; +$lang['%d group'] = '%d grup'; +$lang['%d groups'] = '%d grups'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u usuaris han obtingut permisos automàticament perquè pertanyen a un grup que li han atorgat el permís.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo per Android Aquesta aplicació us permet connectar a la vostra galeria Piwigo des d\'un dispositiu Android, crear nous àlbums i penjar vàries fotos a la vegada.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo per iOS Aquesta aplicació us permet connectar a la vostra galeria Piwigo des d\'un iPhone, iPad o iPod Touch, crear àlbums i penjar vàries fotos a la vegada.'; +$lang['Add group'] = 'Afegeix grup'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom és un programari de fotografia dissenyat per a gestionar grans quantitats d\'imatges digitals i realitzar tasques de postproducció.'; +$lang['Albums authorized thanks to group associations'] = 'Àlbums autoritzats gràcies a les associacions de grups'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture és una poderosa eina per perfeccionar les imatges i gestionar grans biblioteques per a Mac'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture s\'ha dissenyat per als fotògrafs professionals amb la senzillesa de iPhoto.'; +$lang['Apply watermark if height is bigger than'] = 'Aplica la marca d\'aigua si l\'altura és major de'; +$lang['Apply watermark if width is bigger than'] = 'Aplica la marca d\'aigua si l\'ample és més gran de'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Per defecte, el punt d\'interès es col·loca al centre de la foto.'; +$lang['Comments for all'] = 'Comentaris per a tots'; +$lang['Delete Representant'] = 'Elimina la miniatura de l\'àlbum'; +$lang['Delete selected tags'] = 'Elimina'; +$lang['Delete selected users'] = 'Elimina els usuaris seleccionats'; +$lang['Deny selected groups'] = 'Denega els grups seleccionats'; +$lang['Download,'] = 'Descarregar,'; +$lang['Downloads'] = 'Descàrregues'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Les funcions inclouen la navegació per la galeria, la creació d\'àlbums i la càrrega de fotos.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Per a les fotos amb mides retallades, per exemple les quadrades, Piwigo farà tot el possible per a ressaltar-ne el seu punt d\'interès.'; +$lang['Grant selected groups'] = 'Atorgar els grups seleccionats'; +$lang['Manage permissions for group "%s"'] = 'Gestiona els permisos del grup "%s"'; +$lang['Metadata synchronized from file'] = 'S\'ha sincronitzat les metadades de l\'arxiu'; +$lang['No group is permitted to see this private album'] = 'Aquest àlbum és privat, per tant, cap grup el pot visualitzar.'; +$lang['Not cropped correctly?'] = 'No s\'ha retallat correctament?'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Per a Linux, només cal instal·lar Shotwell amb el seu gestor de paquets i permetre la publicació de Piwigo.'; +$lang['Opacity'] = 'Opacitat'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'L\'enllaç permanent %s s\'ha utilitzat anteriorment per l\'àlbum %s. Esborra\'l primer de l\'historial d\'enllaços permanents'; +$lang['Permission granted thanks to a group'] = 'Permís atorgat gràcies a un grup'; +$lang['Permission management'] = 'Gestió de permisos'; +$lang['Photo sizes with crop'] = 'Fotos amb mides retallades'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Connector de publicació Piwigo per a Lightroom'; +$lang['Piwigo export plugin for Aperture'] = 'Connector d\'exportació Piwigo per a Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Connector d\'exportació Piwigo per a iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'Connector de publicació Piwigo per a Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Connector de publicació Piwigo per digiKam'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (client RemoteGallery per Android) és un client de Piwigo per a la plataforma Android de codi lliure (GPL v3)'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Seleccioneu una zona amb el ratolí per definir un nou punt d\'interès.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell és un organitzador de codi obert digital que s\'executa a Linux. És el gestor de fotos per defecte en Ubuntu i Fedora.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'El connector Piwigo Export li permet crear àlbums i exportar fotos.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'El connector Piwigo Publish us permet exportar i sincronitzar fotos des de Lightroom directament a la vostra galeria de fotos Piwigo.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'El punt d\'interès és la zona més significativa d\'una foto.'; +$lang['The original maximum height must be a number between %d and %d'] = 'L\'alçada màxima original ha de ser un número entre %d i %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'L\'amplada màxima original ha de ser un número entre %d i %d'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Per a exportar les teves fotos des de digiKam a Piwigo, hauràs d\'instal·lar els connectors digiKam i Kipi.'; +$lang['Web Form'] = 'Formulari web'; +$lang['X Position'] = 'Posició X'; +$lang['X Repeat'] = 'Repeteix X'; +$lang['Y Position'] = 'Posició Y'; +$lang['any visitor can see this album'] = 'tots els visitants poden veure aquest àlbum'; +$lang['associate to group'] = 'Associa-ho al grup'; +$lang['bottom left corner'] = 'Costat inferior esquerre'; +$lang['bottom right corner'] = 'Costat inferior dret'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam és un avançat software de gestió de fotografies digitals lliure per a Linux, Windows i MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam està dissenyat per als fotògrafs que volen veure, administrar, editar, millorar, organitzar, etiquetar i compartir fotografies.'; +$lang['dissociate from group'] = 'Dissociar del grup'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto és el gestor de fotos per defecte en MacOSX. El connector d\'exportació Piwigo li permet crear nous àlbums i exportar les seves fotos directament des de iPhoto a la seva galeria Piwigo.'; +$lang['include photos with lower privacy level'] = 'incloure fotos amb el mínim nivell de privacitat'; +$lang['middle'] = 'al centre'; +$lang['simple visitors'] = 'visitants únics'; +$lang['top left corner'] = 'costat superior esquerre'; +$lang['top right corner'] = 'costat superior dret'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'els visitants han d\'autenticar-se i disposar dels permisos adequats per veure aquest àlbum'; +$lang['Last send'] = 'Últim enviament'; +$lang['group "%s" added'] = 'S\'ha afegit el grup "%s"'; +$lang['group "%s" deleted'] = 'S\'ha eliminat el grup "%s"'; +$lang['%d day'] = '%d dia'; +$lang['%d days'] = '$d dies'; +$lang['%d hour'] = '%d hora'; +$lang['%d hours'] = '%d hores'; +$lang['%d minute'] = '%d minut'; +$lang['%d minutes'] = '%d minuts'; +$lang['%d month'] = '%d mes'; +$lang['%d months'] = '%d mesos'; +$lang['%d second'] = '%d segon'; +$lang['%d seconds'] = '%d segons'; +$lang['%d year'] = '%d any'; +$lang['%d years'] = '%d anys'; +$lang['%s ago'] = 'fa %s'; +$lang['%s in the future'] = '%s en el futur'; +$lang['Added by %s'] = 'Afegida per %s'; +$lang['Numeric identifier : %d'] = 'Identificador numèric: %d'; +$lang['Original file : %s'] = 'Arxiu original: %s'; +$lang['Posted %s on %s'] = 'Publicada %s, el %s'; +$lang['Rated %d times, score : %.2f'] = 'Valorada %d vegades. Resultat: %.2f'; +$lang['Sharpen'] = 'Sharpen (aguditzar)'; +$lang['Visited %d times'] = 'Visitada %d vegades'; +$lang['Watermark'] = 'Marca d\'aigua'; +$lang['%d week'] = '%d setmana'; +$lang['%d weeks'] = '%d setmanes'; +$lang['Edit photo'] = 'Edita la foto'; +$lang['create a new site'] = 'Crea un lloc nou'; +$lang['No order field selected'] = 'No s\'ha seleccionat cap camp per a ordenar'; +$lang['Duplicate selected tags'] = 'Duplica les etiquetes seleccionades'; +$lang['Name of the duplicate'] = 'Nom del duplicat'; +$lang['Source tag'] = 'Etiqueta font'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'L\'etiqueta "%s" és ara un duplicat de "%s"'; +$lang['Landscape'] = 'Paisatge'; +$lang['Manage photos'] = 'Administra les fotos'; +$lang['Minimum height'] = 'Alçada mínima'; +$lang['Minimum width'] = 'Amplada mínima'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Retrat'; +$lang['View in gallery'] = 'Veure en la galeria'; +$lang['Number of albums per page'] = 'Nombre d\'àlbums per pàgina'; +$lang['Ratio'] = 'Ràtio'; +$lang['between %.2f and %.2f'] = 'entre %.2f i %.2f'; +$lang['between %d and %d pixels'] = 'entre %d i %d píxels'; +$lang['Duplicate'] = 'Duplica'; +$lang['Merge selected groups'] = 'Fusiona els grups seleccionats'; +$lang['No group selected, no action possible.'] = 'No hi ha cap grup seleccionat, l\'acció no s\'ha pogut dur a terme.'; +$lang['No members to manage'] = 'No existeixen membres per a gestionar'; +$lang['Please select at least two groups'] = 'Heu de selecciona almenys dos grups'; +$lang['Rename'] = 'Canvia de nom'; +$lang['This group will be set to default'] = 'Estableix aquest grup com a predeterminat'; +$lang['This group will be unset to default'] = 'Aquest grup deixarà de ser el predeterminat'; +$lang['Type here the name of the new group'] = 'Escriviu aquí el nom del nou grup'; +$lang['Manage the members'] = 'Gestiona els membres'; +$lang['Purge user cache'] = 'Elimina la memòria cau de l\'usuari'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Es reduiran les mides de les fotos a %dx%d píxels.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionar després de penjar la foto al servidor deshabilitat degut a l\'ús de la llibreria gràfica GD'; +$lang['Select at least one tag'] = 'Seleccioneu almenys una etiqueta'; +$lang['Last visit on %s, %s.'] = 'L\'última visita el %s, %s.'; +$lang['No user selected, no action possible.'] = 'No hi ha usuaris seleccionats, l\'acció no ha estat possible'; +$lang['Registered on %s, %s.'] = 'Registrat el %s, %s'; +$lang['Show %s users'] = 'Mostra %s usuaris'; +$lang['Users modified'] = 'Usuaris que s\'han modificat'; +$lang['Basic settings'] = 'Configuració bàsica'; +$lang['Change password'] = 'Canvia la contrasenya'; +$lang['Change username'] = 'Canvia el nom d\'usuari'; +$lang['General'] = 'General'; +$lang['Loading...'] = 'S\'està carregant...'; +$lang['Mail theme'] = 'Tema del correu electrònic'; +$lang['Password updated'] = 'La contrasenya s\'ha actualitzat'; +$lang['Update user'] = 'Actualitza l\'usuari'; +$lang['User %s added'] = 'S\'ha afegit l\'usuari %s'; +$lang['User %s updated'] = 'S\'ha actualitzat l\'usuari %s'; +$lang['close'] = 'tancar'; +$lang['%d of %d users selected'] = '%d de %d usuaris seleccionats'; +$lang['(filtered from %s total users)'] = '(filtrat d\'un total de %s usuaris)'; +$lang['All %d users are selected'] = 'Tots els %d usuaris estan seleccionats'; +$lang['Close user details'] = 'Tanca detals de l\'usuari'; +$lang['No matching user found'] = 'No s\'ha trobat cap usuari coincident'; +$lang['No user selected of %d users'] = 'Cap usuari seleccionat de %d usuaris'; +$lang['Open user details'] = 'Obre detalls de l\'usuari'; +$lang['Showing %s to %s of %s users'] = 'Mostrant %s de %s de %s usuaris'; +$lang['on the %d selected users'] = 'sobre els %d usuaris seleccionats'; +$lang['Activate it now'] = 'Activa-ho ara'; \ No newline at end of file diff --git a/sources/language/ca_ES/ca_ES.jpg b/sources/language/ca_ES/ca_ES.jpg new file mode 100644 index 0000000..ae197f1 Binary files /dev/null and b/sources/language/ca_ES/ca_ES.jpg differ diff --git a/sources/language/ca_ES/common.lang.php b/sources/language/ca_ES/common.lang.php new file mode 100644 index 0000000..62b2a36 --- /dev/null +++ b/sources/language/ca_ES/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/ca_ES/help/cat_modify.html b/sources/language/ca_ES/help/cat_modify.html new file mode 100755 index 0000000..b855ffe --- /dev/null +++ b/sources/language/ca_ES/help/cat_modify.html @@ -0,0 +1,123 @@ +

    Edita l'àlbum

    + +

    Informació

    + +
      + +
    • Nom: Canvia el nom de l'àlbum (virtualment per un àlbum físic).
    • + +
    • Descripció: Un text curt donant una idea del contingut de l'àlbum. + Aquesta indicació es mostrarà al final de la pàgina de les miniatures.
    • + +
    + +

    Desplaçar

    + +

    Els àlbums virtuals poden ser desplaçats. Desplaçar un àlbum significa canviar el seu àlbum pare.

    + +

    Opcions

    + +
      + +
    • Tipus d'accès: Administració de permisos. Si afegiu un àlbum privat, tots els seus + àlbums fills esdeveniràn privats. Si afegiu un àlbum públic, tots els seus àlbums pare esdeveniràn públics.
    • + +
    • Bloquejar: L'àlbum i tots els seus sub-àlbums esdeveniràn temporalment inaccessibles per manteniment.
    • + +
    • Comentaris: Autoritza als usuaris a afegir comentaris dels elements de l'àlbum.
    • + +
    + +

    També pot administrar aquestes opcions de gestió de "Propietats" Comentaris, Bloquejats, +Públic/Privats, Representatiu Disponibles a Tauler de control » Àlbums » Propietats).

    + +

    Ordenar

    + +

    Utilitza l'ordre dels elements per defecte.

    + +

    Indica si l'ordre s'aplica també als sub-àlbums.

    + +

    Selecciona els criteris a utilitzar per aquest àlbum.

    +
      +
    • Data de creació: Data de presa de la imatge
    • +
    • Data de publicació: Data de sincronització
    • +
    • Nota mitja (*): S'actualitza segons la qualificació dels visitants
    • +
    • Les més visitades (*): La visita actual podria canviar l'ordre més visitat
    • +
    • Nom de l'arxiu: Nom que es dóna en el camp de la informació
    • +
    • Id: Id inern (les categories més recents tenen un identificador més alt que els anteriors.
    • + +
    +

    (*)Atenció: Assegureu-vos de provar els criteris d'ordenació perquè de vegades poden generar resultats inesperats.

    + + +

    Representatiu

    + +

    L'àlbum representatiu és la imatge que apareix a la a la pàgina principal category.php) per representar +aquell àlbum que conté sub-àlbums però no imatges: (per exemple l'àlbum arrel del directori). +

    + +

    Existeixen 4 maneres diferents d'escollir la representació de l'àlbum:

    + +
      + +
    • Imatges de pàgina: un dels botons d'acció permet escollir la present imatge per a representar el seu propi àlbum.
    • + +
    • Modifica la informació d'una imatge. a Administració. Hi pots accedir des de picture.php o Gestió de lots a mode unitari. Consulta l'ajuda per a més detalls.
    • + +
    • Tauler de control » Àlbums » Propietats, + Representatiu. Consulta l'ajuda per a més detalls.
    • + +
    • Editar àlbum (aquesta pantalla).
    • + +
    + +

    L'elecció de la representació depén del paràmetre de configuració +allow_random_representative (veure include/config_default.inc.php).

    + +

    Mode Per defecte (allow_random_representative establert a fals), +cada àlbum que conté almenys un element que està representat per un element fix. +Un cop establert (a la creació de l'àlbum), la representació només canvia + quan un administrador jo sol·licita. Si la representació no és apropiada, + pots establir-se una nova representació de l'àlbum a l'atzar.

    + +

    Si el allow_random_representativeparàmetre de configuració és cert, + una categoria que contingui elements pot no tindre una represetnació fixe. Simplement utilitza el botó + Eliminar representant.

    + +

    Si l'àlbum conté sub-àlbums però no elements (imatges), pot ser representat per qualsevol element gràcies a la pantalla Modicar +informació quant a la imatge. L'única opció en la pantalla actual +és el botóEliminar representació.

    + +

    Enllaça tots els elements de l'àlbum a un nou àlbum

    + +
      + +
    • Nom de l'àlbum virtual: Nom del nou àlbum que es crearà. +Tots els elements de la categoria actual es vincularan amb la nova.
    • + +
    • Àlbum pare: Crea sub-àlbums jeràrquicament.
    • + +
    + +

    Enllaça totes les fotos de l'àlbum als àlbums existents

    + +
      + +
    • Àlbums: Selecciona l'àlbum de destí.
    • + +
    + +

    Informa per correu electrònic als tots els membres d'un grup.

    + +
      + +
    • Grups: grup de destinataris
    • + +
    • Contingut del correu electrònic: Amb la possibilitat de redactar textes lliurement.
    • + +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/cat_move.html b/sources/language/ca_ES/help/cat_move.html new file mode 100755 index 0000000..7e635c7 --- /dev/null +++ b/sources/language/ca_ES/help/cat_move.html @@ -0,0 +1,11 @@ +

    Desplaçament de categories virtuals

    + +

    Pots canviar l'arrel del directori d'una categoria virtual.

    + +

    Categories virtuals que s'han de desplaçar

    + +

    Selecciona un o varis àlbums virtuals a desplaçar. Si la llista està buida, és perquè encara s'ha creat.

    + +

    Crear un nou àlbum a un nivell superior

    + +

    Selecciona el nou àlbum pare (virtual o física). Si no se'n selecciona cap, els àlbums que s'han de moure hauràn pujat a l'arrel dels àlbums. No es pot moure una categoria dins d'ella mateixa o dels seus nivells inferiors.

    diff --git a/sources/language/ca_ES/help/cat_options.html b/sources/language/ca_ES/help/cat_options.html new file mode 100755 index 0000000..c54bf94 --- /dev/null +++ b/sources/language/ca_ES/help/cat_options.html @@ -0,0 +1,26 @@ +

    Opcions dels àlbums

    + +

    Gestiona les opcions per varis àlbums a la vegada.

    + +
    + +
    Comentaris dels usuaris
    + +
    Autoritza als usuaris a afegir comentaris als àlbums seleccionats. +Per herència, una imatge pot ser comentada sempre que aquesta pertanyi a un àlbum amb autorització de publicació de comentaris per part del l'administrador.
    + +
    Bloquejar
    + +
    Els àlbums es tornen temporalment inactius durant les tasques de manteniment. És important tenir en compte que al bloquejar un àlbum, tots els seus nivells inferiors són també bloquejats. Per contra, al desbloquejar un àlbum, totes els àlbums d'aquell nivell queden sense restriccions d'accès.
    + +
    Públic/Privat
    + +
    Els permisos només tenen sentit per als àlbums privats. Una vegada que un àlbum és privat, cal autoritzar-ne l'accès als usuaris o grups de forma explícita. Quan un àlbum és considerat com a Públic, tots els nivells inferiors que en depenen d'ell esdevenen també públics.
    + +
    Representant
    + +
    Aquesta opció està disponible únicament si el paràmetre de configuració allow_random_representative (Veure include/config_default.inc.php) éstà +activada. Cada àlbum pot ser representat per una imatge presa a l'atzar o per una miniatura fixa única.
    + +
    diff --git a/sources/language/ca_ES/help/cat_perm.html b/sources/language/ca_ES/help/cat_perm.html new file mode 100755 index 0000000..e29d4b8 --- /dev/null +++ b/sources/language/ca_ES/help/cat_perm.html @@ -0,0 +1,11 @@ +

    Administrar els permisos d'un àlbum

    + +

    Aquesta pantalla només està disponible per als àlbums privats. Aquí pots seleccionar usuaris i grups autoritzats per a un àlbum.

    + +

    Grups

    + +

    Pots autoritzar o denegar l'accés a un àlbum a un grup concret. Gràcies a la a pertinença a grups, es poden elaborar llistes d'usuaris amb un perfil comú per ajudar als administradors a gestionar el nivell de privacitat dels elements publicats.

    + +

    Usuaris

    + +

    Pots autoritzar o denegar l'accès a usuaris individuals.

    diff --git a/sources/language/ca_ES/help/configuration.html b/sources/language/ca_ES/help/configuration.html new file mode 100755 index 0000000..5834ae4 --- /dev/null +++ b/sources/language/ca_ES/help/configuration.html @@ -0,0 +1,89 @@ +

    Configuració

    + +

    Aquesta secció permet administrar la configuració bàsica. Evidentment només es mostren els paràmetres de configuració suficients per a la majoria d'administradors. En cas de què sigui necessari consultar detalladament tots els paràmetres configuració, llegiu el fitxerinclude/config_default.inc.php.

    + +

    Aquesta secció es troba dividida en paries parts, reagrupant els paràmetres per temàtica.

    + +

    Principal

    +
      + +
    • Títol de la galeria: utilitzato per al canal RSS i les notificacions per correu electrònic.
    • + +
    • Pàgines de la bandera: codi html visible dalt de les pàgines.
    • + +
    • URL de la galería: utilitzat pel canal RSS.
    • + +
    • Bloqueig de la galeria: Bloquejar el conjunt de galeries per a dur a terme tasques de manteniment. Només els administradors tenen accés a la galeria.
    • + +
    • Comentaris: És possible comentar les imatges de la galeria.
    • + +
    • Comentaris dels visitants: Activant aquesta opció, tots els visitants encara que siguin convidats no registrats, poden comentar les imatges.
    • + +
    • Notificar als administradors la inscripció d'un nou usuari: Els administradors rebràn un missatge de correu electrònic per a cada nou usuari inscrit.
    • + +
    • Permere la inscripció de nous usuaris: La inscripció és lliure per tothom que s'hi vulgui registrar.
    • + +
    + +

    Historial

    + +

    Les visites a les pàginesindex.php i picture.php queden registrades a la taula history.

    + +

    Les visites es mostren a la pantalla Tauler de control » Eines » Historial.

    + +
      +
    • Enregistrament de les pàgines visitades pels convidats: Les entrades queden totalment consignades.
    • + +
    • Enregistrament de les pàgines visitades pels usuaris: Les entrades queden totalment consignades.
    • + +
    • Enregistrament de les pàgines visitades pels administradors: Les entrades queden totalment consignades.
    • + +
    + +

    Comentaris

    +
      + +
    • : fins i tot els usuaris no registrats poden deixar comentaris.
    • + +
    • Nombre de comentaris dels usuaris per pàgina.
    • + +
    • Validació: Un administrador ha de validar els comentaris dels usuaris abans que puguin ser visibles públicament. La validació es porta a terme per mitjà de la pantalla Tauler de control » Eines » Comentaris en espera.
    • + +
    • Notificació als administradors quan es requereixi la validació d'un comentari: Envia un correu electrònic als administradors quan un usuari afegeixi comentari que sigui validat.
    • + +
    • Notificar als administradors quan es requereixi la validació d'un comentari : Envia un correu electrònic als administradors quan un usuari afegeixi un comentari que requereix validació per part dels administradors. + Validació dels comentaris dels usuaris s'efectua a la pantalla Tauler de control » Eines » Comentaris en espera.
    • + +
    + +

    Visualització per defecte

    +

    Canviar les opcions de visualització per defecte: per als visitants no connectats. Un cop connectat, aquestes opcions són reemplaçades per la de l'usuari. Es poden modificar a la pantalla perfil.

    + +

    Podeu canviar aquestes opcions per als usuaris existents, però això és una altra pantalla: Tauler de control » Usuaris » Gestionar, on es poden canviar aquestes opcions per obtenir una llista d'usuaris seleccionats.

    + +
      + +
    • Idioma: Només afecta a les etiquetes de Piwigo. Els noms dels àlbums, fotos i descripcions no s'han traduït (és a dir, multilingüe).
    • + +
    • Número de miniatures por línia
    • + +
    • Número de línies per pàgina
    • + +
    • Tema de la interfície
    • + +
    • Elements recents: en dies. Període durant el qual la imatge és considerada com a una novetat. Aquest període ha de ser superior a 1 dia
    • + +
    • Desenvolupar tots els àlbums: Desenvolupar tots els àlbums al menú? Atención: Aquesta opció és la susceptible de consumir recursos innecessàriament si el seu àlbum d'arbre conté molts elements.
    • + +
    • Mostrar el número de comentaris: mostren el nombre de comentaris dels usuaris per sota de cada miniatura. Aquesta característica consumeix recursos.
    • + +
    • Mostrar el número de visualitzacions: Enumera les vegades que l'element ha estat visualitzat pels usuaris sota la seva miniatura a la pàgina de miniatures. Només és vàlid si el paràmetre de configuració avançada es:
      + $conf['show_nb_hits'] = true;
      (No es visualitzen per defecte. Cal activar-ho manualment.)
    • + +
    • Amplada i alçada màxima de les imatges: A la pantalla. Si la imatge és més ampla que aquest paràmetre, llavors serà redimensionada. Si penses que necessites modificar aquests paràmetres, (així com per a una visualització per defecte), seria rellevant redimensionar directament les imatges emmagatzemades.
    • + +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/extend_for_templates.html b/sources/language/ca_ES/help/extend_for_templates.html new file mode 100755 index 0000000..0547a3d --- /dev/null +++ b/sources/language/ca_ES/help/extend_for_templates.html @@ -0,0 +1,55 @@ +

    Configuració d'extensions per a les plantilles

    + +

    Objectiu

    +

    La seva galeria Piwigo es pot personalitzar mitjançant la substitució dels arxius existents de la plantilla amb versions personalitzades. Per exemple, la plantilla de capçalera per defecte (header.tpl) pot ser substituïda per una plantilla de capçalera personalitzada (my-header.tpl). Després d'enviar els canvis a la base de dades la galeria mostrarà la capçalera personalitzada en lloc de la capçalera original.
    +Les extensions de les plantilles són una poderosa manera de crear temes personalitzats tant per als usuaris nous com per als usuaris avançats. Si s'utilitza conjuntament amb l'editor LocalFiles Editor es poden fer adaptacions de temes existents.

    + +

    Plantilla original

    +

    Els temes contenen una sèrie d'arxius de plantilla que componen les pàgines de la galeria. Aquestes són les plantilles originals.

    + +

    Paraula clau opcional a la URL

    +

    Aquestes són les paraules que es troben a la URL de la galeria després del nom del mòdul. També poden ser enllaços permanents actius(permalinks). (Consulteu la documentació d'enllaços permanents per a més informació) ADVERTÈNCIA: si la mateixa plantilla original i les mateixes paraules clau s'utilitzen en més d'una plantilla personalitzada només l'última estarà activa.

    + +

    Tema personalitzat

    +

    Un tema personalitzat és un tema que té reemplaçats els arxius de la seva plantilla.

    + +

    On són les plantilles originals?

    +

    Le plantilles originals són els arxius de plantilla que conformen cada tema. Aquests es guarden en /themes/default/template (o themes//template). Aquests arxius de plantilla no poden ser editats direcmennt al seu directori original. En d'editar-los directament sense canviar-los de lloc, els canvis es perdran en el moment d'actualitzar-se.
    +Les plantilles originals suportades actualment inclouen:

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl i/o thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl i/o footer.tpl
    • +
    • picture_content.tpl i/o picture.tpl
    • + +
    • profile.tpl i/o profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl i/o search_rules.tpl
    • +
    • nbm.tpl i/o notification.tpl
    • +
    • identification.tpl i/o register.tpl
    • +
    • redirect.tpl
    • +
    +

    Guardar plantilles personalitzades

    +

    Les plantilles personalitzades s'han de guardar a la carpeta o subcarpetes template-extension. Per exemple, /template-extension/my-default/header.tpl (o /template-extension//header.tpl) + + +Els arxius de plantilla pot tenir qualsevol nom amb l'extensió .tpl. Els arxius de plantilla a les subcarpetes apareixen a la pantalla Configuració de plantilles si es disposa de plantilles personalitzades.

    +

    Activació de plantilles personalitzades

    +

    +Seleccioneu la plantilla original a reemplaçar. Si ho desitja triar una paraula clau URL per assegurar-se que la plantilla personalitzada només apareix a les pàgines amb la paraula clau introduïda. Seleccioneu el tema que hagueu personalitzat i els canvis es faran efectius per al tema. Recorda desar-ho per a enviar els canvis a la base de dades.

    +

    Desactivació de plantilles personalitzades

    +

    Anul·li la selecció de la plantilla original i enviï els canvis a la base de dades.
    +Eliminar els arxius de plantilla personalitzats de la carpeta template-extension.

    + + +

    Advertències

    +
      +
    • La plantilla original ha de ser la plantilla original. En cas contrari pot tenir resultats impredictibles.
    • +
    • Si la mateixa plantilla original i la mateixa paraula clau s'utilitzen en més d'una plantilla personalitzada només l'última estarà activa.
    • +
    • Els arxius de la plantilla de mostra proporcionats són només per a propòsits de prova. No els editi. Creï'n els seus propis o copiï els arxius existents de plantilla del tema a /template-extension//
    • +
    • Quan s'elimina la plantilla personalitzada, el fitxer original de plantillal serà reactivat immediatament.
    • +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/group_list.html b/sources/language/ca_ES/help/group_list.html new file mode 100755 index 0000000..69ba774 --- /dev/null +++ b/sources/language/ca_ES/help/group_list.html @@ -0,0 +1,21 @@ +

    LLista de grups

    + +

    Administrar les propietats dels grups.

    + +

    Afegir un grup

    + +

    L'administrador pot afegir grups.

    + +

    Llista de grups

    + +

    La llista permet per a cada grup:

    + +
      +
    • Accedir a la llista dels seus membres
    • +
    • Accedir als permisos
    • +
    • Suprimir el grup (es necessita confirmació)
    • +
    • Invertir l'estat "per defecte" (es necessita confirmació)
    • +
    + +

    Grups predeterminats

    +

    Els grups predeterminats (o grups per defecte) són els grups associats a cada nou usuari de forma automàtica en el moment de la seva inscripció o si va ser inscri't per un administrador.

    diff --git a/sources/language/ca_ES/help/help_add_photos.html b/sources/language/ca_ES/help/help_add_photos.html new file mode 100755 index 0000000..f766db1 --- /dev/null +++ b/sources/language/ca_ES/help/help_add_photos.html @@ -0,0 +1,24 @@ +

    Existeixen varis mètodes per afegir fotos a la galeria Piwigo:

    + +
      + +
    • Afegirles de forma directa des del seu navegador web és el mètode més simple i més inmediat. Depén de la capacitat del navegador i sobretot de la capacitat del servidor. Per a grans quantitats d'imatges o en el cas de què sorgissin problemes, també existeixen mètodes alternatius.
    • +
    + + + +
      +
    • pLoader és un software que cal instal·lar al seu ordinador. + Arrosegui les imatges a la finestra de pLoader, clicar sobre "Traslladar a Piwigo" i pLoader s'ocuparà de tot. + Existeixen altres softwares client com ara WinToPiwigo o el mòdul Digikam.
    • +
    + + + +
    +
      +
    • Pujar imateges per mitjà del protocol FTP és el mètode ideal per afegir coleccions importants en un mínim d'operacions. Amb aquest mètode és fàcil controlar de forma precisa la organització física de les seves imatges al servidor.
    • +
    + + +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/help_groups.html b/sources/language/ca_ES/help/help_groups.html new file mode 100755 index 0000000..b880e79 --- /dev/null +++ b/sources/language/ca_ES/help/help_groups.html @@ -0,0 +1,7 @@ +

    Els grups són una forma convenient d'establir permisos per a una llista d'usuaris.

    + +

    Es poden crear grups a Tauler de control; » Usuaris +» Grups i associar usuaris als diferents grups a Tauler de control; » Usuaris » +Gestionar.

    + +

    Un usuari pot pertànyer a diversos grups. L'autorització té prioritat sobre la prohibició: si l'usuari "Jack" pertany als grups de "Família" i "Amics", i només el grup "família" pot veure l'àlbum "Nadal 2010", llavors "Jack" podrà veure també l'àlbum "Nadal 2010".

    diff --git a/sources/language/ca_ES/help/help_misc.html b/sources/language/ca_ES/help/help_misc.html new file mode 100755 index 0000000..d5134a5 --- /dev/null +++ b/sources/language/ca_ES/help/help_misc.html @@ -0,0 +1,9 @@ +

    Una vegada que ha creat la galeria la podeu configurar per als vostres visitants +

      +
    • Configura la pantalla per defecte a Tauler de control » Configuració » Opcions Etiquetes Configuració per als visitants
    • +
    • El tema per defecte a Tauler de control » Configuració » Temas
    • +
    • L'idioma per defecte a Tauler de control » Configuració » Idiomes
    • +
    + Per defecte, cada nou usuari heretarà aquestes propietats en el moment de la inscripció. +

    +

    Per a qualsevol dubte, la comunitat Piwigo posa a la seva disposició el seu fòrum per a ajudar-lo a resoldre totes les preguntes i aclaracions que li puguin esdevindre.

    \ No newline at end of file diff --git a/sources/language/ca_ES/help/help_permissions.html b/sources/language/ca_ES/help/help_permissions.html new file mode 100755 index 0000000..2b7ad8f --- /dev/null +++ b/sources/language/ca_ES/help/help_permissions.html @@ -0,0 +1,57 @@ +
    +Permisos + +

    Poden establir-se diferents nivells de privacitat per a les imatges (bloquejos). Cada usuari també té un nivell de privacitat (una clau). Existeixen 5 nivells diferents:

    +
      +
    1. Cap
    2. +
    3. Contactes
    4. +
    5. Amics (que és superior a dels contactes)
    6. +
    7. Familia (que és superior als dels Amics)
    8. +
    9. Administradors (que està per sobre de tots)
    10. +
    + +

    Els nivells més alts tenen permisos sobre els nivells inferiors. Per a un usuari determinat, quan major és el nivell de privacitat, més imatges pot veure.

    + +

    Per exemple, si la imatge "peter_wedding-0024.jpg" té el nivell de privacitat "Familia", llavors:

    +
      +
    • Pere (com és l'"Administrador") veurà la imatge perquè els "Administradors" poden veure totes les imatges
    • +
    • Beth (com és un membre de la "Familia") també podrà veure la imatge.
    • +
    • Maria (com és només un "Amic") no podrà veure la imatge.
    • +
    + +

    Un usuari que no té permís per veure el contingut d'un àlbum no veurà l'àlbum en si, ni tan sols el seu títol. El mateix principi s'aplica a una etiqueta.

    + +

    El nivell de privacitat d'un usuari es pot veure a la pantalla Tauler de control » Usuaris » Gestionar.

    + +
    + +
    +Permisos dels àlbums + +

    Si els nivells de privacitat no s'ajusten a les seves necessitats, també pot administrar els permisos dels àlbums per a un usuari o per a un grup. Els permisos es poden administrar alhora per a imatges i àlbums, sense cap problema.

    + +

    Es pot prohibir l'accés als àlbums. Cal canviar el tipus d'accés a "Privat" per gestionar els permisos d'un àlbum.

    + + + + + + +

    Podeu configurar un àlbum a "Privat" mitjançant l'edició d'un sol àlbum (Tauler de control » Àlbums » Gestionar +» Editar) o configurant les opcions a tots els nivells de l'arbre de l'àlbum +(Tauler de control » Àlbums » Propietats » Públic / Privat).

    + +

    Una vegada l'àlbum es marca com a "Privat", podeu administrar els permisos per a grups i usuaris per mitjà de les tres següents pantalles:

    + +
      + +
    • Tauler de control » Usuaris » Gestionar » + Permisos (un vincle per usuari)
    • + +
    • Tauler de control » Ussuaris » Grups » + Permisos (un vincle per grup)
    • + +
    • Tauler de control » Àlbums » Gestionar » Editar permisos d'àlbums (un vincle per àlbum)
    • + +
    +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/help_virtual_links.html b/sources/language/ca_ES/help/help_virtual_links.html new file mode 100755 index 0000000..cc81e4b --- /dev/null +++ b/sources/language/ca_ES/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

    Les imatges estan al directori de cada àlbum corresponent.

    + +

    També pot visualitzar-se una imatge en diversos àlbums, sense duplicar l'arxiu al servidor web. És possible associar la imatge a qualsevol àlbum des de la pantalla d'edició de la imatge (Els administradors poden arrivar-hi des de la pàgina de la imatge al costat de la galeria).

    + +

    Els àlbums virtuals no tenen cap directori. Crea àlbums virtuals des de Tauler de control » Àlbums » +Gestionar.

    diff --git a/sources/language/ca_ES/help/history.html b/sources/language/ca_ES/help/history.html new file mode 100755 index 0000000..318a80c --- /dev/null +++ b/sources/language/ca_ES/help/history.html @@ -0,0 +1,32 @@ +h2>Historial + +

    Aquí pots monitoritzar el registre de visites de la galeria segons les opcions escollides en: Tauler de control » Configuració » Opcions » Historial

    + +

    Estadístiques

    +
      +

      Si heu optat per registrar les pàgines visitades (index.php i picture.php), ho podeu monitoritzar des d'aquesta pestanya.

      + +
    • Estadístiques generals: visualitza les estadístiques per anys.
    • + +
    • Estadístiques anuals : visualitza les visites per mes en el any seleccionat.
    • + +
    • Estadístiques mensuals : visualitza les visites per dia en el mes seleccionat .
    • + +
    • Estadísticas de un día : visualiza las visites per hora en el dia seleccionat.
    • + +
    + +

    Cercar

    +
      +

      Si heu optat per registrar les pàgines visitades (index.php i picture.php) pot navegar pels detalls d'aquesta fitxa amb l'ajuda de diferents filtres.

      + +
    • Filtrar per data: seleccionar l'interval de dates per realitzar la cerca mitjançant l'establiment de dates d'inici i fi.
    • + +
    • Filtrar por tipus d'element: seleccionar el tipus d'element per a visualitzar-ne l'activitat.
    • + +
    • Filtrar per usuari: seleccionar un usuari per a visualitzar-ne la seva activitat.
    • + +
    • Filtrar pel nom de l'arxiu seleccionar el nom de l'arxiu per a visualitzar-ne la seva activitat.
    • + +
    • Filtrar per l'identificador de la imatge: seleccionar l'identificador de la imatge per a visualitzar-ne la seva activitat.
    • +
    diff --git a/sources/language/ca_ES/help/maintenance.html b/sources/language/ca_ES/help/maintenance.html new file mode 100755 index 0000000..86964ff --- /dev/null +++ b/sources/language/ca_ES/help/maintenance.html @@ -0,0 +1,50 @@ +

    Manteniment

    + +

    Per optimitzar el temps de generació de pàgines, Piwigo utilitza informació emmagatzemada en memòria caché. Per exemple, cada vegada que és sol·licitada una pàgina, en lloc de comptar el nombre d'imatges que conté cada àlbum, Piwigo lleigeix aquesta informació a la base de dades. En teoria, aquesta informació ha de ser sempre correcta, però de vegades un error pot ocórrer i la informació emmagatzemada en memòria cache pot ser errònia.

    + +

    Amb el temps, hi ha informació que esdevé inútil. Suprimir-la de la base de dades ajuda a alliberar espai en el disc.

    + +
      + +
    • + Elements orfes que han perdut tota relació: + Mostra les imatges que no tenen relació amb cap àlbum virtual +
    • +
    • + Arxius amb el mateix nom en diversos àlbums físics: + Visualitza imatges o qualsevol altre arxiu que es poden trobar en diversos àlbums. +
    • + +
    + +
      + +
    • Actualitzar la informació de l'àlbum: + Per a cada àlbum, es supervisa i s'actualitza si es necessari la següent informació: la organització, posició i herència jeràrquica dels àlbums, el nombre d'imatges i la data de l'última imatge. Aquesta acció també comprova la coherència de les imatges representatives.
    • + +
    • Actualitzar la informaió de les imatges: + Per a cada imatge, la informació actualitzada és la següent: la ruta completa a l'arxiu i la valoració promig. Atenció: No confondre amb les metadades que son sincronitzados a la pantalla Tauler de control » Àlbums » Sincronitzar o a la pantalla Modificar la informació d'una imatge +(accessible des de la pàgina de visualització d'una imatgepicture.php).
    • + +
    • Reparar i optimitzar la base de dades: Es porta a terme la reordenació, la reparació i l'optimització de cada taula que conforma la base de dades. +
    • + +
    + +
      +
    • Eliminar l'historial : +Suprimeix totes les línies de la taula history. La pantalla Tauler de control » Eines » Historial + eliminarà tota la informació registrada. Atenció: es perdrà tota la informació sense possibilitat de recuperació. +
    • + +
    • Eliminar el sumari de l'historial:Elimina tots els resum de la informació (obtinguda dels detalls de registre).
    • + +
    • Eliminar les sessions: Suprimir les sessions expirades.
    • + +
    • Eliminar les fonts de notificació no utilitzades.
    • + +
    • Eliminar la història de cerques
    • + +
    • Eliminar el temes compilats
    • + +
    diff --git a/sources/language/ca_ES/help/notification_by_mail.html b/sources/language/ca_ES/help/notification_by_mail.html new file mode 100755 index 0000000..c5db528 --- /dev/null +++ b/sources/language/ca_ES/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

    Notificació per correu electrònic

    + +

    Configuració i gestió de notificacions per correu electrònic als usuaris per a informar de canvis en el lloc web.

    + +

    Aquesta pantalla consta de 3 seccions:

    + +

    Configuració

    +

    Disponible només per a webmasters. S'estableixen notificacions per paràmetres de correu.

    + +

    Inscripcions

    +

    Disponible només per a webmasters. Es gestiona la inscripció d'usuaris a les notificacions per correu electrònic. Afegir usuaris a la secció d'inscripcions per a què puguin rebre les corresponents notificacions.

    + +

    Enviament

    +

    Disponible només per a webmasters. Permet als administradors enviar missatges de notificació als usuaris subscrits.

    + diff --git a/sources/language/ca_ES/help/permalinks.html b/sources/language/ca_ES/help/permalinks.html new file mode 100755 index 0000000..cb45821 --- /dev/null +++ b/sources/language/ca_ES/help/permalinks.html @@ -0,0 +1,8 @@ +

    Enllaços permanents

    + +

    Els enllaços permanents (Permalinks) s'utilitzen per fer més agradables les URL dels àlbums. +Quan un àlbum conté definit un enllaç permanent, l'identificador de l'àlbum no requereix més en la URL.

    + +

    Quan un enllaç permanent s'elimina, pot guardar-lo a l'historial d'enllaços permanents de manera que els enllaços externs a pàgines Piwigo encara funcionen. A la taula de l'historial enllaços permanents es pot veure la data en què l'enllaç permanent s'ha eliminat, l'última vegada que es va utilitzar i el nombre de vegades que s'ha utilitzat.

    + +

    Cal recordar que els enllaços permanents han de ser únics per àlbum. Només es poden definir una vegada en l'historial.

    diff --git a/sources/language/ca_ES/help/photos_add_ftp.html b/sources/language/ca_ES/help/photos_add_ftp.html new file mode 100755 index 0000000..7d0a90e --- /dev/null +++ b/sources/language/ca_ES/help/photos_add_ftp.html @@ -0,0 +1,58 @@ +
    + Guia ràpida + +
      +
    1. Crear un directori en el seu ordinador
    2. + +
    3. Copieu les fotos dins d'aquest directori i canviar-ne la seva mida per a una visualització web. Atenció: el nom dels directoris i arxius ha de contenir només lletres, xifres, "-", "_" o ".". No hi poden haver espais en blanc ni caràcters accentuats.
    4. + +
    5. Amb un client FTP, copiar els seus arxius en el directori "galleries" de la instal.lació Piwigo.
    6. + +
    7. Iniciar sessió a la galeria.
    8. + +
    9. Anar a Tauler de control i clicar el botó gros Sincronització ràpida.
    10. +
    + +

    Felicitats! Acabes de crear el primer àlbum de la teva galeria Piwigo.

    + +
    +
    + Organització d'arxius i directoris + +
      + +
    • + +

      Els directoris que representen els àlbums estan en el directori "galleries". Heus aquí la jerarquia d'una galeria molt petita (però amb moltes característiques):

      + +
      +galleries
      +|-- casament
      +|   |-- celebracio
      +|   |   |-- sortida
      +|   |   |   |-- pol-sol.jpg
      +|   |   |   +-- sara-sola.jpg
      +|   |   +-- arrivada
      +|   |       +-- pol-i-sara.jpg
      +|   +-- festa
      +|       |-- ball001.jpg
      +|       |-- ball002.jpg
      +|       +-- ball003.jpg
      ++-- llunademel
      +    |-- hotel.png
      +    |-- video-avio.avi
      +    +-- pwg_representacio
      +        +-- video-avio.jpg
      +
      + +
    • + +
    • A excepció de "pwg_representative" (vegeu les explicacions a sota), cada directori en "galleries" produeix un àlbum. No hi ha límit quan a profunditat, és a dir, es poden crear àlbums i sub-àlbums a voluntat.
    • + +
    • Bàsicament, un element està representat per un arxiu. Un arxiu pot ser un element per a Piwigo si la seva extensió és entre la llista de paràmetres de configuració file_ext (veure arxiu include/config.inc.php). Un arxiu pot ser una imatge si la seva extensió ès entre el paràmetre de configuració picture_ext.
    • + +
    • No es representen amb una icona per defecte elements com ara arxius de vídeo, sons, textos d'arxius, i altres extensions. Opcionalment, es pot associar una miniatura i un arxiu de representanció (veure el video-avio.avi en l'exemple anterior).
    • + +
    • Una vegada que les fotos estan ben col · locades en els directoris, aneu a: Gestionar (al Tauler de control) » Eines » Sincronitzar
    • +
    +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/search.html b/sources/language/ca_ES/help/search.html new file mode 100755 index 0000000..eb6a526 --- /dev/null +++ b/sources/language/ca_ES/help/search.html @@ -0,0 +1,23 @@ +

    Cerques

    + +

    Cerca d'imatges a través del conjunt de la galería.

    + +
    + +
    Cerca per paraules
    + +
    Cercar una o diverses paraules entre els atributs relacionats amb les imatges de la galeria. Utilitza * com a comodí per a coincidències parcials.
    + +
    Cerca per autor
    + +
    Utilitza * com a comodí per a coincidències parcials.
    + +
    Cerca per data
    + +
    Seleccioneu una data d'inici i/o una data de finalització per a realitzar la consulta. Deixar el camp de data buit, per a fer una consulta "abans". L'any en l'últim camp s'ha d'introduir amb format de quatre xifres (per exemple, 2012).
    + +
    Cerca en els àlbums
    + +
    Seleccionar l'àlbum o els àlbums a cercar. Tots els sub-àlbums poden ser cercats seleccionant l'àlbum pare.
    + +
    diff --git a/sources/language/ca_ES/help/synchronize.html b/sources/language/ca_ES/help/synchronize.html new file mode 100755 index 0000000..37b6e76 --- /dev/null +++ b/sources/language/ca_ES/help/synchronize.html @@ -0,0 +1,11 @@ +

    Sincronitzar

    + +
      + +
    • Existeixen 2 tipus de sincronitzacions: de l'estructura (directoris i arxius) i metadades. Sincronitzar l'estructura consisteix en sincronitzar la jerarquia dels directoris i arxius amb la seva representació a la base de dades. La sincronització de metadades proporciona informació actualitzada com la mida del fitxer, les dimensions, EXIF o IPTC.
    • + +
    • La primera sincronització a efectuar serà la de l'estructura
    • + +
    • El procés de sincronització pot trigar temps (depenent de la càrrega del servidor i la quantitat d'arxius a processar), així que és també possible procedir individualment d'àlbum a àlbum.
    • + +
    \ No newline at end of file diff --git a/sources/language/ca_ES/help/user_list.html b/sources/language/ca_ES/help/user_list.html new file mode 100755 index 0000000..06f8be9 --- /dev/null +++ b/sources/language/ca_ES/help/user_list.html @@ -0,0 +1,23 @@ +

    LLista d'usuaris

    + +

    Permet gestionar les propietats dels usuaris inscrits amb l'excepció dels permisos, que es gestionen a través d'altres seccions.

    + +

    Afegir un usuari

    + +

    L'administrador pot afegir usuaris manualment.

    + +

    Llista d'usuaris

    + +

    La llista pot ser filtrada amb el nom d'usuari (* = comodí), amb el grup o l'estat. La llista pot ser ordenada per data d'inscripció o per nom d'usuari, de forma ascendent o descendent.

    + +

    Aquesta pantalla permet la modificació de diversos usuaris simultàniament:

    + +
      +
    • suprimir usuaris (es necessita confirmació)
    • +
    • canviar l'estat dels usuaris
    • +
    • associar o dissociar grups
    • +
    • modificar les propietats de visualització
    • +
    • modificar les propietats annexes
    • +
    + +

    Els usuaris modificats són aquells usuaris seleccionats (per defecte) o la totalitat de la llista filtrada.

    diff --git a/sources/language/ca_ES/install.lang.php b/sources/language/ca_ES/install.lang.php new file mode 100644 index 0000000..d206f84 --- /dev/null +++ b/sources/language/ca_ES/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = "Necessiteu ajuda? Feu la vostra pregunta a Piwigo message board."; +$lang['Visitors will be able to contact site administrator with this mail'] = "Els visitants poden utilitzar aquesta adreça de correu electrònic per a contactar amb l'administrador del lloc"; +$lang['PHP 5 is required'] = "Es requereix PHP 5 "; +$lang['It appears your webhost is currently running PHP %s.'] = "Sembla que el vostre amfitrió web està executant la versió PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pot tractar de canviar la teva configuració per PHP 5 mitjançant la creació o modificació de l\'arxiu .htaccess'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Tingues en compte que en qualsevol moment pots canviar la configuració i reiniciar Piwigo.'; +$lang['Try to configure PHP 5'] = "Intenteu configurar PHP 5"; +$lang['Sorry!'] = "Perdó!"; +$lang['Piwigo was not able to configure PHP 5.'] = "A Piwigo no li ha estat possible configurar PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Haurieu d'adreçar-vos al vostre proveidor d'hostatge i averiguar com poder canviar-vos cap a PHP 5."; +$lang['Hope to see you back soon.'] = "Esperem tornar-vos a veure ben aviat."; +$lang['Congratulations, Piwigo installation is completed'] = 'Felicitats, la instal·lació de Piwigo s\'ha completat'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Una solució alternativa és copiar el text del quadre del costat i pegar-lo dins del fitxer "local/config/database.inc.php" (Advertiment : el fitxer database.inc.php només ha de contenir el que hi ha a l\'àrea de text, sense linia de retorn o caràcter d\'espai)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'La creació del fitxer de configuració local/config/database.inc.php ha fallat.'; +$lang['Download the config file'] = 'Descarregat l\'arxiu de configuració'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Pots descarregar l\'arxiu de configuració i penjar-lo al directori local/config de la teva instal·lació.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'No dubtis en consultar als nostres fòrums per a qualsevol ajuda: %s'; +$lang['Just another Piwigo gallery'] = 'Just another Piwigo gallery'; +$lang['Welcome to my photo gallery'] = 'Benvingut a la meva galeria fotogràfica'; +$lang['Welcome to your new installation of Piwigo!'] = 'Benvingut a la teva nova instal·lació de Piwigo!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost o un altre, facilitat pel teu proveïdor d\'allotjament'; +?> \ No newline at end of file diff --git a/sources/language/ca_ES/iso.txt b/sources/language/ca_ES/iso.txt new file mode 100644 index 0000000..f9a85f2 --- /dev/null +++ b/sources/language/ca_ES/iso.txt @@ -0,0 +1 @@ +Català [CA] \ No newline at end of file diff --git a/sources/language/ca_ES/upgrade.lang.php b/sources/language/ca_ES/upgrade.lang.php new file mode 100644 index 0000000..eb9c821 --- /dev/null +++ b/sources/language/ca_ES/upgrade.lang.php @@ -0,0 +1,45 @@ +release %s (or equivalent).'] = "Aquesta pàgina actualitza la base de dades de la teva antiga galeria Piwigo a la nova versió. L'assistent d'actualització detecta que esteu executant la versió %s (o equivalent)."; +$lang['Upgrade from version %s to %s'] = "Actualitzar la versió %s a la %s"; +$lang['Statistics'] = "Estadístiques"; +$lang['total upgrade time'] = "temps total d'actualització"; +$lang['total SQL time'] = "temps total SQL "; +$lang['SQL queries'] = "consultes SQL"; +$lang['Upgrade informations'] = "Informació de l'actualització"; + +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Si trobeu algun problema realitzeu una revisió de manteniment [Administració>Eines>Manteniment]."; + +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Com a precaució, els següents connectors s'han desactivat. Haureu de revisar les actualitzacions dels connectors abans de reactivar-los:"; +$lang['Only administrator can run upgrade: please sign in below.'] = "Únicament un usuari administrador pot executar l'actualització: si us plau, inicieu la sessió a sota."; +$lang['You do not have access rights to run upgrade'] = "No teniu drets d'accés per executar l'actualització"; +$lang['All sub-albums of private albums become private'] = "Tots els sub-àlbums dels àlbums privats esdeveneixen privats"; +$lang['User permissions and group permissions have been erased'] = "S'han eliminat els permisos d'usuaris i de grups"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Només s'ha guardat de l'anterior configuració els prefixos de les miniatures i l'adreça de correu electrònic de l'administrador de la web"; +$lang['In %s, before ?>, insert:'] = 'En %s, abans ?>, insertar:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Com a precaució, els següents tempes s\'han desactivat. Haureu de revisar les actualitzacions dels temes abans de reactivar-los:'; +?> diff --git a/sources/language/cs_CZ/about.html b/sources/language/cs_CZ/about.html new file mode 100644 index 0000000..a46ad22 --- /dev/null +++ b/sources/language/cs_CZ/about.html @@ -0,0 +1,23 @@ +

    Tato web fotogalerie je založena na aplikaci Piwigo.

    + +

    Piwigo je software foto galerie pro web, vytvořený aktivní +komunitou uživatelů a vývojářů. Rozšíření a doplňky dělají Piwigo jednoduše +přizpůsobitelné. Zásadní výhoda nakonec, Piwigo je bezplatné a opensource.

    + +

    Navštivte Piwigo web stránky

    + +

    České Piwigo udržují: + +

    + .... díky nim

    \ No newline at end of file diff --git a/sources/language/cs_CZ/admin.lang.php b/sources/language/cs_CZ/admin.lang.php new file mode 100644 index 0000000..407a771 --- /dev/null +++ b/sources/language/cs_CZ/admin.lang.php @@ -0,0 +1,982 @@ +Piwigo Uploader
    . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader je Piwigo nahrávání. pLoader připraví Vaše fotografie na Vašem počítači a nahraje je na Vaši Piwigo foto galerii.'; +$lang['Guest Settings'] = 'Nastavení pro hosty'; +$lang['Main Page'] = 'Hlavní strana'; +$lang['Photo Page'] = 'Strana fotografie'; +$lang['Activate Navigation Bar'] = 'Aktivovat navigační lištu'; +$lang['Activate Navigation Thumbnails'] = 'Aktivovat navigační náhledy'; +$lang['Activate icon "%s"'] = 'Aktivovat ikonu "%s"'; +$lang['Photo Properties'] = 'Vlastnosti fotografie'; +$lang['Allow user customization'] = 'Povolit uživatelskou úpravu nastavení'; +$lang['Languages'] = 'Jazyky'; +$lang['Installed Languages'] = 'Instalované jazyky'; +$lang['Add New Language'] = 'Přidat nový jazyk'; +$lang['Language has been successfully installed'] = 'Jazyk byl úspěšně nainstalován'; +$lang['Select:'] = 'Vybrat:'; +$lang['None'] = 'Žádný'; +$lang['Invert'] = 'Obrátit'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Není možno deaktivovat toto téma, potřebujete alespoň jedno téma.'; +$lang['Webmaster status is required.'] = 'Je požadován status správce stránky.'; +$lang['Bound Theme'] = 'Svázat téma'; +$lang['Allow rating'] = 'Povolit hodnocení'; +$lang['Select at least one comment'] = 'Vyberte alespoň jeden komentář'; +$lang['Active Plugins'] = 'Aktivní doplňky'; +$lang['Inactive Plugins'] = 'Deaktivované doplňky'; +$lang['Missing Plugins'] = 'Chybějící doplňky'; +$lang['Uninstalled Plugins'] = 'Nenainstalované doplňky'; +$lang['By %s'] = 'od %s'; +$lang['Visit plugin site'] = 'navštivte web portál doplňku'; +$lang['Active Languages'] = 'Aktivní jazyky'; +$lang['Delete this language'] = 'Odstranit tento jazyk'; +$lang['Forbid this language to users'] = 'Znepřístupnit tento jazyk uživatelům'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Není možné deaktivovat tento jazyk, nejprve vyberte jiný výchozí jazyk.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Není možné deaktivovat tento jazyk, potřebujete alespoň jeden jazyk.'; +$lang['Inactive Languages'] = 'Deaktivované jazyky'; +$lang['Make this language available to users'] = 'Zpřístupnit tento jazyk uživatelům'; +$lang['Set as default language for unregistered and new users'] = 'Nastavit jako výchozí jazyk pro nezaregistrované a nové uživatele'; +$lang['Add Photos'] = 'Přidat fotografie'; +$lang['The following tag was deleted'] = 'Následující štítek byl odstraněn'; +$lang['Miscellaneous'] = 'Různé'; +$lang['Virtual Links'] = 'Virtuální odkazy'; +$lang['There is no other language available.'] = 'Není dostupný žádný další jazyk.'; +$lang['There is no other plugin available.'] = 'Není dostupný žádný další doplněk.'; +$lang['There is no other theme available.'] = 'Není dostupné žádné další téma.'; +$lang['Add another set of photos'] = 'Přidat další množinu fotografií'; +$lang['Unable to check for upgrade.'] = 'Není možno ověřit zda exituje nová verze.'; +$lang['user_status_generic'] = 'Všeobecné'; +$lang['IP'] = 'IP'; +$lang['By rank'] = 'Podle hodnoceni'; +$lang['Manual order'] = 'Řazeno ručně'; +$lang['Order of menubar items has been updated successfully.'] = 'Pořadí položek v menu bylo úspěšně aktualizováno.'; +$lang['This theme was not designed to be directly activated'] = 'Toto téma nebylo navrženo tak, aby bylo přímo aktivovatelné'; +$lang['Menu Management'] = 'Další funkce'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Ve vašem souboru php.ini, je nastavení upload_max_filesize (%sB) větší než nastavení post_max_size (%sB), '; +$lang['Exif extension not available, admin should disable exif use'] = 'PHP rozšíření Exif není dostupné, admininstrátor by měl vypnout použití exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Velikost nahraváného souboru je větší než nastavení upload_max_filesize ve Vašem souboru php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Velikost nahraváného souboru je větší než nastavení post_max_size directive ve Vašem souboru php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Velikost nahraváného souboru je větší než nastavení MAX_FILE_SIZE definovaná v HTML form'; +$lang['The uploaded file was only partially uploaded'] = 'Nahrávaný soubor byl nahrán pouze částečně'; +$lang['No file was uploaded'] = 'Žádný soubor nebyl nahrán'; +$lang['Missing a temporary folder'] = 'Chybějící dočasný adresář'; +$lang['Failed to write file to disk'] = 'Nepodařilo se zapsat soubor na disk'; +$lang['File upload stopped by extension'] = 'Nahrávání souboru bylo zastaveno kvůlu přípony'; +$lang['Unknown upload error'] = 'Neznámá chyba při nahrávání'; +$lang['Error on file "%s" : %s'] = 'Chyba souboru "%s" : %s'; +$lang['automatic order'] = 'automatické řazení'; +$lang['manual order'] = 'ruční řazení'; +$lang['Albums automatically sorted'] = 'Alba jsou řazena automaticky'; +$lang['Batch Manager'] = 'Dávkové zpracování'; +$lang['include child albums'] = 'zahrnout podřízená alba'; +$lang['Selection'] = 'Výběr'; +$lang['Action'] = 'Akce'; +$lang['Set author'] = 'Nastavit autora'; +$lang['Set title'] = 'Nastavit název'; +$lang['Set creation date'] = 'Nastavit datum vytvoření'; +$lang['Apply action'] = 'Provést akci'; +$lang['on the %d selected photos'] = 'na %d vybraných fotografiích'; +$lang['%d of %d photos selected'] = '%d z %d fotografií vybráno'; +$lang['No photo selected, %d photos in current set'] = 'Žádná fotografie nebyla vybrána, %d fotografií v množině'; +$lang['All %d photos are selected'] = 'Všech %d fotografií bylo vybráno'; +$lang['remove this filter'] = 'smazat tento filtr'; +$lang['Duplicates'] = 'Duplikáty'; +$lang['Add a filter'] = 'Přidat filtr'; +$lang['Remove all filters'] = 'Smazat všechny filtry'; +$lang['Refresh photo set'] = 'Obnovit množinu fotografií'; +$lang['The whole page'] = 'Celou stránku'; +$lang['The whole set'] = 'Celou množinu'; +$lang['No photo in the current set.'] = 'Žádná fotografie v aktuální množině.'; +$lang['No photo selected, no action possible.'] = 'Žádná fotografie není vybrána, žádná akce není možná.'; +$lang['Choose an action'] = 'Vyberte akci'; +$lang['remove author'] = 'smazat autora'; +$lang['Type here the author name'] = 'Napište zde jmého autora'; +$lang['remove title'] = 'smazat název'; +$lang['Type here the title'] = 'Napište zde název'; +$lang['remove creation date'] = 'smazat datum vytvoření'; +$lang['Album photos associated to the following albums: %s'] = 'Fotky alba přiřazeny k následujícím albům: %s'; +$lang['Delete orphan tags'] = 'Smazat štítky'; +$lang['delete photo'] = 'smazat fotky'; +$lang['Orphan tags deleted'] = 'Štítky odstraněny'; +$lang['Remove from caddie'] = 'Odebrat z košíku'; +$lang['Week starts on'] = 'Týden začíná v'; +$lang['You have %d orphan tags: %s.'] = 'Máte %d štítků: %s.'; +$lang['Themes which need upgrade'] = 'Šablony, které potřebují aktualizovat'; +$lang['Languages which need upgrade'] = 'Jazyky které potřebují aktualizovat'; +$lang['All themes are up to date.'] = 'Všechny šablony jsou akuální.'; +$lang['All plugins are up to date.'] = 'Všechny doplňky jsou akuální.'; +$lang['All languages are up to date.'] = 'Všechny překlady jsou akuální.'; +$lang['Visit theme site'] = 'Navštívit web šablony'; +$lang['Visit language site'] = 'Navštívit web překladu'; +$lang['New Version'] = 'Nová verze'; +$lang['Obsolete Plugins'] = 'Zastaralé Pluginy'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'POZOR! Tento plugin se zdá nekompatibilní s touto verzí Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Přejete si je přesto aktivovat?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TENTO PLUGIN JE NYNÍ SOUČÁSTÍ JÁDRA PIWIGO! ODINSTALUJTE HO!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'CHYBA: TENTO PLUGIN CHYBÍ, ALE JE NAINSTALOVÁN! ODINSTALUJTE HO.'; +$lang['display'] = 'zobrazit'; +$lang['new'] = 'nové'; +$lang['No results'] = 'Žádný výsledek'; +$lang['Searching...'] = 'Hledám...'; +$lang['Type in a search term'] = 'Zadejte hledaný výraz'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivovat ikonu "nové" vedle alb a obrázků'; +$lang['Deactivate all'] = 'Deaktivovat vše'; +$lang['Default photos order'] = 'Výchozí pořadí fotografií'; +$lang['Restore'] = 'Obnovit'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Obnovit výchozí konfiguraci. Přijdete o nastavení v pluginech!'; +$lang['Show menubar'] = 'Zobrazit menu'; +$lang['Thumbnails generation in progress...'] = 'Generování náhledů v přípravě...'; +$lang['Photos generation in progress...'] = 'Generování fotek v přípravě...'; +$lang['%s photos have been regenerated'] = '%s fotek bylo regenerováno'; +$lang['%s photos can not be regenerated'] = '%s fotek nemohlo být regenerováno'; +$lang['Updates'] = 'Aktualizace'; +$lang['Update in progress... Please wait.'] = 'Probíhá aktualizace... Prosím čekejte.'; +$lang['Ignore this update'] = 'Ignoruj tuto aktualizaci'; +$lang['Reset ignored updates'] = 'Resetuj ignorované aktualizace'; +$lang['Update All'] = 'Aktualizuj vše'; +$lang['ERROR'] = 'CHYBA'; +$lang['Update Complete'] = 'Aktualizace kompletní'; +$lang['Piwigo Update'] = 'Piwigo Aktualizace'; +$lang['Extensions Update'] = 'Aktualizace Doplňků'; +$lang['All extensions are up to date.'] = 'Veškerá rozšíření jsou aktuální.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Následující pluginy nemusejí být kompatibilní s novou verzí Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Následující šablony vzhledu nemusejí být kompatibilní s novou verzí Piwigo:'; +$lang['I decide to update anyway'] = 'Rozhodl jsem se aktualizovat'; +$lang['Update to Piwigo %s'] = 'Aktualizace na Piwigo %s'; +$lang['Two updates are available'] = 'dvě aktualizace jsou k dispozici'; +$lang['This is a minor update, with only bug corrections.'] = 'Toto je minoritní aktualizace, opravuje zejména chyby.'; +$lang['This is a major update, with new exciting features.'] = 'Toto je velká aktualizace, s novými funkcemi.'; +$lang['Some themes and plugins may be not available yet.'] = 'Některé šablony vzhledu a pluginy nemusejí být dostupné.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Můžete aktualizovat na vyšší verzi Piwigo %s přímo, bez nutnosti upgradu na Piwigo %s (doporučeno).'; +$lang['Save Template Directory'] = 'Uložit složku šablony'; +$lang['Dump Database'] = 'Záloha (Dump) Databáze'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Ponech data historie (Upozornění: limit paměti serveru může být překročen)'; +$lang['Unable to dump database.'] = 'Nelze zálohovat databázi.'; +$lang['Some upgrades are available for extensions.'] = 'Pro některý z doplňků je připravena aktualizace.'; +$lang['Ignore All'] = 'Ignoruj Vše'; +$lang['Crop'] = 'Ořez'; +$lang['Width'] = 'Šířka'; +$lang['Height'] = 'Výška'; +$lang['Follow Orientation'] = 'Postupuj podle orientace'; +$lang['Graphics Library'] = 'Grafická knihovna'; +$lang['Average rate'] = 'Průměrné hodnocení'; +$lang['Rate'] = 'Hodnocení'; +$lang['Add a criteria'] = 'Přidání kritéria'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nemužete definovat výchozí pořadí fotografií, protože máte nadefinováno vlastní nastavení v konfiguraci'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Specifikovali jste $conf[\'order_by\'] v konfiguračním souboru, tento parametr je zastaralý, prosím odstraňte ho nebo přejmenujte na $conf[\'order_by_custom\'] !'; +$lang['Learn more'] = 'Zjistit více'; +$lang['... or '] = '... nebo '; +$lang['Create'] = 'Vytvořit'; +$lang['Start Upload'] = 'Zahájit Upload'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Nyní používáte Flash uploader. Problémy? Zkuste Browser uploader místo něj.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Používáte Browser uploader. Můžete zkusit Flash uploader místo něj.'; +$lang['Maximum file size: %sB.'] = 'Maximální velikost souboru: %sB.'; +$lang['Allowed file types: %s.'] = 'Povolené typy souborů: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Aproximované max. rozlišení: %dM pixelů (to je %dx%d pixelů).'; +$lang['Manage Permissions'] = 'Nastavení oprávnění'; +$lang['Photo %s of %s'] = 'Fotografií %s ze %s'; +$lang['show details'] = 'zobrazit detaily'; +$lang['hide details'] = 'skrýt detaily'; +$lang['Merge tags'] = 'Sloučit štítky'; +$lang['Select the destination tag'] = 'Vyberte cílový štítek'; +$lang['(this tag will be deleted)'] = '(tento štítek bude vymazán)'; +$lang['Confirm merge'] = 'Potvrdit sloučení'; +$lang['Merge selected tags'] = 'Sloučit vybrané štítky'; +$lang['No destination tag selected'] = 'Cílový štítek nebyl vybrán'; +$lang['Tags %s merged into tag %s'] = 'Štítky %s sloučeny do štítku %s'; +$lang['Select at least two tags for merging'] = 'Vyberte alespoň 2 štítky pro sloučení'; +$lang['Select an album'] = 'Vyberte album'; +$lang['An error has occured during upgrade.'] = 'Během aktualizace došlo k chybě.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'K chybě došlo během rozbalování. Prosím ověřte oprávnění na soubory Vaší instalace Piwigo.
    Pro zobrazení chybového logu klikněte zde.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nemùže získat novou verzi ze serveru'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Jako výchozí, Piwigo vytvoří nový rozměr(upraví rozlišení) vašich nahrávaných fotografií v HD rozlišení.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Pokud nemáte obrázek v HD rozlišení a pokud stávající webové rozlišení je větší než nastavené rozsahy dimenzí obrázku, Piwigo fotku vezme jako HD a vytvoří zmenšenou verzi obrázku pro web z originálu.'; +$lang['Zoom'] = 'Přiblížit'; +$lang['Add to caddie'] = 'Přidat do košíku'; +$lang['%s has been successfully updated.'] = '%s: úspěšně aktualizováno.'; +$lang['Add tags'] = 'Přidat štítky'; +$lang['Last import'] = 'Poslední import'; +$lang['Photo name'] = 'Název fotografie'; +$lang['Predefined filter'] = 'Předdefinovaný filtr'; +$lang['With no album'] = 'Bez alba'; +$lang['With no tag'] = 'Bez štítku'; +$lang['With no virtual album'] = 'Bez virtuálního alba'; +$lang['Activate comments'] = 'Aktivovat komentáře'; +$lang['Default comments order'] = 'Výchozí řazení komentářů'; +$lang['Send connection settings by email'] = 'Zaslat přístupové údaje emailem'; +$lang['The original image quality must be a number between %d and %d'] = 'Původní kvalita obrázku musí být mezi %d a %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Výška originálu musí být mezi %d a %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Šířka originálu musí být mezi %d a %d'; +$lang['Resize after upload'] = 'Změnit velikost po uploadu'; +$lang['Original Size'] = 'Původní velikost'; +$lang['A locked gallery is only visible to administrators'] = 'Zamčenou galerii může zobrazovat pouze administrátor'; +$lang['Unlock gallery'] = 'Odemknout galerii'; +$lang['Gallery unlocked'] = 'Galerie je odemčena'; +$lang['Notify administrators when a comment is'] = 'Upozornit administrátora na komentář když je'; +$lang['modified'] = 'modifikován'; +$lang['pending validation'] = 'čekající na ověření'; +$lang['Save visits in history for'] = 'Uložit historii návštěv pro'; +$lang['simple visitors'] = 'jednotlivé návštěvy'; +$lang['registered users'] = 'registrované uživatele'; +$lang['administrators'] = 'administrátory'; +$lang['This album contains %d photos, added on %s.'] = 'Album obsahuje %d fotek, přidaných v %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Album obsahuje %d fotky přidané mezi %s a %s.'; +$lang['This album contains no photo.'] = 'Album neobsahuje žádné fotografie.'; +$lang['Not cropped correctly?'] = 'Je ořez v pořádku?'; +$lang['Center of interest'] = 'Střed zájmu'; +$lang['Move to album'] = 'Přesunout do alba'; +$lang['You can activate only one mobile theme.'] = 'Jde aktivovat pouze v mobilním zobrazení.'; +$lang['Automatic sort order'] = 'Automatické pořadí'; +$lang['apply automatic sort order'] = 'Použij automatické pořadí'; +$lang['Save manual order'] = 'Ulož ruční uspořádání'; +$lang['cancel manual order'] = 'zruš ruční uspořádání'; +$lang['Cancel'] = 'Zruš'; +$lang['List'] = 'Přehled'; +$lang['Web Form'] = 'Webový Formulář'; +$lang['Applications'] = 'Aplikace'; +$lang['Available versions for'] = 'Dostupné verze pro'; +$lang['Available on'] = 'K dispozici na'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pro iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo pro iOS aplikace vám dává možnost se připojit do galerie Piwigo z vašeho iPhone, iPad nebo iPod Touch, vytvořit nějaké alba a nahrávat více fotografií najednou.'; +$lang['Piwigo for Android'] = 'Piwigo pro Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo pro Android aplikace vám dává možnost se připojit do galerie Piwigo z vašeho Android telefonu nebo tabletu, vytvořit nějaké alba a nahrávat více fotografií najednou.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publikační plugin pro Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je fotografický software určený ke správě velkého množství digitálních fotografií a postprodukčních prací.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publikační Plug-in umožňuje export a synchronizaci fotek z Lightroom přímo do vaší Piwigo fotogalerie.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publikační plugin pro Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je open source digitalní foto organizér pro Linux. Je to základní foto manažer v distribucích Ubuntu a Fedora.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Na linuxu, jednoduše nainstalujte Shotwell s pomocí vašeho správce balíčků a potom aktivujte Piwigo publikační volbu.'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publikační plugin pro digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je pokročilý správce fotografií free software pro Linux, Windows, and MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je určen pro fotografy, kteří chtějí prohlížet, spravovat, upravovat, zlepšovat, uspořádávat, označovat a sdílet fotografie.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Chcete-li exportovat své fotografie z Digikam do Piwigo, jednoduše nainstalujte digiKam a Kipi-plugin.'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo exportní plugin pro iPhoto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je výchozí správce fotografií na MacOSX. Exportní Piwigo plugin vám umožní vytvořit nová alba a exportovat své fotografie přímo z iPhoto do fotogalerie Piwigo.'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo exportní plugin pro Aperture'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je výkonný nástroj pro zdokonalení snímků a správu obrovských knihoven na Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je navržen pro profesionální fotografy s jednoduchostí iPhoto.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo exportní plugin umožňuje vytvářet alba a exportovat fotografie.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klient pro Android) je open source (GPL v3) Piwigo klient pro Android platformu.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funkce obsahuje prohlížení galerie, tvorbu alb a upload fotografií.'; +$lang['Generate multiple size images'] = 'Generovat více velikostí obrázků'; +$lang['Delete multiple size images'] = 'Odstranění více velikostí obrázků'; +$lang['any visitor can see this album'] = 'každý návštěvník může prohlížet toto album'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'návštěvník se musí přihlásit a mít přidělena vhodná oprávnění pro prohlížení tohoto album'; +$lang['Groups and users'] = 'Skupiny a uživatelé'; +$lang['Permission granted for groups'] = 'Oprávnění udělená pro skupiny'; +$lang['Select groups...'] = 'Výběr skupiny...'; +$lang['There is no group in this gallery.'] = 'Nemáte žádnou skupinu v této galerii.'; +$lang['Permission granted for users'] = 'Oprávnění udělená pro uživatele'; +$lang['Select users...'] = 'Výběr uživatelů...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u uživatelé mají automatické oprávnění, protože patří do vybrané skupiny.'; +$lang['include photos with lower privacy level'] = 'zahrnuje fotky s nižší úrovní soukromí '; +$lang['custom'] = 'Vlastní'; +$lang['No group is permitted to see this private album'] = 'Žádná ze skupin nemá oprávnění prohlížet toto soukromé album'; +$lang['Permission management'] = 'Správa pravidel přístupu'; +$lang['add a new watermark'] = 'Přidej vodoznak'; +$lang['Apply watermark if height is bigger than'] = 'Vlož vodoznak pokud je výška delší než'; +$lang['Apply watermark if width is bigger than'] = 'Vlož vodoznak pokud je šířka delší než'; +$lang['bottom left corner'] = 'Levý spodní roh'; +$lang['bottom right corner'] = 'Pravý spodní roh'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Podle púuvodního nastavení je střed zájmu umístěn doprostřed fotografie.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pro fotografie s ořezem, jako třeba "čtverec", se Piwigo pokusí umístit střed zájmu do vysledného ořezu.'; +$lang['middle'] = 'střední'; +$lang['Opacity'] = 'Průhlednost'; +$lang['Photo sizes with crop'] = 'Fotografie s ořezem'; +$lang['Select a file'] = 'Vyber soubor'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vyber myší zónu nového středu zájmu'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Střed zájmu je nejdůležitější část(zóna) fotky'; +$lang['top left corner'] = 'Levý horní roh'; +$lang['top right corner'] = 'Pravý horní roh'; +$lang['X Position'] = 'pozice X'; +$lang['X Repeat'] = 'X opakování'; +$lang['Y Position'] = 'pozice Y'; +$lang['Multiple Size'] = 'Více velikostí'; +$lang['%d day'] = '%d den'; +$lang['%d days'] = '%d dní'; +$lang['%d hour'] = '%d hodina'; +$lang['%d hours'] = '%d hodin'; +$lang['%d minute'] = '%d minuta'; +$lang['%d minutes'] = '%d minut'; +$lang['%d month'] = '%d měsíc'; +$lang['%d months'] = '%d měsíců'; +$lang['%d second'] = '%d vteřin'; +$lang['%d seconds'] = '%d vteřin'; +$lang['%d year'] = '%d rok'; +$lang['%d years'] = '%d let'; +$lang['%s ago'] = 'před %s'; +$lang['%s in the future'] = '%s v budoucnosti'; +$lang['Added by %s'] = 'Přidal %s'; +$lang['Numeric identifier : %d'] = 'Číselný identifikátor: %d'; +$lang['Original file : %s'] = 'Původní soubor: %s'; +$lang['Posted %s on %s'] = 'Posláno %s na %s'; +$lang['Rated %d times, score : %.2f'] = 'Hodnoceno %d-krát, hodnocení: %.2f'; +$lang['Sharpen'] = 'Doostřit'; +$lang['Visited %d times'] = 'Navštíveno %d-krát'; +$lang['Watermark'] = 'Vodoznak'; +$lang['%d week'] = '%d týden'; +$lang['%d weeks'] = '%d týdny'; +$lang['Edit photo'] = 'Upravit foto'; +$lang['create a new site'] = 'vytvoř nové místo'; +$lang['No order field selected'] = 'Není vybráno pole řazení'; +$lang['Duplicate selected tags'] = 'Duplikuj vybrané štítky'; +$lang['Name of the duplicate'] = 'Název duplikátu'; +$lang['Source tag'] = 'Zdrojový štítek'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Štítek "%s" je nyní duplikátem "%s"'; +$lang['Landscape'] = 'Naležato'; +$lang['Manage photos'] = 'Spravovat fotografie'; +$lang['Minimum height'] = 'Minimální výška'; +$lang['Minimum width'] = 'Minimální šířka'; +$lang['Number of albums per page'] = 'Počet alb na stránku'; +$lang['Panorama'] = 'Panoráma'; +$lang['Portrait'] = 'Na výšku'; +$lang['View in gallery'] = 'Zobrazit v galerii'; +$lang['Ratio'] = 'Poměr'; +$lang['between %.2f and %.2f'] = 'mezi %.2f a %.2f'; +$lang['between %d and %d pixels'] = 'mezi %d a %d pixely'; +$lang['Duplicate'] = 'Duplikovat'; +$lang['Manage the members'] = 'Organizovat členy'; +$lang['Merge selected groups'] = 'Spojit vybrané skupiny'; +$lang['No group selected, no action possible.'] = 'Není vybrána žádná skupina, není možná řádná akce'; +$lang['No members to manage'] = 'Žádní členové k organizování'; +$lang['Please select at least two groups'] = 'Prosím vyberte nejméně dvě skupiny'; +$lang['Rename'] = 'Přejmenovat'; +$lang['This group will be set to default'] = 'Tato skupina bude použita jako defaultní'; +$lang['This group will be unset to default'] = 'Tato skupina nebude dále použita jako defaultní'; +$lang['Type here the name of the new group'] = 'Napište sem jméno nové skupiny'; +$lang['Purge user cache'] = 'Provést údržbu uživatelské mezipaměťi'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Rozměry obrázku budou zmenšeny na %dx%d pixelů.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Změna velikosti po uploadu není aktivní, kvůli používání GD jako grafické knihovny.'; +$lang['Select at least one tag'] = 'vyberte alespoň jeden tag'; +$lang['Mail theme'] = 'E-mailové téma'; +$lang['%d of %d users selected'] = '%d z %d uživatelů vybráno'; +$lang['(filtered from %s total users)'] = '(vyfiltrováno z celkového počtu %s uživatelů)'; +$lang['All %d users are selected'] = 'Všech %d uživatelů bylo vybráno'; +$lang['No user selected of %d users'] = 'Nebyl vybrán žádny z %d uživatelů'; +$lang['Showing %s to %s of %s users'] = 'Jsou zobrazeni %s až %s z %s uživatelů'; +$lang['Basic settings'] = 'Základní nastavení'; +$lang['Change password'] = 'Změnit heslo'; +$lang['Change username'] = 'Změnit jméno uživatele'; +$lang['General'] = 'Všeobecné'; +$lang['Last visit on %s, %s.'] = 'Poslední návštěva v %s, %s.'; +$lang['Loading...'] = 'Nahrává se...'; +$lang['No matching user found'] = 'Uživatel odpovídající dotazu hledání nenalezen'; +$lang['No user selected, no action possible.'] = 'Nebyl zvolen uživatel, akce není možná.'; +$lang['Password updated'] = 'Heslo aktualizováno'; +$lang['Registered on %s, %s.'] = 'Zaregistrován v %s, %s.'; +$lang['Show %s users'] = 'Zobraz %s uživatele'; +$lang['Update user'] = 'Aktualizuj uživatele'; +$lang['User %s added'] = 'Uživatel %s přidán'; +$lang['User %s updated'] = 'Uživatel %s aktualizován'; +$lang['Users modified'] = 'Uživatelé pozměněni'; +$lang['on the %d selected users'] = 'na %d vybraných uživatelích'; +$lang['Close user details'] = 'Zavřít detajly uživatele'; +$lang['Open user details'] = 'Otevřít detajly uživatele'; +$lang['close'] = 'Zavřít'; +?> \ No newline at end of file diff --git a/sources/language/cs_CZ/common.lang.php b/sources/language/cs_CZ/common.lang.php new file mode 100644 index 0000000..ceda132 --- /dev/null +++ b/sources/language/cs_CZ/common.lang.php @@ -0,0 +1,428 @@ + \ No newline at end of file diff --git a/sources/language/cs_CZ/cs_CZ.jpg b/sources/language/cs_CZ/cs_CZ.jpg new file mode 100644 index 0000000..3222866 Binary files /dev/null and b/sources/language/cs_CZ/cs_CZ.jpg differ diff --git a/sources/language/cs_CZ/help/cat_modify.html b/sources/language/cs_CZ/help/cat_modify.html new file mode 100644 index 0000000..d527ac8 --- /dev/null +++ b/sources/language/cs_CZ/help/cat_modify.html @@ -0,0 +1,115 @@ +

    Editovat kategorii

    + +

    Informace

    + +
      + +
    • Adresář: přejmenování kategorie (virtuální kategorie se přejmenovává stejně jako fyzická).
    • + +
    • popis: krátký text popisující obsah kategorie, který bude zobrazen vespod stránky s náhledy.
    • + +
    + +

    Přesun

    + +

    Virtuální kategorii je možné přesunout. Přesunem kategorie se rozumí změna její rodičovské (nadřazené) kategorie.

    + +

    Volby

    + +
      + +
    • Druh přístupu: Povolení přístupu. nastavením kategorie jako soukromé, stávají se soukromé i všechny příslušné podkategorie. Nastavíte-li kategorii jako veřejnou, nastaví se jako veřejné i všechny kategorie nadřazené.
    • + +
    • Zamknout: Kategorie včetně podkategorií bude zamčena z důvodu údržby.
    • + +
    • Komentáře uživatelů: Umožní uživatelům přidávat komentáře k jednotlivým položkám kategorie.
    • + +
    • Povolit nahrávání fotografií: Umožní uživatelům přidávat do kategorie obrázky. Tato volba je přístupná pouze pro fyzické (ne virtuální) kategorie.
    • + +
    + +

    Tyto volby jsou také dostupné v nastavení "Vlastnosti" (záložky Nahrát fotografie, Komentáře uživatelů, Zamknout, +Veřejná/soukromá, Reprezentant dostupné z Administrace, Kategorie, Nastavení).

    + +

    Směr řazení

    + +

    Použít výchozí řazení.

    + +

    Použít na podkategorie. Určí jestli toto řazení bude použito i na podkategorie.

    + +

    Vyberte specifická kriteria použitá pro řazení této kategorie.

    +
      +
    • Datum vytvoření: Datum pořízení obrázku
    • +
    • Datum zveřejnění: Datum provedení synchronizace.
    • +
    • Průměrné hodnocení (*): průměr je ovlivněn návštěvnickým hodnocením.
    • +
    • Nejčastěji navštěvované (*): Počet návštěv ovlivní řazení.
    • +
    • Název souboru: Jméno souboru určené v políčku informace.
    • +
    • Id: Vnitřní ID (Novější prvky mají vyšší hodnotu).
    • + +
    +

    (*)Upozornění: Vlastní nastavení řazení určitě otestujte, ne vždy to může vypadat tak jak očekáváte.

    + + +

    Reprezentant

    + +

    Reprezentant kategorie je náhled představující kategorii, zobrazený na hlavní stránce (category.php), v případě že kategorie obsahuje pouze podkategorie a nemá jiný obsah (stejně jako kořenová kategorie).

    + +

    Reprezentanta kategorie je možné nastavit čtyřmi způsoby:

    + +
      + +
    • Stránka s obrázky: Jedním tlačítkem u obrázku nastavíte reprezentanta kategorie. Tlačítko je dostupné pouze administrátorům.
    • + +
    • Úpravou informace u obrázku v administraci. Dostupné v picture.php nebo ve správě dávkových úkonu (administrace/fotografie/košík) v módu jednotlivě. Více v příslušné nápovědě.
    • + +
    • Administrace, Kategorie, Nastavení, + Reprezentant. Viz nápověda v příslušném menu.
    • + +
    • Editace galerie (zde v tomto nastavení).
    • + +
    + +

    Volba reprezentanta záleží na +allow_random_representative konfiguračním parametru (v souboru include/config_default.inc.php).

    + +

    Výchozí hodnota (allow_random_representative je nastavena na "false"), +každá kategorie obsahující alespoň jeden prvek má nastaveného fixního reprezentanta. Reprezentant je náhodně zvolen (jednou při vytvoření kategorie), další změna nastane pouze na vyžádání administrátorem. Pokud reprezentant nevyhovuje, +můžete použít tlačítko Najít reprezentativní obrázek pomocí náhodného výběru.

    + +

    Pokud je konfigurační parametr allow_random_representative nastaven na "true", Kategorie nemusí obsahovat fixního reprezentanta. Stačí použít tlačítko Smazat reprezentanta.

    + +

    Jestliže kategorie obsahuje pouze podkategorie a žádný jiný obsah, může být reprezentována jakýmkoliv prvkem pomocí nastaveníUpravit informace o obrázku. Jediná volba v tomto nastavení je tlačítko Smazat reprezentanta.

    + +

    Napojit všechny položky na novou kategorii

    + +
      + +
    • Název virtuální kategorie: jméno nově vytvořené virtuální kategorie, +všechny obrázky aktuální kategorie budou přiřazeny do kategorie nově vzniklé.
    • + +
    • Rodičovská kategorie: umístění nové kategorie. Prázdný výběr umístí novou kategorii do kořenové kategorie.
    • + +
    + +

    Napojit všechny položky na některé existující kategorie

    + +
      + +
    • Kategorie: Vyberte cílovou kategorii.
    • + +
    + +

    Poslat informační e-mail uživatelům skupiny

    + +
      + +
    • Skupina: skupina adresátů
    • + +
    • Obsah e-mailu: Libovolný text e-mailu k odeslání.
    • + +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/cat_move.html b/sources/language/cs_CZ/help/cat_move.html new file mode 100644 index 0000000..8548f8f --- /dev/null +++ b/sources/language/cs_CZ/help/cat_move.html @@ -0,0 +1,14 @@ +

    Přesun virtuálních kategorií

    + +

    Novou rodičovskou kategorii mohou mít jen kategorie virtuální.

    + +

    Virtuální kategorie k přesunu

    + +

    Vyberte jednu nebo vice kategorií které chcete přesunout. +Pokud je list prázdný, pravděpodobně zatím nebyla žádná virtuální kategorie vytvořena.

    + +

    Nová rodičovská kategorie

    + +

    Vyberte novou rodičovskou kategorii (virtuální nebo fyzickou). +Pokud nevyberete žádnou rodičovskou kategorii bude virtuální kategorie přesunuta jako kořenová. +Kategorii nelze přesunout sama do sebe případně do vlastních podkategorií.

    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/cat_options.html b/sources/language/cs_CZ/help/cat_options.html new file mode 100644 index 0000000..f17066b --- /dev/null +++ b/sources/language/cs_CZ/help/cat_options.html @@ -0,0 +1,27 @@ +

    Vlastnosti kategorií

    + +

    Zde je možno nastavovat vlastnosti více kategorií najednou.

    + +
    + +
    Nahrát fotografie
    +
    Učiní kategorii zapisovatelnou jejími návštěvníky. Volba je dostupná pouze pro fyzické kategorie.
    + +
    Komentáře uživatelů
    +
    Umožní uživatelům zanechávat komentáře v určených kategoriích. +Vyberte kategorie kde má být možno zanechávat komentáře. +Komentář k obrázku je možné přidávat pokud je zařazen alespoň v jedné komentovatelné kategorii.
    + +
    Zamknout
    +
    Zvolené kategorie budou dočasně pro údržbu nepřístupné. Pokud zamknete kategorii, budou zamčené i všechny její podkategorie. Pokud odemknete kategorii, odemknou se i všechny její nadřazené kategorie.
    + +
    Veřejná / soukromá
    +
    Autorizovaný přístup je možný pouze do soukromých kategorií. Do soukromé kategorie je třeba nastavit přístupová práva uživateli nebo celé skupině uživatelů. Nastavením kategorie jako soukromé, stanou se soukromými a její podkategorie. Nastavením kategorie jako veřejné, budou jako veřejné nastaveny i všechny kategorie nadřazené.
    + +
    Reprezentativní
    +
    Tato volba je přístupná pouze pokud je nastaveno +allow_random_representative (v souboru include/config_defaults.inc.php) jako +true. Každá kategorie může být reprezentována náhodným obrázkem nebo obrázkem vámi určeným.
    + +
    diff --git a/sources/language/cs_CZ/help/cat_perm.html b/sources/language/cs_CZ/help/cat_perm.html new file mode 100644 index 0000000..d6c91d3 --- /dev/null +++ b/sources/language/cs_CZ/help/cat_perm.html @@ -0,0 +1,11 @@ +

    Nastavení oprávnění pro alba

    + +

    Tyto nastavení jsou dostupné pouze pro privátní alba (galerie). Vyberte skupinu, které chcete umožnit/odebrat přístup do daného alba.

    + +

    Skupiny

    + +

    Prostou změnou oprávněné skupiny uživatelů můžete povolovat nebo zakazovat přístup do alba. Uživatel příslušný do dané skupiny automaticky získá přístupová práva nastavená pro jeho skupinu.

    + +

    Uživatele

    + +

    Přístup do alba je rovněž možno povolit/zakázat jednotlivým uživatelům nezávisle na skupině do které jsou zařazeni.

    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/configuration.html b/sources/language/cs_CZ/help/configuration.html new file mode 100644 index 0000000..cf3f56b --- /dev/null +++ b/sources/language/cs_CZ/help/configuration.html @@ -0,0 +1,104 @@ +

    Konfigurace

    + +

    Na této stránce lze provádět základní nastavení. Výběr nastavení by měl stačit většině správců. Další nastavení naleznete v souboru include/config_default.inc.php.

    + +

    Stránka je rozdělena do několika záložek seskupujících jednotlivá nastavení podle typu.

    + + +

    Hlavní

    +
      +
    • Název galerie: používá se v RSS vláknech emailových upozorněních.
    • + +
    • Banner stránky: zobrazuje se nahoře na každé veřejné stránce.
    • + +
    • URL galerie: používá se RSS vláknech.
    • + +
    • Zamknout galerii: Uzavře galerii pro provedení údržby. Pouze uživatelé s oprávněním administrátor bude mít přístup ke galerii.
    • + +
    • Povolit hodnocení: Hodnocení obrázků je povoleno.
    • + +
    • Hodnocení hosty: Hodnotit obrázky může i neregistrovaný uživatel.
    • + +
    • Povolit registraci uživatelů: Kdokoliv se může registrovat jako uživatel.
    • + +
    • E-mailová adresa je povinná pro všechny uživatele: e-mailová adresa bude zkontrolována při registraci nebo aktualizaci profilu, vyjma situací kdy akci provedl administrátor.
    • + +
    • Poslat e-mail administrátorovi při registraci nového uživatele: administrátoři budou upozorněni na každou novou registraci uživatele..
    • + +
    + +

    Historie

    + +

    Návštěva stránek category.php a picture.php bude uložena v tabulce historie.

    + +

    Návštěvy se zobrazují v menu:Administrace, Nástroje, Historie.

    + +
      +
    • Ukládat stránky navštívené hosty: uloží se návštěvy hostů.
    • + +
    • Ukládat stránky navštívené uživateli: uloží se návštěvy registrovaných uživatelů.
    • + +
    • Ukládat stránky navštívené administrátory: uloží se stránky navštívené administrátory.
    • + +
    + +

    Komentáře uživatelů

    +
      + +
    • Komentáře pro všechny: I neregistrovaný uživatel může zanechat komentář.
    • + +
    • Počet komentářů na stránce.
    • + +
    • Schválení: Před zobrazením na stránkách musí být každý komentář schválen administrátorem. Schvalování komentářů možno provést v menuAdministrace, nástroje, nevyřízené komentáře.
    • + +
    • Poslat e-mail administrátorovi při vložení nového komentáře: +Pokud je zadán komentář nevyžadující schváleni pošle se administrátorovi email.
    • + +
    • Poslat e-mail administrátorovi při vložení nového komentáře vyžadujícího schválení.: +Pokud je zadán komentář nevyžadující schváleni pošle se administrátorovi email. +Schvalování komentářů možno provést na stránce: Administrace, nástroje, nevyřízené komentáře.
    • + +
    + +

    Nahrát fotografie

    +
      +
    • Vždy zobrazit odkaz pro nahrání fotografie: Pokud je do kategorie možno nahrát obrázek, zobrazí se odkaz nahraj obrázek.
    • +
    • Povolit uživatelům nahrávat fotografie na server: povolí nahrát obrázek na stránky jen vymezené skupině uživatelů.
    • +
    • Poslat e-mail administrátorovi při nahrání nové fotografie.: O každém nahrání nového obrázku uživatelem, bude administrátor informován emailem.
    • +
    + +

    Nastavení pro hosty

    + +

    Zde se nastavuje výchozí vzhled stránky pro hosty a nepřihlášené uživatele. Po přihlášení dojde k automatickému načtení hodnot nastavených přihlášeným uživatelem. +(nastavení po přihlášení uživatele na hlavní stránce upravit).

    + +

    Administrátor může měnit vzhled stránky pro jakéhokoliv registrovaného uživatele. Administrace, +uživatelé, Správa: zde je možno vybrat ze seznamu uživatelů.

    + +
      + +
    • Jazyk: týká se pouze Piwigo systémových textů. Jména kategorii, jména obrázku a všechny popisná pole nejsou lokalizována.
    • + +
    • Počet fotografií v řádku
    • + +
    • Počet řádků na stránce
    • + +
    • Vzhled uživatelského rozhraní
    • + +
    • Doba, po kterou jsou fotografie zobrazeny jako nově přidané: Ve dnech. musí být větší než jeden den.
    • + +
    • Rozbalit všechny kategorie: Rozbalí všechny kategorie. UPOZORNĚNÍ: tato volba je náročná na systémové zdroje a pokud strom kategorií obsahuje velké množství položek, může vygenerovat rozsáhlé menu.
    • + +
    • Ukázat počet komentářů: Na stránce s náhledy zobrazí počet komentářů u každého obrázku. Zpomaluje systém.
    • + +
    • Ukázat počet zobrazení: zobrazí počet návštěv přímo pod náhledem obrázku. Volba je funkční pouze pokud je rozšířený konfigurační parametr:
      + $conf['show_nb_hits'] = true;
      + poznámka: výchozí hodnota je false.
    • + +
    • Maximální šířka fotografií: maximální zobrazená šířka. Obrázky větší než tento parametr budou zmenšeny. Lepší, než-li používat tuto volbu, je rovnou před nahráním obrázky zmenšit, snižují se nároky na webový prostor a zrychluje načítání fotografie.
    • + +
    • Maximální výška fotografií: maximální zobrazená výška. Obrázky větší než tento parametr budou zmenšeny. Lepší, než-li používat tuto volbu, je rovnou před nahráním obrázky zmenšit, snižují se nároky na webový prostor a zrychluje načítání fotografie..
    • + +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/extend_for_templates.html b/sources/language/cs_CZ/help/extend_for_templates.html new file mode 100644 index 0000000..b22699d --- /dev/null +++ b/sources/language/cs_CZ/help/extend_for_templates.html @@ -0,0 +1,88 @@ +

    Konfigurace rozšíření šablony

    + +

    Cíl

    +

    Nahradit původní šablony uživatelskými z podadresáře template-extension. +(šablona s názvem "replacer").

    + +

    Pro nahrazení původní šablony (např. z ./themes/default/template) "replacerem" je potřeb obě šablony propojit. + (případně pokud volaná URL obsahuje volitelné klíčové slovo).

    + +

    "Volitelná klíčová slova" jsou slova která se zobrazují v URL za jménem modulu.

    + +

    Proto mohou být "volitelná klíčová slova" zadána jako aktivní permanentní spojení +(viz. dokumentace permanetní spojení).

    + +

    `Upozonění` podmínky použití.

    + +

    Co jsou rozšíření šablony?

    + +

    +Pomocí FTP, může webmaster v adresáři "template extension" duplikovat většinu z předinstalovaných .tpl souborů ("původní šablona") různým jménem ("replacer"). + + "Originální šablony", podporované šablony:

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl and/or thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl and/or footer.tpl
    • +
    • picture_content.tpl and/or picture.tpl
    • + +
    • profile.tpl and/or profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl and/or search_rules.tpl
    • +
    • nbm.tpl and/or notification.tpl
    • +
    • identification.tpl and/or register.tpl
    • +
    • redirect.tpl
    • +
    + +

    Kde najdu původní šablony?

    + +

    Původní šablony jsou v /themes/default/template/ +(z duvodu možnosti upgrade šablon je není dobré editovat). Z původní šablony je možné vytvořit vlastní "replacer" (přizpůsobenou šablonu)".

    + +

    Kam mohu uložit "replacer"?

    + +

    Replacer musí být umístěn v adresáři template-extension (nebo podadresáři). +Replacer je možno pojmenovat libovolně, důležitá je koncovka .tpl. Například: template-extension/my-extension/video.tpl.

    + + +

    Jak aktivuju "replacer"?

    +

    Původní šablona musí být přiřazena ke každému +replaceru pro jeho aktivaci. + Toto je účelem "Rošíření šablony" v konfiguraci administrace.

    + +

    pokud vyberete volitelné klíčové slovo dojde k nahrazení pouze u stránek obsahující příslušné klíčové slovo. například: index.php?/most_visited

    + +

    Zkušení uživatelé mohou použít permanetní spojení jako volitelné klíčové slovo.

    + +

    Pokud vyberete svázané téma nahrazení se provede pouze s příslušným tématem.

    + +

    Jak deaktivovat "replacery"?

    +
      +
    • Odvyberte navázané "původní šablony".
    • +
    • Přes FTP smažte "replacery".
    • +
    + +

    Upozornění

    +
      + +
    • Původní šablona musí být sktečně "původní" šablona, jinak nelze zaručit plnou funkčnost!
    • + +
    • Při použití několika replacerů se stejnou původní šablonou a stejným volitelným klíčovým slovem bude aktivní pouze poslední replacer.
    • + +
    • Odvybrání volitelného klíčového slova aktivuje replacer pri jakémkoliv použití původní šablony. Stejně jako v předchozím bodě, volba může potlačit předchozí replacery.
    • + +
    • Podadresáře: +Podadresáře jsou igorovány ale hodí se na změnu současného uspořádání.
      +distribuované vzorky: určené pro účely testování! +needitujte je vytvořte si vlastní. +
    • + +
    • Smazáním replaceru se původní šablona ihned reaktivuje.
    • + +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/group_list.html b/sources/language/cs_CZ/help/group_list.html new file mode 100644 index 0000000..110a655 --- /dev/null +++ b/sources/language/cs_CZ/help/group_list.html @@ -0,0 +1,22 @@ +

    Skupiny

    + +

    Zde se spravují skupiny uživatelů.

    + +

    Přidat skupinu

    + +

    Skupinu mohou přidat administrátoři.

    + +

    Seznam skupin

    + +

    Každá položka umožňuje:

    + + +
      +
    • přejít na seznam uživatelů
    • +
    • přejít na administraci uživatelských oprávnění
    • +
    • smazat skupinu (vyžaduje potvrzení)
    • +
    • nastavit jako výchozí (vyžaduje potvrzení)
    • +
    + +

    Výchozí skupiny

    +

    Výchozí skupina je automaticky přiřazena k novému uživateli po jeho registraci nebo při přidání administrátorem.

    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/help_add_photos.html b/sources/language/cs_CZ/help/help_add_photos.html new file mode 100644 index 0000000..9f489d7 --- /dev/null +++ b/sources/language/cs_CZ/help/help_add_photos.html @@ -0,0 +1,22 @@ +

    Existuje několik možností, jak přidat fotografie do Vaší Piwigo galerie:

    + +
      +
    • Přímé nahrání ve Vašem web prohlížeči je nejjednodušší a nejpřímější cesta. Záleží na možnostech Vašeho prohlížeče a Vašeho web serveru. + Pro nahrání velkého množství fotografií, nebo v případě, že tento způsob selže, jsou zde další možnosti.
    • +
    + + + +
      +
    • pLoader je aplikace, kterou musíte nainstalovat na Váš počítač. Přetáhněte fotografie do okna pLoader, klikněte na "Upload to Piwigo" a nechte pLoader nahrát fotografie na server. Existují také další aplikace jako WinToPiwigo, nebo Digikam, doplněk pro nahrávání fotografií do Piwigo.
    • +
    + + + +
    +
      +
    • FTP přenos je nejvíce doporučená cesta, jak nahrát velké množství fotografií s minimálním úsilím. Následujte návod, jak připravit Vaše fotografie. Tato metoda Vám dává možnost přesně řídit uspořádání Vašich fotografií na Vašem serveru.
    • +
    + + +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/help_groups.html b/sources/language/cs_CZ/help/help_groups.html new file mode 100644 index 0000000..0ead57b --- /dev/null +++ b/sources/language/cs_CZ/help/help_groups.html @@ -0,0 +1,8 @@ +

    Skupiny představují způsob, jak nastavit stejná oprávnění pro vícero uživatelů.

    + +

    Vytvořte skupinu pomocí Administrace » Uživatelé » Skupiny a přiřaďte uživatele do této skupiny pomocí +Administrace » Uživatelé » +Správa.

    + +

    Uživatel může patřit do vícero skupin. Uživatel potom získává práva součtem práv všech těchto skupin: pokud uživatel "honza" patří do skupin "rodina" i "přítelé" a jen "rodina" má oprávnění na kategorii "Vánoce 2003" tak +"honza" kategorii "Vánoce 2003" uvidí.

    diff --git a/sources/language/cs_CZ/help/help_misc.html b/sources/language/cs_CZ/help/help_misc.html new file mode 100644 index 0000000..4b798da --- /dev/null +++ b/sources/language/cs_CZ/help/help_misc.html @@ -0,0 +1,5 @@ +

    Jakmile jste vytvořili Vaši galerii, nastavte vlastnosti zobrazení v +Administraci » Konfigurace » +Volby .
    Každý nově zaregistrovaný uživatel bude mít tyto základní nastavení po registraci.

    + +

    V případě jakýchkoliv otázek, navštivte Piwigo fórum.

    diff --git a/sources/language/cs_CZ/help/help_permissions.html b/sources/language/cs_CZ/help/help_permissions.html new file mode 100644 index 0000000..00773e3 --- /dev/null +++ b/sources/language/cs_CZ/help/help_permissions.html @@ -0,0 +1,54 @@ +
    +Oprávnění na fotografiích + +

    Každá fotografie má úroveň soukromí (zámek). Každý uživatel má úroveň přístupu (klíč). Existuje 5 úrovní:

    +
      +
    1. Žádná
    2. +
    3. Kontakty
    4. +
    5. Přátelé (vyšší než kontakty)
    6. +
    7. Rodina (vyšší než přátelé)
    8. +
    9. Adminstrátoři (nejvyšší)
    10. +
    + +

    Vyšší úrovně mají oprávnění na nižší úrovně. Pro daného uživatele to znamená, že čím vyšší úroveň přístupu má, tím více fotografií vidí.

    + +

    Například, pokud fotografie "svatba-0024.jpg" má úroveň soukromí "Rodina" tak:

    +
      +
    • Petr (který je "Administrátor") jej uvidí, protože "Administrátoři" mohou vidět všechny fotografie
    • +
    • Bára (která je "Rodina") také uvidí
    • +
    • Marie (která je jen "Přítel") ale fotografii neuvidí
    • +
    + +

    Uživatel, který nemá právo vidět obsah kategorie, neuvidí ani kategorii jako takovou a tedy ani její název. Stejný princip platí pro klíčová slova.

    + +

    Úroveň přístupu (klíč) můžete nastavit na obrazovce Administrace » Uživatelé » Správa.

    + +
    + +
    +Oprávnění na kategoriích + +

    Pokud Vám výše popsané úrovně soukromí nevyhovují, můžete také spravovat oprávnění pro uživatele a pro skupiny. Můžete spravovat oprávnění pro uživatele i pro skupiny najednou, bez rizika, že by došlo ke konfliktům.

    + +

    Můžete zakázat přístup do kategorií. Přepněte přístup do kategorie na +"soukromý" pokud chcete řídit přístup.

    + +

    Můžete nastavit přístup do kategorie na "soukromý" při editaci jedné kategorie (Administrace » Kategorie » Správa +» editovat), nebo nastavením vlastností pro celý strom kategorií +(Administrace » Kategorie » +Vlastnosti » Veřejná / Soukromá).

    + +

    Když je přístup do kategorie nastven na "soukromý", můžete řídit přístup pro skupiny a uživatele na třech obrazovkách:

    + +
      + +
    • Administrace » Uživatelé » Správa » + akce oprávnění
    • + +
    • Administrace » Uživatelé » Skupiny » + akce oprávnění
    • + +
    • Administrace » Kategorie » Správa » editovat
    • + +
    +
    diff --git a/sources/language/cs_CZ/help/help_virtual_links.html b/sources/language/cs_CZ/help/help_virtual_links.html new file mode 100644 index 0000000..af57b31 --- /dev/null +++ b/sources/language/cs_CZ/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

    Fotografie jsou zobrazeny v kategorii, která odpovídá adresáři, ve kterém jsou uloženy.

    + +

    Můžete, ale také zobrazit stejnou fotografii ve vícero kategoriích, bez toho, že by musely být uloženy na serveru vícekrát. Provede te to tak, že spojíte fotografii s jakoukoliv jinou kategorií pomocí obrazovky Upravit informace o fotografii, kterou může administrátor vyvolat ze stránky zobrazení fotografie.

    + +

    Virtuální kategorie jsou založeny na tomto konceptu: nemají zádný odpovídající adresář na serveru. Virtuální kategorie můžete vytvořit pomocí Administrace » Kategorie » +Správa.

    diff --git a/sources/language/cs_CZ/help/history.html b/sources/language/cs_CZ/help/history.html new file mode 100644 index 0000000..8f1e5e5 --- /dev/null +++ b/sources/language/cs_CZ/help/history.html @@ -0,0 +1,37 @@ +

    Historie

    + +

    Slouží k sledování historie návštěv vaší galerie v závislosti na zvoleném nastavení v administrace » konfigurace » volby » záložka historie

    + +

    Statistiky

    +
      +

      Pokud bylo nastaveno zaznamenávání (index.php a picture.php) navštívených stránek v tabu historie, +je možné je sledovat v tomto tabu.

      + +
    • Celkové statistky: návštěvy za rok.
    • + +
    • Roční statistiky: návštěvnost po měsících ve zvoleném roce.
    • + +
    • Měsíční statistiky: denní návštěvnost v jednotlivých dnech zvoleného měsíce.
    • + +
    • Denní statistiky: návštěvnost po hodinách během zvoleného dne.
    • + +
    + +

    Vyhledávání

    +
      +

      Pokud bylo nastaveno zaznamenávání (index.php a picture.php) navštívených stránek v tabu historie,můžete procházet detaily navštívených stránek za pomocí různých filtrů.

      + +
    • Filtr podle data: vyberte časové rozpětí ve kterém chcete sledovat aktivitu na stránkách..
    • + +
    • Filtr podle typu položky: vyberte typ položky u které chcete sledovat dění na stránce.
    • + +
    • Filtr podle uživatele: vyberte uživatele jehož navštívené stránky vás zajímají.
    • + +
    • Filtr podle názvu souboru: zvolte jméno souboru jehož návštěvnost vás zajímá.
    • + +
    • Filtr podle ID fotografie: zadejte ID fotografie kterou chcete sledovat.
    • +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/index.php b/sources/language/cs_CZ/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/cs_CZ/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/cs_CZ/help/maintenance.html b/sources/language/cs_CZ/help/maintenance.html new file mode 100755 index 0000000..3e9bff3 --- /dev/null +++ b/sources/language/cs_CZ/help/maintenance.html @@ -0,0 +1,26 @@ +

    Údržba

    + +

    Pro optimalizaci času generování stránek využívá Piwigo informace uložené v mezipaměti (v databázi). Například, místo zjišťování počtu fotek obsažených v jednotlivých albech při každém nahrání stránky, je tato informace již uložena v databázi. Teoreticky by tato informace měla být vždy správná, nicméně občas se může vloudit chyba a informace uložená v databázi je zastaralá.

    + +

    Některé informace jak plyne čas se stanou nepotřebnými. Mazáním těchto informací z databáze uvolníte místo na disku a do značné míry urychlíte práci s databází.

    + +
      +
    • Smazat tagy (nepřiřazených klíčových - orphaned tags)
    • +
    +
      +
    • Aktualizuj informace alb: Pro každé album jsou nasledující informace kontrolovány a aktualizovány pokud je potřeba : Seznam hlavních alb, počet fotek, datum poslední fotky, spojení mezi sesterskými alby, spojení mezi všemi alby. Tato akce také kontroluje konzistenci reprezentativních fotografií.
    • +
    • Aktualizovat informace o fotografiích: Pro každou fotku jsou nasledující informace kontrolovány a aktualizovány: plná cesta k souboru, průměrné hodnocení. Varování, nezapomeňte: Informace metadat musí být synchronizována z Administrace » Nástroje » Synchronizace, nebo na stránce úprav jednotlích fotografií (skrz Photo - Upravit Photo na příklad).
    • +
    +
      +
    • Opravit a optimalizovat databázi:Provede operace Znovu seřazení, Oprav a optamalizací na každé tabulce v databázi
    • +
    • Znovu spustit kontrolu integrity
    • +
    + +
      +
    • Provést údržbu detailů historie: Smazání všech řádek z tabulky historií. Stránka Administrace » Nástroje » Historie poté nezobrazí žádné informace ohledně historie. Upozornění: všechna data (historie a statistiky) budou NENÁVRATNĚ smazána!!
    • +
    • Provést údržbu celé historie: Smaže veškeré informace o souhrn historie navštěv. Tento souhrn je vygenerován podrobností historie.
    • +
    • Provést údržbu relací: Smaže prošlé uživatelské sessions.
    • +
    • Provést údržbu nepoužitých RSS vláken (smazat)
    • +
    • Odstranit historii hledání
    • +
    • Provést údržbu šablon (smazat)
    • +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/notification_by_mail.html b/sources/language/cs_CZ/help/notification_by_mail.html new file mode 100644 index 0000000..37e43d3 --- /dev/null +++ b/sources/language/cs_CZ/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

    Emailová upozornění

    + +

    Na tomto místě je možné spravovat maily upozorňující uživatele o změnách na vašich stránkách.

    + +

    K dipozici jsou tyto tři taby:

    + +

    Parametry

    +

    Dostupné pouze pro webmastery. Slouží nastavování parametrů upozorňovacích mailů

    + +

    Přihlášení k odběru

    +

    Dostupné pouze pro webmastery. Umožní přidat nebo odebrat uživatele z listu příjemců mailu.

    + +

    Odeslání

    +

    Dostupné pro webmastery a administrátory. Slouží k odeslání upozorňovacího mailu.

    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/permalinks.html b/sources/language/cs_CZ/help/permalinks.html new file mode 100644 index 0000000..98b3cf1 --- /dev/null +++ b/sources/language/cs_CZ/help/permalinks.html @@ -0,0 +1,7 @@ +

    Permanetní spojení

    + +

    Permanentní spojení jsou zde aby URL jednotlivých kategorii byla krásnější. Po definování permanentního spojení, není dále nutné mít ID kategorie v URL.

    + +

    Po smazání permanentního spojení, je možné ho uložit do historie pro zachování fungujících externích odkazů. V tabulce historie permanentních spojení je zobrazeno datum vymazání linku, čas posledního použití a počet použití.

    + +

    Každá kategorie musí mít unikátní název permanentního spojení. Stejně tak do historie není možné uložit stejný link vícekrát.

    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/photos_add_ftp.html b/sources/language/cs_CZ/help/photos_add_ftp.html new file mode 100644 index 0000000..e2d9a57 --- /dev/null +++ b/sources/language/cs_CZ/help/photos_add_ftp.html @@ -0,0 +1,102 @@ +
    + Rychlý návod + +
      +
    1. Vytvořte kategorii (adresář) na Vašem počítači.
    2. + +
    3. Zkopírujte nějaké fotografije do tohoto adresáře, změňte jejich velikost pro zobrazení na web. Varování: názvy adresářů a souborů musí obsahovat pouze písmena, čísla, "-", "_" or ".". Žádné mezery nebo znaky s diakritikou.
    4. + +
    5. Pomocí FTP, zkopírujte Váš adresář do adresáře "galleries" vaší instalace Piwigo.
    6. + +
    7. Přihlašte se do Vaší Piwigo galerie a přejděte na Administrace » Nástroje » Náhledy abyste vytvořili chybějící náhledy.
    8. + +
    9. Jděte na Adminstrace a stiskněte velké tlačítko Rychlá místní synchronizace.
    10. +
    + +Gratulujeme! Právě jste vytvořili vaší první galerii fotografií ve Vaší Piwigo galerii. +
    + +
    + Organizace souboru a adresářů + +
      + +
    • + +

      Adresáře kategorií jsou v Piwigo adresáři + "galleries". tady je ukázka malé adresářové struktury Piwigo (která ale využívá hodně vlastností Piwigo):

      + +
      +.
      +|-- admin
      +|-- doc
      +|-- galleries
      +|   |-- kategorie-1
      +|   |   |-- kategorie-1.1
      +|   |   |   |-- kategorie-1.1.1
      +|   |   |   |   |-- kategorie-1.1.1.1
      +|   |   |   |   |   |-- pwg_high
      +|   |   |   |   |   |   +-- svatba.jpg
      +|   |   |   |   |   |-- thumbnail
      +|   |   |   |   |   |   +-- TN-svatba.jpg
      +|   |   |   |   |   +-- svatba.jpg
      +|   |   |   |   +-- kategorie-1.1.1.2
      +|   |   |   +-- kategorie-1.1.2
      +|   |   |-- kategorie-1.2
      +|   |   |   |-- slon.jpg
      +|   |   |   +-- thumbnail
      +|   |   |       +-- TN-slon.jpg
      +|   |   +-- kategorie-1.3
      +|   +-- kategorie-2
      +|       |-- selatko.gif
      +|       |-- pwg_representative
      +|       |   +-- video.jpg
      +|       |-- thumbnail
      +|       |   +-- TN-selatko.jpg
      +|       +-- video.avi
      +|-- include
      +|-- install
      +|-- language
      +|-- template
      ++-- tool
      + +
    • + +
    • Kromě adreářů pojmenovaných "thumbnail", "pwg_high" nebo "pwg_representative" (čtěte vysvětlení níže), každý adresář v "galleries" vytvoří kategorii. Není zde omezení hloubky adresářů.
    • + +
    • Každý element kategorie je reprezentován souborem. Soubor může být elementem Piwigo pokud jeho přípona odpovídá parametru konfigurace file_ext + (viz. soubor include/config_default.inc.php). Soubor může být obrázek (fotografie) pokud jeho přípona je uvedena v parametru picture_ext.
    • + +
    • Obrázky musí mít přiřazen náhled (viz. sekce o náhledech níže)
    • + +
    • Obrázky mohou mít přiřazenu verzi ve vysoké kvalitě. Jako například svatba.jpg v příkladu výše. Verze ve vysoké kvalitě nemá, na rozdíl od náhledu, žádný prefix v názvu.
    • + +
    • Elementy které nejsou obrázky (video, zvuky, textové sobubory, cokoli chcete...) mají jako výchozí náhled ikonu, které odpovídá jejich příponě. Volitelně můžete přiřadit náhled a reprezentativní soubor (viz. video.avi v příkladu výše).
    • + +
    • Varování: názvy adresářů a souborů musí obsahovat pouze písmena, čísla, "-", "_" or ".". Žádné mezery nebo znaky s diakritikou.
    • + +
    • Když jsou elementy, obrázky, náhledy a reprezentativní soubory umístěny v adresářové struktuře přejděte na: Administrace » Kategorie » + Synchronizace
    • + +
    +
    + +
    + Náhledy +
      + +
    • Všechny obrázky (fotografie) musí mít přiřazen náhled.
    • + +
    • Náhledy jsou umístěny v podadresáři "thumbnail", který je v adresáři kategorie. Náhled má stejný název jako jemu odpovídající obrázek, s prefixem podle konfiguračního parametru prefix_thumbnail (viz. include/config.inc.php).
    • + +
    • Náhled nemusí mít nutně stejnou příponu jako jemu odpovídající obrázek (například ".jpg" obrázek může mít náhled s ".GIF" příponou).
    • + +
    • Doporučujeme použít externí aplikaci protvorbu náhledů.
    • + +
    • Vytvářená náhledů pomocí Piwigo může vést ke špatné kvalitě vytvořených náhledů, protože ta závisí na zdrojích serveru (a toto může být na sdílených serverech (webhosting) problém). + +
    • Pokud budete přesto vytvářet náhledy pomocí Piwigo na serveru, tak musíte povolit přístup pro zápis pro všechny v adresáři "galleries" a všech podadresářích.
    • + +
    +
    diff --git a/sources/language/cs_CZ/help/search.html b/sources/language/cs_CZ/help/search.html new file mode 100644 index 0000000..c3978d7 --- /dev/null +++ b/sources/language/cs_CZ/help/search.html @@ -0,0 +1,19 @@ +

    Vyhledávání

    + +

    Tato stránka umožňuje vyhledávat obrázky z celé galerie.

    + +
    + +
    Vyhledávání klíčových slov
    +
    Vyhledání jedno nebo více slov podle atributu přiřazeného k obrazku v galerii. Pro vyhledání slov s částečnou shodou je možno použít * jako wildcard (zástupný znak).
    + +
    Vyhledávání podle autora
    +
    Pro vyhledání slov s částečnou shodou je možno použít * jako wildcard (zástupný znak).
    + +
    Vyhledávání podle data
    +
    Vyberte počáteční a/nebo koncové datum. Pole nechte prázdné pokud chcete vyhledávat "do teď". Formát letopočtu v posledním políčku musí být ve tvaru: RRRR (např. 2004)
    + +
    Vyhledávání v kategoriích
    +
    Vyberte jednu nebo více kategorií ve kterých chcete vyhledávat. Ve všech podkategoriích se dá vyhledávat označením rodičovské kategorie a nastavením volby "umožnit prohledávání podkategorií"
    + +
    \ No newline at end of file diff --git a/sources/language/cs_CZ/help/synchronize.html b/sources/language/cs_CZ/help/synchronize.html new file mode 100644 index 0000000..eabeec7 --- /dev/null +++ b/sources/language/cs_CZ/help/synchronize.html @@ -0,0 +1,7 @@ +

    Synchronizace

    + +

    Existují dva různé typy synchronizace: adresáře/soubory a jejich metadata. Adresáře/soubory slouží k synchronizaci stromu adresářů se stromem kategorií v databazi. Metadata doplní položky o informace jako například velikost souboru, rozměry v pixelech, EXIF nebo IPTC informace.

    + +

    Nejprve je třeba synchronizovat adresáře/soubory.

    + +

    Synchronizace může zabrat nějaký čas (v závislosti na vytížení a rychlosti serveru a počtu synchronizovaných položek), Pokud je to možné provádějte synchronizaci kategorii po kategorii.

    diff --git a/sources/language/cs_CZ/help/user_list.html b/sources/language/cs_CZ/help/user_list.html new file mode 100644 index 0000000..bebfd9f --- /dev/null +++ b/sources/language/cs_CZ/help/user_list.html @@ -0,0 +1,25 @@ +

    Seznam uživatelů

    + +

    Na tomto místě můžete spravovat nastavení jednotlivých uživatelů.

    + +

    Přidat uživatele

    + +

    Administrátoři mohou uživatele přidávat ručně.

    + +

    Filtr

    + +

    Seznam uživatelů je možno filtrovat podle jména uživatele (wildcard * pro částečnou shodu), skupiny nebo stavu. Výpis můžete nechat seřadit podle data registrace nebo uživatelského jména a to vzestupně nebo sestupně.

    + +

    Zde je možno editovat více uživatelů najednou. Možné akce:

    + +
      + +
    • smazání uživatele (vyžaduje potvrzení)
    • +
    • změna stavu
    • +
    • změna přiřazení ke skupině
    • +
    • úprava vlastností zobrazení
    • +
    • úprava doplňujících vlastností
    • + +
    + +

    Předmětem úprav jsou vybraní uživatelé (výchozí nastavení) nebo všichni uživatelé vybraní provedením filtru.

    \ No newline at end of file diff --git a/sources/language/cs_CZ/index.php b/sources/language/cs_CZ/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/cs_CZ/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/cs_CZ/install.lang.php b/sources/language/cs_CZ/install.lang.php new file mode 100644 index 0000000..7f6d589 --- /dev/null +++ b/sources/language/cs_CZ/install.lang.php @@ -0,0 +1,72 @@ +Piwigo message board.'] = 'Potřebujete pomoc ? Zeptejte se na Piwigo fóru.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Návštěvníci mohou pomocí tohoto e-mailu správce kontaktovat'; +$lang['PHP 5 is required'] = 'Je nutný PHP 5'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Na Vašem webhostingu je PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo se může pokusit změnit Vaše nastavení na PHP 5 tím, že vytvoří nebo změní soubor .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Případně můžete změnit Vaši konfirguraci sami a potom restartovat Piwigo .'; +$lang['Try to configure PHP 5'] = 'Pokuste se změnit Vaše nastavení na PHP 5'; +$lang['Sorry!'] = 'Bohužel!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nebylo schopno změnit Vaše nastavení na PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Obraťte se na poskytovatele Vašeho webhostingu, aby jste zjistili, jak můžete změnit Vaše nastavení na PHP 5.'; +$lang['Hope to see you back soon.'] = 'Věříme, že se brzy uvidíme.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulujeme, Piwigo instalace je ukončena'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Náhradním řešením je zkopírovat text z boxu výše a vložit jej do souboru "local/config/database.inc.php" (Upozornění : soubor database.inc.php smí obsahovat jen to, co je v tomto boxu, žádné znaky odřádkování nebo mezery)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Vytvoření souboru local/config/database.inc.php se nepodařilo.'; +$lang['Download the config file'] = 'Stáhnout konfigurační soubor'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Můžete stáhnout konfigurační soubor a nahrát jej do adrešáře local/config Vaší instalace.'; +$lang['Just another Piwigo gallery'] = 'Jen další galerie Piwigo'; +$lang['Welcome to my photo gallery'] = 'Vítejte na mé fotogalerii'; +$lang['Welcome to your new installation of Piwigo!'] = 'Vítejte v nové instalaci Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Neváhejte navštívit naše fórum v případě jakýchkoliv dotazů: %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost, nebo jiný, dodaný poskytovatelem hostingu'; +?> \ No newline at end of file diff --git a/sources/language/cs_CZ/iso.txt b/sources/language/cs_CZ/iso.txt new file mode 100644 index 0000000..4b3dd8e --- /dev/null +++ b/sources/language/cs_CZ/iso.txt @@ -0,0 +1 @@ +Česky [CZ] \ No newline at end of file diff --git a/sources/language/cs_CZ/upgrade.lang.php b/sources/language/cs_CZ/upgrade.lang.php new file mode 100644 index 0000000..7d967f2 --- /dev/null +++ b/sources/language/cs_CZ/upgrade.lang.php @@ -0,0 +1,49 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Proveďte kontrolu údržby v [Administrace>Nástroje>Údržba] pokud dojde k problému.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Jen administrátor smí spustit aktualizaci: prosím přihlašte se níže.'; +$lang['You do not have access rights to run upgrade'] = 'nemáte přístupová práva na spuštění upgrade'; + +// Upgrade informations from upgrade_1.3.1.php +$lang['All sub-albums of private albums become private'] = 'Všechny sub-alba privátních alb zůstanou privatní'; +$lang['User permissions and group permissions have been erased'] = 'Uživatelská oprávnění a oprávnění skupin byla vymazána'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Z předchozí konfigurace byly zachovány pouze předpony náhledů a email adresa správce.'; + +// missing translations 2.1.0 +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Navrhujeme aktualizovat databázi Vaší galerie Piwigo ze starší na novou verzi. +Asistent aktualizace se domnívá, že aktuálně používáte verzi %s (nebo odpovídající).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Jako předběžné opatření byly deaktivovány následující doplňky. Prosím zkontrolujte aktualizace těchto doplňků předtím než je znovu aktivujete:'; +$lang['In %s, before ?>, insert:'] = 'V %s, před ?>, vložením:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Jako preventivní opatření, byli náseldující šablony deaktivovány. Musíte zkontrolovat nejprve jestli není nová verze předtím než je reaktivujete:'; +?> \ No newline at end of file diff --git a/sources/language/da_DK/about.html b/sources/language/da_DK/about.html new file mode 100644 index 0000000..850678e --- /dev/null +++ b/sources/language/da_DK/about.html @@ -0,0 +1,16 @@ +

    Dette fotogalleri er baseret på Piwigo.

    + +

    Piwigo er et fotogalleriprogram til webbrug, opbygget af et aktivt fællesskab bestående af brugere og udviklere. Udvidelser gør at det er let at tilpasse Piwigo. Som prikken over i'et er Piwigo frie software og Open Source.

    + +

    Besøg Piwigos websted

    + +

    Den dansksprogede udgave af Piwigo vedligeholdes af følgende personer, i alfabetisk rækkefølge: +

    + .... tak til dem

    diff --git a/sources/language/da_DK/admin.lang.php b/sources/language/da_DK/admin.lang.php new file mode 100644 index 0000000..e0f8d1b --- /dev/null +++ b/sources/language/da_DK/admin.lang.php @@ -0,0 +1,980 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står for Piwigo Uploader. På din computer forbereder pLoader dine fotografier og overfører dem til dit Piwigo-fotogalleri.'; +$lang['Guest Settings'] = 'Gæsteindstillinger '; +$lang['Main Page'] = 'Forside'; +$lang['Photo Page'] = 'Fotoside '; +$lang['Activate Navigation Bar'] = 'Aktiver navigationsbjælke'; +$lang['Activate Navigation Thumbnails'] = 'Aktiver navigeringsminiaturebilleder'; +$lang['Activate icon "%s"'] = 'Aktiver ikonen \'%s\''; +$lang['Photo Properties'] = 'Fotografiegenskaber'; +$lang['Allow user customization'] = 'Tillad brugertilpasning'; +$lang['Languages'] = 'Sprog'; +$lang['Installed Languages'] = 'Installerede sprog'; +$lang['Add New Language'] = 'Tilføj nyt sprog '; +$lang['Language has been successfully installed'] = 'Sproget er installeret'; +$lang['Select:'] = 'Vælg:'; +$lang['None'] = 'Ingen'; +$lang['Invert'] = 'Vend'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Ikke muligt at deaktivere dette tema, du skal have mindst ét tema'; +$lang['Webmaster status is required.'] = 'Webmasterstatus er krævet.'; +$lang['Bound Theme'] = 'Tilknyttet tema'; +$lang['Allow rating'] = 'Tillad bedømmelse'; +$lang['Select at least one comment'] = 'Vælg mindst én kommentar'; +$lang['Active Plugins'] = 'Aktive plugins '; +$lang['Inactive Plugins'] = 'Inaktive plugins '; +$lang['Missing Plugins'] = 'Manglende plugins'; +$lang['Uninstalled Plugins'] = 'Afinstallerede plugins '; +$lang['By %s'] = 'Af %s'; +$lang['Visit plugin site'] = 'Besøg pluginwebstedet'; +$lang['By rank'] = 'Efter bedømmelse'; +$lang['Manual order'] = 'Manuel rækkefølge'; +$lang['Who can see this photo?'] = 'Hvem kan se dette fotografi?'; +$lang['Active Languages'] = 'Aktive sprog'; +$lang['Delete this language'] = 'Slet dette sprog'; +$lang['Forbid this language to users'] = 'Forbyd dette sprog til brugere'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Ikke muligt at deaktivere dette sprog, du skal først vælge et andet sprog som standard.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Ikke muligt at deaktivere dette sprog, du skal have mindst ét sprog.'; +$lang['Inactive Languages'] = 'Inaktive sprog'; +$lang['Make this language available to users'] = 'Gør dette sprog tilgængeligt for brugerne'; +$lang['Set as default language for unregistered and new users'] = 'Opsæt som standardsprog for ikke-registrerede og nye brugere'; +$lang['Add Photos'] = 'Tilføj fotografier'; +$lang['The following tag was deleted'] = 'Følgende tag er slettet'; +$lang['Miscellaneous'] = 'Forskelligt'; +$lang['Virtual Links'] = 'Virtuelle links'; +$lang['There is no other language available.'] = 'Der er ikke andre sprog til rådighed.'; +$lang['There is no other plugin available.'] = 'Der er ikke andre tilgængelige plugins.'; +$lang['There is no other theme available.'] = 'Der er ikke andre tilgængelige temaer.'; +$lang['Add another set of photos'] = 'Tilføj et sæt fotografier mere'; +$lang['Order of menubar items has been updated successfully.'] = 'Rækkefølge af menubjælker er opdateret.'; +$lang['This theme was not designed to be directly activated'] = 'Dette tema er ikke beregnet til at blive aktiveret direkte'; +$lang['Pending Comments'] = 'Ventende kommentarer'; +$lang['Menu Management'] = 'Menu'; +$lang['new'] = 'ny'; +$lang['No file was uploaded'] = 'Ingen filer blev uploadet'; +$lang['No photo in the current set.'] = 'Ingen fotografier i det aktuelle sæt.'; +$lang['No photo selected, %d photos in current set'] = 'Ingen fotografier valgt, %d fotografier i nuværende sæt'; +$lang['No photo selected, no action possible.'] = 'Ingen fotografier valgt, ingen mulige handlinger.'; +$lang['No results'] = 'Ingen resultater'; +$lang['on the %d selected photos'] = 'på de %d valgte fotografier'; +$lang['Predefined filter'] = 'Foruddefineret filter'; +$lang['Refresh photo set'] = 'Opfrisk fotosættet'; +$lang['Remove all filters'] = 'Fjern alle filtre'; +$lang['remove author'] = 'fjern forfatter'; +$lang['remove creation date'] = 'fjern oprettelsesdato'; +$lang['Remove from caddie'] = 'Fjern fra kurv'; +$lang['remove this filter'] = 'fjern dette filter'; +$lang['remove title'] = 'fjern titel'; +$lang['Searching...'] = 'Søger ...'; +$lang['Selection'] = 'Udvælgelse'; +$lang['Set author'] = 'Opsæt forfatter'; +$lang['Set creation date'] = 'Opsæt oprettelsesdato'; +$lang['Set title'] = 'Opsæt titel'; +$lang['Learn more'] = 'Lær mere'; +$lang['Rate'] = 'Bedøm'; +$lang['Average rate'] = 'Gennemsnitlig bedømmelse'; +$lang['An error has occured during upgrade.'] = 'Der opstod en fejl under opgraderingen.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Der opstod en fejl under udpakningen. Tjek filrettigheder i din Piwigo-installation.
    Klik her for at se fejlloggen.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan ikke modtage opgraderingsfiler fra serveren'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Medtag historiske data (Advarsel: Hukommelsesbegrænsning på serveren kan blive overskredet)'; +$lang['Unable to dump database.'] = 'Det er ikke muligt dump\'e databasen.'; +$lang['Update in progress... Please wait.'] = 'Opdateringen er i gang... Vent venligst.'; +$lang['Update to Piwigo %s'] = 'Opdater til Piwigo %s'; +$lang['Two updates are available'] = 'Der er to opdateringer til rådighed'; +$lang['%d of %d photos selected'] = '%d af %d fotografier udvalgt'; +$lang['Action'] = 'Handling'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktiver ikonen "ny" ved siden af albummer og billeder'; +$lang['Add a criteria'] = 'Tilføj kriterium'; +$lang['Add a filter'] = 'Tilføj et filter'; +$lang['Album photos associated to the following albums: %s'] = 'Fotografierne i albummet er knyttet til følgende albummer: %s'; +$lang['Albums automatically sorted'] = 'Albummer er automatisk sorteret'; +$lang['All %d photos are selected'] = 'Alle %d fotografier er valgt'; +$lang['Apply action'] = 'Godkend handling'; +$lang['automatic order'] = 'automatisk rækkefølge'; +$lang['Batch Manager'] = 'Batch Manager'; +$lang['Choose an action'] = 'Vælg en handling'; +$lang['Deactivate all'] = 'Deaktiver alle'; +$lang['Default photos order'] = 'Standardrækkefølge for fotografier'; +$lang['Delete orphan tags'] = 'Slet forældreløse tags'; +$lang['delete photo'] = 'slet fotografi'; +$lang['Duplicates'] = 'Dubletter'; +$lang['Error on file "%s" : %s'] = 'Fejl i filen "%s": %s'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif-udvidelsen er ikke tilgængelig, admin bør deaktivere anvendelse af exif'; +$lang['Failed to write file to disk'] = 'Fejl i skrivning til disk'; +$lang['File upload stopped by extension'] = 'Filupload er stoppet'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I din php.ini-fil, er upload_max_filesize (%sB) større end post_max_size (%sB), du bør ændre denne indstilling'; +$lang['include child albums'] = 'medtag underalbummer'; +$lang['Last import'] = 'Seneste import'; +$lang['manual order'] = 'manual rækkefølge'; +$lang['Missing a temporary folder'] = 'Mangler midlertidig mappe'; +$lang['Orphan tags deleted'] = 'Forældreløse tags slettet'; +$lang['Restore'] = 'Genopret'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Genopret standardopsætning. Du vil miste dine plugin-indstillinger!'; +$lang['Show menubar'] = 'Vis menubjælke'; +$lang['Add to caddie'] = 'tilføj til kurv'; +$lang['%s has been successfully updated.'] = '%s er blevet opdateret.'; +$lang['%s photos can not be regenerated'] = '%s fotografier kan ikke gendannes'; +$lang['%s photos have been regenerated'] = '%s fotografier er gendannet'; +$lang['(this tag will be deleted)'] = '(dette tag vil blive slettet)'; +$lang['... or '] = '... eller '; +$lang['Activate comments'] = 'Aktiver kommentarer'; +$lang['All extensions are up to date.'] = 'Alle udvidelser er opdaterede.'; +$lang['All languages are up to date.'] = 'Alle sprog er opdaterede.'; +$lang['All plugins are up to date.'] = 'Alle plugins er opdaterede.'; +$lang['All themes are up to date.'] = 'Alle temaer er opdaterede.'; +$lang['Allowed file types: %s.'] = 'Tilladte filtyper: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Omtrentlig maksimal opløsning: %dM pixels (der er %dx%d pixels).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Som standard vil Piwigo danne en ny webstørrelse fra HD-versionen (højopløselig) af dit fotografi.'; +$lang['Confirm merge'] = 'Bekræft sammenlægning'; +$lang['Create'] = 'Dan'; +$lang['Crop'] = 'Beskær'; +$lang['Default comments order'] = 'Standardkommentarrækkefølge'; +$lang['display'] = 'vis'; +$lang['Do you want to activate anyway?'] = 'Vil du aktivere alligevel?'; +$lang['Dump Database'] = 'Dump database'; +$lang['ERROR'] = 'FEJL'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEJL: DENNE PLUGIN MANGLER, MEN ER INSTALLERET! AFINSTILLER NU.'; +$lang['Extensions Update'] = 'Opdater udvidelser'; +$lang['Follow Orientation'] = 'Følg retning'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Følgende plugins er måske ikke kompatible med den nye version af Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Følgende temaer er måske ikke kompatible med den nye version af Piwigo:'; +$lang['Height'] = 'Højde'; +$lang['hide details'] = 'skjul detaljer'; +$lang['Graphics Library'] = 'Grafikbibliotek'; +$lang['I decide to update anyway'] = 'Jeg vil gerne opdatere alligevel'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Hvis der ikke er HD tilgængelig, og hvis webstørrelsen er større end skaleringsdimensionerne, flytter Piwioi det som HD og danner en nedskaleret fotografi i webstørrelse af det.'; +$lang['Ignore All'] = 'Ignorer alt'; +$lang['Ignore this update'] = 'Ignorer denne opdatering'; +$lang['Manage Permissions'] = 'Administrer tilladelser'; +$lang['Maximum file size: %sB.'] = 'Maksimal filstørrelse: %sB.'; +$lang['Merge selected tags'] = 'Flet udvalgte tags'; +$lang['Merge tags'] = 'Flet tags'; +$lang['New Version'] = 'Ny version'; +$lang['No destination tag selected'] = 'Der er ikke valgt et måltag'; +$lang['Obsolete Plugins'] = 'Forældede plugins'; +$lang['Photo %s of %s'] = 'Fotografi %s af %s'; +$lang['Photo name'] = 'Fotografinavn'; +$lang['Photos generation in progress...'] = 'Dannelse af fotografier er i gang ...'; +$lang['Piwigo Update'] = 'Opdater Piwigo'; +$lang['Reset ignored updates'] = 'Nulstil ignorerede opdateringer'; +$lang['Save Template Directory'] = 'Gem skabelonmappe'; +$lang['Select an album'] = 'Vælg et album'; +$lang['Select at least two tags for merging'] = 'Vælg mindst to tags til sammenlægning'; +$lang['Select the destination tag'] = 'Vælg måltagget'; +$lang['Send connection settings by email'] = 'Send loginoplysninger pr. e-mail'; +$lang['show details'] = 'vis detaljer'; +$lang['Some themes and plugins may be not available yet.'] = 'Nogle temaer og plugins er måske endnu ikke tilgængelige.'; +$lang['Some upgrades are available for extensions.'] = 'Der er tilgængelige opgraderinger til nogle udvidelser.'; +$lang['Start Upload'] = 'Begynd Upload'; +$lang['Tags %s merged into tag %s'] = 'Taggene %s er blevet lagt ind i tagget %s'; +$lang['The original image quality must be a number between %d and %d'] = 'Det originale billedkvalitet skal være et tal mellem %d og %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Den originale maksimumhøjde skal være et tal mellem %d og %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Den originale maksimumbredde skal være et tal mellem %d og %d'; +$lang['This is a major update, with new exciting features.'] = 'Dette er en større opdatering, med nye spændende funktioner.'; +$lang['This is a minor update, with only bug corrections.'] = 'Dette er en mindre opdatering, kun med fejlrettelser.'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DETTE PLUGIN ER NU EN DEL AF PIWIGO CORE! AFINDSTALLER DET NU!'; +$lang['Thumbnails generation in progress...'] = 'Dannelse af miniaturebilleder er i gang ...'; +$lang['Update All'] = 'Opdater alle'; +$lang['Update Complete'] = 'Opdatering gennemført'; +$lang['Updates'] = 'Opdateringer'; +$lang['Visit language site'] = 'Besøg sprogwebsted'; +$lang['Visit theme site'] = 'Besøg temawebstedet'; +$lang['Width'] = 'Bredde'; +$lang['With no album'] = 'Ingen album'; +$lang['With no tag'] = 'Ingen tag'; +$lang['With no virtual album'] = 'Ingen virtuelle albummer'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Du bruger Browser-uploaderen. Prøv Flash-uploaderen i stedet.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Du bruger Flash-uploaderen. Har du problemer? Prøv Browser-uploaderen i stedet.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan opdatere til Piwigo %s direkte, uden at opgradere til Piwigo %s (anbefalet).'; +$lang['Zoom'] = 'Zoom'; +$lang['Resize after upload'] = 'Størrelsesændring efter upload'; +$lang['Original Size'] = 'Original størrelse'; +$lang['A locked gallery is only visible to administrators'] = 'Et låst galleri er kun synligt for administratorer'; +$lang['Unlock gallery'] = 'Lås galleri op'; +$lang['Gallery unlocked'] = 'Galleri er låst op'; +$lang['Notify administrators when a comment is'] = 'Giv administratorer besked når en kommentar er'; +$lang['modified'] = 'ændret'; +$lang['pending validation'] = 'afventer godkendelse'; +$lang['Save visits in history for'] = 'Gem besøg i historik for'; +$lang['simple visitors'] = 'simple besøgende'; +$lang['registered users'] = 'registerede brugere'; +$lang['administrators'] = 'administratorer'; +$lang['This album contains %d photos, added on %s.'] = 'Dette album indeholder %d fotografier, tilføjet den %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Dette album indeholder %d fotografier, tilføjet mellem %s og %s.'; +$lang['This album contains no photo.'] = 'Dette album indeholder ingen fotografier.'; + +$lang['Move to album'] = 'Flyt til album'; +$lang['The whole page'] = 'Hele siden'; +$lang['The whole set'] = 'Hele sættet'; +$lang['Themes which need upgrade'] = 'Temaer der skal opgraderes'; +$lang['Type here the author name'] = 'Skriv forfatterens navn'; +$lang['Type here the title'] = 'Skriv titlen'; +$lang['Type in a search term'] = 'Skriv søgeord'; +$lang['Unknown upload error'] = 'Ukendt fejl ved upload'; +$lang['Week starts on'] = 'Ugen begynder med'; +$lang['Apply watermark if height is bigger than'] = 'Tilføj vandmærke hvis højden er større end'; +$lang['Apply watermark if width is bigger than'] = 'Tilføj vandmærke hvis bredden er større end'; +$lang['Cancel'] = 'Fortryd'; +$lang['Delete multiple size images'] = 'Slet billeder i flere størrelser'; +$lang['Generate multiple size images'] = 'Dan billeder i flere størrelser'; +$lang['Groups and users'] = 'Grupper og brugere'; +$lang['Languages which need upgrade'] = 'Sprog der skal opdateres'; +$lang['Opacity'] = 'Gennemsigtighed'; +$lang['Permission granted for users'] = 'Tilladelser tildelt brugerne'; +$lang['Permission management'] = 'Tilladelsesstyring'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish-plugin til Lightroom'; +$lang['Select a file'] = 'Vælg en fil'; +$lang['Select groups...'] = 'Vælg grupper ...'; +$lang['Select users...'] = 'Vælg brugere ...'; +$lang['The uploaded file was only partially uploaded'] = 'Den uploadede fil blev kun delvist uploadet'; +$lang['There is no group in this gallery.'] = 'Der er ingen grupper i dette galleri.'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ADVARSEL! Plugin\'en er ikke kompatibelt med denne version af Piwigo.'; +$lang['X Position'] = 'X-position'; +$lang['X Repeat'] = 'X-gentagelse'; +$lang['Y Position'] = 'Y-position'; +$lang['add a new watermark'] = 'tilføj et nyt vandmærke'; +$lang['any visitor can see this album'] = 'alle besøgende kan se dette album'; +$lang['bottom left corner'] = 'nederste venstre hjørne'; +$lang['bottom right corner'] = 'nederste højre hjørne'; +$lang['custom'] = 'Tilpasset'; +$lang['middle'] = 'midt'; +$lang['top left corner'] = 'øverste venstre hjørne'; +$lang['top right corner'] = 'øverste højre hjørne'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)'; +$lang['Save manual order'] = 'Gem manuel rækkefølge'; +$lang['Automatic sort order'] = 'Automatisk sorteringsrækkefølge'; +$lang['List'] = 'Liste'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo-eksportplugin til Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo-eksportplugin til iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo for Android'; +$lang['You can activate only one mobile theme.'] = 'Du kan kun aktivere et mobiltema'; +$lang['apply automatic sort order'] = 'Aktiver automatisk sorteringsrækkefølge'; +$lang['cancel manual order'] = 'afbryd manuel rækkefølge'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam er et avanceret fri software-program til organisering af digitale fotografier til Linux, Windows og Mac OS X.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam er designet til fotografer, der ønsker at se, organisere, redigere, optimere, indeksere og dele fotografier.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'App\'en Piwigo for iOS giver dig mulighed for at forbinde en iPhone, iPad eller iPod Touch til dit Piwigo-galleri, oprette albummer og uploade flere fotografier på én gang.'; +$lang['Applications'] = 'Applikationer'; +$lang['Available on'] = 'Tilgængelig på'; +$lang['Available versions for'] = 'Tilgængelige versioner for'; +$lang['Not cropped correctly?'] = 'Ikke beskåret korrekt?'; +$lang['Web Form'] = 'Webformular'; +$lang['You have %d orphan tags: %s.'] = 'Du har %d forældreløse tags: %s'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besøgende skal logge ind samt have de nødvendige tilladelser for at se dette album'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Filstørrelsen på den uploadede fil overstiger MAX_FILE_SIZE-definitionen, som er angivet i HTML-formularen'; +$lang['Multiple Size'] = 'Flere størrelser'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u brugere har automatisk tilladelse, fordi de tilhører en gruppe med tilladelser.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'App\'en Piwigo for Android giver dig mulighed for at forbinde en Android-mobiltelelfon eller -tablet med dit Piwigo-galleri, oprette albummer og uploade flere fotografier på én gang.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom er et fotografiprogram beregnet til at håndtere store mængder digitale billeder og foretage efterbehandling.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture er et ydedygtigt værktøj til at forfine billeder og administrere store biblioteker på Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture er udviklet til professionelle fotografer med iPhoto-enkelhed.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard er fokusområdet placeret i midten af fotografiet'; +$lang['Center of interest'] = 'Fokusområde'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funktionerne omfatter gennemsyn af galleri, oprettelse af albummer og upload af fotografier.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For fotostørrelser med beskæring, så som "Square", vil Piwigo gøre sit bedste for at medtage fokusområdet.'; +$lang['No group is permitted to see this private album'] = 'Ingen gruppe har rettigheder til at se dette private album'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'På din Linux, installer bare Shotwell med din pakkemanager og aktivér Piwigos udgivelsesvalgmulighed.'; +$lang['Permission granted for groups'] = 'Tilladelse tildelt grupperne'; +$lang['Photo sizes with crop'] = 'Fotostørrelser med beskæring'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Publish-plugin til Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo Publish-plugin til digiKam'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery-klient til Android) er en open source-Piwigo-klient (GPL v3) til Android-platformen.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vælg et område med musen for at fastsætte et nyt fokusområde.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell er et open source-organiseringsprogram til digitale fotografier, der kører på Linux. I Ubuntu og Fedora er det standardprogram til organisering af fotografier.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigos eksportplugin giver mulighed for at oprette albummer og eksportere fotografier.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo Publish-plugin\'en giver mulighed for at eksportere og synkronisere fotografier fra Lightroom direkte til dit Piwigo-fotogalleri.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Fokusområdet er den mest betydningsfulde område i fotografiet.'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den uploadede fil overstiger upload_max_filesize-definitionen i php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den uploadede fil overstiger post_max_size-definitionen i php.ini: %sB'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'For at eksportere dine fotografier fra digiKam til Piwigo, skal du blot installere digiKam og KIPI-plugin\'en.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan ikke definere en standardrækkefølge for fotografier, fordi du har en tilpasset indstilling i din lokale opsætning.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Du har angivet $conf[\'order_by\'] i din lokale opsætningsfil, parameteret er forældet, du skal derfor fjerne det eller omdøbe det til $conf[\'order_by_custom\']!'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto er standardprogram til håndtering af fotografier under Mac OS X. Ved hjælp af eksportplugin\'en kan du oprette nye albummer og eksportere dine fotografier direkte fra iPhoto til dit Piwigo-fotogalleri.'; +$lang['include photos with lower privacy level'] = 'medtag fotografier med lavere privatlivsniveau'; +$lang['%d day'] = '%d dag'; +$lang['%d days'] = '%d dage'; +$lang['%d hour'] = '%d time'; +$lang['%d hours'] = '%d timer'; +$lang['%d minute'] = '%d minut'; +$lang['%d minutes'] = '%d minutter'; +$lang['%d month'] = '%d måned'; +$lang['%d months'] = '%d måneder'; +$lang['%d second'] = '%d sekund'; +$lang['%d seconds'] = '%d sekunder'; +$lang['%d year'] = '%d år'; +$lang['%d years'] = '%d år'; +$lang['%s ago'] = '%s siden'; +$lang['%s in the future'] = '%s i fremtiden'; +$lang['Added by %s'] = 'Tilføjet af %s'; +$lang['Numeric identifier : %d'] = 'Numerisk identifikator: %d'; +$lang['Original file : %s'] = 'Original fil: %s'; +$lang['Posted %s on %s'] = 'Sendt %s den %s'; +$lang['Rated %d times, score : %.2f'] = 'Bedømt %d gange, vurdering: %.2f'; +$lang['Sharpen'] = 'Gør skarpere'; +$lang['Visited %d times'] = 'Besøgt %d gange'; +$lang['Watermark'] = 'Vandmærke'; +$lang[' and %d virtuals'] = ' og %d virtuelle'; +$lang['%d physicals'] = ' %d fysiske'; +$lang['%d week'] = '%d uge'; +$lang['%d weeks'] = '%d uger'; +$lang['Edit photo'] = 'Rediger fotografi'; +$lang['create a new site'] = 'opret et nyt websted'; +$lang['No order field selected'] = 'Rækkefølgefeltet er ikke valgt'; +$lang['Duplicate selected tags'] = 'Kopier valgte tags'; +$lang['Name of the duplicate'] = 'Navn på kopi'; +$lang['Source tag'] = 'Kildetag'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tagget "%s" er nu en kopi af "%s"'; +$lang['Landscape'] = 'Landskab'; +$lang['Minimum height'] = 'Minimal højde'; +$lang['Minimum width'] = 'Minimal bredde'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Portræt'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Den installerede version af %s [%s] er ikke kompatibel med den krævede version [%s]'; +$lang['Manage photos'] = 'Håndter fotografier'; +$lang['View in gallery'] = 'Se i galleri'; +$lang['Number of albums per page'] = 'Antal albummer pr. side'; +$lang['Ratio'] = 'Faktor'; +$lang['between %.2f and %.2f'] = 'mellem %.2f og %.2f'; +$lang['between %d and %d pixels'] = 'mellem %d og %d pixels'; +$lang['Duplicate'] = 'Kopier'; +$lang['Manage the members'] = 'Medlemshåndtering'; +$lang['Merge selected groups'] = 'Læg valgte grupper sammen'; +$lang['No group selected, no action possible.'] = 'Ingen grupper valgt, handling ikke mulig.'; +$lang['No members to manage'] = 'Der er ingen medlemmer at håndtere'; +$lang['Please select at least two groups'] = 'Vælg mindst to grupper'; +$lang['Rename'] = 'Omdøb'; +$lang['This group will be set to default'] = 'Denne gruppe vil blive opsat som standard'; +$lang['This group will be unset to default'] = 'Denne gruppe vil ikke længere være opsat som standard'; +$lang['Type here the name of the new group'] = 'Skriv navnet på den nye gruppe'; +$lang['Purge user cache'] = 'Tøm brugercache'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Billeddimensionerne vil blive reduceret til %dx%d pixels.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Størrelsesændring efter upload er deaktiveret, da grafikbiblioteket GD anvendes'; +$lang['Select at least one tag'] = 'Vælg mindst et tag'; +$lang['Basic settings'] = 'Grundlæggende indstillinger'; +$lang['General'] = 'Generelt'; +$lang['Mail theme'] = 'Mailtema'; +$lang['%d of %d users selected'] = '%d af %d brugere valgt'; +$lang['(filtered from %s total users)'] = '(filtreret fra totalt %s brugere)'; +$lang['All %d users are selected'] = 'Alle %d brugere er valgt'; +$lang['Change password'] = 'Ændring af adgangskode'; +$lang['Change username'] = 'Ændring af brugernavn'; +$lang['Last visit on %s, %s.'] = 'Seneste besøg kl. %s den %s.'; +$lang['Loading...'] = 'Indlæser ...'; +$lang['No matching user found'] = 'Ingen brugere fundet som opfylder kriteriet'; +$lang['No user selected of %d users'] = 'Ingen bruger valgt ud af %d brugere'; +$lang['No user selected, no action possible.'] = 'Ingen bruger valgt, ingen handling er mulig.'; +$lang['Password updated'] = 'Adgangskoden er opdateret'; +$lang['Registered on %s, %s.'] = 'Registreret kl. %s den %s.'; +$lang['Show %s users'] = 'Vis %s brugere'; +$lang['Showing %s to %s of %s users'] = 'Viser %s til %s af %s brugere'; +$lang['Update user'] = 'Opdatering af bruger'; +$lang['User %s added'] = 'Brugeren %s er tilføjet'; +$lang['User %s updated'] = 'Brugeren %s er opdateret'; +$lang['Users modified'] = 'Brugere ændret'; +$lang['on the %d selected users'] = 'på de %d valgte brugere'; +$lang['Close user details'] = 'Luk brugeroplysninger'; +$lang['Open user details'] = 'Åbn brugeroplysninger'; +$lang['close'] = 'luk'; +?> \ No newline at end of file diff --git a/sources/language/da_DK/common.lang.php b/sources/language/da_DK/common.lang.php new file mode 100644 index 0000000..be1fbf0 --- /dev/null +++ b/sources/language/da_DK/common.lang.php @@ -0,0 +1,424 @@ + \ No newline at end of file diff --git a/sources/language/da_DK/da_DK.jpg b/sources/language/da_DK/da_DK.jpg new file mode 100644 index 0000000..8c98a89 Binary files /dev/null and b/sources/language/da_DK/da_DK.jpg differ diff --git a/sources/language/da_DK/help/cat_modify.html b/sources/language/da_DK/help/cat_modify.html new file mode 100755 index 0000000..3b0ac63 --- /dev/null +++ b/sources/language/da_DK/help/cat_modify.html @@ -0,0 +1,97 @@ +

    Rediger album

    + +

    Oplysninger

    + +
      +
    • navn: omdøb album (en virtuel omdøbelse i tilfælde af et fysisk album).
    • +
    • beskrivelse: kort tekst, der giver en generel idé om indholdet, teksten vil blive vist nederst på siden med miniaturerbilleder.
    • +
    + +

    Flyt

    + +

    Hvis albummet er virtuelt, kan du flytte det. Flytning af et album betyder udskiftning af dets overordnede album.

    + +

    Valgmuligheder

    + +
      +
    • Adgangstype: Rettighedsstyring. Hvis du gør et album privat, vil alle dets underalbummer også blive private. Hvis du gør et album offentligt, vil alle dets overordenede albummer bliver offentlige.
    • +
    • Lås: Albummet og dets underalbummer bliver midlertidigt deaktiveret på grund af vedligeholdelse.
    • +
    • Kommentarer: Autoriserer brugere til at kommentere billeder i albummet.
    • +
    + +

    Du kan også håndtere valgmulighederne under administrationssiden "Egenskaber" +(siderne +Kommentarer, +Lås, +Offentlig/privat, +Repræsentant tilgængelige fra +Administration » Albummer » Egenskaber).

    + +

    Sorteringsrækkefølge

    + +

    Brug standardsorteringsrækkefølgen for billeder.

    + +

    Angiv hvorvidt sorteringsrækkefølgen også vil gælde underalbummer.

    + +

    Vælg specifikt sorteringskriterium, der skal anvendes på dette album.

    + +
      +
    • Oprettelsesdato: Den dato fotoet blev taget
    • +
    • Tilføjelsesdato: Synkroniseringsdato
    • +
    • Gennemsnitlig bedømmelse (*): Gennemsnitlig bedømmelse kan ændres ved besøgendes bedømmelser
    • +
    • Mest besøgte (*): Det aktuelle besøg kan ændre rækkefølgen af de mest besøgte
    • +
    • Filnavn: Navnet angivet i oplysningsfeltet
    • +
    • Id: Intern id (seneste kategorier har en højere id end de tidligere)
    • +
    + +

    (*)Advarsel: Sørg selv for at teste sorteringsrækkefølgen, da de kan give uventede resultater.

    + + +

    Repræsentanten

    + +

    Albumsrepræsentanten er miniaturebilledet, der vises på hovedsiden (category.php), som repræsentant for albummet, når det kun indeholder underalbummer og ingen fotografier (lige som rodalbummet).

    + +

    Foto fra et album:

    + +
      +
    • Fotoside: En af handlingsknapperne giver mulighed for at vælge det aktuelle billede som repræsentant for det viste album. Knappen er kun tilgængelig for administratorer.
    • +
    • Ændring af fotooplysninger i administration. Siden er tilgængelig fra picture.php eller Batchadministration i enhedstilstand .Se hjælpen til denne side for flere oplysninger.
    • +
    • Administration » Albummer » Egenskaber, Repræsentant. Se hjælpen til denne side for flere oplysninger.
    • +
    • Rediger album (den aktuelle side).
    • +
    + +

    Valg af repræsentant afhænger af allow_random_representative-opsætningsparameteret (se include/config_default.inc.php).

    + +

    I standardtilstand (allow_random_representative sat til false), er hvert album indeholdende mindst et element, repræsenteret af et fast element. Når det er opsat (ved oprettelsen af albummet), ændres repræsentanten kun når en administrator beder om det. Hvis repræsentanten ikke er hensigtsmæssig, kan du benytte Find en ny tilfældig repræsentant.

    + +

    Hvis allow_random_representative-opsætningsparameteret er sat til true, vil et album, der indeholder billeder, ikke have en fast repræsentant. Benyt blot knappen Slet repræsentant.

    + +

    Hvis albummet kun indeholder underalbummer og ingen fotografier, kan det ikke desto mindre være repræsenteret af ethvert element, takket være siden Ændring af fotooplysninger. Den eneste valgmulighed på den aktuelle side er knappen Slet repræsentant.

    + +

    Knyt alle billeder i et album til et nyt album

    + +
      + +
    • Virtuelt albumnavn: Navnet på det nye album, der skal oprettes, alle billeder fra albummet vil blive knyttet til det nye.
    • + +
    • Overordnet album: Hvor det nye album vil være placeret. Lad det være tomt, for at oprette under roden.
    • + +
    + +

    Knyt alle billeder i et album til eksisterende album

    + +
      + +
    • Albummer: Vælg målalbummet
    • . + +
    + +

    Send en oplysningsmail til gruppens medlemmer

    + +
      + +
    • Gruppe: Modtagergruppe
    • + +
    • Mailindhold: Fritekst der sendes til dem
    • + +
    diff --git a/sources/language/da_DK/help/cat_move.html b/sources/language/da_DK/help/cat_move.html new file mode 100755 index 0000000..a027d85 --- /dev/null +++ b/sources/language/da_DK/help/cat_move.html @@ -0,0 +1,14 @@ +

    Flytning af virtuelle albummer

    + +

    Kun virtuelle albummer kan få et nyt overordnet album.

    + +

    Virtuelle albummer som skal flyttes

    + +

    Vælg et eller flere virtuelle albummer, som du ønsker at flytte. +Hvis listen er tom, betyder det at du endnu ikke har oprettet en.

    + +

    Nyt overordnet album

    + +

    Vælg det nye overordnede album (virtuelt eller fysisk). +Hvis du ikke vælger et overordnet album, bliver det valgte virtuelle album flyttet til roden. +Et album kan ikke blive flyttet ind i sig selv eller til et af dets underalbummer.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/cat_options.html b/sources/language/da_DK/help/cat_options.html new file mode 100755 index 0000000..86604ec --- /dev/null +++ b/sources/language/da_DK/help/cat_options.html @@ -0,0 +1,21 @@ +

    Albumvalgmuligheder

    + +

    Håndtering af flere albums valgmuligheder på én gang.

    + +
    + +
    Kommentarer
    +
    Et fotografi kan modtage kommentarer fra dine besøgende, hvis det hører til et album hvor kommentarer er aktiveret. + +
    Lås
    +
    Låste albummer er deaktiveret på grund af vedligeholdelse. Kun administratorer kan se dem i galleriet.
    + +
    Offentligt / privat
    +
    Når et album er blevet privat, gives adgangstilladelser til brugere og grupper
    + +
    Repræsentant
    +
    Valgmuligheden er tilgængelig når indstillingen +allow_random_representative er sat (se include/config_defaults.inc.php) til +true. Hvert album kan repræsenteres af et tilfældigt antal fotografier eller et fotografi udvalgt som en unik repræsentant.
    + +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/cat_perm.html b/sources/language/da_DK/help/cat_perm.html new file mode 100755 index 0000000..27328ef --- /dev/null +++ b/sources/language/da_DK/help/cat_perm.html @@ -0,0 +1,11 @@ +

    Rediger albumtilladelser

    + +

    Siden er kun tilgængelig ved private albummer. Her kan man vælge brugere og grupper, som er autoriseret til at se albummet.

    + +

    Grupper

    + +

    Du kan fratage eller tildele gruppeadgang til det aktuelle album. Ved at ændre gruppeautorisationer, vil brugerne som hører til disse grupper få tildelt adgang til albummet.

    + +

    Brugere

    + +

    Du kan fratage eller tildele adgang til individuelle brugere. Bruger der har adgang via en gruppe, kan via undtagelser få frataget adgang.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/configuration.html b/sources/language/da_DK/help/configuration.html new file mode 100755 index 0000000..2b9976b --- /dev/null +++ b/sources/language/da_DK/help/configuration.html @@ -0,0 +1,95 @@ +

    Opsætning

    + +

    Her foretager administratoren grundlæggende opsætning af sit galleri. Der vises faktisk kun simple opsætningsparametre, som skulle være tilstrækkeligt for langt størstedelen af administratorer. Ønsker du at se mange andre (og avancerede) opsætningsparametre, så kig i filen med standardopsætningen include/config_default.inc.php.

    + +

    Siden er opdelt i forskellige afsnit, hvor opsætningsparametrene er grupperet efter emne.

    + + +

    Primært

    +
      +
    • Gallerititel: anvendes i RSS-feed og notifikation pr. mail.
    • + +
    • Sidebanner: vises øverst på alle offentlige sider.
    • + +
    • Galleri-URL: anvendes i RSS-feed'en.
    • + +
    • Lås galleri: Lås hele galleriet på grund af vedligeholdelse. Kun administratorer kan tilgå galleriet.
    • + +
    • Bedømmelse: Funktionen til bedømmelse af fotografier er aktiveret.
    • + +
    • Gæsters bedømmelse: Selv ikke-registrerede brugere kan bedømme billeder.
    • + +
    • Tillad brugerregistrering: Alle kan registrere sig.
    • + +
    • Mailadresse er krævet for alle brugere: mailadressen vil blive kontrolleret ved registrering eller profilopdatering, bortset fra hvis handlingen foretages af en administrator.
    • + +
    • Send mail til admins når en ny bruger registrerer sig: administratorer notificeres pr. mail, hver gang nogen registrerer sig.
    • + +
    • Standard for fotorækkefølge: du kan definere en personliggjort rækkefølge ved hjælp af disse dropdownmenuer.
    • + +
    + +

    Historik

    + +

    Besøg på siderne category.php og picture.php vil blive gemt i tabellen history.

    + +

    Besøg vil blive vist i Administration » Værktøjer » Historik.

    + +
      +
    • Gem gæsters sidebesøg: gæsters sidebesøg gemmes.
    • + +
    • Gem brugeres sidebesøg: registrerede brugeres sidebesøg gemmes.
    • + +
    • Gem administratorers sidebesøg: administratorers sidebesøg gemmes.
    • + +
    + +

    Kommentarer

    +
      + +
    • Kommentarer til alle: Selv ikke-registrerede gæster kan skrive kommentarer.
    • + +
    • Antal kommentarer pr. side.
    • + +
    • Godkendelse: en administrator skal godkende brugerkommentarer, før de bliver synlige på webstedet. Godkendelse af brugerkommentarer foretages på siden Administration » Værktøjer » Ventende kommentarer.
    • + +
    • Send mail til admins når en gyldig kommentar gemmes: Sender en e-mail til administratorerne når en bruger gemmer en kommentar og denne godkendes.
    • + +
    • Send mail til admins når en kommentar kræver godkendelse: Sender en e-mail til administratorerne når en bruger gemmer en kommentar, som kræver admingodkendelse. Godkendelse af brugerkommentarer foretages på siden Administration » Værktøjer » Ventende kommentarer.
    • + +
    + +

    Standardvisning

    + +

    Her ændrer man valgmulighederne i forbindelse med visning for guest-brugeren, standardbrugeren som ikke har en konto. Når der er logget på, kan valgmulighederne overtrumfes af brugerens egne valgmuligheder (som ændres i profil).

    + +

    Det er muligt at ændre visningsvalgmulighederne for alle eksisterende brugere på siden Administration » Brugere » Håndter, hvor man kan udvælge brugere.

    + +
      + +
    • Sprog: Gælder kun Piwigo-ettiketter. Albumnavne, fotografinavne og alle beskrivelsesfelter er ikke oversætbare.
    • + +
    • Antal fotografier pr. række
    • + +
    • Antal rækker pr. side
    • + +
    • Grænsefladetema
    • + +
    • Seneste periode: Efter dage. Periode under hvilken et fotografi vises som nyt. Skal være større end 1 dag.
    • + +
    • Åbn alle albummer: Åbn alle albummer som standard i menuen. Advarsel: valgmuligheden er ressourceintensiv og kan medføre en enorm menu, hvis dit albumtræ indeholder mange albummer.
    • + +
    • Vis antal kommentarer: Vis antal kommentarer til hvert fotografi på miniturebilledsiden. Ressourceintensiv.
    • + +
    • Vis antal visninger: Vis et fotografis antal visninger, lige under dets miniturebilleds på miniturebilledsiden. Kun når det avancerede opsætningsparameter er:
      + $conf['show_nb_hits'] = true;
      + Bemærk: false som standard.
    • + +
    • Maksimal bredde på fotografierne: maksimal visningsbredde. Fotografier, som er større end denne indstilling vil blive skaleret ved visningen. Frem for at benytte denne indstilling, kan du overveje at ændre bredden på dine fotografier; det er en bedre praksis.
    • + +
    • Maksimal højde på fotografierne: tilsvarende opsætningen af maksimal bredde.
    • + +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/extend_for_templates.html b/sources/language/da_DK/help/extend_for_templates.html new file mode 100755 index 0000000..eceebf0 --- /dev/null +++ b/sources/language/da_DK/help/extend_for_templates.html @@ -0,0 +1,55 @@ +

    Opsætning af skabelonudvidelsen

    + +

    Om

    +

    Dit Piwigo-galleri kan tilpasses ved at udskifte eksisterende skabelonfiler med tilpassede udgaver. For eksempel +kan standardheaderskabelonen (header.tpl) erstattes med en tilpasset headerskabelon (my-header.tpl). Efter at have gemt ændringerne i databasen, vil galleriet vise den tilpassede header i stedet for den oprindelige header.
    +Skabelonudvidelser er en god måde at oprette tilpassede temaer på for både nye og avancerede brugere. Anvendt sammen med LocalFiles Editor kan du oprette dine egne nedarvede temaer.

    + +

    Oprindelig skabelon

    +

    Et tema indeholder et antal skabelonfiler, som udgår gallerisiderne. Det er de oprindelige skabeloner.

    + +

    Valgfrit URL-nøgleord

    +

    Det er ord, som findes i galleri-URL'en efter et modulnavn. De kan også være aktive permalinks (Se permalink-dokumentationen for flere oplysninger). ADVARSEL: hvis den samme oprindelige skabelon og det samme nøgleord anvendes i mere end én tilpasset skabelon, er kun den seneste aktiv.

    + +

    Bundet tema

    +

    Det bundne tema, er temaet hvis skabelonfiler udskiftes.

    + +

    Hvor er de oprindelige skabeloner?

    +

    Oprindelige skabeloner er de skabelonfiler, som leveres med de enkelte teamer. De er gemt i /themes/default/template (eller themes//template). Disse skabelonfiler bør ikke redigeres, hvor de befinder sig, da ændringer vil gå tabt når temaet opgraderes.
    +Understøttede oprindelige skabeloner er blandt andre:

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl og/eller thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl og/eller footer.tpl
    • +
    • picture_content.tpl og/eller picture.tpl
    • + +
    • profile.tpl og/eller profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl og/eller search_rules.tpl
    • +
    • nbm.tpl og/eller notification.tpl
    • +
    • identification.tpl og/eller register.tpl
    • +
    • redirect.tpl
    • +
    + +

    Gemning af tilpassede skabeloner

    +

    Tilpassede skabeloner bør gemmes i mappen template-extension eller undermapper. For eksempel /template-extension/min-standard/header.tpl (eller /template-extension//header.tpl). Skabelonfiler kan have et vilkårligt nanv, som slutter med filudvidelsen .tpl. Skabelonfiler i undermapper viser sig på Skabelon-opsætningssiden som tilgængelige tilpassede skabeloner.

    + +

    Aktivering af tilpassede skabeloner

    +

    Vælg den oprindelige skabelon, som skal erstattes. Det er valgfrit om man vælger et URL-nøgleord for at sikre at den tilpassede skabelon kun vises på sider, med det nøgleord. Vælg et bundet tema og ændringerne vil kun træde i kraft i det tema. Gem dine ændringer i databasen.

    + +

    Deaktivering af tilpassede skabeloner

    +

    Fravælg den oprindelige skabelon og gem ændringerne i databasen.
    +Slet filerne med den tilpassede skabelon fra mappen template-extension.

    + + +

    Advarsler

    +
      +
    • Den oprindelige skabelon skal være den oprindelige skablon, ellers kan du opleve uforudsigelige resultater.
    • +
    • Hvis den samme oprindelige skabelon og det samme URL-nøgleord anvendes i mere end en tilpasset skabelon, vil kun den sidste være aktiv.
    • +
    • Distribuerede eksempler på skabelonfiler er kun til testformål. Rediger dem ikke. Opret dine egne eller kopi eksisterende temaskabelonfiler til /template-extension//
    • +
    • Når en tilpasset skabelon slettes, genaktiveres den oprindelige skabelonfil med det samme.
    • +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/group_list.html b/sources/language/da_DK/help/group_list.html new file mode 100755 index 0000000..4397394 --- /dev/null +++ b/sources/language/da_DK/help/group_list.html @@ -0,0 +1,22 @@ +

    Gruppeliste

    + +

    Her håndteres grupper.

    + +

    Tilføj en gruppe

    + +

    En administrator kan tilføje grupper.

    + +

    Gruppeliste

    + +

    Hver gruppe kan tildeles følgende handlinger:

    + + +
      +
    • gå til brugeradministration (Admin » Brugere » Håndter)
    • +
    • gå til siden med tilladelsesadministration for at tildele eller fjerne adgang til private albummer.
    • +
    • slet gruppen (kræver en bekræftelse)
    • +
    • skift "default"-status (kræver en bekræftelse)
    • +
    + +

    Standardgrupper

    +

    Standardgrupper er grupper, som automatisk tildeles hver ny bruger ved registrering eller oprettelse ved administrators mellemkomst.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/help_add_photos.html b/sources/language/da_DK/help/help_add_photos.html new file mode 100755 index 0000000..4580baf --- /dev/null +++ b/sources/language/da_DK/help/help_add_photos.html @@ -0,0 +1,21 @@ +

    Nogle måder at tilføje fotografier til dit galleri:

    + +
      +
    • Direkte upload i din webbrowser er den mest simple og lettest tilgængelige måde. Det afhænger af din browsers muligheder og din webserver. Når der er tale om store mængder fotografier, eller i tilfælde af at du løber ind i problemer, er de andre metoder klar til brug!
    • +
    + + + +
      +
    • pLoader er en desktopapplikation, som installeres på din computer. Træk og slip fotografier ind i pLoader-vinduet, klik på "Upload to Piwigo" og lad pLoader gøre arbejdet. Du kan finde andre desktopapplikationer, så som WinToPiwigo eller eksportplugin'en digiKam til Piwigo.
    • +
    + + + +
    +
      +
    • Ftp-overførsel er den mest anbefalede metode, at tilføje en meget stor mængde fotografier med et minimalt antal klik. Følg vejledningen for at klargøre dine fotografier. Ftp-metoden giver mulighed for, nøjagtigt at kontrollere hvordan fotografierne organiseres fysisk på serveren.
    • +
    + + +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/help_groups.html b/sources/language/da_DK/help/help_groups.html new file mode 100755 index 0000000..23dea5b --- /dev/null +++ b/sources/language/da_DK/help/help_groups.html @@ -0,0 +1,11 @@ +

    Grupper er en praktisk måde at indstille tilladelser for en liste over brugere.

    + +

    Opret grupper i +Administration » Brugere » Grupper +og associerede brugere til denne gruppe i +Administration » Brugere » Håndter.

    + +

    En bruger kan tilhøre flere grupper. Autorisation går forud for +forbud: Hvis brugeren "Jack" tilhører grupperne "Familie" og "Venner", og +kun gruppen "Familie" kan se albummet "Jul 2010", så vil +"Jack" være i stand til at se "Jul 2010".

    \ No newline at end of file diff --git a/sources/language/da_DK/help/help_misc.html b/sources/language/da_DK/help/help_misc.html new file mode 100755 index 0000000..4546d18 --- /dev/null +++ b/sources/language/da_DK/help/help_misc.html @@ -0,0 +1,9 @@ +

    Når du har oprettet dit galleri, kan du opsætte det for dine besøgende +

      +
    • Vælg en passende standardvisning i Administration » Opsætning » Valgmuligheder, fanen Gæsteindstillinger
    • +
    • Standardtema i Administration » Opsætning » Temaer
    • +
    • Standardsprog i Administration » Opsætning » Sprog
    • +
    + Som standard arver alle nye brugere disse egenskaber ved registreringen. +

    +

    Hvis du har et spørgsmål, kan Piwigo-fællesskabet med glæde hjælpe dig i dets forum.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/help_permissions.html b/sources/language/da_DK/help/help_permissions.html new file mode 100755 index 0000000..624afb7 --- /dev/null +++ b/sources/language/da_DK/help/help_permissions.html @@ -0,0 +1,54 @@ +
    +Tilladelser til fotografier + +

    Hvert fotografi har et privatlivsniveau (en lås). Hver bruger har også et privatlivsniveau (en nøgle). Der er fem privatlivsniveauer:

    +
      +
    1. Ingen
    2. +
    3. Bekendt
    4. +
    5. Venner (som er højere end en bekendt)
    6. +
    7. Familie (som er højere end en ven)
    8. +
    9. Admins (som er højere end noget andet niveau)
    10. +
    + +

    Højere niveauer har tilladelser fra lavere niveauer. For en given bruger, jo højere privatlivsniveau, desto flere fotografier kan vedkommende se.

    + +

    Hvis for eksempel fotografiet "peter_bryllup-0024.jpg" har "Familie" som privatlivsniveau, så:

    +
      +
    • Peter (som er en "Admin") vil kunne se fotografiet, fordi "Admins" kan se alle fotografier
    • +
    • Beth (som er et "Familie"-medlem) vil også kunne se fotografiet
    • +
    • Mary (som bare er en "Ven") vil ikke kunne se fotografiet
    • +
    + +

    En bruger, som ikke har tilladelse til at se et albums indhold, vil ikke se albummet selv, ikke engang dets titel. Det samme princip gælder et tag.

    + +

    Du kan opsætte en brugers privatlivsniveau på siden Administration » Brugere » Håndter.

    + +
    + +
    +Tilladelser til albummer + +

    Hvis privatlivsniveauerne, ikke passer til dine behov, kan du også håndtere albumtilladelser for en bruger eller en gruppe. Du kan håndtere fotografiers og albummers tilladelser på samme tid, uden konflikter.

    + +

    Du kan forbyde adgang til albummer. Skift albummets adgangstype til "privat", hvis du ønsker at håndtere tilladelser.

    + +

    Du kan gøre et album privat ved at redigere et enkelt album +(Administration » Albummer » Håndter +» edit) eller ved at opsætte indstillinger for hele dit albumtræ +(Administration » Albummer » +Egenskaber » Offentlig / Privat).

    + +

    Når et album er gjort privat, kan du håndtere tilladelserne for grupper og brugere ved hjælp af tre sider:

    + +
      + +
    • Administration » Brugere » Håndter » + tilladelseshandling (et link pr. bruger)
    • + +
    • Administration » Users » Grupper » + tilladelseshandling (et link pr. gruppe)
    • + +
    • Administration » Albums » Håndter » rediger handler vedr. albumtilladelser (et link pr. album)
    • + +
    +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/help_virtual_links.html b/sources/language/da_DK/help/help_virtual_links.html new file mode 100755 index 0000000..f7957da --- /dev/null +++ b/sources/language/da_DK/help/help_virtual_links.html @@ -0,0 +1,8 @@ +

    Fotografier vises i albummet svarende til deres mappe med filer.

    + +

    Du kan også vise et fotografi i flere albummer, uden at have filen flere gange på webserveren. +Tilknyt fotografiet til et vilkårligt album fra siden til redigering af et fotografi (som alle +administratorer kan få adgang til fra fotosiden på gallerisiden).

    + +

    Virtuelle albummer er baseret på samme koncept: de har ingen tilsvarende mappe. Opret virtuelle +albummer fra Administration » Albummer » Håndter.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/history.html b/sources/language/da_DK/help/history.html new file mode 100755 index 0000000..5f2e359 --- /dev/null +++ b/sources/language/da_DK/help/history.html @@ -0,0 +1,22 @@ +

    Historik

    + +

    På disse sider overvåger man sit galleris besøgshistorik jævnfør indstillingerne valgt i: Administration » Opsætning » Valgmuligheder » Historik

    + +

    Statisk

    +
      +

      Hvis du har valgt at registrere besøgte sider (index.php and picture.php), kan du overvåge dem fra denne fane.

      +
    • Global statisik: besøg pr. år.
    • +
    • Årlig statistik: besøg pr. måned i det valgte år.
    • +
    • Månedlig statistik: besøg pr. dag i den valgte måned.
    • +
    • Daglig statisik: besøg pr. time på den valgte dag.
    • +
    + +

    Søgning

    +
      +

      Hvis du har valgt at registrere besøgte sider (index.php and picture.php), kan du gennemse oplysningerne fra fanen ved hjælp af forskellige filtre.

      +
    • Filtrering efter dato: vælg datointervallet der skal gennemsøges, ved at opsætte start- og slutdatoer.
    • +
    • Filtrering efter elementtype: vælg elementtypen for statistik vedrørende det pågældende element.
    • +
    • Filtrering efter bruger: vælg bruger for statistik vedrørende den pågældende bruger.
    • +
    • Filtrering efter billedidentifikation: vælg billedidentifkation for statistik vedrørende det pågældende billede.
    • +
    • Filtrering efter filnavn: vælg filnavn for statistik vedrørende den pågældende fil.
    • +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/maintenance.html b/sources/language/da_DK/help/maintenance.html new file mode 100755 index 0000000..19f7ab3 --- /dev/null +++ b/sources/language/da_DK/help/maintenance.html @@ -0,0 +1,26 @@ +

    Vedligeholdelse

    + +

    For at optimere den tid det tager, at danne en side, anvender Piwigo cachede oplysninger. Eksempelvis, i stedet for at tælle antallet af fotografier i hvert album, hver gang en side genindlæses, gemmes oplysningen i databasen. I teorien er oplysningen altid korrekt, men nogle gange opstår der en fejl og den cachede oplysning bliver forældet.

    + +

    Nogle oplysninger bliver mindre nyttige, efterhånden som tiden går. Ved at slette unyttige oplysninger fra databasen, sparer du noget diskplads.

    + +
      +
    • Sletning af forældreløse tags
    • +
    +
      +
    • Opdatering af albumoplysninger: Følgende oplysninger kontrolleres i hvert album, og opdateres om nødvendigt: Liste over overordnede albummer, antal fotografier, senste fotodato, placering blandt albummer på samme niveau, position blandt alle albummer. Handlingen kontrollerer også om de repræsentative fotografier er konsistente.
    • +
    • Opdatering af fotografiers oplysninger: Følgende oplysninger opdateres for hvert fotografi: Fuld sti til filen, gennemsnitlig bedømmelse. Advarsel, må ikke forveksles: metadataoplysninger skal synkroniseres fra Administration » Værktøjer » Synkroniser, eller på ændringssiden hørende til et enkelt fotografi (ved hjælp af fx Fotografi).
    • +
    +
      +
    • Reparer og optimer databasen: Udfør re-order-, reparerings- og optimeringshandlinger på hver tabel i databasen.
    • +
    • Geninitialiser integritetstjek
    • +
    + +
      +
    • Tøm historikdetaljer: Slet alle linjer fra historiktabellen. Siden Administration » Værktøjer » Historik vil ikke længere vise oplysninger om forudgående historik. Advarsel: alle data mistes, uden det på nogen måden er muligt at få dem tilbage.
    • +
    • Tøm historiksammendrag: Slet alle sammendragsoplysninger om besøgshistorik. Sammendraget beregnes ud fra historikdetaljerne.
    • +
    • Tøm sessions: Slet udløbne brugersessioner.
    • +
    • Tøm aldrig benyttede notifikationsfeeds
    • +
    • Tøm søgehistorik
    • +
    • Tøm kompilede skabeloner
    • +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/notification_by_mail.html b/sources/language/da_DK/help/notification_by_mail.html new file mode 100755 index 0000000..2df4cef --- /dev/null +++ b/sources/language/da_DK/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

    Notifikation pr. mail (NBM)

    + +

    Opsætning og administration af notifikationer pr. mail til brugere, indeholdende besked om ændringer af dit websted.

    + +

    Siden består af tre faner:

    + +

    Indstillinger

    +

    Kun tilgængelig for webmastere: Fanen opsætter parametrene vedrørende notifikation pr. mail.

    + +

    Tilmeldte

    +

    Kun tilgængelig for webmastere: Fanen administrerer en brugers tilmeldinger til notifikation pr. mail. Tilføj brugere til boksen med tilmeldte, for at de kan modtage notifkationer pr. mail.

    + +

    Send

    +

    Kun tilgængelig for webmastere og administratorer: Fanen giver administratorer mulighed for at sende notifikationer pr. mail til tilmeldte brugere.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/permalinks.html b/sources/language/da_DK/help/permalinks.html new file mode 100755 index 0000000..3a9c787 --- /dev/null +++ b/sources/language/da_DK/help/permalinks.html @@ -0,0 +1,7 @@ +

    Permalinks

    + +

    Permalinks anvendes til at gøre albummers URL'er pænere. Når der er defineret permalink til et album, er albummets id ikke længere krævet i URL'en.

    + +

    Når et permalink slettes, kan du gemme i parmalinkhistorikken, så eksterne links til sider i Piwigo stadig fungerer. I tabellen med permalinkhistorik, kan du se datoen for hvornår permalinket blev slettet, hvornår det senest blev benyttet og antallet af gange, det har været benyttet.

    + +

    Bemærk at permalinks skal være unikke pr. album. Desuden kan permalinkhistorikken ikke have det samme permalink mere end én gang.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/photos_add_ftp.html b/sources/language/da_DK/help/photos_add_ftp.html new file mode 100755 index 0000000..ecac367 --- /dev/null +++ b/sources/language/da_DK/help/photos_add_ftp.html @@ -0,0 +1,67 @@ +
    + Kom hurtigt i gang + +
      +
    1. Opret en mappe på din computer.
    2. + +
    3. Kopier nogle fotografier til mappen og ændr deres størrelser så de er velegnede til webvisning. Advarsel: Navnet på mapperne og filerne må kun indeholde bogstaver, tal, "-", "_" eller ".". Ingen mellemrum eller accenttegn.
    4. + +
    5. Med en ftp-klient kopieres mappen til "galleries"-mappen i din Piwigo-installation.
    6. + +
    7. Log ind i dit galleri og gå til Administration og klik på den store Synkroniser-knap.
    8. +
    + +

    Tillykke! Du har nu oprettet det første album i dit fotogalleri.

    +
    + +
    + Organisering af mapper og filer + +
      + +
    • + +

      Mapper med albummer er i Piwigo-mappen + "galleries". Her vises et mappetræ for et lille galleri (med + med anvendelse af megen funktionalitet):

      + +
      +galleries
      +|-- bryllup
      +|   |-- fejring
      +|   |   |-- ankomst
      +|   |   |   |-- mads-alene.jpg
      +|   |   |   +-- mette-alene.jpg
      +|   |   +-- afrejse
      +|   |       +-- mads-og-mette.jpg
      +|   +-- fest
      +|       |-- dansende001.jpg
      +|       |-- dansende002.jpg
      +|       +-- dansende003.jpg
      ++-- bryllupsrejse
      +    |-- hotel.png
      +    |-- video-fra-fly.avi
      +    +-- pwg_representative
      +        +-- video-fra-fly.jpg
      +
      + +
    • + +
    • Bortset fra "pwg_representative" (se forklaring herunder), genererer hver mappe under "galleries" et album. Der er ingen begrænsning på hvor mange niveauer, der kan være.
    • + +
    • Grundlæggende repræsenteres et element af en fil. En fil kan være et + Piwigo-element, hvis dets filendelse er blandt mulighederne angivet i opsætningsparameteret + file_ext (se filen include/config_default.inc.php file). + En fil kan være et billede, hvis dets filendelse er blandt mulighederne angivet i opsætningsparameteret + picture_ext.
    • + +
    • Ingen fotoelementer (video, lyde, tekstfiler, alt muligt andet ...) er som standard repræsenteret af en ikon + svarende til filendelsen. Man kan valgfrit associere et miniaturebillede og repræsentativ fil (se video.avi i eksemplet herover).
    • + +
    • Advarsel: Navnene på mapper og filer må kun indeholde bogstaver, tal, "-", "_" eller ".". Ingen mellemrum eller accenttegn.
    • + +
    • Når fotografierne er korrekt placeret i mapperne, går man til: Administration » Værktøjer » + Synkroniser
    • + +
    +
    \ No newline at end of file diff --git a/sources/language/da_DK/help/search.html b/sources/language/da_DK/help/search.html new file mode 100755 index 0000000..47fc45b --- /dev/null +++ b/sources/language/da_DK/help/search.html @@ -0,0 +1,19 @@ +

    Søgning

    + +

    Siden giver mulighed for at søge i efter fotografier i hele galleriet.

    + +
    + +
    Søg efter ord
    +
    Søg efter et eller flere ord blandt attributterne, som er relateret til galleriets fotografier. Anvend * som wildcard til delvis match.
    + +
    Søg efter en forfatter
    +
    Anvend * som wildcard til delvis match.
    + +
    Søg efter dato
    +
    Vælg en dato og/eller slutdato til din søgning. Lad datofeltet være tomt hvis du ønsker at foretage en "før"-søgning. Året i det sidste felt skal angives i følgende format: ÅÅÅÅ (fx 2004)
    + +
    Søg i albummer
    +
    Vælg album eller albummer, du ønsker at søge i. Alle underalbummer kan gennemsøges ved at vælge det overordnede album samt aktivere søgning i underalbummer derunder.
    + +
    diff --git a/sources/language/da_DK/help/synchronize.html b/sources/language/da_DK/help/synchronize.html new file mode 100755 index 0000000..e6870ca --- /dev/null +++ b/sources/language/da_DK/help/synchronize.html @@ -0,0 +1,14 @@ +

    Synkronisering

    + +

    Der findes to forskellige former for synkronisering:

    +
      +
    • mapper/filer
    • +
    • filers metadata
    • +
    + +

    Synkronisering af mapper og filer gælder opdatering af dit mappetræ med albumstræet i databasen. +Synkronisering af filers metadata gælder opdatering fotografioplysninger, så som filstørrelse, dimensioner i pixels, EXIF- eller IPTC-oplysninger, i databasen.

    + +

    Når man synkroniserer sine uploads med galleriet, skal man først synkronisere mapper og filer.

    + +

    Synkroniseringsprocessen kan tage lang tid (afhængigt af serverbelastning og antallet af elementer, der skal behandles), så det er muligt at gøre det ét album ad gangen.

    \ No newline at end of file diff --git a/sources/language/da_DK/help/user_list.html b/sources/language/da_DK/help/user_list.html new file mode 100755 index 0000000..3bc899b --- /dev/null +++ b/sources/language/da_DK/help/user_list.html @@ -0,0 +1,23 @@ +

    Brugerliste

    + +

    Her administreres brugerne af dit Piwigo-galleri.

    + +

    Tilføj en bruger

    + +

    En administrator kan manuelt tilføje brugere. For hver bruger oprettes et brugernavn, en adgangskode og der angives en gyldig e-mail-adresse.

    + +

    Brugerliste

    + +

    Listen over eksisterende brugere kan filtreres på brugernavn (brug * som wildcard), gruppe eller status. Der kan sorteres efter tilmeldingdato eller brugernavn, i stigende eller faldende rækkefølge.

    + +

    Siden giver mulighed for at administrere flere brugere på en gang, med anvendelse af forskellige handlinger:

    + +
      +
    • slet brugere (kræver bekræftelse)
    • +
    • ændre brugerstatus
    • +
    • tilknytte eller ophæve tilknytning til grupper
    • +
    • ændre visningsegenskaber
    • +
    • ændre yderligere indstillinger
    • +
    + +

    Målet er den valgte bruger (som standard) eller alle brugere, der vises i den filtrerede liste.

    \ No newline at end of file diff --git a/sources/language/da_DK/index.php b/sources/language/da_DK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/da_DK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/da_DK/install.lang.php b/sources/language/da_DK/install.lang.php new file mode 100644 index 0000000..f205989 --- /dev/null +++ b/sources/language/da_DK/install.lang.php @@ -0,0 +1,70 @@ +Piwigo message board.'] = 'Brug for hjælp? Stil dine spørgsmål i Piwigos forum.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Besøgende vil ved hjælp af denne e-mail have mulighed for at kontakte administratoren'; +$lang['PHP 5 is required'] = 'PHP 5 er nødvendig'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Det lader til, at din webhost pt. kører PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan prøve at skifte din opsætning til PHP 5 ved at oprette eller ændre en .htaccess-fil.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Bemærk, at du selv kan ændre din opsætning og derefter genstarte Piwigo.'; +$lang['Try to configure PHP 5'] = 'Prøv at opsætte PHP 5'; +$lang['Sorry!'] = 'Hov!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo var ikke i stand til at opsætte PHP 5.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Du henvises til din webhost for at se hvordan du selv kan skifte til PHP 5."; +$lang['Hope to see you back soon.'] = 'Håber snart at se dig igen.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Tillykke, installeringen af Piwigo er afsluttet'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'En alternativ måde er at kopiere teksten i boksen oven over og sætte den ind i filen "local/config/database.inc.php" (Advarsel: database.inc.php må kun indeholde, hvad der er i tekstfeltet, ingen linjeskift eller mellemrum)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Oprettelsen af local/config/database.inc.php gik galt.'; +$lang['Download the config file'] = 'Download opsætningsfilen'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan downloade opsætningsfilen og uploade den til mappen local/config i din installation.'; +$lang['Just another Piwigo gallery'] = 'Bare endnu et Piwigo-galleri'; +$lang['Welcome to my photo gallery'] = 'Velkommen til mit fotogalleri'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Tøv ikke med at besøges vores forum for at få hjælp: %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'Velkommen til din nye Piwigo-installation'; +$lang['Password ']['confirm'] = 'Adgangskode [bekræft]'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Du henvises til din webhosts support for at finde ud af, om du selv kan skifte til PHP 5.'; +$lang['localhost or other, supplied by your host provider'] = 'localhost eller andet, oplyst af din hostingleverandør'; +?> \ No newline at end of file diff --git a/sources/language/da_DK/iso.txt b/sources/language/da_DK/iso.txt new file mode 100644 index 0000000..f8884c3 --- /dev/null +++ b/sources/language/da_DK/iso.txt @@ -0,0 +1 @@ +Dansk [DK] \ No newline at end of file diff --git a/sources/language/da_DK/upgrade.lang.php b/sources/language/da_DK/upgrade.lang.php new file mode 100644 index 0000000..1bc7d19 --- /dev/null +++ b/sources/language/da_DK/upgrade.lang.php @@ -0,0 +1,41 @@ +release %s (or equivalent).'] = 'Denne side foreslår at opgradere databasen fra din gamle version af Piwigo til den nye version. Opgraderingsassistenten mener, at du pt. benytter en release %s (eller tilsvarende).'; +$lang['Upgrade from version %s to %s'] = 'Opgrader fra version %s til %s'; +$lang['Statistics'] = 'Statistik'; +$lang['total upgrade time'] = 'total opgraderingstid'; +$lang['total SQL time'] = 'total SQL-tid'; +$lang['SQL queries'] = 'SQL-forespørgsler'; +$lang['Upgrade informations'] = 'Opgraderingsinformation'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Udfør et vedligeholdelsestjek i [Administration>Værktøjer>Vedligeholdelse] hvis du oplever problemer.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Som en forholdsregel er følgende plugins blevet deaktiveret. Du skal se efter pluginopdateringer før du genaktiverer dem:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Kun en administrator kan foretage en opgradering: Log ind herunder.'; +$lang['You do not have access rights to run upgrade'] = 'Du har ikke adgangsrettigheder til at foretage en opgradering'; +$lang['All sub-albums of private albums become private'] = 'Alle underalbummer hørende til private albummer bliver private'; +$lang['User permissions and group permissions have been erased'] = 'Brugeres og gruppers tilladelser er blevet slettet'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Kun miniaturebilledepræfix og webmasters mailadresse er gemt fra tidligere opsætning. '; +$lang['In %s, before ?>, insert:'] = 'I %s, før ?>, indsæt:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Som en forholdsregel er følgende temaer blevet deaktiveret. Du skal se efter temaopdateringer før du genaktiverer dem:'; +?> \ No newline at end of file diff --git a/sources/language/de_DE/about.html b/sources/language/de_DE/about.html new file mode 100644 index 0000000..7379e83 --- /dev/null +++ b/sources/language/de_DE/about.html @@ -0,0 +1,22 @@ +

    Diese Fotogalerie basiert auf Piwigo.

    + +

    Piwigo ist eine Fotogaleriesoftware für das Internet, die von einer Gemeinschaft engagierter Nutzer und Programmierer entwickelt wird. +Erweiterungen machen Piwigo leicht anpassbar an die verschiedensten Bedürfnisse. Und das Tüpfelchen auf dem i: Piwigo ist frei und quelloffen.

    + +

    Besuchen Sie die Piwigo-Webseite!

    + +

    Die deutsche Übersetzung wird gepflegt von (Namen in alphabetischer Reihenfolge): + +

    + Herzlichen Dank den Übersetzern!

    \ No newline at end of file diff --git a/sources/language/de_DE/admin.lang.php b/sources/language/de_DE/admin.lang.php new file mode 100644 index 0000000..666b286 --- /dev/null +++ b/sources/language/de_DE/admin.lang.php @@ -0,0 +1,980 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader bedeutet Piwigo-Uploader. pLoader überträgt Fotos von Ihrem Computer in Ihre Piwigo-Fotogalerie.'; +$lang['Guest Settings'] = 'Einstellungen für Gäste'; +$lang['Main Page'] = 'Hauptseite'; +$lang['Photo Page'] = 'Fotoseite'; +$lang['Activate Navigation Bar'] = 'Aktiviere Navigationsleiste'; +$lang['Activate Navigation Thumbnails'] = 'Aktiviere Navigationsvorschaubilder'; +$lang['Activate icon "%s"'] = 'Aktiviere Icon "%s"'; +$lang['Photo Properties'] = 'Fotoeigenschaften'; +$lang['Allow user customization'] = 'Erlaube Anpassungen durch Benutzer'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Die Zeit für die Ausführung ist abgelaufen, der Prozess muss fortgesetzt werden [Noch benötigte Zeit: %d Sekunden].'; +$lang['Languages'] = 'Sprachen'; +$lang['Installed Languages'] = 'Installierte Sprachen'; +$lang['Add New Language'] = 'Füge eine neue Sprache hinzu'; +$lang['Language has been successfully installed'] = 'Sprachdateien wurden erfolgreich installiert'; +$lang['Select:'] = 'Auswahl:'; +$lang['None'] = 'Nichts'; +$lang['Invert'] = 'Umkehren'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Es ist nicht möglich, dieses Thema zu deaktivieren, Sie benötigen mindestens ein Thema.'; +$lang['Miscellaneous'] = 'Verschiedenes'; +$lang['Virtual Links'] = 'Virtuelle Verbindungen'; +$lang['Webmaster status is required.'] = 'Sie benötigen Webmaster-Berechtigung.'; +$lang['Bound Theme'] = 'Verbundenes Thema'; +$lang['Allow rating'] = 'Bewertung von Fotos erlauben'; +$lang['Select at least one comment'] = 'Wählen Sie mindestens einen Kommentar aus'; +$lang['Active Plugins'] = 'Aktivierte Plugins'; +$lang['Inactive Plugins'] = 'Deaktivierte Plugins'; +$lang['Missing Plugins'] = 'Fehlende Plugins'; +$lang['Uninstalled Plugins'] = 'Deinstallierte Plugins'; +$lang['By %s'] = 'Von %s'; +$lang['Visit plugin site'] = 'Besuchen Sie die Plugin-Seite'; +$lang['Active Languages'] = 'Aktivierte Sprachen'; +$lang['Delete this language'] = 'Lösche diese Sprache'; +$lang['Forbid this language to users'] = 'Verbiete Benutzern, diese Sprache auszuwählen'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Sie müssen zuerst eine neue Standardsprache wählen, bevor Sie diese Sprache deaktivieren.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Sie können diese Sprache nicht deaktvieren, da mindestens eine Sprache benötigt wird.'; +$lang['Inactive Languages'] = 'Deaktivierte Sprachen'; +$lang['Make this language available to users'] = 'Aktiviere diese Sprache für Benutzer'; +$lang['Set as default language for unregistered and new users'] = 'Als Standardsprache für neue und unregistrierte Benutzer festlegen'; +$lang['delete'] = 'löschen'; +$lang['Add Photos'] = 'Fotos hinzufügen'; +$lang['The following tag was deleted'] = 'Folgendes Schlagwort wurde gelöscht'; +$lang['There is no other language available.'] = 'Es ist keine weitere Sprache verfügbar.'; +$lang['There is no other plugin available.'] = 'Es ist kein weiteres Plugin verfügbar.'; +$lang['There is no other theme available.'] = 'Es ist kein weiteres Thema verfügbar.'; +$lang['Add another set of photos'] = 'Füge ein weiteres Fotoset hinzu'; +$lang['By rank'] = 'Nach Rangfolge'; +$lang['Manual order'] = 'Manuelle Sortierung'; +$lang['Order of menubar items has been updated successfully.'] = 'Die Reihenfolge der Menüelemente wurde erfolgreich angepasst.'; +$lang['This theme was not designed to be directly activated'] = 'Dieses Thema kann nicht direkt aktiviert werden'; +$lang['Pending Comments'] = 'Freizugebende Kommentare'; +$lang['Menu Management'] = 'Menü'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In Ihrer php.ini Datei ist der upload_max_filesize (%sB) größer als post_max_size (%sB). Sie sollten diese Einstellung ändern.'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif-Erweiterung nicht verfügbar, der Administrator sollte die Exif-Verwendung deaktivieren'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Die hochgeladene Datei überschreitet die upload_max_filesize Einstellung in der Datei php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Die hochgeladenen Dateien überschreiten die post_max_size Einstellung in der Datei php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Die hochgeladene Datei überschreitet die MAX_FILE_SIZE-Einstellung, die in der HTML-Form angegeben wurde'; +$lang['The uploaded file was only partially uploaded'] = 'Die hochgeladene Datei wurde nur teilweise übertragen'; +$lang['No file was uploaded'] = 'Keine Datei wurde hochgeladen'; +$lang['Missing a temporary folder'] = 'Ein temporäres Verzeichnis wird vermisst'; +$lang['Failed to write file to disk'] = 'Es ist nicht möglich, die Datei zu schreiben'; +$lang['File upload stopped by extension'] = 'Das Hochladen der Datei wurde infolgedessen gestoppt'; +$lang['Unknown upload error'] = 'Unbekannter Fehler beim Hochladen'; +$lang['Error on file "%s" : %s'] = 'Fehler bei Datei "%s" : %s'; +$lang['automatic order'] = 'automatische Sortierung'; +$lang['manual order'] = 'manuelle Sortierung'; +$lang['Albums automatically sorted'] = 'Alben automatisch sortiert'; +$lang['Batch Manager'] = 'Stapelverarbeitung'; +$lang['include child albums'] = 'inclusive Unteralben'; +$lang['Selection'] = 'Auswahl'; +$lang['Action'] = 'Aktion'; +$lang['Set author'] = 'Setze den Autor'; +$lang['Set title'] = 'Setze den Titel'; +$lang['Set creation date'] = 'Setze das Erstellungsdatum'; +$lang['Apply action'] = 'Bestätige die Aktion'; +$lang['on the %d selected photos'] = 'der %d ausgewählten Fotos'; +$lang['%d of %d photos selected'] = '%d von %d Fotos ausgewählt'; +$lang['No photo selected, %d photos in current set'] = 'Kein Foto ausgewählt, %d Fotos im gegenwärtigen Set'; +$lang['All %d photos are selected'] = 'Alle %d Fotos ausgewählt'; +$lang['remove this filter'] = 'entferne diesen Filter'; +$lang['Duplicates'] = 'doppelte'; +$lang['Add a filter'] = 'Füge einen Filter hinzu'; +$lang['Remove all filters'] = 'Entferne alle Filter'; +$lang['Refresh photo set'] = 'Aktualisiere das Fotoset'; +$lang['The whole page'] = 'Die ganze Seite'; +$lang['The whole set'] = 'Das ganze Set'; +$lang['No photo in the current set.'] = 'Keine Fotos im gegenwärtigen Set.'; +$lang['No photo selected, no action possible.'] = 'Kein Foto ausgewählt, keine Aktion möglich.'; +$lang['Choose an action'] = 'Wähle eine Aktion'; +$lang['remove author'] = 'entferne den Autor'; +$lang['Type here the author name'] = 'Geben Sie hier den Name des Autors ein'; +$lang['remove title'] = 'Entferne Titel'; +$lang['Type here the title'] = 'Geben Sie hier den Titel ein'; +$lang['remove creation date'] = 'Entferne das Erstellungsdatum'; +$lang['Album photos associated to the following albums: %s'] = 'Albumfotos findet man in folgenden Alben: %s'; +$lang['Delete orphan tags'] = 'Lösche nicht benutzte Schlagwörter'; +$lang['delete photo'] = 'Lösche Foto'; +$lang['Orphan tags deleted'] = 'Nicht benutzte Schlagwörter wurden gelöscht'; +$lang['Week starts on'] = 'Die Woche beginnt mit'; +$lang['You have %d orphan tags: %s.'] = 'Sie haben %d nicht benutzte Schlagwörter: %s.'; +$lang['Remove from caddie'] = 'Vom Sammelkorb entfernen'; +$lang['Themes which need upgrade'] = 'Themen, die aktualisiert werden sollten'; +$lang['Languages which need upgrade'] = 'Sprachen, die aktualisiert werden sollten'; +$lang['All themes are up to date.'] = 'Alle Themen sind auf dem neuesten Stand.'; +$lang['All plugins are up to date.'] = 'Alle Plugins sind auf dem neuesten Stand.'; +$lang['All languages are up to date.'] = 'Alle Sprachen sind auf dem neuesten Stand.'; +$lang['Visit theme site'] = 'Besuchen Sie die Themenseite'; +$lang['Visit language site'] = 'Besuchen Sie die Sprachenseite'; +$lang['New Version'] = 'Neue Version'; +$lang['display'] = 'Zeige'; +$lang['Obsolete Plugins'] = 'Veraltete Plugins'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WARNUNG! Dieses Plugin ist nicht kompatibel mit dieser Version von Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Wollen Sie es wirklich wieder aktivieren?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DIESES PLUGIN IST JETZT IN DEN KERN VON PIWIGO INTEGRIERT! BITTE UNBEDINGT DEINSTALLIEREN!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: DIESES PLUGIN FEHLT, OBWOHL ES INSTALLIERT IST! BITTE UNBEDINGT DEINSTALLIEREN! '; +$lang['Thumbnails generation in progress...'] = 'Vorschaubilder werden neu erstellt...'; +$lang['Photos generation in progress...'] = 'Fotos werden neu erstellt...'; +$lang['%s photos have been regenerated'] = '%s Fotos wurden neu erstellt'; +$lang['%s photos can not be regenerated'] = '%s Fotos konnten nicht neu erstellt werden'; +$lang['new'] = 'neu'; +$lang['No results'] = 'Keine Ergebnisse'; +$lang['Searching...'] = 'Suche...'; +$lang['Type in a search term'] = 'Geben Sie bitte einen Suchbegriff ein'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivieren Sie das Icon "Neu" neben den Alben und Fotos '; +$lang['Deactivate all'] = 'Deaktiviere alle'; +$lang['Default photos order'] = 'Voreingestellte Fotoanordnung'; +$lang['Restore'] = 'Zurücksetzen'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Zurücksetzen auf Standardkonfiguration. Alle Einstellungen in diesem Plugin gehen verloren!'; +$lang['Show menubar'] = 'Zeige die Menüleiste'; +$lang['Updates'] = 'Updates'; +$lang['Update in progress... Please wait.'] = 'Aktualisiere... Bitte warten.'; +$lang['Ignore this update'] = 'Ignoriere diese Aktualisierung'; +$lang['Reset ignored updates'] = 'Zurücksetzen der ignorierten Aktualisierungen'; +$lang['Update All'] = 'Aktualisiere alles'; +$lang['ERROR'] = 'FEHLER'; +$lang['Update Complete'] = 'Aktualisierung komplett'; +$lang['Piwigo Update'] = 'Piwigo-Aktualisierung'; +$lang['Extensions Update'] = 'Aktualisierung der Erweiterungen'; +$lang['All extensions are up to date.'] = 'Alle Erweiterungen sind aktuell.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Folgende Plugins sind möglicherweise nicht kompatibel mit der neuen Version von Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Folgende Themen sind möglicherweise nicht kompatibel mit der neuen Version von Piwigo:'; +$lang['I decide to update anyway'] = 'Ich möchte trotzdem aktualisieren'; +$lang['Update to Piwigo %s'] = 'Aktualisierung auf Piwigo %s'; +$lang['Two updates are available'] = 'Zwei Aktualisierungen sind verfügbar'; +$lang['This is a minor update, with only bug corrections.'] = 'Dies ist eine kleine Aktualisierung zur Fehlerbeseitigung.'; +$lang['This is a major update, with new exciting features.'] = 'Dies ist eine größere Aktualisierung mit neuen Funktionen .'; +$lang['Some themes and plugins may be not available yet.'] = 'Einige Themen und Plugins sind nun leider nicht mehr verfügbar.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Empfehlung: Sie können direkt auf Piwigo %s aktualisieren. Ein Upgrade auf Piwigo %s ist nicht nötig.'; +$lang['Save Template Directory'] = 'Sichere das Template-Verzeichnis'; +$lang['Dump Database'] = 'Sichere die Datenbank'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Sichere auch die Daten der History. (Warnung: Das Speicherlimit des Servers kann überschreiten werden!)'; +$lang['Unable to dump database.'] = 'Es ist nicht möglich, die Datenbank zu sichern.'; +$lang['Some upgrades are available for extensions.'] = 'Einige Aktualisierungen für Erweiterungen sind verfügbar.'; +$lang['Ignore All'] = 'Ignoriere alle'; +$lang['Crop'] = 'Zuschneiden'; +$lang['Width'] = 'Breite'; +$lang['Height'] = 'Höhe'; +$lang['Follow Orientation'] = 'Folgen Sie der Orientierung'; +$lang['Graphics Library'] = 'Grafikbibliothek'; +$lang['Add a criteria'] = 'Ein Kriterium hinzufügen'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Sie können keine Standardsortierung festlegen, da Sie eine benutzerdefinierte Einstellung in Ihrer lokalen Konfiguration vorgenommen haben.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Sie haben $conf[\'order_by\'] in ihrer lokalen Konfigurationsdatei festgelegt. Dieser Parameter ist überholt. Bitte entfernen Sie ihn oder benennen Sie ihn um in $conf[\'order_by_custom\']!'; +$lang['Average rate'] = 'Durchschnittliche Bewertung'; +$lang['Rate'] = 'Bewertung'; +$lang['Learn more'] = 'Mehr Informationen...'; +$lang['An error has occured during upgrade.'] = 'Während des Aktualisierens trat ein Fehler auf.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Während des Entpackens trat ein Fehler auf. Bitte überprüfen Sie die Schreibrechte Ihrer Piwigo-Installation.
    Klicken Sie hier, um das Fehlerprotokoll einzusehen.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kann die Aktualisierungsdatei nicht vom Server laden'; +$lang['Zoom'] = 'Zoom'; +$lang['(this tag will be deleted)'] = '(dieses Schlagwort wird gelöscht!)'; +$lang['... or '] = '...oder '; +$lang['Allowed file types: %s.'] = 'Erlaubte Dateitypen: %s.'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Standardmäßig erstellt Piwigo eine für das Web optimierte Ansicht der HD-Version (hochaufgelösten Version) Ihres Fotos.'; +$lang['Confirm merge'] = 'Zusammenführen bestätigen'; +$lang['Create'] = 'Erstellen'; +$lang['hide details'] = 'Details verbergen'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Wenn das Bild nicht HD (hochaufgelöst) ist und das Bild kleiner ist als die für das Web optimierte Größe, verwendet Piwigo dieses als HD und erstellt eine verkleinerte weboptimierte Version.'; +$lang['Manage Permissions'] = 'Zugriff verwalten'; +$lang['Maximum file size: %sB.'] = 'Max. Dateigröße: %sB.'; +$lang['Merge selected tags'] = 'Führe markierte Schlagwörter zusammen'; +$lang['Merge tags'] = 'Schlagwörter zusammenführen'; +$lang['No destination tag selected'] = 'Kein Ziel-Schlagwort gewählt'; +$lang['Photo %s of %s'] = 'Bild %s of %s'; +$lang['Select an album'] = 'Wähle ein Album'; +$lang['Select at least two tags for merging'] = 'Wählen Sie mindestens 2 Schlagwörter zum Zusammenführen aus'; +$lang['Select the destination tag'] = 'Wähle Ziel-Schlagwort'; +$lang['show details'] = 'Details zeigen'; +$lang['Start Upload'] = 'Upload starten'; +$lang['Tags %s merged into tag %s'] = 'Schlagwörter %s mit %s zusammengeführt'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Sie benutzen den Browser-Uploader. Benutzen Sie stattdessen den Flash-Uploader.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Probleme mit dem Flash-Uploader? Benutzen Sie stattdessen den Browser-Uploader.'; +$lang['A locked gallery is only visible to administrators'] = 'Eine gesperrte Galerie kann nur von Administratoren eingesehen werden'; +$lang['Activate comments'] = 'Kommentare aktivieren'; +$lang['administrators'] = 'Administratoren'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Maximale Auflösung (ca.): %dM Pixel (das sind %dx%d Pixel).'; +$lang['Default comments order'] = 'Standardsortierreihenfolge für Kommentare'; +$lang['Gallery unlocked'] = 'Galerie entsperrt'; +$lang['modified'] = 'verändert'; +$lang['Move to album'] = 'Verschiebe ins Album'; +$lang['Notify administrators when a comment is'] = 'Administratoren bei folgenden Kommentaränderungen benachrichtigen'; +$lang['Original Size'] = 'Originalgröße'; +$lang['pending validation'] = 'Auf Bestätigung wartend'; +$lang['Photo name'] = 'Bildname'; +$lang['registered users'] = 'Registrierte Besucher'; +$lang['Resize after upload'] = 'Größe nach dem Upload anpassen'; +$lang['Save visits in history for'] = 'Besuche in der History speichern für'; +$lang['Send connection settings by email'] = 'Verbindungseinstellungen als E-Mail senden'; +$lang['simple visitors'] = 'einfache Besucher'; +$lang['The original image quality must be a number between %d and %d'] = 'Die originale Bildqualität muss eine Zahl zwischen %d und %d sein'; +$lang['The original maximum height must be a number between %d and %d'] = 'Die originale Maximalhöhe muss eine Zahl zwischen %d und %d sein'; +$lang['The original maximum width must be a number between %d and %d'] = 'Die originale Maximalbreite muss eine Zahl zwischen %d und %d sein'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Die %d Fotos dieses Albums wurden zwischen %s und %s hochgeladen.'; +$lang['This album contains %d photos, added on %s.'] = 'Die %d Fotos dieses Albums wurden am %s hochgeladen.'; +$lang['This album contains no photo.'] = 'Dieses Album enthält keine Fotos.'; +$lang['Unlock gallery'] = 'Galerie entsperren'; +$lang['Center of interest'] = 'Bildschwerpunkt'; +$lang['Not cropped correctly?'] = 'Nicht richtig zugeschnitten?'; +$lang['apply automatic sort order'] = 'Automatische Sortierreihenfolge anwenden'; +$lang['Automatic sort order'] = 'Automatische Sortierreihenfolge'; +$lang['Cancel'] = 'Abbrechen'; +$lang['cancel manual order'] = 'manuelle Reihenfolge abbrechen'; +$lang['List'] = 'Liste'; +$lang['Save manual order'] = 'Manuelle Reihenfolge speichern'; +$lang['You can activate only one mobile theme.'] = 'Sie können nur ein Mobil-Layout aktivieren.'; +$lang['%s has been successfully updated.'] = '%s wurde erfolgreich aktualisiert.'; +$lang['Add tags'] = 'Schlagwörter hinzufügen'; +$lang['Applications'] = 'Applikationen'; +$lang['Last import'] = 'Letzter Import'; +$lang['Predefined filter'] = 'Voreingestellter Filter'; +$lang['Web Form'] = 'Webformular'; +$lang['With no album'] = 'Ohne Album'; +$lang['With no tag'] = 'Ohne Schlagwort'; +$lang['With no virtual album'] = 'Ohne virtuelles Album'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Das App Piwigo für Android ermöglicht es Ihnen, sich mit Ihrer Piwigo-Galerie zu verbinden, Alben zu erstellen und mehrere Fotos gleichzeitig hochzuladen.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Das App Piwigo für iOS ermöglicht es Ihnen, sich mit Ihrer Piwigo-Galerie zu verbinden, Alben zu erstellen und mehrere Fotos gleichzeitig hochzuladen.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom ist eine Bildbearbeitungssoftware, die entwickelt wurde, um eine grosse Anzahl von Bildern zu verwalten und zu bearbeiten.'; +$lang['Available on'] = 'Erhältlich bei '; +$lang['Available versions for'] = 'Verfügbare Versionen für'; +$lang['Piwigo for Android'] = 'Piwigo für Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo für iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo-Publish-Plugin für Lightroom'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Das Piwigo-Publish-Plugin erlaubt es Ihnen, Bilder aus Lightroom zu exportieren und mit Ihrer Piwigo-Fotogalerie zu synchronisieren.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u Benutzer haben automatisch Zugriff, weil sie zu einer Gruppe mit entsprechenden Zugriffsrechten gehören.'; +$lang['any visitor can see this album'] = 'jeder Besucher kann das Album sehen'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture für Mac ist ein mächtiges Werkzeug, um Bilder zu bearbeiten und große Bildersammlungen zu verwalten.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture ist für professionelle Fotografen bestimmt und so einfach zu bedienen wie iPhoto.'; +$lang['Groups and users'] = 'Gruppen und Benutzer'; +$lang['include photos with lower privacy level'] = 'Fotos mit geringerer Privatsphäre einschließen'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto ist die Standard-Fotoverwaltung unter Mac OS X. Das Piwigo-Export-Plugin ermöglicht Ihnen das Erstellen neuer Alben und den Export Ihrer Fotos direkt aus iPhoto in Ihre Piwigo-Fotogalerie.'; +$lang['Permission granted for users'] = 'Zugriff für Benutzer erlaubt'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo-Export-Plugin für Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo-Export-Plugin für iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo '; +$lang['Select groups...'] = 'Wähle Gruppen...'; +$lang['Select users...'] = 'Wähle Benutzer...'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Das Piwigo-Export-Plugin erlaubt es Ihnen, Alben zu erstellen und Fotos zu exportieren.'; +$lang['There is no group in this gallery.'] = 'Es gibt keine Gruppe in dieser Galerie.'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Besucher müssen sich einloggen und die entsprechenden Rechte besitzen, um das Album zu sehen'; +$lang['Delete multiple size images'] = 'Mehrfache Bildgrößen löschen'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam ist ein modernes Bildverwaltungsprogramm für Linux, Windows und Mac OS X. digikam ist freie Software.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam ist für Fotografen gedacht, die Bilder verwalten, bearbeiten, verbessern, katalogisieren und weitergeben wollen.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Der Leistungsumfang schließt das Durchbättern der Galerie, das Erstellen von Alben und das Hochladen von Fotos ein.'; +$lang['Generate multiple size images'] = 'Mehrfache Bildgrößen generieren'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Unter Linux installieren Sie Shotwell einfach mit Ihrem Paketmanager. Aktivieren Sie die Option "Piwigo Publishing".'; +$lang['Permission granted for groups'] = 'Zugriff für Gruppen erlaubt'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo-Publish-Plugin für digiKam'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid ist ein Piwigo-Client für Android. Das App ist Open Source (GPL v3).'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell ist eine Open-Source-Bildverwaltung für Linux und das Standard-Bildverwaltungsprogramm unter Ubuntu und Fedora.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Um Ihre Bilder von digiKam nach Piwigo zu exportieren, installieren Sie einfach digiKam und die Kipi-Plugins.'; +$lang['No group is permitted to see this private album'] = 'Keine Gruppe hat das Recht, dieses private Album zu betrachten'; +$lang['Permission management'] = 'Zugriffsverwaltung'; +$lang['custom'] = 'Anpassung'; +$lang['Photo sizes with crop'] = 'Bild nach Zuschnitt'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Die Mitte ist der bedeutungsvollste Bereich eines Bildes.'; +$lang['add a new watermark'] = 'fügen Sie ein neues Wasserzeichen hinzu.'; +$lang['Apply watermark if height is bigger than'] = 'Wasserzeichen anwenden, wenn die Höhe größer ist als'; +$lang['Apply watermark if width is bigger than'] = 'Wasserzeichen anwenden, wenn die Breite größer ist als'; +$lang['bottom left corner'] = 'linke untere Ecke'; +$lang['bottom right corner'] = 'rechte untere Ecke'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Der Bildschwerpunkt wird für gewöhnlich der Mitte eines Fotos zugeordnet.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Für Fotogrößen mit einem Schnitt, wie zum Beispiel quadratisch, versucht Piwigo, so gut es geht, den Bildschwerpunkt miteinzubeziehen.'; +$lang['middle'] = 'Mitte'; +$lang['Opacity'] = 'Deckkraft'; +$lang['Select a file'] = 'Wählen Sie eine Datei'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Wählen Sie mit der Maus einen Bereich, um einen neuen +Bildschwerpunkt festzulegen.'; +$lang['top left corner'] = 'obere linke Ecke'; +$lang['top right corner'] = 'obere rechte Ecke'; +$lang['X Position'] = 'X-Position'; +$lang['X Repeat'] = 'X-Wiederholung'; +$lang['Y Position'] = 'Y-Position'; +$lang['Multiple Size'] = 'Bildqualität/Bildgröße'; +$lang['%d day'] = '%d Tag'; +$lang['%d days'] = '%d Tage'; +$lang['%d hour'] = '%d Stunde'; +$lang['%d hours'] = '%d Stunden'; +$lang['%d minute'] = '%d Minute'; +$lang['%d minutes'] = '%d Minuten'; +$lang['%d month'] = '%d Monat'; +$lang['%d months'] = '%d Monate'; +$lang['%d second'] = '%d Sekunde'; +$lang['%d seconds'] = '%d Sekunden'; +$lang['%d year'] = '%d Jahr'; +$lang['%d years'] = '%d Jahre'; +$lang['%s ago'] = 'vor %s'; +$lang['%s in the future'] = '%s in Zukunft'; +$lang['Added by %s'] = 'Hinzugefügt von %s'; +$lang['Numeric identifier : %d'] = 'Numerische Kennzahl: %d'; +$lang['Original file : %s'] = 'Originaldatei: %s'; +$lang['Posted %s on %s'] = '%s gesendet am %s'; +$lang['Rated %d times, score : %.2f'] = 'Bewertet %d mal, Wertung: %.2f'; +$lang['Sharpen'] = 'Schärfen'; +$lang['Visited %d times'] = 'Besucht %d mal'; +$lang['Watermark'] = 'Wasserzeichen'; +$lang['%d week'] = '%d Woche'; +$lang['%d weeks'] = '%d Wochen'; +$lang['Edit photo'] = 'Foto bearbeiten'; +$lang['create a new site'] = 'Erstelle eine neue Seite'; +$lang['No order field selected'] = 'Kein Anordnungsfeld gewählt'; +$lang['Duplicate selected tags'] = 'Ausgewählte Schlagworte duplizieren'; +$lang['Name of the duplicate'] = 'Name des Duplikats'; +$lang['Source tag'] = 'Schlagwort Quelle'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Das Schlagwort "%s" ist jetzt ein Duplikat von "%s"'; +$lang['Landscape'] = 'Quer-Format'; +$lang['Minimum height'] = 'Minimum Höhe'; +$lang['Minimum width'] = 'Minimum Breite'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Hoch-Kant'; +$lang['Manage photos'] = 'Fotos verwalten'; +$lang['View in gallery'] = 'Gallerieansicht'; +$lang['Number of albums per page'] = 'Anzahl der Alben pro Seite'; +$lang['Ratio'] = 'Verhältnis'; +$lang['between %.2f and %.2f'] = 'zwischen %.2f und %.2f'; +$lang['between %d and %d pixels'] = 'zwischen %d und %d Pixel'; +$lang['Duplicate'] = 'Duplikat'; +$lang['Manage the members'] = 'Benutzer verwalten'; +$lang['Merge selected groups'] = 'Gewählte Gruppen zusammenführen'; +$lang['No group selected, no action possible.'] = 'Keine Gruppen ausgewählt, Aktion kann nicht durgeführt werden'; +$lang['No members to manage'] = 'Keine Benutzer zu verwalten'; +$lang['Please select at least two groups'] = 'Bitte wähle mindestens 2 Gruppen'; +$lang['Rename'] = 'Umbenennen'; +$lang['This group will be set to default'] = 'Diese Gruppe wird als Standard verwendet'; +$lang['This group will be unset to default'] = 'Dies Gruppe wird nicht länger als Standard verwendet'; +$lang['Type here the name of the new group'] = 'Name der neuen Gruppe hier eingeben'; +$lang['Purge user cache'] = 'Benutzer cache löschen'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Die Bildgröße wird auf %dx%d Pixel reduziert.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Größenänderung nach hochladen deaktiviert, da die GD Library aktiviert ist. '; +$lang['Select at least one tag'] = 'Wählen Sie mindesten einen Tag aus'; +$lang['Basic settings'] = 'Grundeinstellungen'; +$lang['General'] = 'Haupteinstellungen'; +$lang['Mail theme'] = 'Mail-Thema'; +$lang['%d of %d users selected'] = '%d von %d Benutzern ausgewählt'; +$lang['(filtered from %s total users)'] = '(von insgesamt %s Benutzern gefiltert)'; +$lang['All %d users are selected'] = 'Alle %d Benutzer sind ausgewählt'; +$lang['Change password'] = 'Passwort ändern'; +$lang['Change username'] = 'Benutzername ändern'; +$lang['Last visit on %s, %s.'] = 'Letzter Besuch am %s, %s.'; +$lang['Loading...'] = 'Lade...'; +$lang['No matching user found'] = 'Kein übereinstimmender Benutzer gefunden'; +$lang['No user selected of %d users'] = 'Kein Benutzer von %d Benutzern ausgewählt'; +$lang['No user selected, no action possible.'] = 'Kein Benutzer ausgewählt, keine Aktion möglich.'; +$lang['Password updated'] = 'Passwort geändert'; +$lang['Registered on %s, %s.'] = 'Registriert am %s, %s.'; +$lang['Show %s users'] = 'Zeige %s Benutzer'; +$lang['Showing %s to %s of %s users'] = 'Zeige %s bis %s von %s Benutzern'; +$lang['Update user'] = 'Aktualisiere Benutzer'; +$lang['User %s added'] = 'User %s hinzugefügt'; +$lang['User %s updated'] = 'User %s aktualisiert'; +$lang['Users modified'] = 'Benutzer geändert'; +$lang['on the %d selected users'] = 'der %d ausgewählten Benutzer'; +$lang['close'] = 'schließen'; +$lang['Close user details'] = 'Schließe Benutzerdetails'; +$lang['Open user details'] = 'Öffne Benutzerdetails'; +?> \ No newline at end of file diff --git a/sources/language/de_DE/common.lang.php b/sources/language/de_DE/common.lang.php new file mode 100644 index 0000000..f0c1cfc --- /dev/null +++ b/sources/language/de_DE/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/de_DE/de_DE.jpg b/sources/language/de_DE/de_DE.jpg new file mode 100644 index 0000000..da843ad Binary files /dev/null and b/sources/language/de_DE/de_DE.jpg differ diff --git a/sources/language/de_DE/help/cat_modify.html b/sources/language/de_DE/help/cat_modify.html new file mode 100644 index 0000000..cf59948 --- /dev/null +++ b/sources/language/de_DE/help/cat_modify.html @@ -0,0 +1,159 @@ +

    Ein Album bearbeiten

    + +

    Informationen

    +
      +
    • + Name: Umbenennen eines Albums (oder Erstellen eines virtuellen Namens für ein physisches Album). +
    • +
    • + Beschreibung: Kurze Beschreibung des Inhalts. + Dieser Text wird am unteren Rand der Vorschauseite angezeigt. +
    • +
    + +

    Verschieben

    +

    + Sie können virtuelle Alben verschieben. Verschieben bedeutet, dass Sie dem Album ein + neues Vorgängeralbum zuweisen. +

    + +

    Optionen

    +
      +
    • Art des Zugriffs: + Verwalten der Zugriffsrechte. Wenn Sie ein Album als privat markieren, + werden auch alle Unteralben als privat markiert. + Ebenso werden alle Unteralben eines Albums als öffentlich markiert, + wenn Sie es als öffentlich markieren. +
    • +
    • + Sperren: Das Album und alle Unteralben werden temporär gesperrt (z.B. für Wartungsarbeiten). +
    • +
    • + Kommentare: Erlauben Sie Benutzern, Fotos dieses Albums zu kommentieren. +
    • +
    +

    + Sie können diese Optionen auch auf den Seiten zur Verwaltung der Eigenschaften + (Seiten Kommentare, Sperren, Öffentlich/Privat, Vertreter zu finden unter Verwaltung » Alben » Eigenschaften) verwalten. +

    + +

    Sortierreihenfolge

    +

    + Verwenden Sie die Standardmethode zum Sortieren der Bilder. +

    +

    + Geben Sie an, ob die Sortiermethode auch für Unteralben angewendet werden soll. +

    +

    + Sortierkriterien für dieses Album auswählen. +

    +
      +
    • + Erstellungsdatum: Datum der Aufnahme +
    • +
    • + Datum: Datum der Synchronisierung +
    • +
    • + Durchschnittswertung (*): Wird durch die Besucherwertung beeinflusst. +
    • +
    • + Am häufigsten besucht (*): + Wird durch die Anzahl der Aufrufe beeinflusst. +
    • +
    • + Dateiname: Name der Datei +
    • +
    • + ID: Interne ID (Neuere Alben haben eine höhere ID als ältere.) +
    • +
    +

    + (*) Achtung: Testen Sie die ausgewählte Sortiermethode, + da sie unerwartete Ergebnisse liefern könnte. +

    + +

    Vorschau

    +

    + Die Vorschau eines Albums ist die Miniaturansicht, die auf der Hauptseite +(category.php) angezeigt wird, + wenn das Album selbst keine Bilder, sondern nur Unteralben enthält. +

    + +

    Es gibt vier Möglichkeiten zur Auswahl:

    +
      +
    • + Bilderseite: Eine der Aktionen zu einem Bild erlaubt es Ihnen, das gerade + angezeigt Bild als Vorschau für das Album zu definieren. Diese Aktion steht nur Administratoren + zur Verfügung. +
    • +
    • + Bearbeiten von Bildinformationen + in der Verwaltung. Diese Funktion können Sie über picture.php oder die Batchverwaltung + im Einzelmodus erreichen. Die Hilfe der angeführten Seiten bietet mehr Informationen + zu diesen Funktionen. +
    • +
    • + Verwaltung » Alben » Eigenschaften » + Vorschaubild. Details hierzu finden Sie in der Hilfe der angeführten Seite. +
    • +
    • + Bearbeiten eines Albums (auf dieser Seite). +
    • +
    +

    + Die Wahl des Vorschaubilds wird durch die Option + allow_random_representative beinflusst (siehe include/config_default.inc.php). +

    +

    + In der Standardeinstellung (allow_random_representative auf false) wird jedes Album, + das mindestens ein Element enthält, durch ein definiertes Vorschaubild repräsentiert. Einmal gesetzt + (während der Albenerstellung), kann das Vorschaubild nur durch einen Administrator geändert werden. + Passt das definierte Vorschaubild nicht, wählen Sie einfach die Funktion Bestimme ein neues + zufälliges Vorschaubild. +

    +

    + Ist die Option allow_random_representative auf true gesetzt, kann ein Album mit Bildern + kein definiertes Vorschaubild haben. Verwenden Sie in diesem Fall die Funktion Lösche Vorschaubild. +

    +

    + Wenn das Album keine Bilder, sondern nur Unteralben enthält, kann es dennoch von einem Element repräsentiert werden. + Verwenden Sie hierzu die Funktion Lösche Vorschaubild auf der Seite + Information eines Bildes bearbeiten. +

    + +

    Verknüpfen aller Bilder eines Albums mit einem neuen Album

    +
      +
    • + Virtueller Albumname: Name des neu zu erstellenden Albums. + Alle Bilder des aktuellen Albums werden mit dem neuen Album verknüpft. +
    • +
    • + Vorläuferalbum: Die Position des neuen Albums. + Tragen Sie hier keinen Wert ein, um das Album + an der Spitze Ihrer Alben einzufügen. +
    • +
    + +

    Verknüpfen aller Bilder eines Albums mit einem existieren Album

    +
      +
    • + Alben: Wählen Sie das Zielalbum. +
    • +
    + +

    Senden einer Informationsmail an die Gruppenmitglieder

    +
      +
    • + Gruppe: Empfängergruppe +
    • +
    • + Inhalt der E-Mail: Zu sendender Text. +
    • +
    diff --git a/sources/language/de_DE/help/cat_move.html b/sources/language/de_DE/help/cat_move.html new file mode 100644 index 0000000..2c4d669 --- /dev/null +++ b/sources/language/de_DE/help/cat_move.html @@ -0,0 +1,21 @@ +

    Verschieben von virtuellen Alben

    + +

    + Nur virtuelle Alben können ein neues Vorgängeralbum erhalten. +

    + +

    Virtuelle Alben verschieben

    +

    + Wählen Sie eines oder mehrere virtuelle Alben, die Sie verschieben wollen. + Die Liste ist leer, wenn Sie noch kein virtuelles Album erstellt haben. +

    + +

    Neues Vorgängeralbum

    +

    + Wählen Sie das neue Vorgängeralbum (virtuell oder physisch). + Wenn Sie kein Vorgängeralbum auswählen, wird Ihr neues, virtuelles Album an die Spitze + der Alben verschoben. + Ein Album kann nicht in sich selbst oder in ein ihm untergeordnetes Album verschoben werden. +

    + + diff --git a/sources/language/de_DE/help/cat_options.html b/sources/language/de_DE/help/cat_options.html new file mode 100644 index 0000000..edc5b55 --- /dev/null +++ b/sources/language/de_DE/help/cat_options.html @@ -0,0 +1,24 @@ +

    Eigenschaften von Alben

    + +

    Diese Seite erlaubt die Verwaltung der Eigenschaften mehrerer Alben zugleich.

    + +
    + +
    Öffentlich/Privat
    +
    Alben können als privat gekennzeichnet werden. Wenn ein Album als privat gekennzeichnet ist, + können Sie erweiterte Zugriffsberechtigungen für Benutzer und Gruppen vergeben.
    + +
    Sperren
    +
    Gesperrte Alben sind zu Wartungszwecken deaktiviert. Nur Administratoren können diese Alben in der Galerie betrachten.
    + +
    Benutzerkommentare
    +
    Besucher können Bilder kommentieren, die zu Alben mit aktivierter Kommentaroption gehören.
    + +
    Vorschaubild
    +
    Diese Einstellung ist verfügbar, wenn Sie die Option allow_random_representative + in der Datei include/config_defaults.inc.php auf + true gesetzt haben. Jedes Album kann durch ein zufälliges oder ein von Ihnen gewähltes Vorschaubild + repräsentiert werden. +
    + +
    diff --git a/sources/language/de_DE/help/cat_perm.html b/sources/language/de_DE/help/cat_perm.html new file mode 100644 index 0000000..2454935 --- /dev/null +++ b/sources/language/de_DE/help/cat_perm.html @@ -0,0 +1,24 @@ +

    Zugriffsrechte auf ein privates Album verwalten

    +

    + Diese Seite wird nur bei privaten Alben angezeigt. Hier können Sie bestimmen, welche + Benutzer und Gruppen dieses Album betrachten dürfen. Diese Zugriffsrechte wirken zusätzlich + zu den Datenschutzstufen der einzelnen Bilder und der Benutzer. +

    +

    + Siehe auch die Einführung in Gruppen in der Hilfe. +

    + +

    Gruppen

    +

    + Sie können Gruppen den Zugriff auf ein Album verbieten oder erlauben, + wodurch allen Mitgliedern der Gruppe der Zugriff auf das Album ermöglicht + oder verwehrt wird. +

    + +

    Benutzer

    +

    + Sie können einzelnen Benutzern den Zugriff auf ein Album verbieten + oder erlauben. Einzelne Benutzer, die Zugriff auf ein Album aufgrund ihrer + Gruppenzugehörigkeit haben, können vom Betrachten des Albums + ausgeschlossen werden. +

    \ No newline at end of file diff --git a/sources/language/de_DE/help/configuration.html b/sources/language/de_DE/help/configuration.html new file mode 100644 index 0000000..3249583 --- /dev/null +++ b/sources/language/de_DE/help/configuration.html @@ -0,0 +1,216 @@ +

    Konfiguration

    + +

    Auf dieser Seite kann ein Administrator Grundeinstellungen für die Galerie vornehmen. + Die Einstellungsmöglichkeiten beschränken sich auf das Wesentlichste, dürften aber den + Anpassungswünschen der meisten Administratoren nachkommen. + Zahlreiche weitere Einstellungsmöglichkeiten können Sie in der Datei + include/config_default.inc.php vornehmen. +

    + +

    + Die Konfigurationsseite ist in mehrere Abschnitte unterteilt, die die Einstellungsmöglichkeiten + thematisch gruppieren. +

    + +

    Grundeinstellungen

    +
      + +
    • + Galerietitel: Wird für RSS-Feeds und E-Mail-Benachrichtigungen genützt. +
    • + +
    • + Seitenbanner: Wird im oberen Teil der Seiten angezeigt. +
    • + +
    • + Galerie-URL: Wird für RSS-Feeds verwendet. +
    • + +
    • + Sperre den Zugriff auf die Galerie: Sperren der gesamten + Galerie für Wartungsarbeiten. Nur Administratoren haben noch Zugriff. +
    • + +
    • + Abstimmung zulassen: Ermöglicht die Bewertung der Fotos. +
    • + +
    • + Erlaube Bewertung durch Gäste: + Auch nicht registrierte Benutzer können Bilder bewerten. +
    • + +
    • + Erlaube die Neuregistrierung von Benutzern: + Jeder kann sich registrieren. +
    • + +
    • + Die Angabe einer gültigen E-Mail-Adresse ist für alle Benutzer + verpflichtend: + Die E-Mail-Adresse wird bei der Registrierung oder beim Aktualisieren des Profils überprüft, + außer wenn dies von einem Administrator durchgeführt wurde. +
    • + +
    • + Sende eine E-Mail an die Adminstratoren, wenn sich ein neuer Benutzer registriert hat: + Benachrichtigung der Administratoren bei Registrierung. +
    • + +
    + +

    Statistik

    + + +

    + Besuche werden in Administration » Werkzeuge » Statistik angezeigt. +

    + +
      +
    • + Speichere Seitenaufrufe von Gästen: + Besuche von Gästen werden aufgezeichnet. +
    • + +
    • + Speichere Seitenaufrufe pro Benutzer: + Besuche von registrierten Benutzern werden aufgezeichnet. +
    • + +
    • + Speichere auch Seitenaufrufe des Administrators: + Besuche von Administratoren werden aufgezeichnet. +
    • +
    + +

    Benutzerkommentare

    +
      + +
    • + Kommentare für alle erlaubt: + Auch nicht registrierte Benutzer (Gäste) können Kommentare schreiben. +
    • + +
    • + Anzahl von Kommentaren pro Seite: + Die Anzahl der pro Seite angezeigten Kommentare. +
    • + +
    • + Freigabe der Kommentare durch den Administrator: + Ein Administrator muss die Kommentare der Benutzer überprüfen, + bevor sie in der Galerie angezeigt werden. Die Überprüfung der + Benutzerkommentare erfolgt auf der Seite Verwaltung, Fotos, + Kommentare. +
    • + +
    • + Sende eine E-Mail an die Adminstratoren, wenn ein Kommentar abgegeben wurde: + Bei gültigem Kommentar werden die Administratoren benachrichtigt. +
    • + +
    • + Sende eine E-Mail an die Adminstratoren, wenn ein Kommentar die Freischaltung + durch einen Administrator erfordert: + Sende eine E-Mail an die Administratoren, wenn die Überprüfung eines Kommentars erforderlich ist. + Die Überprüfung der Benutzerkommentare erfolgt auf der Seite + Verwaltung, Fotos, Kommentare. +
    • + +
    + + + +

    Anzeigeeinstellungen

    +

    + Hier können sie die Anzeigeeinstellungen für Gäste festlegen. + Registrierte Benutzer können diese Einstellungen + selbst über ihr Profil anpassen. +

    + +

    + Es ist auch möglich, die Anzeigeeinstellungen aller Benutzer zu verändern. + Besuchen Sie zu diesem Zweck die Seite + Administration » Benutzer » Verwaltung. +

    + +
      + +
    • + Sprache: + Bezieht sich nur auf die Beschriftungen und Texte des Piwigo-Programms. + Namen von Alben, Fotos, Beschreibungen und Kommentare werden nicht übersetzt. +
    • + +
    • + Anzahl der Bilder pro Zeile: + Anzahl der Bilder, die pro Zeile angezeigt werden. +
    • + +
    • + Anzahl der Zeilen pro Seite: + Anzahl der Zeilen, die pro Seite angezeigt werden. +
    • + +
    • + Layout: Das Layout der Seiten. +
    • + +
    • + Wie viele Tage sollen Bilder als neu markiert werden?: + Der Zeitraum in Tagen, der festlegt, wie lang Fotos als neu gelten sollen. +
    • + +
    • + Albenstruktur immer vollständig sichtbar: + Soll die Albenstruktur ausgeklappt angezeigt werden? + Vorsicht: + Diese Option kann Ihren Server stark beanspruchen und ein sehr großes Menü generieren, + wenn sie viele Alben angelegt haben. +
    • + +
    • + Zeige die Anzahl der Kommentare: + Zeigt für jedes Foto die Anzahl der Kommentare unter den Vorschaubildern + auf der Übersichtsseite. + Benötigt viele Ressourcen.
    • + +
    • + Zeige die Anzahl der Bildaufrufe: + Zeigt auf der Übersichtsseite für jedes Foto die Anzahl der Aufrufe. + Wird nur angezeigt, wenn der Parameter $conf ['show_nb_hits'] auf "true" + gesetzt ist. Voreingestellt ist "false". +
    • + +
    • + Maximale Breite der Bilder: + Die maximal angezeigte Breite. + Breitere Bilder werden für die Anzeige verkleinert. + Bevor Sie diese Option verwenden, sollten Sie darüber nachdenken, + die Größe Ihrer Fotos zu verändern. +
    • + +
    • + Maximale Höhe der Bilder: + Die maximal angezeigte Höhe. + Höhere Bilder werden für die Anzeige verkleinert. + Bevor Sie diese Option verwenden, sollten Sie darüber nachdenken, + die Größe Ihrer Fotos zu verändern. +
    • + +
    diff --git a/sources/language/de_DE/help/extend_for_templates.html b/sources/language/de_DE/help/extend_for_templates.html new file mode 100644 index 0000000..e543bc2 --- /dev/null +++ b/sources/language/de_DE/help/extend_for_templates.html @@ -0,0 +1,109 @@ +

    Vorlagenerweiterung

    + +

    Sinn und Zweck

    +

    + Sie können das Erscheinungsbild Ihrer Piwigo-Galerie im Einzelnen verändern, + indem Sie vorhandene Vorlagendateien gegen von Ihnen angepasste austauschen. + So können Sie z.B. die vorgegebene Vorlagendatei header.tpl, die für die + Darstellung des Seitenkopfes Ihrer Galerie verantwortlich ist, durch eine + von Ihnen angepasste Version my_header.tpl ersetzen. Wurde der Datenbank + der Austausch bekannt gemacht, wird Ihr Seitenkopf an Stelle + des originalen Seitenkopfes in Ihrer Galerie angezeigt.

    +

    + Die Erweiterung von Vorlagen ist ein mächtiges Werkzeug, das es Einsteigern + und erfahrenen Anwendern ermöglicht, eigene, angepasste Vorlagen zu erstellen. +

    + +

    Originalvorlagen

    +

    + Ein Thema umfasst ein Reihe von Vorlagendateien, die die Galerie-Seiten bilden. + Diese Dateien sind die Orginalvorlagen. +

    + +

    Optionale URL-Schlüsselwörter

    +

    + In die URL der Galerie können Schlüsselwörter oder aktive Permalinks (siehe die + Hilfe zu Permalinks) nach dem Modulnamen eingetragen werden.
    + Achtung: Wenn die gleiche Originalvorlage + und das gleiche Schlüsselwort für mehr als eine angepasste Vorlage + gebraucht werden, wird nur das letzte Schlüsselwort berücksichtigt. +

    + +

    Verbundenes Thema

    +

    + Ein verbundenes Thema ist ein Thema, aus dem Vorlagendateien ersetzt werden. +

    + +

    Wo sind die Originalvorlagen gespeichert?

    +

    + Die zu jedem Thema gehörenden Originalvorlagen finden sich im Verzeichnis + /themes/default/template/. Die Originalvorlagen dort + sollten nicht verändert werden, da Änderungen bei späteren Updates + verloren gehen.
    + Zu den aktuell unterstützten Originalvorlagen gehören: +

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl und/oder thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl und/oder footer.tpl
    • +
    • picture_content.tpl und/oder picture.tpl
    • + +
    • profile.tpl und/oder profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl und/oder search_rules.tpl
    • +
    • nbm.tpl und/oder notification.tpl
    • +
    • identification.tpl und/oder register.tpl
    • +
    • redirect.tpl
    • +
    + +

    Angepasste Vorlagen abspeichern

    +

    + Angepasste Vorlagen sollten im Verzeichnis template-extension oder in einem Unterverzeichnis + dieses Verzeichnisses abgespeichert werden (z.B. /template-extension/my-default/header.tpl + oder /template-extension/my-theme-name/header.tpl). + Der Name einer Vorlagendatei ist frei wählbar, die Dateiendung .tpl muss allerdings angefügt werden. + + The template files in subfolders appear in the Template configuration screen as available custom templates. +

    + +

    Angepasste Vorlagen aktivieren

    +

    + Wählen Sie die zu ersetzende Originalvorlage aus. Sie können auch ein URL-Schlüsselwort benutzen, + um sicher zu stellen, dass die angepasste Vorlage nur auf den Seiten mit dem gleichen Schlüsselwort + angezeigt wird. Wählen Sie das verbundene Thema aus, auf das sich die Anpassungen auswirken sollen. + Teilen Sie der Datenbank die Veränderungen mit. +

    + +

    Angepasste Vorlagen deaktivieren

    +

    + Deselektieren Sie die Originalvorlage und teilen Sie der Datenbank die Veränderungen mit.
    + Entfernen Sie die angepassten Vorlagen aus dem Verzeichnis template-extensions. +

    + +

    Warnhinweise

    +
      +
    • + Die Originalvorlage muss wirklich die Originalvorlage sein, sonst kann + es zu unvorhersehbaren Ergebnissen kommen. +
    • +
    • + Wenn die gleiche Originalvorlage und das gleiche Schlüsselwort + für mehr als eine angepasste Vorlage gebraucht werden, + wird nur das letzte Schlüsselwort berücksichtigt. +
    • +
    • + Mitgelieferte Beispielvorlagen sind nur für Testzwecke bestimmt und + sollten nicht verändert werden. Erstellen Sie Ihre eigenen Vorlagen + oder kopieren Sie vorhandene Vorlagendateien in das Verzeichnis + /template-extension/my-theme/. +
    • +
    • + Unmittelbar nach dem Löschen einer angepassten Vorlage wird die + Originalvorlage reaktiviert. +
    • +
    + diff --git a/sources/language/de_DE/help/group_list.html b/sources/language/de_DE/help/group_list.html new file mode 100644 index 0000000..f11806c --- /dev/null +++ b/sources/language/de_DE/help/group_list.html @@ -0,0 +1,33 @@ +

    Gruppen verwalten

    +

    + Auf dieser Seite können Sie Gruppen verwalten. +

    + +

    Hinzufügen einer Gruppe

    +

    + Administratoren können Gruppen hinzufügen. +

    + +

    Gruppenliste

    +

    + Für jede Gruppe können die folgenden Aktionen ausgeführt werden: +

      +
    • + Die Zugriffsrechte auf private Alben können verändert werden; +
    • +
    • + eine Gruppe kann gelöscht werden; +
    • +
    • + eine Gruppe kann als Standardgruppe ausgewählt werden. +
    • +
    + +
    +
    + Standard-Gruppen +
    +
    + Neue Benutzer werden automatisch zu den Standardgruppen hinzugefügt. +
    +
    diff --git a/sources/language/de_DE/help/help_add_photos.html b/sources/language/de_DE/help/help_add_photos.html new file mode 100644 index 0000000..ec19a00 --- /dev/null +++ b/sources/language/de_DE/help/help_add_photos.html @@ -0,0 +1,66 @@ +

    + Sie können Fotos zu Ihrer Galerie unter + Administration » Fotos » Hinzufügen + hinzufügen. Es gibt mehrere Möglichkeiten, dies zu tun: +

    + +
    +Interne Möglichkeiten +
      +
    • + Der manuelle Upload über Ihren Webbrowser ist die einfachste und + direkteste Methode. Der Funktionsumfang dieser Methode hängt im Wesentlichen von + den Fähigkeiten Ihres Browsers und denen Ihres Webservers ab. + Für den Upload größerer Mengen sollten Sie jedoch auf die unten angeführten Möglichkeiten zurückgreifen. +
    • +
    + +
    + +
    +Externe Möglichkeiten +
      +
    • + pLoader ist eine Anwendung, die Sie auf Ihrem Computer installieren können. + Ziehen Sie Fotos in das pLoader-Fenster und klicken Sie auf "Upload zur Piwigo". + Den Rest erledigt pLoader für Sie. Sie können auch andere Anwendungen, + wie WinToPiwigo oder das Digikam Export-Plugin für Piwigo + für diesen Zweck verwenden. +
    • +
    + + +
    +
      +
    • + Der FTP-Upload ist die Methode, um große Mengen + an Fotos mit wenigen Mausklicks zu übertragen. Befolgen Sie die Anweisungen + im Handbuch, um Ihre Fotos vorzubereiten, und laden Sie sie mit dem FTP-Programm + Ihrer Wahl hoch. Mit der FTP-Methode können Sie selbst bestimmen, wie + Ihre Fotos auf Ihrem Server organisiert sein sollen. +
    • +
    + +
    +
    + +
    +Berechtigung zum Upload +

    + Normalerweise darf nur der Administrator Fotos in Ihre Piwigo-Fotogalerie hochladen. +

    +
      +
    • + Andere Benutzer können aber den Status eines Administrators erhalten. + Den Status eines Benutzers können Sie unter + Administration » Benutzer » Verwalten + ändern. +
    • +
    • + Das Communitiy-Plugin ermöglicht registrierten Benutzern den Upload von Fotos. +
    • +
    +
    + diff --git a/sources/language/de_DE/help/help_groups.html b/sources/language/de_DE/help/help_groups.html new file mode 100644 index 0000000..0e9f992 --- /dev/null +++ b/sources/language/de_DE/help/help_groups.html @@ -0,0 +1,19 @@ +
    +Gruppierung von Benutzern +

    + Benutzer können in Gruppen zusammengefasst werden. Der Name einer Gruppe kann frei gewählt werden. Erstellen Sie neue Gruppen unter + Administration » Benutzer » Gruppen + und verknüpfen Sie Benutzer mit dieser Gruppe in Administration + »Benutzer » Verwalten. +

    +

    + Zusammen mit den erweiterten Zugriffsrechten auf private Alben ergeben Gruppen eine komfortable Möglichkeit, mehreren Benutzern zugleich + Zugriffsrechte auf Alben zu geben und die grobe Struktur der Datenschutzstufen zu verfeinern. +

    +

    + Ein Benutzer kann mehreren Gruppen angehören, dabei hat die Erlaubnis Vorrang vor dem Verbot. Ein Beispiel: Peter gehört der + Gruppe "Firmenfreunde" an, er darf sich das Album "Weihnachten 2010" anschauen, das für die Benutzer der Gruppen + "Skatabendkumpels" und "Firmenfreunde" freigeschaltet ist. (Peter muss also nicht zugleich Mitglied der Gruppe "Skatkumpels" + und "Firmenfreunde" sein.) +

    +
    diff --git a/sources/language/de_DE/help/help_misc.html b/sources/language/de_DE/help/help_misc.html new file mode 100644 index 0000000..cff3c57 --- /dev/null +++ b/sources/language/de_DE/help/help_misc.html @@ -0,0 +1,36 @@ +
    +Voreinstellungen für Benutzer festlegen +

    Nachdem Sie die Galerie erstellt haben, können Sie sie für Ihre Besucher konfigurieren.

    + +

    Jedem neuen Benutzer werden diese Einstellungen nach erfolgreicher Registrierung vorgegeben.

    +
    + +
    +Weitere Hilfen +

    + Piwigo hat viele weitere Features und noch mehr können über Plugins hinzugefügt werden. + Fast alle Administrationsseiten haben eigene Hilfeseiten, die über das Fragezeichensymbol + (?) aufgerufen werden können. +

    +

    + Falls Sie Fragen haben, heißt Sie die Piwigo-Community in ihrem + Forum herzlich willkommen. +

    +
    diff --git a/sources/language/de_DE/help/help_permissions.html b/sources/language/de_DE/help/help_permissions.html new file mode 100644 index 0000000..cb7bb8b --- /dev/null +++ b/sources/language/de_DE/help/help_permissions.html @@ -0,0 +1,84 @@ +
    +Zugriffsrechte auf Fotos +

    + Jedem Foto ist eine Datenschutzstufe (entsprechend einem Türschloss) zugewiesen, + genauso wie jeder Benutzer eine bestimmte Datenschutzstufe besitzt (entsprechend einem Schlüssel). + Es gibt fünf Datenschutzstufen: +

    +
      +
    1. Keine Berechtigung
    2. +
    3. Kontakte
    4. +
    5. Freunde (eine Stufe höher als Kontakte)
    6. +
    7. Familie (eine Stufe höher als Freunde)
    8. +
    9. Administratoren (die höchste Datenschutzstufe)
    10. +
    +

    + Die höhere Stufe erbt alle Berechtigungen der niedrigeren Stufen. + Für einen Benutzer gilt: Je höher seine Datenschutzstufe, desto mehr Fotos kann er sehen. + Ein Benutzer, der in einem Album keine Berechtigungen für ein Foto hat, + kann weder das Album selbst, noch den Titel des Albums sehen. +

    + + + +

    + Ein Beispiel: Wenn dem Foto "peter_hochzeit-0024.jpg" die Datenschutzstufe "Familie" zugewiesen ist, dann kann +

    +
      +
    • Peter, der die Stufe "Administrator" besitzt, das Foto sehen, weil "Administratoren" alle Fotos sehen können;
    • +
    • Elisabeth, die die Einstufung "Familie" besitzt, das Foto ebenfalls sehen;
    • +
    • Marie, die als "Freund" eingestuft ist, das Foto nicht sehen.
    • +
    + +

    + Die Datenschutzstufe eines Benutzers ist eine Eigenschaft des Benutzerkontos, die Sie in der Benutzerliste unter + Administration » Benutzer » Verwalten + sehen und bearbeiten können. Die Datenschutzstufe eines Fotos ist eine Eigenschaft, die beim Hochladen des Bildes oder auch später + festgelegt werden kann. +

    +
    + +
    +Erweiterte Zugriffsrechte auf private Alben + +

    + Wenn die vordefinierten Datenschutzstufen nicht Ihren Bedürfnissen entsprechen, haben Sie auch die Möglichkeit, + Benutzern oder Gruppen (siehe nächste Hilfeseite) + gesonderte Zugriffsrechte auf sogenannte private Alben zu vergeben. +

    + +

    + Sie können problemlos Berechtigungen für private Alben und Datenschutzstufen für Fotos parallel verwenden. + Beachten Sie aber, dass ein Benutzer zu einer Berechtigung für ein privates Album ebenfalls die nötige + Datenschutzstufe haben muss, um das Foto sehen zu können. +

    + +

    + Um Berechtigungen eines Albums gesondert zu verwalten, müssen Sie die Zugangsart des Albums auf privat setzen. + Sie können entweder für ein einzelnes Album unter + Administration » Alben » Verwalten + die Albuminformationen bearbeiten und die Zugangsart ändern oder indem Sie diese Eigenschaft für mehrere Alben unter + Administration + » Alben » Eigenschaften » Öffentlich / Privat festlegen. +

    + +

    + Wenn ein Album als "privat" markiert ist, können Sie die Berechtigungen für Benutzer und Gruppen an drei + unterschiedlichen Stellen vornehmen: +

    + + +
    diff --git a/sources/language/de_DE/help/help_virtual_links.html b/sources/language/de_DE/help/help_virtual_links.html new file mode 100644 index 0000000..4efa9e0 --- /dev/null +++ b/sources/language/de_DE/help/help_virtual_links.html @@ -0,0 +1,13 @@ +

    + Fotos werden normalerweise in dem Album angezeigt, in das sie hochgeladen wurden. +

    +

    + Man kann Fotos auch in einem zweiten Album anzeigen, ohne sie zu duplizieren. Verbinden Sie das Bild einfach mit einem anderen + Album unter "Informationen ändern" (für Administratoren direkt aus der Galerie aufrufbar). +

    +

    + Virtuelle Alben beruhen auf folgendem Konzept: Ihnen sind keine eigenen Verzeichnisse zugeordnet. Erstellen Sie ein + virtuelles Album unter Alben » Verwalten. +

    + + diff --git a/sources/language/de_DE/help/history.html b/sources/language/de_DE/help/history.html new file mode 100644 index 0000000..1256516 --- /dev/null +++ b/sources/language/de_DE/help/history.html @@ -0,0 +1,38 @@ +

    Statistik

    + +

    + Hier können Sie die Besucherstatistik Ihrer Bildergalerie einsehen. + Grundlage der statistischen Erfassung sind die Voreinstellungen unter + Administration » Konfiguration » Optionen » Statistik +

    + +

    Statistik

    +

    + Hier können Sie Jahres-, Monats- und Tagesstatistiken abrufen. +

    + +

    Suchen

    +

    Hier können Sie Detailanalysen über Statistikfilter erstellen: +

      +
    • + Filter "Datum-Enddatum":: + Legen Sie den Zeitraum fest, den Sie statistisch erfassen wollen. +
    • +
    • + Filter "Elementtyp": + Welcher Elementtyp soll statistisch ausgewertet werden? +
    • +
    • + Filter "Benutzer": + Welcher Benutzer soll statistisch ausgewertet werden? +
    • +
    • + Filter "Name der Datei": + Welche Datei soll statistisch ausgewertet werden? + +
    • + Filter "Element-ID": + Welche Element-ID soll statistisch ausgewertet werden? +
    • +
    + diff --git a/sources/language/de_DE/help/index.php b/sources/language/de_DE/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/de_DE/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/de_DE/help/maintenance.html b/sources/language/de_DE/help/maintenance.html new file mode 100644 index 0000000..a931fc6 --- /dev/null +++ b/sources/language/de_DE/help/maintenance.html @@ -0,0 +1,74 @@ +

    Wartung

    + +

    + Um die Ladezeiten der Seiten zu optimieren, verwendet Piwigo einen + Cache. Zum Beispiel wird die Information über die Anzahl der Fotos in + einem Album in der Datenbank zwischengespeichert, statt sie jedesmal + zu zählen. Im Normalfall sollte diese Information immer korrekt sein, + jedoch kann es auch vorkommen, dass die zwischengespeicherte Information + ungültig wird. +

    + +

    + Einige Informationen in der Datenbank werden mit der Zeit unbrauchbar. + Durch Löschen dieser nutzlosen Informationen können Sie Plattenplatz sparen. +

    + +
      +
    • + Aktualisiere Albeninformationen: + Für jedes Album werden die folgenden Informationen überprüft + und bei Bedarf angepasst: + Liste der Vorgängeralben, Anzahl der Fotos, Datum des aktuellsten Fotos, + Position relativ zu anderen Alben auf derselben Ebene, Position im kompletten Albenbaum. + Diese Funktion überprüft auch die Korrektheit der Vorschaubilder. +
    • +
    • + Aktualisiere Fotoinformationen: + Für jedes Foto werden die folgenden Informationen überprüft und bei Bedarf angepasst: + der komplette Pfad zum Foto, Durchschnittsbewertung. Achtung: Diese Funktion ist + nicht mit der Synchronisierung der Metadaten zu verwechseln. Diese müssen über + Verwaltung » Werkzeuge » Synchronisieren + oder auf der Bearbeitungsseite eines Bildes (z.B. über Foto) + synchronisiert werden. +
    • +
    • + Repariere und optimiere die Datenbank: + Jede Tabelle der Datenbank wird neu sortiert, repariert und optimiert. +
    • +
    • + Prüfe erneut die Integrität +
    • +
    +
      +
    • + Lösche nicht benutzte Stichwörter +
    • +
    + +
      +
    • + Lösche die History-Einträge: Löscht alle Zeilen + der history-Tabelle. Die Seite + Verwaltung » Werkzeuge » Statstik zeigt dann + keine Informationen mehr über vergangene Ereignisse an. Achtung: Alle Daten + gehen verloren, und es gibt keine Möglichkeit, sie wiederherzustellen. +
    • +
    • + Lösche die History-Zusammenfassung: + Löscht die Zusammenfassungen der Besucherstatistik, die + aus den History-Einträgen gewonnen werden. +
    • +
    • + Lösche Sitzungen: Löscht abgelaufene User-Sessions. +
    • +
    • + Lösche alle noch nicht verschickten Benachrichtigungen +
    • +
    • + Lösche die Suchhistorie +
    • +
    • + Lösche die kompilierten Vorlagen +
    • +
    diff --git a/sources/language/de_DE/help/notification_by_mail.html b/sources/language/de_DE/help/notification_by_mail.html new file mode 100644 index 0000000..16807e2 --- /dev/null +++ b/sources/language/de_DE/help/notification_by_mail.html @@ -0,0 +1,19 @@ +

    Benachrichtigung

    +

    + Einstellungen für das Versenden von Benachrichtigungsmails an die Benutzer.
    Zugänglich nur für Administratoren. +

    + +

    Parameter

    +

    + Sendeoptionen +

    + +

    Bestätigen

    +

    + Hinzufügen/Entfernen von Benutzern für die Benachrichtigung per E-Mail +

    + +

    Sende

    +

    + E-Mail-Benachrichtigung an registrierte Benutzer versenden +

    diff --git a/sources/language/de_DE/help/permalinks.html b/sources/language/de_DE/help/permalinks.html new file mode 100644 index 0000000..16bafd3 --- /dev/null +++ b/sources/language/de_DE/help/permalinks.html @@ -0,0 +1,7 @@ +

    Permalinks

    + +

    Sog. Permalinks werden verwendet, um die URLs zu den einzelnen Alben zu verkürzen bzw. lesbarer zu machen. Wurde einem Album ein Permalink zugeordnet, wird die ID des Albums in der URL nicht mehr benötigt.

    + +

    Wenn ein Permalink gelöscht wird, können Sie ihn in der Permalink-History speichern, so dass externe Links auf ihre Piwigo-Galerie weiterhin funktionieren. In der Permalink-History sehen Sie außerdem, wann ein Permalink gelöscht und zuletzt benutzt wurde. Die Anzahl der Zugriffe auf den Permalink wird dort ebenfalls protokolliert.

    + +

    Bitte beachten Sie, dass nur ein Permalink pro Album vergeben werden darf und ein Permalink nur einmal in der Permalink-History vorkommen kann.

    \ No newline at end of file diff --git a/sources/language/de_DE/help/photos_add_ftp.html b/sources/language/de_DE/help/photos_add_ftp.html new file mode 100644 index 0000000..5dcee02 --- /dev/null +++ b/sources/language/de_DE/help/photos_add_ftp.html @@ -0,0 +1,100 @@ +
    + + Schnellstart FTP-Upload + +
      +
    1. + Erstellen Sie ein neues Verzeichnis auf Ihrem Computer. +
    2. +
    3. + Kopieren Sie einige Fotos in dieses Verzeichnis und verkleineren Sie die Bilder auf + eine webtaugliche Größe. Achtung: Im Datei- und Verzeichnisnamen dürfen + nur Buchstaben, Zahlen, "-", "_" und "." vorkommen. Leerzeichen, Umlaute, "ß" und + Buchstaben mit Akzent sind nicht erlaubt. + Zwischen Groß- und Kleinschreibung wird unterschieden. +
    4. +
    5. + Kopieren Sie das Verzeichnis mit einem FTP-Programm in das Verzeichnis "galleries" + Ihrer Piwigo-Installation. +
    6. +
    7. + Gehen Sie zu Verwaltung und klicken Sie auf + den großen Button "Schnelle Synchronisierung". +
    8. +
    + +

    Herzlichen Glückwunsch! Sie haben das erste Album in Ihrer Piwigo-Fotogalerie erstellt.

    + +
    + +
    + Verzeichnis- und Dateiorganisation von Piwigo +
      +
    • +

      + Die Albenverzeichnisse sind im Piwigo-Verzeichnis "galleries" untergebracht. + Im Folgenden ist der Verzeichnisbaum einer kleinen Galerie dargestellt: +

      +
      +galleries
      +|-- Hochzeit
      +|   |-- Trauung
      +|   |   |-- Ankunft
      +|   |   |   |-- Paul.jpg
      +|   |   |   +-- Sarah.jpg
      +|   |   +-- Abfahrt
      +|   |       +-- Paul-und-Sarah.jpg
      +|   +-- Feier
      +|       |-- tanzen001.jpg
      +|       |-- tanzen002.jpg
      +|       +-- tanzen003.jpg
      ++-- Flitterwochen
      +    |-- Hotel.png
      +    |-- Video-aus-dem-Flugzeug.avi
      +    +-- pwg_representative
      +        +-- Video-aus-dem-Flugzeug.jpg
      +
      +
    • + +
    • + Außer dem Verzeichnisse "pwg_representative" erzeugt jedes + Unterverzeichnis ein neues Album in der Galerie. + Es kann beliebig viele Unterverzeichnisse (Unteralben) geben. +
    • + +
    • + Grundsätzlich wird jedes Piwigo-Element durch eine Datei verkörpert. + + Eine Datei kann ein Piwigo-Element sein, wenn deren Endung in den + Konfigurationsparameter file_ext der Datei + include/config_default.inc.php eingetragen ist. + + Eine Datei kann ein Piwigo-Bild sein, wenn deren Endung in den Konfigurationsparameter + picture_ext der Datei include/config_default.inc.php + eingetragen ist. +
    • + +
    • + Alle Elemente, die keine Bilder sind, wie z.B. Videos, Sounds oder Textdateien, + werden von einem vorgegebenen Symbol, das für die Erweiterung des Dateinamens steht, + dargestellt. Sie können auch selbst ein Vorschaubild erstellen (siehe die Datei Video-aus-dem-Flugzeug.jpg im Beispiel oben). +
    • + +
    • + Achtung: Der Name für ein Verzeichnis oder eine Datei darf + nur aus Buchstaben, Zahlen, "-", "_" und "." bestehen. Leerzeichen, Umlaute, "ß" + und Buchstaben mit Akzent sind nicht erlaubt. + Zwischen Groß- und Kleinschreibung wird unterschieden. +
    • + +
    • + Haben Sie die Bilder in die richtigen Verzeichnisse hochgeladen, + loggen Sie sich ein und gehen Sie zu + Verwaltung » Alben » Synchronisieren. +
    • + +
    + +
    + diff --git a/sources/language/de_DE/help/search.html b/sources/language/de_DE/help/search.html new file mode 100644 index 0000000..0d244ef --- /dev/null +++ b/sources/language/de_DE/help/search.html @@ -0,0 +1,22 @@ +

    Suche

    + +

    Auf dieser Seite können Sie die Galerie nach Bildern durchsuchen

    + +
    + +
    Suche nach Wörtern
    +
    Sucht nach dem angegebenen Wort/den angegebenen Wörtern in allen Attributen Ihrer Bilder. + Verwenden Sie * als Platzhalter.
    + +
    Suche nach Autor
    +
    Verwenden Sie * als Platzhalter.
    + +
    Suche nach Datum
    +
    Wählen Sie ein Start- und/oder Enddatum für Ihre Suche. Lassen Sie das + Datum leer, wenn Sie ein Element suchen, das vor einem bestimmten Zeitpunkt erstellt wurde. + Das Jahr muss mit 4 Ziffern angegeben werden (z.B. 2005).
    + +
    Suche in den Alben
    +
    Beschränken Sie die Suche auf ein oder mehrere Alben. Um auch in den Unteralben eines Albums + zu suchen, wählen Sie die Option "Suche in den Unteralben".
    +
    diff --git a/sources/language/de_DE/help/synchronize.html b/sources/language/de_DE/help/synchronize.html new file mode 100644 index 0000000..91ed1e6 --- /dev/null +++ b/sources/language/de_DE/help/synchronize.html @@ -0,0 +1,17 @@ +

    Synchronisieren

    +
      +
    • + Es gibt zwei verschiedene Synchronisationsverfahren: "Verzeichnisse/Dateien" und "Datei- + Metadaten". "Verzeichnisse/Dateien" synchronisiert die vorhandenen Dateien mit der Datenbank. + Die Metadaten-Synchronisation aktualisiert Dateiinformationen, wie Dateigröße, Größe + in Pixeln, Exif- oder IPTC-Informationen. +
    • +
    • + Zuerst müssen immer die Verzeichnis- und Dateiinformationen synchronisiert werden. +
    • +
    • + Abhängig von der Belastung des Servers und der Menge der zu verwaltenden Dateien kann + die Synchronisierung einige Zeit in Anspruch nehmen, darum ist es auch möglich, Alben + einzeln zu synchronisieren. +
    • +
    diff --git a/sources/language/de_DE/help/user_list.html b/sources/language/de_DE/help/user_list.html new file mode 100644 index 0000000..f37495d --- /dev/null +++ b/sources/language/de_DE/help/user_list.html @@ -0,0 +1,33 @@ +

    Benutzer verwalten

    + +

    + Hier können Sie die registrierten Benutzer Ihrer Galerie verwalten. +

    + +

    Benutzer hinzufügen

    + +

    + Administratoren können eigenständig Benutzer hinzufügen. +

    + +

    Benutzerliste

    + +

    + Die Benutzerliste kann nach Benutzernamen(Eingabe eines * als Platzhalter), Status und/oder Gruppe gefiltert werden. + Die Benutzerliste kann nach Datum der Registrierung oder Benutzernamen in aufsteigender + oder absteigender Reihenfolge sortiert werden. +

    + +

    + In der Liste können Aktionen für einzelne Benutzer über das Anklicken von Symbolen gestartet werden. + Der Administrator kann die Zugriffsrechte auf private Alben verwalten und + Benutzerprofile einsehen und ändern. +

    + +

    + Unterhalb der Liste können Benutzer (Häkchen bei "bestätigen" setzen!) gelöscht werden. + Darunter können auch Status, Gruppenzugehörigkeit, wichtige Eigenschaften + und Profileinstellungen von mehreren Benutzern zugleich geändert werden. + Unter "Ziel:" wird bestimmt, ob die Änderungen für markierte Benutzer + (Standard) oder alle Benutzer übernommen wird. +

    \ No newline at end of file diff --git a/sources/language/de_DE/index.php b/sources/language/de_DE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/de_DE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/de_DE/install.lang.php b/sources/language/de_DE/install.lang.php new file mode 100644 index 0000000..110d597 --- /dev/null +++ b/sources/language/de_DE/install.lang.php @@ -0,0 +1,69 @@ +Piwigo message board.'] = 'Brauchen Sie Hilfe? Stellen Sie Ihre Fragen im Piwigo-Forum.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Kontakt-E-Mail-Adresse (nur für angemeldete Benutzer sichtbar)'; +$lang['PHP 5 is required'] = 'PHP5 ist erforderlich'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Warscheinlich läuft auf Ihrem Server die PHP-Version %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo wird versuchen, Ihre Konfiguration auf PHP5 umzustellen. Zu diesem Zweck wird eine .htaccess-Datei erstellt oder geändert.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Hinweis: Sie können Ihre Konfiguration selbst ändern. Starten Sie Piwigo danach neu.'; +$lang['Try to configure PHP 5'] = 'Versuche PHP5 zu konfigurieren'; +$lang['Sorry!'] = 'Sorry!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ist nicht in der Lage PHP5 zu konfigurieren.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Sie können Kontakt zu ihrem Hosting-Provider aufnehmen und um Unterstützung bitten zur Umstellung auf PHP 5."; +$lang['Hope to see you back soon.'] = 'Hoffentlich sehen wir uns bald wieder!'; +$lang['Congratulations, Piwigo installation is completed'] = 'Glückwunsch! Sie haben Piwigo erfolgreich installiert.'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Sie können auch den Text in der Box unten kopieren und in die Datei local/config/database.inc.php einfügen. (Warnung: database.inc.php darf nur den reinen Text ohne Zeilenumbrüche und Leerzeichen enthalten.)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Die Erstellung der Datei local/config/database.inc.php ist fehlgeschlagen.'; +$lang['Download the config file'] = 'Lade die Konfigurationsdatei herunter'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Sie können die Konfigurationsdatei herunterladen und in das Verzeichnis local/config ihrer Installation hochladen.'; +$lang['Just another Piwigo gallery'] = 'Meine Piwigo-Fotogalerie'; +$lang['Welcome to my photo gallery'] = 'Willkommen!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Besuchen Sie unser Forum, wenn Sie Hilfe benötigen: %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'Ihre neue Piwigo-Installation heißt sie willkommen!'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Sie können Kontakt mit Ihrem Provider aufnehmen und um Unterstützung bei der Umstellung auf PHP5 bitten.'; +$lang['localhost or other, supplied by your host provider'] = 'Local Host oder andere, bereit gestellt von deinem Provider.'; +?> \ No newline at end of file diff --git a/sources/language/de_DE/iso.txt b/sources/language/de_DE/iso.txt new file mode 100644 index 0000000..7fe8849 --- /dev/null +++ b/sources/language/de_DE/iso.txt @@ -0,0 +1 @@ +Deutsch [DE] \ No newline at end of file diff --git a/sources/language/de_DE/upgrade.lang.php b/sources/language/de_DE/upgrade.lang.php new file mode 100644 index 0000000..25e8c47 --- /dev/null +++ b/sources/language/de_DE/upgrade.lang.php @@ -0,0 +1,41 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Führen Sie eine Datenbanküberprüfung durch [Verwaltung>Werkzeuge>Wartung], falls Probleme auftreten sollten'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Nur Administratoren dürfen ein Upgrade durchführen. Bitte melden Sie sich unten an.'; +$lang['You do not have access rights to run upgrade'] = 'Sie haben nicht die erforderlichen Rechte, um ein Upgrade durchzuführen'; +$lang['All sub-albums of private albums become private'] = 'Alle Unteralben von privaten Alben werden privat'; +$lang['User permissions and group permissions have been erased'] = 'Alle Benutzer- und Gruppenberechtigungen wurden entfernt'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Es wurden nur das Vorschaubilder-Präfix und die E-Mail-Adresse des Webmasters aus der vorherigen Konfiguration übernommen'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Diese Seite schlägt vor, die Datenbank Ihrer alten Piwigo-Version zu aktualisieren. Der Upgrade-Assistent hat festgestellt, dass Sie gegenwärtig Version release %s (oder eine gleichwertige Version) benutzen.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Als Vorsichtsmaßnahme wurden folgende Plugins abgeschaltet. Überprüfen Sie, ob Plugin-Updates verfügbar sind, bevor Sie die Plugins wieder aktivieren:'; +$lang['In %s, before ?>, insert:'] = 'In der Datei %s vor ?> Folgendes einfügen:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Als Vorsichtsmaßnahme wurden folgende Themen abgeschaltet. Überprüfen Sie, ob Themen-Updates verfügbar sind, bevor Sie die Themen wieder aktivieren:'; +?> \ No newline at end of file diff --git a/sources/language/dv_MV/common.lang.php b/sources/language/dv_MV/common.lang.php new file mode 100644 index 0000000..c5d6cc8 --- /dev/null +++ b/sources/language/dv_MV/common.lang.php @@ -0,0 +1,137 @@ + \ No newline at end of file diff --git a/sources/language/dv_MV/dv_MV.jpg b/sources/language/dv_MV/dv_MV.jpg new file mode 100644 index 0000000..45a552a Binary files /dev/null and b/sources/language/dv_MV/dv_MV.jpg differ diff --git a/sources/language/dv_MV/index.php b/sources/language/dv_MV/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/dv_MV/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/dv_MV/iso.txt b/sources/language/dv_MV/iso.txt new file mode 100644 index 0000000..02c6681 --- /dev/null +++ b/sources/language/dv_MV/iso.txt @@ -0,0 +1 @@ +Dhivehi [MV] \ No newline at end of file diff --git a/sources/language/el_GR/about.html b/sources/language/el_GR/about.html new file mode 100644 index 0000000..f083462 --- /dev/null +++ b/sources/language/el_GR/about.html @@ -0,0 +1,18 @@ +

    Αυτή η σελίδα χρησιμοποιεί το Piwigo.

    + +

    Το Piwigo είναι ένα λογισμικό για δημιουργία φωτογραφικών γκαλερί στο διαδίκτυο, +χτισμένο από μια δραστήρια κοινότητα χρηστών και προγραμματιστών. +Μπορείτε να το φέρετε εύκολα στα μέτρα σας με τη χρήση διάφορων -ελεύθερων- επεκτάσεων. +Επιπλέον το Piwigo είναι λογισμικό ανοικτού κώδικα και διανέμεται ελεύθερα.

    + +

    Επισκεφθείτε τη σελίδα του Piwigo

    + +

    Η Ελληνική μετάφραση συντηρείται από τους χρήστες (αλφαβητικά): + +

    + .... .... χάρη σε αυτούς

    diff --git a/sources/language/el_GR/admin.lang.php b/sources/language/el_GR/admin.lang.php new file mode 100644 index 0000000..f30047c --- /dev/null +++ b/sources/language/el_GR/admin.lang.php @@ -0,0 +1,980 @@ +Flash uploader instead.'] = 'Χρησιμοποιείς τον uploader του φυλλομετρητή. Προβλήματα; Προσπάθησε το ανέβασμα μέσω Flash uploader.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Χρησιμοποιείς τον Flash uploader. Προβλήματα; Προσπάθησε το ανέβασμα μέσω φυλλομετρητή instead.'; +$lang['Exif extension not available, admin should disable exif use'] = 'Η προέκταση για τα exif δεν είναι διαθέσιμη, ο διαχειριστής θα απενεργοποιήσει την χρήση του exif'; +$lang['Hide'] = "Κρυφό"; +$lang['Level 1'] = "Επαφές"; +$lang['Level 2'] = "Φίλοι"; +$lang['Level 4'] = "Οικογένεια"; +$lang['Level 8'] = "Διαχειριστές"; +$lang['Set author'] = 'Ορισμός συντάκτη'; +$lang['Set creation date'] = 'Ορισμός ημέρας δημιουργίας'; +$lang['Set title'] = 'Ορισμός τίτλου'; +$lang['set to'] = 'Ορισμός σε'; +$lang['Settings'] = 'Ρυθμίσεις'; +$lang['show details'] = 'Εμφάνιση λεπτομερειών'; +$lang['Show info'] = 'Εμφάνιση πληροφοριών'; +$lang['Show menubar'] = 'Εμφάνιση γραμμής μενού'; +$lang['Simulation'] = 'Προσομείωση'; +$lang['singly represented'] = 'σταθερη μικρογραφία άλμπουμ'; +$lang['Site manager'] = 'Διαχείριση της ιστοσελίδας'; +$lang['Some themes and plugins may be not available yet.'] = 'Ορισμένα θέματα και πρόσθετα μπορεί να μην είναι διαθέσιμα ακόμα.'; +$lang['Some upgrades are available for extensions.'] = 'Μερικές αναβαθμίσεις είναι διαθέσιμες για τις επεκτάσεις.'; +$lang['Start pLoader and add your photos.'] = 'Εκκίνηση pLoader και προσθήκη φωτογραφιών.'; +$lang['Statistics'] = 'Στατιστικά'; +$lang['Status of user "%s" updated'] = 'Η κατάσταση του χρήστη "%s" ενημερώθηκε'; +$lang['Status'] = 'Κατάσταση'; +$lang['status'] = 'κατάσταση'; +$lang['Storage album'] = 'Αποθήκευση άλμπουμ'; +$lang['sub-albums'] = 'υπό-άλμπουμ'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Εγγραφή %s στο ενημερωτικό δελτίο ανακοινώσεων'; +$lang['Subscribe %s'] = 'Εγγραφή %s'; +$lang['Subscribe to notification by mail'] = 'Εγγραφή με κοινοποίηση μέσω ηλεκτρονικού ταχυδρομείου'; +$lang['Subscribe'] = 'Εγγραφή'; +$lang['Subscribe/unsubscribe users'] = 'Εγγραφή/διαγραφή χρηστών'; +$lang['Subscribed'] = 'Εγγεγραμένος'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Τα μέλη μπορεί να εμφανίζονται (διαθέσιμα) μόνο αν υπάρχουν νέα στοιχεία για ενημέρωση.'; +$lang['Sum of rates'] = 'Άθροισμα των τιμών'; +$lang['Summary'] = 'Περίληψη'; +$lang['Support'] = 'Υποστήριξη'; +$lang['Albums authorized thanks to group associations'] = 'Τα άλμπουμς εξουσιοδοτήθηκαν εξαιτίας των σχέσεων του γκρουπ.'; +$lang['Albums automatically sorted'] = 'Το άλμπουμ ταξινομήθηκε αυτόματα'; +$lang['albums deleted in the database'] = 'Το άλμπουμ διαγράφηκε από τη βάση δεδομένων.'; +$lang['All extensions are up to date.'] = 'Όλα τα πρόσθετα ενημερώθηκαν.'; +$lang['All languages are up to date.'] = 'Όλες οι γλώσσες έχουν ενημερωθεί.'; +$lang['All optimizations have been successfully completed.'] = 'Όλες οι βελτιώσεις έχουν ολοκληρωθεί επιτυχώς.'; +$lang['All plugins are up to date.'] = 'Όλα τα plugins έχουν ενημερωθεί.'; +$lang['All themes are up to date.'] = 'Όλα τα θέματα έχουν ενημερωθεί.'; +$lang['all'] = 'Όλα'; +$lang['Allow rating'] = 'Να επιτρέπεται η βαθμολογία'; +$lang['Allow user customization'] = 'Να επιτρέπεται η παραμετροποίηση από τους χρήστες'; +$lang['Allow user registration'] = 'Να επιτρέπεται η εγγραφή χρηστών'; +$lang['Allow users to delete their own comments'] = 'Αν επιτρέπεται οι χρήστες να σβήνουν τα δικά τους σχόλια'; +$lang['Allow users to edit their own comments'] = 'Να επιτρέπεται οι χρήστες να διορθώνουν τα δικά τους σχόλια'; +$lang['an error happened'] = 'Συνέβη ένα σφάλμα'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Συνέβη ένα λάθος κατά την εξαγωγή. Παρακαλούμε ελέγξτε τα δικαιώματα των αρχείων της εγκατάστασης του piwigo.
    Πάτα εδώ να δεις τα λάθη.'; +$lang['An error has occured during upgrade.'] = 'Συνέβη ένα λάθος κατά την αναβάθμιση.'; +$lang['An error occured during extraction (%s).'] = 'Συνέβη ένα λάθος κατά την διάρκεια της εξαγωγής των αρχείων (%s).'; +$lang['An information email was sent to group "%s"'] = 'Email πληροφόρησης έχουν αποσταλεί στην ομάδα "%s"'; +$lang['and'] = 'και'; +$lang['Anomaly'] = 'Ανωμαλία'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Τέλος πάντων μόνο οι webmasters μπορούν να δουν αυτήν την καρτέλα, όχι οι administrators.'; +$lang['Apply action'] = 'Εφαρμογή δράσης'; +$lang['Apply selected corrections'] = 'Εφαρμογή επιλεγμένων διορθώσεων'; +$lang['Apply to sub-albums'] = 'Επιλογή υπό-άλμπουμ'; + +$lang['%s has been successfully updated.'] = '%s έχει ενημερωθεί με επιτυχία.'; +$lang['%s photos can not be regenerated'] = '%s φωτογραφίες δεν μπορούν να αναπαραχθούν'; +$lang['%s photos have been regenerated'] = '%s φωτογραφίες έχουν αναπαραχθεί'; +$lang['(this tag will be deleted)'] = '(αυτή η ετικέτα θα διαγραφεί)'; +$lang['Activate comments'] = 'Ενεργοποίηστε τα σχόλια'; +$lang['Add tags'] = 'Προσθέστε ετικέτες'; +$lang['Add write access to the "%s" directory'] = 'Προσθέστε δικαιώματα εγγραφής στον κατάλογο "%s"'; +$lang['Add/delete a permalink'] = 'Προσθέστε/Διαγράψτε μόνιμο σύνδεσμο'; +$lang['Add'] = 'Προσθέστε'; +$lang['Administration Home'] = 'Αρχική σελίδα διαχείρησης'; +$lang['Advanced features'] = 'Προηγμένες λειτουργίες'; +$lang['Album "%s" has been added'] = 'Το λεύκωμα "%s" έχει προστεθεί'; +$lang['Album "%s" now contains %d photos'] = 'Το λεύκωμα "%s" περιέχει τώρα %d φωτογραφίες'; +$lang['Album list management'] = 'Διαχείριση Λίστας Λευκωμάτων'; +$lang['Album manual order was saved'] = 'Το εγχειρίδιο λευκώματος έχει αποθηκευτεί'; +$lang['Album name'] = 'Όνομα Λευκώματος'; +$lang['Album photos associated to the following albums: %s'] = 'Λευκώματα φωτογραφιών που σχετίζονται με τα ακόλουθα λευκώματα:%s'; +$lang['Album updated successfully'] = 'Το λεύκωμα ενημερώθηκε με επιτυχία'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Κατά προσέγγιση μέγιστη ανάλυση: %dM pixels (αυτό είναι %dx%d pixels).'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Είστε βέβαιοι ότι θέλετε να εγκαταστήσετε αυτήν την αναβάθμιση; Θα πρέπει να ελέγξετε αν αυτή η έκδοση δεν χρειάζεται πριν απεγκατάσταση.'; +$lang['Are you sure you want to delete this plugin?'] = 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το πρόσθετο;'; +$lang['Are you sure you want to install this plugin?'] = 'Είστε βέβαιοι ότι θέλετε να εγκαταστήσετε αυτό το πρόσθετο;'; +$lang['Associate to album'] = 'Συσχετίστε με το λεύκωμα'; +$lang['Associated'] = 'Συσχετίζεται με'; +$lang['Authorize users to add comments on selected albums'] = 'Εξουσιοδοτήστε χρήστες να προσθέτουν σχόλια στα επιλεγμένα λευκώματα'; +$lang['Authorized'] = 'Εξουσιοδοτημένος'; +$lang['Automatic correction'] = 'Αυτόματη διόρθωση'; +$lang['Available only with HTML format'] = 'Διατίθεται μόνο με μορφή HTML'; +$lang['Batch Manager'] = 'Διαχείρηση ενεργειών κατά δέσμη'; +$lang['Bound Theme'] = 'Συνδεδεμένο Θέμα'; +$lang['By %s'] = 'Με %s'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Από προεπιλογή, το Piwigo θα δημιουργήσει μια νέα ιστοσελίδα από τη HD (υψηλής ευκρίνειας) έκδοση των φωτογραφιών σας.'; +$lang['By rank'] = 'Βάσει σειράς'; +$lang['Caddie management'] = 'Διαχείρηση Caddie'; +$lang['added'] = 'προστέθηκε'; +$lang['albums added in the database'] = 'το λεύκωμα προστεθηκε στη βάση δεδομένων'; +$lang['associate to group'] = 'Συσχετίστε με την ομάδα'; +$lang['automatic order'] = 'αυτόματη σειρά'; +$lang['average time'] = 'μέσος χρόνος'; +$lang['between'] = 'ανάμεσα'; +$lang['Caddie'] = 'Καλάθι'; +$lang['Can\'t connect to server.'] = 'Σύνδεση με τον διακομιστή αδύνατη.'; +$lang['Can\'t create temporary file.'] = 'Προσωρινό αρχείο δεν μπορεί να δημιουργηθεί.'; +$lang['Can\'t download archive.'] = 'Το συμπιεσμένο αρχείο δεν μπορεί να κατέβει.'; +$lang['Can\'t read or extract archive.'] = 'Το συμπιεσμένο αρχείο δεν μπορεί να διαβαστεί ή να εξαχθεί.'; +$lang['Cannot delete the old permalink !'] = 'Ο παλιός μόνιμος σύνδεσμος δεν μπορεί να διαγραφεί!'; +$lang['Change Admin Colors'] = 'Αλλαγή χρωμάτων στο περιβάλλον διαχείρησης'; +$lang['Check all'] = 'Ελέγξτε όλα'; +$lang['Check automatic corrections'] = 'Ελέγξτε τις αυτόματες διορθώσεις'; +$lang['Check for updates'] = 'Έλεγχος για ενημερώσεις'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Ο έλεγχος για αναβάθμιση απέτυχε για άγνωστους λόγους.'; +$lang['Check for upgrade'] = 'Έλεγχος για αναβάθμιση'; +$lang['Check integrity'] = 'Έλεγχος ακεραιότητας'; +$lang['Choose an action'] = 'Επιλέξτε μια ενέργεια'; +$lang['Choose an option'] = 'Επιλέξτε μια επιλογή'; +$lang['Classic display'] = 'Κλασική οθόνη'; +$lang['Comments for all'] = 'Σχόλια για όλους'; +$lang['Complementary mail content'] = 'Συμπληρωματικό περιεχόμενο ταχυδρομείου'; +$lang['Configuration'] = 'Διαμόρφωση'; +$lang['clean'] = 'εκκαθάριση'; +$lang['Confirm merge'] = 'Επιβεβαίωση συγχώνευσης'; +$lang['Continue processing treatment'] = 'Συνεχίστε με την παρούσα συμπεριφορά'; +$lang['Correction applied with error'] = 'Διόρθωση εφαρμόστηκε με λάθη'; +$lang['Correction applied with success'] = 'Διόρθωση εφαρμόστηκε επιτυχώς'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Η ανωμαλία που διορθώθηκε δεν μπορεί πλέον να αγνοηθεί'; +$lang['Correction'] = 'Διόρθωση '; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Δημιουργία καταλόγου "%s" στη ρίζα της εγκατάστασης του Piwigo'; +$lang['Create this site'] = 'Δημιουργήστε την ιστοσελίδα'; +$lang['Create'] = 'Δημιουργήστε'; +$lang['Crop'] = 'ενσωμάτωση'; +$lang['Current name'] = 'Τρέχων όνομα'; +$lang['Database synchronization with files'] = 'Συγχρονισμός βάσης δεδομένων με τα αρχεία'; +$lang['Database'] = 'Βαση Δεδομένων'; +$lang['Date'] = 'Ημερομηνία'; +$lang['Day'] = 'Ημέρα'; +$lang['Deactivate all'] = 'Απενεργοποίηση όλων'; +$lang['Deactivate'] = 'Απενεργοποίηση'; +$lang['confirm'] = 'επιβεβαίωση'; +$lang['created'] = 'δημιουργήθηκε'; +$lang['Default comments order'] = 'προκαθορισμένη σειρά σχολίων'; +$lang['Default display'] = 'προκαθορισμένη προβολή οθόνης'; +$lang['Default photos order'] = 'προκαθορισμένη σειράς φωτογραφιών'; +$lang['Default user cannot be deleted'] = 'Ο προκαθορισμένος χρήστης δεν μπορεί να διαγραφεί'; +$lang['Default user does not exist'] = 'Ο προκαθορισμένος χρήστης δεν υπάρχει'; +$lang['Delete Representant'] = 'Διαγραφή μικρογραφίας λευκώματος'; +$lang['Delete orphan tags'] = 'Διαγραφή ορφανών ετικετών'; +$lang['Delete selected photos'] = 'Διαγραφή επιλεγμένων φωτογραφιών'; +$lang['Delete selected tags'] = 'Διαγραφή επιλεγμένων ετικετών'; +$lang['Delete selected users'] = 'Διαγραφή επιλεγμένων χρηστών'; +$lang['Delete this language'] = 'Διαγραφή αυτής της γλώσσας'; +$lang['Delete this theme'] = 'διαγράψετε αυτό το θέμα'; +$lang['Deleted on'] = 'διαγραφεί'; +$lang['Deletions'] = 'Διαγραφές'; +$lang['Deny selected groups'] = 'Άρνηση επιλεγμένων ομάδων'; +$lang['Deny selected users'] = 'Άρνηση επιλεγμένων ομάδων'; +$lang['Description'] = 'Περιγραφή'; +$lang['Detailed informations'] = 'Λεπτομερείς πληροφορίες'; +$lang['Directory does not exist'] = 'Ο Κατάλογος δεν υπάρχει'; +$lang['Directory'] = 'Κατάλογος'; +$lang['Discover album:'] = 'Ανακαλύψτε λεύκωμα:'; +$lang['Display options'] = 'Επιλογές εμφάνισης'; +$lang['Dissociate from album'] = 'Αποσυνδέστε από το λεύκωμα'; +$lang['Dissociated'] = 'Αποσυνδεδεμένο'; +$lang['Do you want to activate anyway?'] = 'Θέλετε να ενεργοποιήσετε ούτως ή άλλως;'; +$lang['Documentation'] = 'Τεκμηρίωση'; +$lang['Does not represent'] = 'Δεν είναι μικρογραφία για'; +$lang['Download,'] = 'Κατεβάστε,'; +$lang['Downloads'] = 'Λήψεις'; +$lang['Drag to re-order'] = 'Κάντε κλικ και σύρετε για εκ νέου στοίχηση'; +$lang['Drop into album'] = 'Επιλέξτε ένα λεύκωμα'; +$lang['Dump Database'] = 'Εξαγωγή Βάσης Δεδομένων'; +$lang['Duplicates'] = 'Διπλα Αντίγραφα'; +$lang['Edit album permissions'] = 'Επεξεργασία δικαιωμάτων λευκώματος'; +$lang['Edit album'] = 'Επεξεργασία λευκώματος'; +$lang['Edit photo information'] = 'Επεξεργασία πληροφοριών φωτογραφίας'; +$lang['Edit ranks'] = 'Επεξεργασία αξιολογίσεων'; +$lang['Edit selected tags'] = 'Επεξεργασία επιλεγμένων ετικετών'; +$lang['Edit tags'] = 'Επεξεργασία ετικετών'; +$lang['Element type'] = 'Τύπος στοιχείου'; +$lang['Element'] = 'Στοιχείο '; +$lang['Email administrators when a comment is deleted'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένα σχόλιο διαγράφεται'; +$lang['Email administrators when a comment is modified'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένα σχόλιο επεξεργάστηκε'; +$lang['Email admins when a comment requires validation'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένα σχόλιο χρειάζετε επικύρωση'; +$lang['Email admins when a new user registers'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν ένας χρήστης εγγράφεται'; +$lang['Email admins when a valid comment is entered'] = 'Αποστολή ηλ. ταχυδρομείου στούς διαχειριστές όταν εισάγεται ένα έγκυρο σχόλιο'; +$lang['Environment'] = 'Περιβάλλον '; +$lang['Error list'] = 'Λίστα των σφαλμάτων'; +$lang['Error on file "%s" : %s'] = 'Σφάλμα στο αρχείο "%s":%s'; +$lang['Error when sending email to %s [%s].'] = 'Σφάλμα κατά την αποστολή e-mail στο%s [%s].'; +$lang['default values'] = 'προκαθορισμένες τιμές'; +$lang['default'] = 'προκαθορισμένο'; +$lang['delete album'] = 'Διαγράψτε το λεύκωμα'; +$lang['delete photo'] = 'διαγραφή φωτογραφίας'; +$lang['delete this site and all its attached elements'] = 'διαγράψετε αυτό το site και όλες τις σχετικές πληροφορίες'; +$lang['deleted'] = 'διαγραμμένο'; +$lang['delete'] = 'διαγραφή'; +$lang['directories + files'] = 'κατάλογοι + αρχεία'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'εμφανίζονται μέγιστες πληροφορίες (λευκώματα που προστέθηκαν και φωτογραφίες, διαγραμένα λευκώματα και φωτογραφίες)'; +$lang['display'] = 'Εμφάνιση'; +$lang['dissociate from group'] = 'Αποσυνδέστε από την ομάδα'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ΣΦΑΛΜΑ: ΑΥΤΟ ΤΟ ΠΡΟΣΘΕΤΟ ΛΕΙΠΕΙ ΑΛΛΑ ΕΙΝΑΙ ΕΓΚΑΤΕΣΤΗΜΕΝΟ! ΑΠΕΓΚΑΤΑΣΤΗΣΤΕ ΤΩΡΑ.'; +$lang['ERROR'] = 'ΣΦΑΛΜΑ'; +$lang['Errors caption'] = 'Λάθος λεζάντες'; +$lang['Everybody'] = 'Όλοι'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Ο χρόνος εκτέλεσης έχει τελειώσει, η επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Ο χρόνος εκτέλεσης έχει υπερβεί, η επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].'; +$lang['Extend for templates'] = 'Ανεπτυγμένα πρότυπα'; +$lang['Extensions Update'] = 'Ενημέρωση Επεκτάσεων'; +$lang['FTP + Synchronization'] = 'Ο χρόνος εκτέλεσης έχει υπερβεί, η επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].'; +$lang['Failed to write file to disk'] = 'Αποτυχία εγγραφής αρχείου στο δίσκο'; +$lang['File upload stopped by extension'] = 'Φόρτωση αρχείου διακόπηκε από επέκταση'; +$lang['File/directory read error'] = 'λάθος ανάγνωσης Αρχείου / Καταλόγου '; +$lang['File'] = 'Αρχείο'; +$lang['Find a new representant by random'] = 'Βρείτε μια νεα τυχαία μικρογραφία λευκώματος'; +$lang['Follow Orientation'] = 'Ακολουθήστε Προσανατολισμό'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Τα ακόλουθα πρόσθετα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Τα ακόλουθα Θέματα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:'; +$lang['Forbid this language to users'] = 'Λάθος λεζάντες'; +$lang['Forbid this theme to users'] = 'σφάλματα κατά το συγχρονισμό'; +$lang['Forbidden'] = 'ήδη συγχρονισμένα φωτογραφίες'; +$lang['Form'] = 'Όλοι'; +$lang['GD library is missing'] = 'υπάρχον λεύκωμα'; +$lang['GD version'] = 'Ανεπτυγμένα πρότυπα'; +$lang['Gallery title'] = 'Ο χρόνος εκτέλεσης έχει τελειώσει, η επεξεργασία πρέπει να συνεχιστεί [Εκτιμώμενος χρόνος:%d δευτερόλεπτα].'; +$lang['General statistics'] = 'Ενημέρωση Επεκτάσεων'; +$lang['Get Support on Piwigo Forum'] = 'Αποτυχία εγγραφής αρχείου στο δίσκο'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Φόρτωση αρχείου διακόπηκε από επέκταση'; +$lang['Go to %s or %s for more informations'] = 'λάθος ανάγνωσης Αρχείου / Καταλόγου '; +$lang['Go to'] = 'Βρείτε μια νεα τυχαία μικρογραφία λευκώματος'; +$lang['Grant selected groups'] = 'πρώτη φωτογραφία προστέθηκε στις %s'; +$lang['Grant selected users'] = 'Ακολουθήστε Προσανατολισμό'; +$lang['Graphics Library'] = 'Τα ακόλουθα πρόσθετα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:'; +$lang['Group management'] = 'Διαχείριση Ομάδων'; +$lang['Group name'] = 'Όνομα Ομάδας'; +$lang['Group'] = 'Ομάδα'; +$lang['Groups'] = 'Ομάδες'; +$lang['Guest Settings'] = 'Ρυθμίσεις Επισκέπτη'; +$lang['Guest cannot be deleted'] = 'Επισκέπτες δεν μπορούν να διαγραφούν'; +$lang['Guests'] = 'Επισκέπτες'; +$lang['Height'] = 'Ύψος'; +$lang['Hello,'] = 'Γεια, '; +$lang['Hello'] = 'Γεια'; +$lang['Help Me'] = 'Βοηθήστε με'; +$lang['High definition enabled'] = 'Υψηλή ευκρίνεια ενεργοποιημένη'; +$lang['High definition'] = 'Υψηλή ευκρίνεια'; +$lang['History'] = 'Ιστορικό'; +$lang['Hit'] = 'Χτυπήματα'; +$lang['Hour'] = 'Ώρες'; +$lang['I decide to update anyway'] = 'Έχω Αποφάσισει να ενημερώσω ούτως ή άλλως'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Εάν δεν είναι διαθέσιμη HD και αν το τρέχον μέγεθος του ιστού είναι μεγαλύτερο από τις διαστάσεις αλλαγής μεγέθους, Piwigo θα το μετατρέψει ως HD και θα δημιουργήσει μια συρρικνωμένη σε μέγεθος φωτογραφία αντί αυτού.'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Εάν αντιμετωπίσετε προβλήματα ή έχετε οποιαδήποτε ερώτηση, παρακαλούμε να στείλετε ένα μήνυμα στο'; +$lang['Ignore All'] = 'Παράβλεψη όλων'; +$lang['Ignore selected anomalies'] = 'Παράβλεψη επιλεγμένων ανωμαλιών'; +$lang['Ignore this update'] = 'Αγνοήστε αυτήν την ενημερωμένη έκδοση'; +$lang['Image Quality'] = 'Ποιότητα της εικόνας'; +$lang['Image id'] = 'id εικόνας'; +$lang['Images manual order was saved'] = 'Η χειροκίνητη διάταξη εικόνων αποθηκεύτικε'; +$lang['Impossible automatic correction'] = 'Αυτόματη διόρθωση αδύνατη'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Αυτό το θέμα δεν θα μπορούσε να ενεργοποιηθεί, επειδή το θέμα της μητρικής λείπει:%s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Αδύνατο να απενεργοποιήσετε αυτή τη γλώσσα, ορίστε πρώτα μια άλλη γλώσσα ως προεπιλεγμένη.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Αδύνατο να απενεργοποιήσετε αυτή τη γλώσσα,χρειάζετε τουλάχιστον μια γλώσσα'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Αδύνατο να απενεργοποιήσετε αυτό το θέμα, χρειάζετε τουλάχιστον ένα θέμα'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Αυτό το θέμα δεν μπορεί να διαγραφεί, επειδή άλλα θέματα εξαρτόνται από αυτό:%s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Στο αρχείο php.ini, η τιμή upload_max_filesize (%sB) είναι μεγαλύτερη από τη τιμή post_max_size (%sB), θα πρέπει να αλλάξετε αυτή τη ρύθμιση'; +$lang['Inactive Languages'] = 'Ανενεργές Γλώσσες'; +$lang['Inactive Plugins'] = 'Ανενεργά Πρόσθετα'; +$lang['Inactive Themes'] = 'Ανενεργά Θέματα'; +$lang['errors during synchronization'] = 'σφάλματα κατά το συγχρονισμό'; +$lang['even already synchronized photos'] = 'ήδη συγχρονισμένα φωτογραφίες'; +$lang['existing album'] = 'υπάρχον λεύκωμα'; +$lang['first photo added on %s'] = 'πρώτη φωτογραφία προστέθηκε στις %s'; +$lang['for the file format'] = 'ΣΦΑΛΜΑ'; +$lang['for this file format'] = 'ΣΦΑΛΜΑ: ΑΥΤΟ ΤΟ ΠΡΟΣΘΕΤΟ ΛΕΙΠΕΙ ΑΛΛΑ ΕΙΝΑΙ ΕΓΚΑΤΕΣΤΗΜΕΝΟ! ΑΠΕΓΚΑΤΑΣΤΗΣΤΕ ΤΩΡΑ.'; +$lang['global mode'] = 'Αρχείο'; +$lang['group "%s" added'] = 'Τα ακόλουθα Θέματα μπορεί να μην είναι συμβατα με τη νέα έκδοση του Piwigo:'; +$lang['group "%s" deleted'] = 'Η ομάδα "%s" διαγράφηκε'; +$lang['group "%s" updated'] = 'Η ομάδα "%s" ενημερώθηκε'; +$lang['guest'] = 'Επισκέπτης'; +$lang['height must be a number superior to'] = 'το ύψος πρέπει να είναι ένα νούμερο μεγαλύτερο από'; +$lang['hide details'] = 'απόκρυψη λεπτομερειών'; +$lang['high'] = 'υψηλό'; +$lang['IP'] = 'IP'; +$lang['Include display of recent photos grouped by dates'] = 'Συμπεριλαβάνει απεικονίσεις από πρόσφατες φωτογραφίες ομαδοποιημένες κατά ημερομηνία'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Συμπεριλαμβάνει ιστορικά δεδομένων (Προσοχή: Το όριο μνήμης του διακομιστή μπορεί να υπερβεί) '; +$lang['Information data registered in database'] = 'Πληροφορίες για δεδομένα που έχουν καταχωρηθεί στη βάση δεδομένων'; +$lang['Informations'] = 'Πληροφορίες'; +$lang['Install on your computer,'] = 'Εγκαταστήστε στον υπολογιστή σας,'; +$lang['Installed Languages'] = 'Εγκατεστημένες γλώσσες'; +$lang['Installed Themes'] = 'Εγκατεστημένα θέματα'; +$lang['Install'] = 'Εγκατάσταση'; +$lang['Instructions to use Piwigo'] = 'Οδηγίες χρήσης Piwigo'; +$lang['Invert'] = 'Αντιστροφή'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Μείνετε σε επαφή με το έργο του Piwigo, εγγραφείτε στο Newsletter Ανακοινώσεων του Piwigo. Θα σας αποστέλετε e-mail όταν μια νέα έκδοση είναι διαθέσιμη (μερικές φορές περιλαμβανομένων μια διώρθοση ασφαλείας, είναι σημαντικό να γνωρίζετε και να αναβαθμίσετε) και όταν συμβαίνουν σημαντικά γεγονότα για το έργο. Μόνο μερικά emails το χρόνο'; +$lang['Language has been successfully installed'] = 'Η Γλώσσα έχει εγκατασταθεί με επιτυχία'; +$lang['Languages which need upgrade'] = 'Οι Γλώσσες που χρειάζονται αναβάθμιση'; +$lang['Languages'] = 'Γλώσσες'; +$lang['Last hit'] = 'τελευταίο χτύπημα'; +$lang['Last import'] = 'Τελευταία εισαγωγή'; +$lang['Last revisions'] = 'Τελευταίες αναθεωρήσεις'; +$lang['Last send'] = 'Τελευταία αποστολή'; +$lang['Level 0'] = '---'; +$lang['Link all album photos to a new album'] = 'Σύνδεση όλων των φωτογραφιών του λευκώματος σε ένα νέο λεύκωμα'; +$lang['Link all album photos to some existing albums'] = 'Σύνδεση όλων των φωτογραφιών του λευκώματος σε ορισμένα υφιστάμενα λευκώματα'; +$lang['Linked albums'] = 'Συνδεδεμένα λευκώματα'; +$lang['Local'] = 'Τοπική'; +$lang['Lock albums'] = 'Κλείδωμα άλμπουμ'; +$lang['Lock gallery'] = 'Κλείδωμα γκαλερί'; +$lang['Locked'] = 'Κλειδωμένο'; +$lang['Lock'] = 'Κλείδωμα'; +$lang['Mail address is obligatory for all users'] = 'Ταχυδρομική διεύθυνση είναι υποχρεωτική για όλους τους χρήστες'; +$lang['Mail content'] = 'Περιεχόμενο Αλληλογραφίας'; +$lang['Mail sent to %s [%s].'] = 'Τα μηνύματα στάλθηκαν στο %s[%s].'; +$lang['Main "guest" user does not exist'] = 'Ο κύριος χρήστης "επισκέπτης" δεν υπάρχει'; +$lang['Main "guest" user status is incorrect'] = 'Η κατάσταση κύριου χρήστη "επισκέπτης" είναι εσφαλμένη'; +$lang['Main "webmaster" user does not exist'] = 'Ο κύριος χρήστης "webmaster" δεν υπάρχει'; +$lang['Main "webmaster" user status is incorrect'] = 'H κατάσταση του κύριου χρήστη "webmaster" είναι εσφαλμένη'; +$lang['Main Page'] = 'Αρχική σελίδα'; +$lang['Maintenance'] = 'Συντήρηση'; +$lang['Make this language available to users'] = 'Κάντε αυτή η γλώσσα διαθέσημη στους χρήστες'; +$lang['Make this theme available to users'] = 'Κάντε αυτό το θέμα διαθέσημο στους χρήστες'; +$lang['Manage Permissions'] = 'Διαχείριση Δικαιωμάτων'; +$lang['Manage authorizations for selected albums'] = 'Διαχειριστείτε τις άδειες για τα επιλεγμένα λευκώματα '; +$lang['Manage permissions for group "%s"'] = 'Διαχείριση δικαιωμάτων για την ομάδα "%s"'; +$lang['Manage permissions for user "%s"'] = 'Διαχείριση δικαιωμάτων για το χρήστη "%s"'; +$lang['Manage photo ranks'] = 'Διαχείριση κατάταξης φωτογραφιών'; +$lang['Manage tags'] = 'Διαχείριση ετικετών'; +$lang['Manage this set of %d photos'] = 'Διαχειριστείτε το σύνολο των %d φωτογραφιών'; +$lang['Manage'] = 'Διαχειριστείτε '; +$lang['Manual order'] = 'Χειροκίνητη κατάταξη'; +$lang['Maximum height'] = 'Μέγιστο ύψος'; +$lang['Maximum width'] = 'Μέγιστο πλάτος'; +$lang['Members'] = 'Μέλη'; +$lang['Menu Management'] = 'Μενού'; +$lang['Merge selected tags'] = 'Συγχώνευση επιλεγμένων ετικετών'; +$lang['Merge tags'] = 'Συγχώνευση ετικετών'; +$lang['Metadata synchronization results'] = 'Αποτελέσματα συγχρονισμού Μεταδεδομένων'; +$lang['Metadata synchronized from file'] = 'Μεταδεδομένα συγχρονιζμένα από το αρχείο'; +$lang['Minimum privacy level'] = 'Ελάχιστο επίπεδο προστασίας προσωπικού απορρήτου.'; +$lang['Miscellaneous'] = 'Διάφορα'; +$lang['Missing Plugins'] = 'Λείπουν πρόσθετα'; +$lang['Missing a temporary folder'] = 'Λείπει ένας προσωρινός φάκελος'; +$lang['Modify information'] = 'Τροποποίηση πληροφορίας'; +$lang['Month'] = 'Μήνας'; +$lang['Move albums'] = 'Μετακίνηση λευκώματος'; +$lang['Move'] = 'Μετακίνηση '; +$lang['Name'] = 'Όνομα'; +$lang['New Version'] = 'Νέα Έκδοση'; +$lang['New name'] = 'Νέο Όνομα'; +$lang['New parent album'] = 'Νέο γονικό λεύκωμα'; +$lang['New photos added'] = 'Νέες φωτογραφίες προστέθηκαν'; +$lang['New photos were added'] = 'Νέες φωτογραφίες προστέθηκαν'; +$lang['New tag'] = 'Νέα ετικέτα'; +$lang['include child albums'] = 'περιλαμβάνουν υπο-λευκώματα'; +$lang['jump to album'] = 'μετάβαση στο λεύκωμα'; +$lang['jump to photo'] = 'μετάβαση στη φωτογραφία'; +$lang['leave'] = 'αποχωρεί'; +$lang['manage album photos'] = 'διαχειριστείτε τα λευκώματα φωτογραφιών'; +$lang['manage sub-albums'] = 'διαχείριση υπο-λευκώματα '; +$lang['manual order'] = 'χειροκίνητη κατάταξη'; +$lang['Hoverbox display'] = 'Εμφάνιση Hoverbox '; +$lang['No destination tag selected'] = 'Δεν επιλέγχτηκε ετικέτα προορισμού'; +$lang['No display'] = 'καμία ένδειξη'; +$lang['No file was uploaded'] = 'Δεν έγινε μεταφόρτωση αρχείων'; +$lang['No mail to send.'] = 'Κανένα μήνυμα για αποστολή'; +$lang['No photo can be deleted'] = 'Καμιά φωτογραφία δεν μπορεί να διαγραφεί'; +$lang['No photo in the current set.'] = 'Καμιά φωτογραφία στο παρόν σύνολο'; +$lang['No photo in this album'] = 'Καμιά φωτογραφία σ\' αυτό το λεύκωμα'; +$lang['new'] = 'νέο'; +$lang['No photo selected, %d photos in current set'] = 'Δεν έχει επιλεγεί φωτογραφία , %d φωτογραφίες στο τρέχον σύνολο'; +$lang['No photo selected, no action possible.'] = 'Δεν έχει επιλεγεί φωτογραφία , δεν είναι δυνατή ενέργεια'; +$lang['No results'] = 'Δεν υπάρχουν αποτελέσματα'; +$lang['No user to send notifications by mail.'] = 'Κανένας χρήστης δεν θα ειδοποιηθεί μέσω ταχυδρομείου.'; +$lang['None'] = 'Κανένα'; +$lang['Notification'] = 'Ειδοποίηση'; +$lang['Number of comments per page'] = 'Αριθμός σχολίων ανά σελίδα'; +$lang['Number of downloads'] = 'Αριθμός μεταφορτώσεων'; +$lang['Number of rates'] = 'Αριθμός των ποσοστών'; +$lang['Number of thumbnails to create'] = 'Αριθμός των μικρογραφιών για δημιουργία'; +$lang['Obsolete Plugins'] = 'Παρωχημένα Προσθέτων'; +$lang['Only private albums are listed'] = 'Παρατίθενται μόνο ιδιωτικό λευκώματα'; +$lang['Operating system'] = 'Λειτουργικό σύστημα'; +$lang['Operation in progress'] = 'Επεξεργασία σε εξέλιξη.'; +$lang['Optimizations have been completed with some errors.'] = 'Βελτιστοποιήσεις ολοκληρώθηκαν με ορισμένα λάθη.'; +$lang['Optional URL keyword'] = 'URL Προαιρετικών λέξεων-κλειδιών'; +$lang['Options'] = 'Επιλογές'; +$lang['Order of menubar items has been updated successfully.'] = 'Διάταξη αντικειμένων της γραμμής μενού έχει ενημερωθεί με επιτυχία.'; +$lang['Original templates'] = 'Αρχικά πρότυπα'; +$lang['Orphan tags deleted'] = 'Ορφανές ετικέτες διαγράφτηκαν'; +$lang['Other plugins'] = 'Άλλα πρόσθετα διαθέσιμα'; +$lang['Other private albums'] = 'Άλλα ιδιωτικά λευκώματα'; +$lang['Overall'] = 'Επισκόπηση'; +$lang['Page banner'] = 'Σελίδα banner'; +$lang['Page end'] = 'τέλος σελίδας'; +$lang['Pages seen'] = 'Σελίδες που έχετε δει'; +$lang['Parameter'] = 'Ρυθμίσεις'; +$lang['Parameters'] = 'Παράμετροι'; +$lang['Parent album'] = 'Μητρικό λεύκωμα'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Η επιβεβαίωση κωδικού λείπει. Επιβεβαιώστε τον επιλεγμένο κωδικό πρόσβασης'; +$lang['Password is missing. Please enter the password.'] = 'Κωδικός λείπει. Παρακαλώ εισάγετε τον κωδικό πρόσβασης.'; +$lang['Path'] = 'Διαδρομή'; +$lang['Pending Comments'] = 'Σχόλια Εν αναμονή '; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Ο Μονιμος Συνδεσμος %s έχει ήδη χρησιμοποιηθεί από το %s λεύκωμα. Διαγραψτε το την πρώτα από την ιστορία Μονιμων Συνδέσμων'; +$lang['Permalink %s is already used by album %s'] = 'Ο Μονιμος Συνδεσμος %s χρησιμοποιήτε ήδη από το %s λεύκωμα.'; +$lang['Permalink history'] = 'Ιστορικό Μονιμων Συνδέσμων'; +$lang['Permalink'] = 'Μόνιμος Σύνδεσμος'; +$lang['Permalinks'] = 'Μόνιμοι Σύνδεσμοι'; +$lang['Permission denied'] = 'Δεν έχετε δικαίωμα πρόσβασης'; +$lang['Permission granted thanks to a group'] = 'Η άδεια που χορηγείται χάρη σε μια ομάδα'; +$lang['Permission granted'] = 'Η άδεια εγκρίνετε'; +$lang['Permissions'] = 'Δικαιώματα'; +$lang['Photo Page'] = 'Σελίδα φωτογραφίας '; +$lang['Photo Properties'] = 'Ιδιότητες φωτογραφίας'; +$lang['Photo informations updated'] = 'Οι πληροφορίες της φωτογραφίας ενημερώθηκαν'; +$lang['Photo name'] = 'Όνομα φωτογραφίας'; +$lang['Photo unreachable or no support'] = 'Φωτογραφία μη προσβάσημη ή μορφή δεν υποστηρίζεται'; +$lang['Photos generation in progress...'] = 'Η Δημιουργία φωτογραφιών είναι σε εξέλιξη ...'; +$lang['Photos'] = 'Φωτογραφίες'; +$lang['Piwigo Administration'] = 'Διαχείρηση Piwigo'; +$lang['Piwigo Announcements Newsletter'] = ' Ενημερωτικό Δελτίο Piwigo'; +$lang['Piwigo Update'] = 'Ενημέρωση Piwigo '; +$lang['Piwigo Uploader'] = 'Μεταφορτωτής Piwigo'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo δεν μπορεί να ανακτήσει το αρχείο αναβάθμισης από τον διακομιστή'; +$lang['Piwigo configuration'] = 'Διαμόρφωση Piwigo '; +$lang['Piwigo version'] = 'Έκδοση Piwigo '; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Παρακαλώ ελέγξτε τα δικαιώματα στον φάκελο "Πρόσθετα" και στους υπο-φακέλους (CHMOD).'; +$lang['Please wait...'] = 'Παρακαλώ περιμένετε ...'; +$lang['Plugin has been successfully copied'] = 'Το πρόσθετο έχει αντιγραφεί επιτυχώς'; +$lang['Plugin list'] = 'Λίστα Πρόσθετων'; +$lang['Plugins which need upgrade'] = 'Πρόσθετα υπό ενημέρωση'; +$lang['Plugins'] = 'Πρόσθετα'; +$lang['Position'] = 'Τοποθεσία'; +$lang['Predefined filter'] = 'Προκαθορισμένα φίλτρα'; +$lang['Preferences'] = 'Προτιμήσεις'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Ο χρόνος για να προετοιμάσετε τον κατάλογο των χρηστών που θα σταλεί μήνυμα είναι περιορισμένος. Άλλοι χρήστες δεν είναι στον κατάλογο.'; +$lang['Privacy level'] = 'Επίπεδο προστασίας προσωπικών δεδομένων'; +$lang['Private'] = 'Προσωπικά'; +$lang['Properties'] = 'Ιδιότητες'; +$lang['Public / Private'] = 'Δημόσιο / Ιδιωτικό'; +$lang['Public'] = 'Δημόσιο '; +$lang['Purge compiled templates'] = 'Εκκαθάριση καταρτισμένων πρότυπων'; +$lang['Purge history detail'] = 'Εκκαθάριση λεπτομερειών ιστορικού'; +$lang['Purge history summary'] = 'Εκκαθάριση περίληψης ιστορικού'; +$lang['Purge never used notification feeds'] = 'Εκκαθάριση δεν έχει χρησιμοποιηθεί ποτέ κοινοποίηση τροφοδότησης'; +$lang['Purge search history'] = 'Εκκαθάριση ιστορικού αναζήτησης'; +$lang['no write access'] = 'Όχι πρόσβαση εγγραφής'; +$lang['none'] = 'κανένα'; +$lang['nothing'] = 'τίποτα'; +$lang['number of miniaturized photos'] = 'ο αριθμός των μικρογραφιών που δημιουργήθηκε'; +$lang['on the %d selected photos'] = 'στις %d επιλεγμένες φωτογραφίες'; +$lang['on'] = 'στο'; +$lang['only directories'] = 'Μόνο κατάλογοι'; +$lang['only perform a simulation (no change in database will be made)'] = 'μόνο εκτέλεση προσομοίωσης (τίποτα δεν θα αλλάξει στη βάση δεδομένων)'; +$lang['other'] = 'άλλα'; +$lang['overrides existing values with empty ones'] = 'παρακάμπτει τις υφιστάμενες τιμές με κενές'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader σημαίνει Μεταφορτωτής Piwigo. Από τον υπολογιστή σας, ο pLoader προετοιμάζει τις φωτογραφίες σας και τις μεταφέρει στο γκαλερί φωτογραφιών του Piwigo σας.'; +$lang['photos added in the database'] = 'οι φωτογραφίες προστέθηκαν στη βάση δεδομένων'; +$lang['photos candidates for metadata synchronization'] = 'φωτογραφίες υποψήφιες για συγχρονισμό μετα-δεδομένων'; +$lang['photos deleted from the database'] = 'οι φωτογραφίες διαγράφτηκαν από τη βάση δεδομένων'; +$lang['photos informations synchronized with files metadata'] = 'οι πληροφορίες φωτογραφιών συγχρονίζονται με τα μεταδεδομένα αρχείων '; +$lang['photos per page'] = 'φωτογραφίες ανά σελίδα'; +$lang['photos updated in the database'] = 'φωτογραφίες ενημερώθηκαν στη βάση δεδομένων'; +$lang['pixels'] = 'Εικονοστοιχία'; +$lang['private'] = 'προσωπικά'; +$lang['public'] = 'δημόσιο '; +$lang['Privacy level set to "%s"'] = 'Επίπεδο προστασίας προσωπικών δεδομένων με "%s"'; +$lang['Purge sessions'] = 'Εκκαθάριση συνεδριών'; +$lang['Quick Local Synchronization'] = 'Γρήγορη Τοπικός Συγχρονισμός'; +$lang['Random photo'] = 'Τυχαία Φωτογραφία'; +$lang['Rate date'] = 'Ημερομηνία Αξιολόγησης'; +$lang['Rating by guests'] = 'Αξιολόγηση από τους επισκέπτες'; +$lang['Rating'] = 'Αξιολόγηση '; +$lang['Read Piwigo Documentation'] = 'Διαβάστε την Τεκμηρίωση του Piwigo '; +$lang['Refresh photo set'] = 'Ανανέωση σύνολου φωτογραφίας'; +$lang['randomly represented'] = 'τυχαία μικρογραφία λευκώματος'; +$lang['ranks'] = 'κατάταξη'; +$lang['Refresh'] = 'Ανανέωση'; +$lang['Reinitialize check integrity'] = 'Επανεκινηση εκ νέου έλεγχου ακεραιότητας'; +$lang['Reject'] = 'Απόρριψη'; +$lang['Released on'] = 'Κυκλοφόρησε στις'; +$lang['Remote'] = 'Απομεμακρυσμένος'; +$lang['Remove all filters'] = 'Κατάργηση όλων των φίλτρων'; +$lang['Remove from caddie'] = 'Αφαιρέστε από το καλάθι'; +$lang['Repair and optimize database'] = 'Επισκευή και βελτιστοποίηση της βάσης δεδομένων'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Αντικατάσταση των αρχικών προτύπων με προσαρμοσμένα πρότυπα από τον υπο-κατάλογο πρότυπων-επεκτάσεων'; +$lang['Replacers (customized templates)'] = 'Υποκατάστατα (προσαρμοσμένα πρότυπα)'; +$lang['Representant'] = 'Μικρογραφία Λευκώματος'; +$lang['Representation of albums'] = 'Μικρογραφία λευκώματος'; +$lang['Representative'] = 'Μικρογραφία λευκώματος'; +$lang['Represents'] = 'Είναι μικρογραφία για το'; +$lang['Reset ignored updates'] = 'Επαναφορά αγνοούμενων ενημερώσεων'; +$lang['Resize'] = 'Αλλαγή μεγέθους'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Επαναφορά προεπιλεγμένης ρύθμισης. Θα χάσετε τις ρυθμίσεις των πρόσθετων σας!'; +$lang['Restore'] = 'Επαναφορά'; +$lang['Save Settings'] = 'Αποθήκευση ρυθμίσεων'; +$lang['Save Template Directory'] = 'Αποθήκευση καταλόγου προτύπων'; +$lang['Save order'] = 'Αποθήκευση διάταξης'; +$lang['Save to permalink history'] = 'Αποθήκευση στην ιστορία των Μονιμων Συνδέσμων'; +$lang['Search for new images in the directories'] = 'Αναζήτηση για νέες εικόνες στους καταλόγους'; +$lang['Searching...'] = 'Αναζήτηση ...'; +$lang['Section'] = 'Τμήμα'; +$lang['See you soon,'] = 'Τα λέμε σύντομα,'; +$lang['See you soon.'] = 'Τα λέμε σύντομα.'; +$lang['Select at least one album'] = 'Επιλέξτε τουλάχιστον ένα λεύκωμα'; +$lang['Select at least one comment'] = 'Επιλέξτε τουλάχιστον ένα σχόλιο'; +$lang['Select at least one photo'] = 'Επιλέξτε τουλάχιστον μία φωτογραφία'; +$lang['Select at least one user'] = 'Επιλέξτε τουλάχιστον έναν χρήστη'; +$lang['Select at least two tags for merging'] = 'Επιλέξτε τουλάχιστον δύο ετικέτες για συγχώνευση'; +$lang['Select recipients'] = 'Επιλογή παραληπτών'; +$lang['Select the destination tag'] = 'Επιλέξτε την ετικέτα προορισμού'; +$lang['Select:'] = 'Επιλέξτε:'; +$lang['Selection'] = 'Επιλογή'; +$lang['Send an information email to group members'] = 'Στείλτε ένα e-mail με πληροφορίες στα μέλη της ομάδας'; +$lang['Send connection settings by email'] = 'Αποστολή ρυθμίσεων σύνδεσης μέσω ηλεκτρονικού ταχυδρομείου'; +$lang['Send mail as'] = 'Αποστολή μηνύματος ως'; +$lang['Send mail on HTML format'] = 'Αποστολή ηλεκτρονικού ταχυδρομείου σε μορφή HTML'; +$lang['Send mail to users'] = 'Αποστολή ηλεκτρονικού ταχυδρομείου προς τους χρήστες'; +$lang['Send'] = 'Αποστολή'; +$lang['Set as default language for unregistered and new users'] = 'Ορισμός ως προεπιλεγμένη γλώσσα για τους μη καταγεγραμμένους και τους νέους χρήστες'; +$lang['Set as default theme for unregistered and new users'] = 'Ορισμός ως προεπιλεγμένο θέμα για τους μη καταγεγραμμένους και τους νέους χρήστες'; +$lang['Switch to clear or dark colors for administration'] = 'Αλλαγή σε σαφή ή σκούρα χρώματα για τη διαχείρηση'; +$lang['Synchronize metadata'] = 'Συγχρονίστε τα μεταδεδομένα'; +$lang['Synchronize'] = 'Συγχρονίστε '; +$lang['Tag "%s" already exists'] = 'Η ετικέτα "%s" υπάρχει ήδη'; +$lang['Tag "%s" was added'] = 'Η ετικέτα "%s" έχει προστεθεί'; +$lang['Tag selection'] = 'Επιλογή Ετικετών'; +$lang['Tags %s merged into tag %s'] = 'Ετικέτες %s συγχωνεύθηκαν σε ετικέτα %s'; +$lang['Templates configuration has been recorded.'] = 'Η Διαμόρφωση Προτύπων έχει καταγραφεί.'; +$lang['Templates'] = 'Πρότυπα'; +$lang['The %d following tags were deleted'] = 'Οι ακόλουθες ετικέτες %d έχουν διαγραφεί'; +$lang['The anomaly will be ignored until next application version'] = 'Η ανωμαλία αυτή θα πρέπει να αγνοηθεί μέχρι την επόμενη έκδοση της εφαρμογής'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Το αρχείο ή ο κατάλογος δεν μπορεί να προσπελαστεί (είτε δεν υπάρχει ή η πρόσβαση απορρίφθηκε)'; +$lang['The following tag was deleted'] = 'Η παρακάτω ετικέτα διεγράφη'; +$lang['The gallery URL is not valid.'] = 'Η διεύθυνση URL της γκαλερί δεν είναι έγκυρη.'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Το όνομα της ομάδας δεν πρέπει να περιέχει " ή \' ή να είναι άδειο.'; +$lang['The name of an album must not be empty'] = 'Το όνομα του άλμπουμ δεν πρέπει να είναι κενό'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Το όνομα των αρχείων και καταλόγων πρέπει να περιλαμβάνει μόνο γράμματα, αριθμούς, "-", "_" ή "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Ο αριθμός των σχολίων σε μια σελίδα, πρέπει να είναι μεταξύ 5 και 50 που περιλαμβάνονται.'; +$lang['The original image quality must be a number between %d and %d'] = 'Η αρχική ποιότητα της εικόνας πρέπει να είναι ένας αριθμός μεταξύ %d και %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Το αρχικό μέγιστο ύψος πρέπει να είναι ένας αριθμός μεταξύ %d και %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Το αρχικό μέγιστο πλάτος πρέπει να είναι ένας αριθμός μεταξύ %d και %d'; +$lang['reduce to single existing albums'] = 'ελλατώστε τα υφιστάμενα σε απλά λευκώματα'; +$lang['registration date'] = 'ημερομηνία καταχώρησης'; +$lang['remove author'] = 'αφαιρέστε τον δημιουργό'; +$lang['remove creation date'] = 'αφαιρέσετε την ημερομηνία δημιουργίας'; +$lang['remove tags'] = 'αφαιρέσετε ετικέτες'; +$lang['remove this filter'] = 'αφαιρέσετε αυτό το φίλτρο'; +$lang['remove title'] = 'αφαιρέστε τον τίτλο'; +$lang['selection'] = 'επιλογή'; +$lang['synchronize files metadata with database photos informations'] = 'συγχρονίστε βάσης δεδομένων φωτογραφιών με τα αρχείων μεταδεδομένων'; +$lang['synchronize files structure with database'] = 'συγχρονίστε τη δομή αρχείων με τη βάση δεδομένων'; +$lang['target'] = 'στόχος'; +$lang['test this remote site'] = 'ελέγξετε τον απομακρυσμένο τόπο'; +$lang['test'] = 'έλεγχος'; +$lang['the forum'] = 'το φόρουμ'; +$lang['%d day'] = '%d ημέρα'; +$lang['%d days'] = '%d ημέρες'; +$lang['%d hour'] = '%d ώρα'; +$lang['%d hours'] = '%d ώρες'; +$lang['%d minute'] = '%d λεπτό'; +$lang['%d minutes'] = '%d λεπτά'; +$lang['%d month'] = '%d μήνας'; +$lang['%d months'] = '%d μήνες'; +$lang['%d second'] = '%d δευτερόλεπτο'; +$lang['%d seconds'] = '%d δευτερόλεπτα'; +$lang['%d year'] = '%d έτος'; +$lang['%d years'] = '%d χρόνια'; +$lang['%s ago'] = '%s πριν'; +$lang['%s in the future'] = '%s στο μέλλον'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u χρήστες έχουν αυτόματη άδεια επειδή ανήκουν σε μια ομάδα που της έχει χορηγηθεί.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Η εφαρμογή Piwigo για το Android που παρέχει τη δυνατότητα να συνδεθείτε με τη γκαλερί Piwigo σας από το κινητό σας Android ή τη ταμπλέτα σας και δημιουργούν μερικά άλμπουμ και ανεβάζουν πολλές φωτογραφίες ταυτόχρονα.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Η εφαρμογή Piwigo για το iOS που παρέχει τη δυνατότητα να συνδεθείτε με τη γκαλερί Piwigo σας από το iPhone, iPad ή το iPod Touch, δημιουργούν μερικά άλμπουμ και ανεβάζουν πολλές φωτογραφίες ταυτόχρονα.'; +$lang['A locked gallery is only visible to administrators'] = 'Μια κλειδωμένη γκαλερί είναι ορατή μόνο στους διαχειριστές'; +$lang['Added by %s'] = 'Προστέθηκε από %s'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom είναι ένα λογισμικό φωτογραφίας σχεδιασμένο για να διαχειρίζεται μεγάλες ποσότητες ψηφιακών εικόνων και κάνει τη δουλειά του post production.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Το Aperture είναι ένα ισχυρό εργαλείο για να βελτιώσετε τις εικόνες και να διαχειρίζεστε τεράστιες βιβλιοθήκες σε Mac ..'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Το Aperture είναι σχεδιασμένο για επαγγελματίες φωτογράφους με την απλότητα του iPhoto.'; +$lang['Applications'] = 'Εφαρμογές'; +$lang['Apply watermark if height is bigger than'] = 'Εφαρμόστε υδατογράφημα, εάν το ύψος είναι μεγαλύτερο από'; +$lang['Apply watermark if width is bigger than'] = 'Εφαρμόστε υδατογράφημα, εάν το πλάτος είναι μεγαλύτερο από'; +$lang['Automatic sort order'] = 'Αυτόματη σειρά ταξινόμησης'; +$lang['Available on'] = 'διαθέσιμο σε'; +$lang['Available versions for'] = 'Διαθέσιμες εκδόσεις για'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Από προεπιλογή, το κέντρο του ενδιαφέροντος βρίσκεται στη μέση της φωτογραφίας.'; +$lang['Cancel'] = 'Ακύρωση'; +$lang['Center of interest'] = 'Κέντρο του ενδιαφέροντος'; +$lang['Delete multiple size images'] = 'Διαγράφει εικόνες πολλαπλάσιου μεγέθους'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Τα χαρακτηριστικά του περιλαμβάνει είναι περιήγηση γκαλερί, δημιουργία άλμπουμ και ανέβασμα φωτογραφιών.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Για μεγέθη φωτογραφίας με αποκοπή, όπως "Τετράγωνο", το Piwigo θα καταβάλει κάθε δυνατή προσπάθεια για να συμπεριλάβει το κέντρο του ενδιαφέροντος.'; +$lang['Gallery unlocked'] = 'Γκαλερί ξεκλείδωτη'; +$lang['Generate multiple size images'] = 'Δημιουργεί εικόνες πολλαπλάσιου μεγέθους'; +$lang['Groups and users'] = 'Ομάδες και χρήστες'; +$lang['List'] = 'Λίστα'; +$lang['Move to album'] = 'Μετακίνηση σε λεύκωμα '; +$lang['Multiple Size'] = 'Πολλαπλά μεγέθη'; +$lang['No group is permitted to see this private album'] = 'Καμία ομάδα δεν επιτρέπεται να δει αυτό το ιδιωτικό άλμπουμ'; +$lang['Not cropped correctly?'] = 'Δεν έχει περικοπεί σωστά;'; +$lang['Notify administrators when a comment is'] = 'Ειδοποιεί διαχειριστές όταν ένα σχόλιο είναι'; +$lang['Numeric identifier : %d'] = 'Αριθμητικός αναγνωριστικός κωδικός: %d'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Στο Linux σας, απλά εγκαταστήστε το Shotwell με τον διαχειριστή πακέτων σας και ενεργοποιήστε την επιλογή στο Piwigo.'; +$lang['Opacity'] = 'Αδιαφάνεια'; +$lang['Original Size'] = 'Αρχικό Μέγεθος'; +$lang['Original file : %s'] = 'Αρχικό αρχείο:%s'; +$lang['Permission granted for groups'] = 'Η άδεια χορηγείται για τις ομάδες'; +$lang['Permission granted for users'] = 'Η άδεια χορηγείται για τους χρήστες'; +$lang['Permission management'] = 'Διαχείριση αδειών'; +$lang['Photo sizes with crop'] = 'Μέγεθος φωτογραφίας με την αποκοπή'; +$lang['Piwigo Publish plugin for Lightroom'] = 'πρόσθετο Piwigo για Δημοσίευση από το Lightroom'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo export plugin για το Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export plugin για το iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo για Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo για το iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish plugin για το Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish plugin για το digiKam'; +$lang['Posted %s on %s'] = 'Το %s δημοσιεύτηκε στο %s'; +$lang['Rated %d times, score : %.2f'] = 'Εχει βαθμοόγιθεί %d φορές, σκορ: %.2f'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'Το ReGalAndroid (RemoteGallery πελάτης για το Android), είναι ένας πελέτης ανοιχτού κώδικα του Piwigo (GPL v3) για την πλατφόρμα Android.'; +$lang['Resize after upload'] = 'Αλλαγή μεγέθους μετά την αποστολή'; +$lang['Save manual order'] = 'Αποθήκευση χειροκίνητης σειράς ταξινόμησης'; +$lang['Save visits in history for'] = 'Αποθήκευση επισκέψεων στο ιστορικό για την'; +$lang['Select a file'] = 'Επιλέξτε ένα αρχείο'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Επιλέξτε μια ζώνη με το ποντίκι σας να ορίσετε ένα νέο κέντρο του ενδιαφέροντος.'; +$lang['Select groups...'] = 'Επιλέξτε τις ομάδες ...'; +$lang['Select users...'] = 'Επιλέξτε τους χρήστες...'; +$lang['Sharpen'] = 'Διαύγεια '; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell είναι ένας οργανωτής ανοιχτού κώδικα ψηφιακών φωτογραφιών και τρέχει σε Linux. Είναι ο προεπιλεγμένος δαιχειριστής φωτογραφιών στο Ubuntu και στο Fedora.'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ΑΥΤΟ ΤΟ ΠΡΟΣΘΕΤΟ ΕΙΝΑΙ ΤΩΡΑ ΜΕΡΟΣ ΤΟΥ ΠΗΡΥΝΑ ΤΟΥ PIWIGO! ΑΠΕΓΚΑΤΑΣΤΗΣΤΕ ΤΩΡΑ!'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Το Piwigo export plugin σας επιτρέπει να δημιουργήσετε άλμπουμ και να εξαγετε φωτογραφίες.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Το πρόσθετο Piwigo publish Plug-in σας επιτρέπει να εξάγετε και να συγχρονίσετε φωτογραφίες απευθείας από το Lightroom στη γκαλερί φωτογραφιών σας στο Piwigo.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Το κέντρο του ενδιαφέροντος είναι η πιο σημαντική ζώνη στη φωτογραφία.'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Το όνομα μόνιμου συνδέσμου πρέπει να αποτελείται απο a-z, A-Z, 0-9, "-", "_" or "/". Δεν πρέπει να είναι αριθμητικό ή να ξεκινά με έναν αριθμό που ακολουθείται από "-"'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Το αρχείο υπερβαίνει το MAX_FILE_SIZE directive που έχει οριστεί στη φόρμα HTML'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Το αρχείο υπερβαίνει την οδηγία upload_max_filesize στο php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Το αρχείο που μεταφορτώθηκε δεν ολοκλήρωσε την αποστολή'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Το αρχείο υπερβαίνει την οδηγία post_max_size στο php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Η έκδοση του %s[%s] που εγκαταστάθηκε δεν είναι συμβατή με την έκδοση που απαιτείται [%s]'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Ο webmaster σας έκανε εγγραφή για την παραλαβή κοινοποιήσεων μέσω ηλεκρονικού ταχυδρομείου.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Ο webmaster σας έχει διαγράψει από την παραλαβή κοινοποιήσεων μέσω ταχυδρομείου.'; +$lang['The whole page'] = 'Ολόκληρη η σελίδα'; +$lang['The whole set'] = 'Το σύνολο'; +$lang['Theme has been successfully installed'] = 'Το Θέμα έχει εγκατασταθεί με επιτυχία'; +$lang['Themes which need upgrade'] = 'Τα Θέματα που χρειάζετε να αναβαθμίσετε'; +$lang['Themes'] = 'Θέματα '; +$lang['There is no available subscribers to mail.'] = 'Δεν υπάρχουν συνδρομητές που πρόκειται να ειδοποιηθούν μέσω ταχυδρομείου.'; +$lang['There is no group in this gallery.'] = 'Δεν υπάρχει καμία ομάδα σε αυτή τη συλλογή.'; +$lang['There is no other language available.'] = 'Δεν υπάρχει άλλη διαθέσιμη γλώσσα.'; +$lang['There is no other plugin available.'] = 'Δεν υπάρχει άλλο διαθέσιμο πρόσθετο'; +$lang['There is no other theme available.'] = 'Δεν υπάρχει διαθέσιμο άλλο θέμα.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Αυτό το λεύκωμα περιέχει %d φωτογραφίες, προστέθηκε μεταξύ %s και%s.'; +$lang['This album contains %d photos, added on %s.'] = 'Αυτό το λεύκωμα περιέχει %d φωτογραφίες, προστέθηκε στις %s.'; +$lang['This album contains no photo.'] = 'Αυτό το λεύκωμα δεν περιέχει καμία φωτογραφία.'; +$lang['This is a major update, with new exciting features.'] = 'Αυτή είναι μια σημαντική ενημέρωση, με νέα συναρπαστικά χαρακτηριστικά.'; +$lang['This is a minor update, with only bug corrections.'] = 'Αυτή είναι μια μικρή ενημέρωση, με μόνο διορθώσεις σφαλμάτων.'; +$lang['This name is already used by another group.'] = 'Αυτό το όνομα χρησιμοποιείται ήδη από άλλη ομάδα.'; +$lang['This site already exists'] = 'Αυτός ο δικτυακός τόπος υπάρχει ήδη'; +$lang['This theme was not designed to be directly activated'] = 'Αυτό το θέμα δεν έχει σχεδιαστεί για να ενεργοποιηθεί άμεσα'; +$lang['Thumbnail'] = 'Μικρογραφία'; +$lang['Thumbnails generation in progress...'] = 'Δημιουργία Μικρογραφιών σε εξέλιξη ...'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Ο χρόνος για την αποστολή αλληλογραφίας είναι περιορισμένος. Άλλα μηνύματα έχουν ήδη παραληφθεί.'; +$lang['Time'] = 'Χρίνος'; +$lang['Title'] = 'τίτλος'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Για να εξάγετε τις φωτογραφίες σας από το digiKam στο Piwigo, απλά εγκαταστήστε digiKam και το Kipi-plugins.'; +$lang['To send ?'] = 'Να σταλεί;'; +$lang['To subscribe'] = 'Για να εγγραφείτε'; +$lang['To unsubscribe'] = 'Για να διαγραφείτε'; +$lang['Toggle \'default group\' property'] = 'Αντίστροφη ιδιότητας "προεπιλεγμένη ομάδα" '; +$lang['Tools'] = 'Εργαλεία'; +$lang['Two updates are available'] = 'Δύο ενημερώσεις είναι διαθέσιμες'; +$lang['Type here the author name'] = 'Πληκτρολογήστε εδώ το όνομα του συντάκτη'; +$lang['Type here the title'] = 'Πληκτρολογήστε εδώ τον τίτλο'; +$lang['Type in a search term'] = 'Πληκτρολογήστε έναν όρο αναζήτησης'; +$lang['Unable to check for upgrade.'] = 'Αδύνατον να ελέγξει για αναβάθμιση.'; +$lang['Unable to dump database.'] = 'Δεν είναι δυνατή η εξαγωγή της βάσης δεδομένων.'; +$lang['Uncheck all'] = 'Αποεπιλέξτε όλα'; +$lang['Uninstalled Plugins'] = 'Απεγκατεστημένα πρόσθετα'; +$lang['Uninstall'] = 'Απεγκατάσταση'; +$lang['Unknown upload error'] = 'Άγνωστο σφάλμα αποστολής'; +$lang['Unlock gallery'] = 'Ξεκλειδώστε γκαλερί'; +$lang['Unlocked'] = 'Ξεκλειδωμένο'; +$lang['Unsubscribe from notification by mail'] = 'Διαγραφή από την κοινοποίηση μέσω ταχυδρομείου'; +$lang['Unsubscribed'] = 'Χωρίς συνδρομή'; +$lang['Update All'] = 'Ενημέρωση σε όλα'; +$lang['Update Complete'] = 'Η Ενημέρωση ολοκληρώθηκε'; +$lang['Update albums informations'] = 'Ενημέρωση πληροφοριών λευκώματος'; +$lang['Update in progress... Please wait.'] = 'Ενημέρωση σε εξέλιξη ... Παρακαλώ περιμένετε.'; +$lang['Update photos information'] = 'Ενημέρωση πληροφοριών φωτογραφίας'; +$lang['Update to Piwigo %s'] = 'Ενημέρωση σε Piwigo %s'; +$lang['Updates'] = 'Ενημερώσεις'; +$lang['Uploaded Photos'] = 'Μτεταφορτωμλενες φωτογραφίες'; +$lang['Upload'] = 'Ανεβάστε'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Χρησιμοποιήστε τηn προεπιλεγμένη σειρά ταξινόμησης φωτογραφιών (που ορίζεται στο αρχείο ρυθμίσεων)'; +$lang['Used metadata'] = 'Μεταδεδομένα που χρησιμοποιήθηκαν'; +$lang['User "%s" created with "%s" like password'] = 'Ο χρήστης "%s" με "%s" ως κωδικό πρόσβασης'; +$lang['User %s [%s] added.'] = 'Ο χρήστης %s[%s] προστέθηκε'; +$lang['User %s [%s] was added to the subscription list.'] = 'Ο χρήστης %s[%s] προστέθηκε στην λίστα συνδρομητών.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Ο χρήστης %s[%s] δεν προστέθηκε στην λίστα συνδρομητών.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Ο χρήστης %s[%s] δεν αφαιρέθηκε από τη λίστα εγγραφής.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Ο χρήστης %s[%s] δεν αφαιρέθηκε από τη λίστα εγγραφής.'; +$lang['User comments validation'] = 'Επικύρωση σχολίων χρήστη'; +$lang['User list'] = 'Λίστα Χρηστών'; +$lang['User status'] = 'Κατάσταση χρήστη'; +$lang['User'] = 'Χρήστης'; +$lang['Users'] = 'Χρήστες'; +$lang['Validate'] = 'Επικύρωση'; +$lang['Validation'] = 'Επικύρωση'; +$lang['Version'] = 'Έκδοση'; +$lang['Virtual Links'] = 'Εικονικοί Σύνδεσμοι'; +$lang['Virtual album added'] = 'Προστέθηκε Εικονικό λεύκωμα'; +$lang['Virtual album deleted'] = 'Διαγράφθηκε Εικονικό λεύκωμα'; +$lang['Virtual album name'] = 'Όνομα Εικονικού λευκώματος'; +$lang['Virtual album'] = 'Εικονικό λεύκωμα'; +$lang['Virtual albums to move'] = 'Το Εικονικό λεύκωμα μετακινήθηκε'; +$lang['Visit Gallery'] = 'Επισκεφθείτε τη γκαλερί'; +$lang['Visit Piwigo project website'] = 'Επισκεφτείτε την ιστοσελίδα του έργου Piwigo'; +$lang['Visit language site'] = 'Επισκεφθείτε την ιστοσελίδα γλώσσας'; +$lang['Visit plugin site'] = 'Επισκεφτείτε την ιστοσελίδα των πρόσθετων'; +$lang['Visit theme site'] = 'Επισκεφθείτε την ιστοσελίδα θέμα'; +$lang['Visited %d times'] = 'Έχει επισκευτεί %d φορές'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ΠΡΟΣΟΧΗ! Αυτό το πρόσθετο δεν φαίνεται να είναι συμβατό με αυτή την έκδοση του Piwigo.'; +$lang['Waiting'] = 'Εν αναμονή'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Προειδοποίηση: εγγραφή ή διαγραφής θα στείλει μηνύματα προς τους χρήστες'; +$lang['Watermark'] = 'Υδατογράφημα'; +$lang['Web Form'] = 'Φόρμα Επικοινωνίας'; +$lang['Webmaster cannot be deleted'] = 'Ο Webmaster δεν μπορεί να διαγραφεί'; +$lang['Webmaster status is required.'] = 'Απαιτείται η κατάσταση Webmaster.'; +$lang['Week starts on'] = 'Αρχή εβδομάδας'; +$lang['Who can see these photos?'] = 'Ποιος μπορεί να δει αυτές τις φωτογραφίες;'; +$lang['Who can see this photo?'] = 'Ποιος μπορεί να δει αυτή τη φωτογραφία'; +$lang['Width'] = 'Πλάτος'; +$lang['With blank value, gallery title will be used'] = 'Εάν κενό, ο τίτλος γκαλερί θα χρησιμοποιηθεί'; +$lang['With no album'] = 'Με κανένα άλμπουμ'; +$lang['With no tag'] = 'Με καμία ετικέτα'; +$lang['With no virtual album'] = 'Χωρίς εικονικό λεύκωμα'; +$lang['X Position'] = 'Θέση Χ'; +$lang['X Repeat'] = 'Επανάληψη Χ'; +$lang['Y Position'] = 'Θέση Υ'; +$lang['Year'] = 'Χρονιά'; +$lang['You are running on development sources, no check possible.'] = 'Τρέχετε σε πηγές ανάπτυξης, δεν είναι δυνατόν να ελέγξετε.'; +$lang['You are running the latest version of Piwigo.'] = 'Τρέχετε τελευταία έκδοση του Piwigo.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Χρησιμοποιείς τον Flash uploader. Προβλήματα; Προσπάθησε το ανέβασμα μέσω φυλλομετρητή.'; +$lang['You can activate only one mobile theme.'] = 'Μπορείτε να ενεργοποιήσετε μόνο ένα κινητό θέμα.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Μπορείτε να ενημερώσετε σε Piwigo%, άμεσα, χωρίς την αναβάθμιση σε Piwigo %s (συνιστάται).'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Δεν μπορείτε να ορίσετε μια προεπιλογή σειράς φωτογραφιών, επειδή έχετε μια προσαρμοσμένη ρύθμιση στην τοπική διαμόρφωση σας.'; +$lang['You cannot delete your account'] = 'Δεν μπορείτε να διαγράψετε το λογαριασμό σας'; +$lang['You cannot move an album in its own sub album'] = 'Δεν μπορείτε να μετακινήσετε ένα λεύκωμα στο δικό του υπο-λεύκωμα'; +$lang['You have %d orphan tags: %s.'] = 'Έχετε %d ορφανές ετικέτες : %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Έχετε καθορίσε $conf[\'order_by\'] στο τοπικό αρχείο ρυθμίσεων σας, αυτή η παράμετρος είναι παρωχημένη, παρακαλούμε να την αφαιρέσετε ή να το μετονομάσετε σε $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Έχετε εγγραφεί για να λαμβάνετε ειδοποιήσεις με e-mail.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Έχετε διαγραφεί από την κοινοποίηση μέσω ταχυδρομείου.'; +$lang['You might go to plugin list to install and activate it.'] = 'Πηγαίνετε στον κατάλογο πρόσθετων για να το εγκαταστήσετε και να το ενεργοποιήσετε.'; +$lang['You need to confirm deletion'] = 'Πρέπει να επιβεβαιώσετε τη διαγραφή'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Θα πρέπει να αναβαθμίσετε το σύστημά σας να επωφεληθελιται πλήρως από την εφαρμογή, διαφορετικά η εφαρμογή δεν θα μπορούσε να λειτουργήσει σωστά, ή και καθόλου'; +$lang['Your configuration settings are saved'] = 'Οι ρυθμίσεις σας έχουν αποθηκευτεί'; +$lang['Zoom'] = 'Μεγένθυνση'; +$lang['[%s] Visit album %s'] = '[%s] Επίσκεψη άλμπουμ %s'; +$lang['[NBM] Problems or questions'] = '[NBM] Προβλήματα ή ερωτήσεις'; +$lang['add a new watermark'] = 'προσθέσετε ένα νέο υδατογράφημα'; +$lang['administrators'] = 'διαχειριστές'; +$lang['any visitor can see this album'] = 'οποιοσδήποτε επισκέπτης μπορεί να δει αυτό το λεύκωμα'; +$lang['apply automatic sort order'] = 'Εφαρμόζει αυτόματη σειρά ταξινόμησης'; +$lang['bottom left corner'] = 'κάτω αριστερή γωνία'; +$lang['bottom right corner'] = 'κάτω δεξιά γωνία'; +$lang['cancel manual order'] = 'Ακύρωση χειροκίνητης σειράς ταξινόμησης'; +$lang['custom'] = 'Προσαρμογή'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'Το digiKam είναι μια προηγμένη διαχείριση ψηφιακών φωτογραφιών σε ελεύθερο λογισμικό για Linux, Windows και MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'Το digiKam έχει σχεδιαστεί για φωτογράφους που θέλουν να παρακολουθούν, διαχειρίζονται, επεξεργαζονται, βελτιώνουν, οργανώνουν, προσθέτουν ετικέτες και διαμοιράζονται φωτογραφίες.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'Το iPhoto είναι ο προεπιλεγμένος διαχειρηστής φωτογραφίας στο MacOSX. Το export plugin for iPhoto του Piwigo σας επιτρέπουν να δημιουργήσετε νέο άλμπουμ και να εξάγετε τις φωτογραφίες σας απευθείας από το iPhoto στη γκαλερί φωτογραφιών σας στο Piwigo .'; +$lang['include photos with lower privacy level'] = 'περιλαμβάνει φωτογραφίες με χαμηλότερο επίπεδο προστασίας της ιδιωτικότητας'; +$lang['middle'] = 'μέση'; +$lang['modified'] = 'τροποποιημένα'; +$lang['pending validation'] = 'εν αναμονή επικύρωσης'; +$lang['registered users'] = 'εγγεγραμμένοι χρήστες'; +$lang['simple visitors'] = 'απλοί επισκέπτες'; +$lang['the wiki'] = 'το wiki'; +$lang['top left corner'] = 'πάνω αριστερή γωνία'; +$lang['top right corner'] = 'πάνω δεξιά γωνία'; +$lang['total time'] = 'συνολικός χρόνος'; +$lang['unit mode'] = 'απλή κατάσταση'; +$lang['unknown'] = 'άγνωστο'; +$lang['unset'] = 'μηδένισμα'; +$lang['update the database from files'] = 'ενημέρωση της βάσης δεδομένων με τα αρχεία'; +$lang['user "%s" added'] = 'Ο χρήστης "%s" προστέθηκε'; +$lang['user_status_admin'] = 'Διαχειριστής'; +$lang['user_status_generic'] = 'Γενικός'; +$lang['user_status_guest'] = 'Επισκέπτης'; +$lang['user_status_normal'] = 'Χρήστης'; +$lang['user_status_webmaster'] = 'Webmaster'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'οι επισκέπτες πρέπει να συνδεθεθούν και να έχουν τα κατάλληλα δικαιώματα για να δουν αυτό το λεύκωμα'; +$lang['width must be a number superior to'] = 'πλάτος πρέπει να είναι ένας αριθμός μεγαλύτερο από ό, τι'; +$lang['wrong filename'] = 'λανθασμένο όνομα αρχείου'; +$lang['%d physicals'] = '%d πραγματικά'; +$lang['%d week'] = '%d εβδομάδα'; +$lang['%d weeks'] = '%d εβδομάδες'; +$lang['Edit photo'] = 'Επεξεργασία φωτογραφίας'; +$lang['create a new site'] = 'δημιουργία νέας ιστοσελίδας'; +$lang['No order field selected'] = 'Δεν επιλέχτηκε διατεταγμένο πεδίο'; +$lang['Duplicate selected tags'] = 'Επιλεγμένες ετικέτες εις διπλούν '; +$lang['Name of the duplicate'] = 'Όνομα του αντιγράφου'; +$lang['Source tag'] = 'Ετικέτα Πηγή'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Η Ετικέτα "%s" είναι πλέον ένα αντίγραφο του "%s"'; +$lang['Portrait'] = 'Οριζόντια'; +$lang['Panorama'] = 'Πανοραμικό'; +$lang['Minimum width'] = 'Ελάχιστο πλάτος'; +$lang['Minimum height'] = 'Ελάχιστο ύψος'; +$lang['Landscape'] = 'Κατακόρυφα'; +$lang['View in gallery'] = 'Δείτε στην γκαλερί'; +$lang['Manage photos'] = 'Διαχειριστείτε τις φωτογραφίες'; +$lang['Number of albums per page'] = 'Αριθμός λευκωμάτων ανά σελίδα'; +$lang['Ratio'] = 'Αναλογία'; +$lang['between %d and %d pixels'] = 'μεταξύ %d και %d πίξελ'; +$lang['between %.2f and %.2f'] = 'μεταξύ %.2f και %.2f'; +$lang['Type here the name of the new group'] = 'Πληκτρολογήστε εδώ το όνομα της νέας ομάδας'; +$lang['This group will be unset to default'] = 'Η ομάδα αυτή θα φύγει από τις προεπιλεγμένες'; +$lang['This group will be set to default'] = 'Η ομάδα αυτή θα οριστεί ως προεπιλογή'; +$lang['Rename'] = 'Μετονομασία'; +$lang['Please select at least two groups'] = 'Παρακαλώ επιλέξτε τουλάχιστον δύο ομάδες'; +$lang['No members to manage'] = 'Κανένα μέλος για διαχείριση'; +$lang['No group selected, no action possible.'] = 'Καμία ομάδα δεν επιλέχτηκε, δεν είναι δυνατή η συνέχεια.'; +$lang['Merge selected groups'] = 'Συγχώνευση επιλεγμένων ομάδων'; +$lang['Duplicate'] = 'Διπλότυπο'; +$lang['Manage the members'] = 'Διαχειριστείτε τα μέλη'; +$lang['Purge user cache'] = 'Εκκαθάριση cache χρήστη'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Το μέγεθος της εικόνας θα μικρίνει κατα %dx%d pixels.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Η Αλλαγή μεγέθους μετά τη μεταφόρτωση έχει απενεργοποιηθεί λόγω της χρήσης της βιβλιοθήκης γραφικών GD '; +$lang['Select at least one tag'] = 'Επιλέξτε τουλάχιστον μια ετικέτα. '; +$lang['Mail theme'] = 'Θέμα Mail'; +$lang['General'] = 'Γενικά'; +$lang['Basic settings'] = 'Βασικές ρυθμίσεις'; +$lang['on the %d selected users'] = 'σχετικά με τους %d επιλεγμένους χρήστες'; +$lang['Users modified'] = 'Οι χρήστες τροποποιήθηκαν'; +$lang['User %s updated'] = 'Ο Χρήστης %s ενημερώθηκε'; +$lang['User %s added'] = 'Ο χρήστης %s προστέθηκε'; +$lang['Update user'] = 'Ενημέρωση χρήστη'; +$lang['Showing %s to %s of %s users'] = 'Εμφάνιση από %s ως %s των %s χρηστών'; +$lang['Show %s users'] = 'Εμφάνιση %s χρηστών'; +$lang['Registered on %s, %s.'] = 'Εγγεγραμμένοι στις %s, %s.'; +$lang['Password updated'] = 'Ο κωδικό πρόσβασης ενημερώθηκε'; +$lang['No user selected, no action possible.'] = 'Κανένας χρήστης δεν επιλέχτηκε, καμία ενέργεια δεν είναι δυνατή.'; +$lang['No user selected of %d users'] = 'Κανένας χρήστης δεν επιλέχτηκε από %d χρήστες'; +$lang['No matching user found'] = 'Δεν βρέθηκε χρήστης'; +$lang['Loading...'] = 'Φόρτωση ...'; +$lang['Last visit on %s, %s.'] = 'Τελευταία επίσκεψη στο %s, %s.'; +$lang['Change username'] = 'Αλλαγή ονόματος χρήστη'; +$lang['Change password'] = 'Αλλαγή κωδικού πρόσβασης'; +$lang['All %d users are selected'] = 'Όλοι οι %d χρήστες επιλέχτηκαν'; +$lang['(filtered from %s total users)'] = '(φιλτραρισμένο από %s σύνολο των χρηστών)'; +$lang['%d of %d users selected'] = '%d από %d επιλεγμένους χρήστες'; +$lang['close'] = 'κλείσιμο '; +$lang['Open user details'] = 'Άνοιγμα Λεπτομεριών χρήστη'; +$lang['Close user details'] = 'Κλείστε τα στοιχεία χρήστη'; +?> \ No newline at end of file diff --git a/sources/language/el_GR/common.lang.php b/sources/language/el_GR/common.lang.php new file mode 100644 index 0000000..64b5268 --- /dev/null +++ b/sources/language/el_GR/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/el_GR/el_GR.jpg b/sources/language/el_GR/el_GR.jpg new file mode 100644 index 0000000..8faa948 Binary files /dev/null and b/sources/language/el_GR/el_GR.jpg differ diff --git a/sources/language/el_GR/help/cat_modify.html b/sources/language/el_GR/help/cat_modify.html new file mode 100755 index 0000000..da54ae4 --- /dev/null +++ b/sources/language/el_GR/help/cat_modify.html @@ -0,0 +1,132 @@ +

    Επεξεργασία λευκώματος

    + +

    Πληροφορίες

    + +
      + +
    • Όνομα: μετονομάσετε το λεύκωμα (μια εικονική μετονομασία σε περίπτωση + ενός φυσικού λευκώματος).
    • + +
    • περιγραφή: σύντομο κείμενο δίνει μια γενική ιδέα για το περιεχόμενο, + αυτό το κείμενο θα εμφανίζεται στο κάτω μέρος της σελίδας μικρογραφιών.
    • + +
    + +

    Μετακίνηση

    + +

    Αν το λεύκωμα είναι εικονικό, μπορείτε να το μετακινήσετε. Μετακινώντας ένα άλμπουμ σημαίνει +αλλαγή μητρικού λευκώματος.

    + +

    Επιλογές

    + +
      + +
    • Τύπος πρόσβασης: Διαχείρισης Δικαιωμάτων. Αν κάνετε ένα + λεύκωμα ιδιωτικό, όλα τα υπο-λευκώματα γίνονται ιδιωτικά. Αν κάνετε ένα + λεύκωμα δημόσιο, όλα τα υπο-λευκώματα γίνονται δημόσια.
    • + +
    • Κλείδωμα: Το λεύκωμα και υπο-λευκώματα του θα + είναι προσωρινά απενεργοποιημένα.
    • + +
    • Σχόλια: Εξουσιοδοτεί τους χρήστες να σχολιάσουν τις φωτογραφίες αυτού του + λευκώματος.
    • + +
    + +

    Μπορείτε επίσης να διαχειριστείτε αυτές τις επιλογές στην οθόνη διαχείρισης + στις "Ιδιότητες"(screensΣχόλια, Κλείδωμα, +Δημόσιο/Ιδιωτικό, Αντιπροσωπευτικόδιατίθενται απόΔιαχείριση » Λευκωμάτων » Ιδιότητες).

    + +

    Σειρά Ταξινόμησης

    + +

    Χρησιμοποιήστε την προεπιλεγμένη σειρά ταξινόμησης εικόνων.

    + +

    Δείχνει κατά πόσον αυτή η σειρά ταξινόμησης ισχύει επίσης για τα υπό-λευκώματα.

    + +

    Επιλέξατε συγκεκριμένα κριτήρια ταξινόμησης που πρέπει να χρησιμοποιούνται με αυτό το λεύκωμα.

    +
      +
    • Ημερομηνία Δημιουργίας: Ημερομηνία Λήψης Φωτογραφία
    • +
    • Ημερομηνία Δημοσίευσης: Ημερομηνία Συγχρονισμού
    • +
    • Μέσος ρυθμός (*): Ο Μέσος συντελεστής θα μπορούσε να αλλάξει με την βαθμολογία των επισκεπτών
    • +
    • Πιο Δημοφιλή (*): Η παρούσα επίσκεψη θα μπορούσε να αλλάξει τη σειρά των πιο επισκεψιμων σελίδων
    • +
    • Όνομα Αρχείου: Το όνομα που δίνετε στο πεδίο πληροφοριών
    • +
    • Id: Εσωτερικό Id (πρόσφατες κατηγορίες έχουν ένα υψηλότερο id από τις προηγούμενες.
    • + +
    +

    (*)Προειδοποίηση: Μην ξεχάσετε να δοκιμάσετε αυτές τις σειρές ταξινόμησης μόνοι σας, καθώς μπορούν να δώσουν απροσδόκητα αποτελέσματα.

    + + +

    Αντιπροσώπευση

    + +

    Η αντιπροσώπευση του λευκώματος είναι η μικρογραφία που εμφανίζεται στην κεντρική σελίδα(category.php) και αντιπροσωπεύει το λεύκωμα όταν +περιέχουν μόνο υπο-λευκώματα και όχι άμεσα φωτογραφίες (όπως ένα μητρικό λεύκωμα).

    +φωτογραφία ενός λευκώματος :

    + +
      + +
    • Photo page: με ένα από τα κουμπιά δράσης μπορείτε να ορίσετε την τρέχουσα φωτογραφία ως εκπρόσωπος του + εμφανιζόμενου λευκώματος. Αυτό το κουμπί είναι διαθέσιμο μόνο για τους διαχειριστές.
    • + +
    • Τροποποιήστε πληροφορίες για μια φωτογραφία στη + διαχείρηση. Η οθόνη αυτή μπορεί να επιτευχθεί από picture.php ή Μαζική + διαχείρηση σε λειτουργία μονάδας.Δείτε τη βοήθεια αυτής της οθόνης για + λεπτομέρειες.
    • + +
    • Διαχείρηση » Λευκωμάτων » Ιδιώτητες, + Αντιπροσώπευση. Δείτε τη βοήθεια αυτής της οθόνης για λεπτομέρειες.
    • + +
    • Επεξεργασία λευκώματος (η παρούσα οθόνη).
    • + +
    + +

    Η επιλογή του αντιπροσώπευσης εξαρτάται από την +allow_random_representative παράμετρο διαμόρφωσης (βλέπε include/config_default.inc.php).

    + +

    Στην προεπιλεγμένη λειτουργία (allow_random_representative set to false), +κάθε λεύκωμα που περιέχει τουλάχιστον ένα στοιχείο αντιπροσωπεύεται από ένα σταθερό +στοιχείο. Μόλις ορισθεί (κατά τη δημιουργία λευκώματος), η εκπροσώπευση αλλάζει μόνο +όταν ένας διαχειριστής το απαιτήσει. Εάν η αντιπροσώπευση δεν είναι κατάλληλη, +Βρίσκει μια αντιπροσώπευση τυχαία.

    + +

    Εαν η allow_random_representativeπαράμετρος διαμόρφωσης ορίστεί +ως αληθής, μια κατηγορία που περιέχει τις φωτογραφίες μπορεί να μην έχουν καθορισμένη +αντιπροσώπευση. Χρησιμοποίησε το κουμπίΔιαγραφή αντιπροσώπευσης.

    + +

    Αν το λεύκωμα περιέχει μόνο υπο-λευκώματα και όχι φωτογραφίες, ωστόσο, μπορεί να εκπροσωπείται από ένα στοιχείο, χάρη στην οθόνη Τροποποίηση πληροφοριών για μια φωτογραφία. Η μόνη επιλογή για την τρέχουσα οθόνη +είναι το κουμπί Διαγραφή αντιπροσώπευσης.

    + +

    Σύνδεση όλων των φωτογραφιών λευκώματος σε ένα νέο λεύκωμα

    + +
      + +
    • Όνομα Εικονικού Λευκόματος: Το Όνομα του νέου άλμπουμ που πρόκειται να δημιουργηθεί, +όλες οι φωτογραφίες της παρούσας κατηγορίας θα συνδέεται με το νέο.
    • + +
    • Μητρικό λεύκωμα: Όταν το νέο άλμπουμ θα είναι, +αφήστε κενό για να δημιουργηθεί στη ρίζα.
    • + +
    + +

    Συνδέστε όλες τις φωτογραφίες του λευκώματος στο υπάρχον λεύκωμα

    + +
      + +
    • Λευκώματα: Επιλέξτε το λεύκωμα προορισμού.
    • + +
    + +

    Στείλτε ένα e-mail στα μέλη της ομάδας

    + +
      + +
    • Ομάδα: παραλήπτες της ομάδας
    • + +
    • Mail περιεχόμενο: Ελεύθερο κείμενο για να τους σταλεί.
    • + +
    +Lexiglot © 2011-2012 Strangeplanet.fr - Δημιουργείθηκε από Damie \ No newline at end of file diff --git a/sources/language/el_GR/help/cat_move.html b/sources/language/el_GR/help/cat_move.html new file mode 100755 index 0000000..d2ac417 --- /dev/null +++ b/sources/language/el_GR/help/cat_move.html @@ -0,0 +1,14 @@ +

    Μετακίνηση εικονικών Λευκωμάτων

    + +

    Μόνο εικονικά άλμπουμ μπορεί να έχει ένα νέο μητρικό λεύκωμα.

    + +

    Εικονικά λευκώματα προς μετακίνηση.

    + +

    Επιλέξτε ένα ή περισσότερα εικονικά λευκώματα που θέλετε να μετακινήσετε. +Αν η λίστα είναι κενή, αυτό σημαίνει ότι δεν έχετε δημιουργήσει ακόμη ένα.

    + +

    Νέο μητρικό λεύκωμα

    + +

    Επιλέξτε το νέο μητρικό λεύκωμα (εικονικό ή φυσικό). +Αν δεν επιλέξετε οποιοδήποτε γονέα, τα εικονικά επιλεγμένα λευκώματα θα μετακινηθούν προς τη ρίζα. +Ένα λεύκωμα δεν μπορεί να μετακινηθεί στο εαυτό του ή σε ένα από τα παιδιά ττου.

    \ No newline at end of file diff --git a/sources/language/el_GR/help/cat_options.html b/sources/language/el_GR/help/cat_options.html new file mode 100755 index 0000000..eff6efb --- /dev/null +++ b/sources/language/el_GR/help/cat_options.html @@ -0,0 +1,22 @@ +

    Επιλογές Λευκωμάτων

    + +

    Επιλογές διαχείρισης για διάφορα άλμπουμ με τη μία.

    + +
    + +
    Σχόλια
    +
    Μια φωτογραφία μπορεί να δεχθεί σχόλια από τους επισκέπτες σας, εάν ανήκει σε ένα λεύκωμα με ενεργοποιημένα τα σχόλια.
    + +
    Κλείδωμα
    +
    Κλειδωμένα λευκώματa είναι απενεργοποιημένα για συντήρηση. Μόνο διαχειρηστές μπορούν να δούν τις γκαλερί.
    + +
    Δημόσια / Ιδιωτικά
    +
    Μόλις ένα λεύκωμα γίνει ιδιωτικό, δίνει δικαιώματα πρόσβασης σε χρήστες και ομάδες
    + +
    Εκπροσώπηση
    +
    Αυτή η επιλογή είναι διαθέσιμη όταν ενεργοποιήτε τη ρύθμιση παραμέτρων +allow_random_representative (βλέπε include/config_defaults.inc.php) +αλήθεια. Κάθε άλμπουμ μπορεί να εκπροσωπείται από μια τυχαία φωτογραφία ή μια φωτογραφία που επιλέχθηκε ως μοναδική εκπρόσωπο.
    + +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/cat_perm.html b/sources/language/el_GR/help/cat_perm.html new file mode 100755 index 0000000..b4bf64c --- /dev/null +++ b/sources/language/el_GR/help/cat_perm.html @@ -0,0 +1,13 @@ +

    Επεξεργασία δικαιωμάτων λευκώματος

    + +

    Αυτή η οθόνη είναι διαθέσιμη μόνο για ιδιωτικά λευκώματα. Εδώ μπορείτε να επιλέξετε +χρήστες και οι ομάδες έχουν εγκριθεί για ένα λεύκωμα.

    + +

    Ομάδες

    + +

    Μπορείτε να αρνηθείτε ή να επιτρέψετε την πρόσβαση ομάδων για το τρέχον άλμπουμ. Με την τροποποίηση +αδειών ομάδων, οι χρήστες που ανήκουν σε αυτές τις ομάδες θα έχουν ή δεν θα έχουν πρόσβαση στο άλμπουμ.

    + +

    Χρήστες

    + +

    Μπορείτε να αρνηθείτε ή να επιτρέψετε την πρόσβαση σε μεμονωμένους χρήστες. Οι χρήστες που έχουν πρόσβαση μέσω μιας ομάδας μπορεί να αρνηθεί την πρόσβαση κατ' εξαίρεση.

    \ No newline at end of file diff --git a/sources/language/el_GR/help/configuration.html b/sources/language/el_GR/help/configuration.html new file mode 100755 index 0000000..b4ce538 --- /dev/null +++ b/sources/language/el_GR/help/configuration.html @@ -0,0 +1,99 @@ +

    Διαμόρφωση

    + +

    Αυτή η οθόνη επιτρέπει στο διαχειριστή να κάνει τη βασική διαμόρφωση της γκαλερί. Πράγματι, αυτή η οθόνη δείχνει μόνο απλές παραμέτρους διαμόρφωσης, αυτό θα πρέπει να είναι αρκετό για τη συντριπτική πλειοψηφία των διαχειριστών. Αν θέλετε να δείτε πολλές άλλες (για προχωρημένους) παραμέτρους διαμόρφωσης, διαβάστε το αρχείο προεπιλεγμένης ρύθμισης +include/config_default.inc.php.

    + +

    Η οθόνη χωρίζεται σε διαφορετικά τμήματα, ομαδοποιώντας παραμέτρους διαμόρφωσης ανά θέμα.

    + + +

    Κύρια

    +
      +
    • Τίτλος Γκαλερί: που χρησιμοποιούνται στις κοινοποιήσεις ανατροφοδώτησης RSS και μέσω ηλεκτρονικού ταχυδρομείου.
    • + +
    • Πανό Σελίδας: εμφανίζεται πάνω από κάθε δημόσια σελίδα.
    • + +
    • URL της Γκαλερί: που χρησιμοποιείται στις κοινοποιήσεις ανατροφοδώτησης RSS.
    • + +
    • Lock gallery: Κλειδώστε ολόκληρη την γκαλερί για συντήρηση. Μόνο οι χρήστες διαχείρισης θα μπορούν να έχουν πρόσβαση στη γκαλερί.
    • + +
    • Βαθμολόγιση: Βαθμολόγιση φωτογραφιών είναι ενεργοποιημένη.
    • + +
    • Αξιολόγηση από τους επισκέπτες: Ακόμα και μη εγγεγραμμένους χρήστες μπορούν να αξιολογήσουν τις εικόνες.
    • + +
    • Επιτρέψτε την εγγραφή χρηστών: Ο καθένας μπορεί να εγγραφεί.
    • + +
    • Η ηλεκτρονική διεύθυνση είναι υποχρεωτική για όλους τους χρήστες: η διεύθυνση ηλεκτρονικού ταχυδρομείου θα πρέπει να ελέγχετε κατά την εγγραφή ή ενημέρωση προφίλ, εκτός εάν η ενέργεια γίνεται από το διαχειριστή.
    • + +
    • Αποστολή Email στον admin όταν ένας νέος χρήστης καταχωρειθεί: Οι διαχειριστές θα ειδοποιηθούν με mail για κάθε καταχώριση.
    • + +
    • Προεπιλογή σειράς για φωτογραφίες:μπορείτε να ορίσετε μια εξατομικευμένη σειρά με τα drop-down μενού.
    • + +
    + +

    Ιστορικό

    + +

    Επισκέψεις στις σελίδεςcategory.php και picture.php θα αποθηκευτεί στον πίνακα history.

    + +

    οι επισκέψεις θα εμφανιστούν στο Διαχείρηση » Εργαλεία » Ιστορικό.

    + +
      +
    • Αποθηκεύστε τις επισκέψεις σελίδων ανά επισκέπτη: οι επισκέψεις σελίδων ανά επισκέπτη θα καταγράφονται.
    • + +
    • Επισκέψεις σελίδων ανά επισκέπτη: οι επισκέψεις σελίδων ανά εγγεγραμμένο επισκέπτη θα καταγράφονται.
    • + +
    • Επισκέψεις σελίδων ανά διαχειρηστή: οι επισκέψεις σελίδων ανά διαχειρηστή θα καταγράφονται.
    • + +
    + +

    Σχόλια

    +
      + +
    • Σχόλια για όλους: Ακόμα και μη εγγεγραμμένοι επισκέπτες μπορούν να δημοσιεύουν σχόλια.
    • + +
    • Αριθμός σχολίων ανά σελίδα.
    • + +
    • Επικύρωση: ο διαχειριστής πρέπει να επικυρώνει τα σχόλια χρηστών πριν αυτά γίνουν ορατά στην σελιδα. Η επικύρωση σχολίων χρηστών λαμβάνει χώρα στην οθόνη Διαχείρηση » Εργαλεία » Σχόλια Εν αναμονή .
    • + +
    • Αποστολή email στον διαχειρηστή όταν ένα έγκυρο σχόλιο εγγράφεται: Στέλνει ένα μήνυμα στους διαχειριστές όταν ένας χρήστης εισάγει ένα σχόλιο και αυτό το σχόλιο είναι έγκυρο.
    • + +
    • Αποστολή email στον διαχειρηστή όταν ένα σχόλιο απαιτεί επικύρωση: +Στέλνει ένα μήνυμα στους διαχειριστές όταν ένας χρήστης εισάγει ένα σχόλιο απαιτεί επικύρωση απο τον διαχειρηστή. +η επικύρωση σχολίων χρηστών λαμβάνει χώρα στην οθόνη Διαχείρηση » Εργαλεία » Σχόλια Εν αναμονή.
    • + +
    + +

    Προεπιλεγμένη οθόνη

    + +

    Εδώ μπορείτε να αλλάξετε τις επιλογές προβολής που χρησιμοποιείται από τους φιλοξενούμενους, ο προεπιλεγμένος χρήστης που δεν είναι συνδεδεμένος. Μόλις συνδεθεί, αυτές οι επιλογές έχουν παρακαμφθεί από τις δικές του επιλογές του χρήστη +(τροποιήσημες στο προφίλ).

    + +

    Είναι δυνατόν να αλλάξετε τις επιλογές εμφάνισης για όλους τους υπάρχοντες χρήστες στην οθόνη Διαχείρηση » +Χρήστες » διαχείρηση όπου μπορείτε να επιλέξετε μια λίστα χρηστών.

    + +
      + +
    • Γλώσσα: Εφαρμογή σε ετικέτες Piwigo μόνο. Ονόματα άλμπουμ, ονόματα φωτογραφιών και όλα τα πεδία περιγραφών δεν μεταφράζονται
    • + +
    • Αριθμός φωτογραφιών ανά σειρά
    • + +
    • Αριθμός σειρών ανά σελίδα
    • + +
    • Θέμα διεπιφάνειας
    • + +
    • Πρόσφατη περίοδος: Κατά ημέρα. Περίοδος κατά την οποία μια φωτογραφία εμφανίζεται ως νέα. Πρέπει να είναι μεγαλύτερη από 1 ημέρα.
    • + +
    • Ανάπτυξη όλων των λευκωμάτων: Ανάπτυξη όλων των λευκωμάτων προεπιλεκτικά στο μενούΠροειδοποιήση: Αυτή η επιλογή είναι καταλαμβάνει πολλούς πόρους και μπορεί να δημιουργήσει ένα τεράστιο μενού αν το δέντρο των λευκωμά των σας περιέχει πολλά άλμπουμ.
    • + +
    • Εμφάνιση αριθμού σχολίων: Εμφάνιση του αριθμού των σχολίων για κάθε φωτογραφία στη σελίδα μικρογραφιών. Καταλαμβάνει πολλούς πόρους.
    • + +
    • Εμφάνιση μερτητή χτυπημάτων: Εμφάνιση αριθμού χτυπημάτων που παρατηρήθηκαν στη φωτογραφία ακριβώς κάτω από φωτογραφία του στη σελίδα μικρογραφίες. Μόνο όταν η παράμετρος προηγμένες ρυθμίσεις είναι:
      + $conf['show_nb_hits'] = true;
      + Σημείωση: ψευδή από προεπιλογή.
    • + +
    • Μέγιστο πλάτος των φωτογραφιών: εμφανιζόμενο μέγιστο πλάτος. Φωτογραφίες μεγαλύτερο από τη ρύθμιση αυτή θα αλλάξει το μέγεθος στην οθόνη. Αντί αυτή την επιλογή, θα μπορούσε να εξετάσει την τροποποίηση του πλάτους των φωτογραφιών σας; Αυτό θα ήταν μια καλύτερη λύση.
    • + +
    • Μέγιστο ύψος των φωτογραφιών: Το ίδιο και για την μέγιστη ρύθμιση πλάτους.
    • + +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/extend_for_templates.html b/sources/language/el_GR/help/extend_for_templates.html new file mode 100755 index 0000000..e32e6db --- /dev/null +++ b/sources/language/el_GR/help/extend_for_templates.html @@ -0,0 +1,52 @@ +

    Διαμόρφωση Επεκτάσεων προτύπων

    + +

    Για την επέκταση προτύπων

    +

    Η Piwigo γκαλερί σας μπορεί να διαμορφωθεί με την αντικατάσταση των υπαρχόντων αρχείων προτύπων με προσαρμοσμένες εκδόσεις. Για παράδειγμα, οι επικεφαλίδες στα προεπιλεγμένα πρότυπα (header.tpl) μπορεί να αντικατασταθούν από άλλές επικεφαλίδες προσαρμοσμένων πρότυπων (my-header.tpl). Μετά την υποβολή των αλλαγών στη βάση δεδομένων η γκαλερί θα εμφανίσει την προσαρμοσμένη επικεφαλίδα, αντί της αρχικής επικεφαλίδας.
    +Οι Επεκτάσεις προτύπων είναι ένας ισχυρός τρόπος να δημιουργήσετε προσαρμοσμένα θέματα τόσο για τους νέους όσο και τους προχωρημένους χρήστες. Χρησιμοποιείται σε συνδυασμό με τον Επεξεργαστή LocalFiles μπορείτε να δημιουργήσετε τα δικά σας παιδικά θέματα.

    + +

    Αρχικό Πρότυπο

    +

    Ένα θέμα περιέχει μια σειρά από αρχεία προτύπων που συνθέτουν τις σελίδες γκαλερί. Αυτά είναι τα αρχικά πρότυπα.

    + +

    Προαιρετικό URL λέξεων-κλειδιών

    +

    Αυτές είναι λέξεις που βρίσκονται στη διεύθυνση URL γκαλερί μετά το όνομα της ενότητας. Μπορούν επίσης να είναι ενεργοί Μόνιμοι Σύνδεσμοι. (Δείτε την τεκμηρίωση για Μόνιμους Συνδέσμους για περισσότερες πληροφορίες). ΠΡΟΕΙΔΟΠΟΙΗΣΗ: εάν το ίδιο αρχικό πρότυπο και την ίδια λέξη-κλειδί χρησιμοποιείται σε περισσότερα από ένα προσαρμοσμένο πρότυπο μόνο η τελευταία είναι ενεργή.

    + +

    Δεσμευμένο Θέμα

    +

    Το δεσμευμένο θέμα είναι το θέμα του οποίου τα αρχεία πρότυπου έχουν αντικασταθεί.

    + +

    Πού είναι τα αρχικά πρότυπα;

    +

    Τα αρχικά πρότυπα είναι τα αρχεία πρότυπου που περιέχονται σε κάθε θέμα αρχικά. Είναι αποθηκευμένα στο /themes/default/templatethemes//template). Αυτά τα αρχεία προτύπωνδεν θα πρέπει να επεξεργάζονται επί τόυ γιατι οι αλλαγές θα χαθούν όταν γίνεται αναβάθμιση θάματος.
    +Υποστηριζόμενα αρχικά πρότυπα περιλαμβάνονται:

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl και / ή thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl και / ή footer.tpl
    • +
    • picture_content.tpl and/or picture.tpl
    • + +
    • profile.tpl και / ή profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl και / ή search_rules.tpl
    • +
    • nbm.tpl και / ή notification.tpl
    • +
    • identification.tpl και / ή register.tpl
    • +
    • redirect.tpl
    • +
    +

    Αποθηκεύοντας προσαρμοσμένα πρότυπα

    +

    Τα προσαρμοσμένα πρότυπα Θα πρέπει να αποθηκευτούν στο φάκελο πρότυπο-επέκταση ή σε υποφακέλους. Για παράδειγμα, /template-extension/my-default/header.tpl/template-extension//header.tpl) Τα αρχεία προτύπων μπορεί να έχουν οποιοδήποτε όνομα με .tpl επέκταση. Τα αρχεία προτύπων στους υποφακέλους εμφανίζονται στην οθόνη διαμόρφωσης Προτύπου ως διαθέσιμα προσαρμοσμένα πρότυπα.

    + +

    Ενεργοποίηση προσαρμοσμένων πρότυπων

    +

    Επιλέξτε το αρχικό πρότυπο που θέλετε να αντικαταστήσετε. Προαιρετικά επιλέξετε μια διεύθυνση URL λέξης-κλειδί για να σιγουρευτείτε ότι το προσαρμοσμένο πρότυπο εμφανίζεται μόνο σε σελίδες με τη συγκεκριμένη λέξη. Επιλέξτε ένα δεσμευμένο θέμα και οι αλλαγές θα ισχύσουν για το θέμα αυτό. Υποβάλετε τις αλλαγές στη βάση δεδομένων.

    +

    Απενεργοποίηση προσαρμοσμένων πρότυπων

    +

    Αποεπιλέξτε το αρχικό πρότυπο και υποβάλετε τις αλλαγές στη βάση δεδομένων.
    +Διαγράψτε τα αρχεία προτύπων από το φάκελο πρότυπο-επέκταση.

    + + +

    Προειδοποιήσεις

    +
      +
    • Το αρχικό πρότυπο πρέπει να είναι το αρχικό πρότυπο, διαφορετικά μπορεί να έχει απρόβλεπτα αποτελέσματα.
    • +
    • Αν το αρχικό πρότυπο και η διεύθυνση URL της λέξης-κλειδί είναι ίδια και χρησιμοποιείται σε περισσότερα από ένα προσαρμοσμένη πρότυπα μόνο η τελευταία είναι ενεργή.
    • +
    • Τα κατανεμημένα δείγματα αρχείων πρότυπων είναι για δοκιμαστικούς σκοπούς μόνο. Μην τα επεξεργαστείτε. Δημιουργήστε τα δικά σας ή αντίγραφα από υπάρχοντα αρχεία προτύπων του θέματος /template-extension//
    • +
    • Όταν το προσαρμοσμένο πρότυπο διαγράφεται το αρχικό αρχείο προτύπου αμέσως επανενεργοποιήται
    • +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/group_list.html b/sources/language/el_GR/help/group_list.html new file mode 100755 index 0000000..b79acb3 --- /dev/null +++ b/sources/language/el_GR/help/group_list.html @@ -0,0 +1,22 @@ +

    Λίστες Ομάδων

    + +

    Αυτό είναι το μέρος όπου μπορείτε να διαχειριστείτε τις ομάδες.

    + +

    Προσθήκη μιας ομάδας

    + +

    Ο Διαχειριστής μπορεί να προσθέσει ομάδες.

    + +

    Λίστες Ομάδων

    + +

    Για κάθε ομάδα οι ακόλουθες δράσεις μπορούν να εφαρμοστούν:

    + + +
      +
    • πηγαίνετε στη διαχείριση των χρηστών (Διαχειριστής » Χρήστες » Διαχειριστείτε)
    • +
    • μεταβείτε στην οθόνη διαχείρισης δικαιωμάτων για τη χορήγηση ή την άρνηση πρόσβασης σε ιδιωτικά λευκώματα.
    • +
    • διαγράψετε την ομάδα (απαιτείται επιβεβαίωση)
    • +
    • Εναλλαγή κατάστασης "προεπιλογή" (απαιτεί επιβεβαίωση)
    • +
    + +

    Προεπιλεγμένες Ομάδες

    +

    Προκαθορισμένες ομάδες είναι ομάδες που συνδέονται αυτόματα σε κάθε νέο χρήστη κατά την εγγραφή ή τη δημιουργία από ένα διαχειριστή.

    \ No newline at end of file diff --git a/sources/language/el_GR/help/help_add_photos.html b/sources/language/el_GR/help/help_add_photos.html new file mode 100755 index 0000000..490baac --- /dev/null +++ b/sources/language/el_GR/help/help_add_photos.html @@ -0,0 +1,27 @@ +

    Διάφοροι τρόποι για να προσθέσετε τις φωτογραφίες σας στην γκαλερί σας:

    + +
      +
    • Κατ' ευθείαν Μεταφόρτωση μέσα από τον web browser σας είναι ο + ο απλούστερος και αμεσότερος τρόπος. Εξαρτάται από τις δυνατότητες του browser σας + και τον web server σας. Για μια τεράστια ποσότητα φωτογραφιών ή σε περίπτωση που αντιμετωπίζετε κάποιο πρόβλημα, + σας περιμένουν άλλες μέθοδοι !
    • +
    + + + +
      +
    • pLoader είναι μια desktop εφαρμογή, που θα εγκατασταθεί στον υπολογιστή σας. Drag & drop φωτογραφίες στο παράθυρο του pLoader, κάνε κλικ στο "Ανέβασε στο Piwigo" και αφήστε το pLoader να κάνει τη δουλειά. Μπορείτε να βρείτε άλλες εφαρμογές επιφάνειας εργασίας, όπως το WinToPiwigo ή το Digikam π΄ροσθετο εξαγωγής γαι το Piwigo.
    • +
    + + + +
    +
      +
    • Μεταφόρτωση FTP είναι ο πιο συνιστώμενος τρόπος για να προσθέσετε μια + πολύ μεγάλη συλλογή από φωτογραφίες με τον ελάχιστο αριθμό κλικ. Ακολουθήστε + τον οδηγό για την προετοιμασία των φωτογραφιών σας. Η μέθοδος FTP σας επιτρέπει να ελέγχετε με ακρίβεια + τη φυσική οργάνωση των φωτογραφιών σας στον server σας.
    • +
    + + +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/help_groups.html b/sources/language/el_GR/help/help_groups.html new file mode 100755 index 0000000..331109b --- /dev/null +++ b/sources/language/el_GR/help/help_groups.html @@ -0,0 +1,11 @@ +

    Οι ομάδες είναι ένας βολικός τρόπος για να ρυθμίζετε τα δικαιώματα για μια λίστα χρηστών.

    + +

    Δημιουργίστε ομάδες στο Διαχείρηση » Χρήστες +» Ομάδες και συνδέστε τους χρήστες σε αυτή την ομάδα +απο Διαχείρηση » Χρήστες » +Διαχειριστείτε.

    + +

    Ένας χρήστης μπορεί να ανήκει σε πολλές ομάδες. Στην Εξουσιοδότηση υπερισχύει +η απαγόρευση : εαν ο χρήστης "jack" ανήκει στην ομάδα "family" και "friends", και +μόνο η ομάδα "family" μπορεί να βλέπει το λεύκωμα "Christmas 2010" τότε ο +"jack" θα μπορεί να βλέπει το λεύκωμα "Christmas 2010".

    \ No newline at end of file diff --git a/sources/language/el_GR/help/help_misc.html b/sources/language/el_GR/help/help_misc.html new file mode 100755 index 0000000..edbcf0e --- /dev/null +++ b/sources/language/el_GR/help/help_misc.html @@ -0,0 +1,10 @@ +

    Μόλις δημιουργήσετε τη γκαλερί σας, μπορείτε να τη ρυθμίσετε για τον επισκέπτη σας +

      +
    • Η προεπιλεγμένη οθόνη, αν επιθυμείτε στο Διαχείριση » Ρυθμίσεις » Επιλογές tab + Ρυθμίσεις Επισκεπτών
    • +
    • Το προεπιλεγμένο θέμα στο Διαχείριση » Ρυθμίσεις » Θέματα
    • +
    • Η προεπιλεγμένη γλώσσα στο Διαχείριση » Ρυθμίσεις » Γλώσσες
    • +
    + Από προεπιλογή, κάθε νέος χρήστης θα κληρονομήσει αυτές τις ιδιότητες κατά την εγγραφή. +

    +

    Αν έχετε οποιαδήποτε ερώτηση, Piwigo κοινότητα θα σας καλωσορίσει στο φόρουμ της.

    \ No newline at end of file diff --git a/sources/language/el_GR/help/help_permissions.html b/sources/language/el_GR/help/help_permissions.html new file mode 100755 index 0000000..62c5b65 --- /dev/null +++ b/sources/language/el_GR/help/help_permissions.html @@ -0,0 +1,57 @@ +
    +Δικαιώματα στις φωτογραφίες + +

    Κάθε φωτογραφία έχει ένα επίπεδο προστασίας (ένα κλείδωμα). Κάθε χρήστης έχει επίσης ένα επίπεδο προστασίας (βασικό). There are 5 privacy levels:

    +
      +
    1. Κανένας
    2. +
    3. Επαφές
    4. +
    5. Φίλοι (η οποία είναι υψηλότερη από μια Eπαφή)
    6. +
    7. Οικογένεια (η οποία είναι υψηλότερη από ένα Φίλο)
    8. +
    9. Διαχειριστές (το οποίο είναι υψηλότερο από ό, τι οποιοδήποτε άλλο επίπεδο)
    10. +
    + +

    Τα υψηλότερα επίπεδα έχουν δικαιώματα σε χαμηλότερα επίπεδα. Για ένα συγκεκριμένο χρήστη, όσο υψηλότερο είναι το επίπεδο προστασίας της ιδιωτικότητας, τόσο περισσότερες φωτογραφίες μπορεί να δει.

    + +

    Για παράδειγμα, εάν η φωτογραφία "peter_wedding-0024.jpg" έχει δικαιώματα "Οικογένεια", Τότε:

    +
      +
    • Πέτερ (που είναι "Διαχειριστής") Θα δεί τη φωτογραφία γιατί "Διαχειριστές" μπορούν να δουν όλες τις φωτογραφίες
    • +
    • Μπεθ (που είναι μέλος στο "Οικογένεια" ) επίσης θα δει τις φωτογραφίες
    • +
    • Μαίρη(που είναι μια "Φίλη") δεν θα δει τις φωτογραφίες
    • +
    + +

    Ένας χρήστης που δεν έχει άδεια για να δεί το περιεχόμενο του λευκώματος δεν θα δεί το ίδιο το λεύκωμα, ούτε καν τον τίτλο του. Η ίδια αρχή ισχύει και για μια ετικέτα.

    + +

    Μπορείτε να ρυθμίσετε το επίπεδο προστασίας της ιδιωτικότητας του χρήστη πάτε στην οθόνη Διαχείριση » Χρήστες » Διαχειριστείτε .

    + +
    + +
    +Δικαιώματα για τα Λευκώματα + +

    Αν τα επίπεδα της ιδιωτικότητας δεν ταιριάζει στις ανάγκες σας, μπορείτε επίσης να διαχειριστείτε δικαιώματα στα λευκώματα για ένα χρήστη ή μια ομάδα. Μπορείτε να διαχειρίζεστε δικαιώματα για τις φωτογραφίες και τα λευκώματα ταυτόχρονα, χωρίς διενέξεις.

    + +

    Μπορείτε να απαγορεύσετε την πρόσβαση στα λευκώματα. Ενεργοποιήστε τον τύπο πρόσβασης στο λεύκωμα +σε "ιδιωτικό" αν θέλετε να διαχειριστείτε δικαιώματα.

    + +

    Μπορείτε να ορίσετε ένα λεύκωμα ως ιδιωτικό με επεξεργασία κάποιου λευκώματος +(Διαχείριση » Λευκώματα » Διαχειριστείτε +» Επεξεργαστείτε ) ή με τη ρύθμιση των επιλογών για όλο το δέντρο του λευκώματός σας +(Διαχείριση » Λευκώματα » +Ιδιότητες » Δημόσιο / Ιδιωτικό).

    + +

    Έτσι και το άλμπουμ είναι ιδιωτικό, μπορείτε να διαχειριστείτε δικαιώματα για τις ομάδες και +τους χρήστες με 3 οθόνες:

    + +
      + +
    • Διαχείριση » Χρήστες » Διαχειριστείτε » + δράση δικαιωμάτων (μία σύνδεση ανά χρήστη)
    • + +
    • Διαχείριση » Χρήστες » Ομάδες » + δράση δικαιωμάτων (μία σύνδεση ανά χρήστη)
    • + +
    • Διαχείριση » Λευκώματα » Διαχειριστείτε » επεξεργαστείτε + δράση δικαιωμάτων λευκώματος (μία σύνδεση ανά χρήστη)
    • + +
    +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/help_virtual_links.html b/sources/language/el_GR/help/help_virtual_links.html new file mode 100755 index 0000000..794c364 --- /dev/null +++ b/sources/language/el_GR/help/help_virtual_links.html @@ -0,0 +1,12 @@ +

    Οι φωτογραφίες εμφανίζονται στο λεύκωμα που αντιστοιχεί στο κατάλογο +του αρχείου τους.

    + +

    Μπορείτε επίσης να εμφανίσετε μια φωτογραφία σε διάφορα λευκώματα, χωρίς διπλοκαλύψεις +του αρχείου στον web server σας. Συσχετίστε τη φωτογραφία σε λεύκωμα από την +οθόνη επεξεργασίας φωτογραφιών (ότι κάθε διαχειριστής μπορεί να φτάσει από τη σελίδα της φωτογραφίας +από την πλευρά της γκαλερί).

    + +

    Τα εικονικά λευκώματα βασίζοται στην έννοια αυτή: δεν έχουν αντίστοιχους +καταλόγους. Δημιουργία εικονικού λευκώματος +από Διαχείριση » Λευκώματα » +Διαχειριστείται.

    \ No newline at end of file diff --git a/sources/language/el_GR/help/history.html b/sources/language/el_GR/help/history.html new file mode 100755 index 0000000..143412d --- /dev/null +++ b/sources/language/el_GR/help/history.html @@ -0,0 +1,22 @@ +

    Ιστορικό

    + +

    Σε αυτές τις οθόνες, μπορείτε να παρακολουθείτε το ιστορικό των επισκέψεων της γκαλερί σας σύμφωνα με τις επιλογές έχετε επιλέξει στο: Διαχείρηση » Διαμόρφωση » Επιλογές » Ιστορικό

    + +

    Στατιστικά

    +
      +

      Εάν έχετε επιλέξει να καταγράφονται τις σελίδες που επισκέπτονται (index.php and picture.php), μπορείτε να τους παρακολουθείται από αυτήν την καρτέλα..

      +
    • Παγκόσμια στατιστικά: επισκέψεις ανά έτος.
    • +
    • Ετήσιες στατιστικά: επισκέψεις ανά μήνα του επιλεγμένου έτους.
    • +
    • Μηνιαία στατιστικά: επισκέψεις ανά ημέρα στον επιλεγμένο μήνα .
    • +
    • Ημερήσια στατιστικά: επισκέψεις ανά ώρα στην επιλεγμένη ημέρα.
    • +
    + +

    Αναζήτηση

    +
      +

      Εάν έχετε επιλέξει να καταγράφονται οι σελίδες που επισκέπτονται(index.php and picture.php), μπορείτε να δείτε τα στοιχεία από αυτή την καρτέλα με τη βοήθεια διαφόρων φίλτρων.

      +
    • Φιλτράρισμα με ημερομηνία: επιλέξτε το εύρος ημερομηνιών αναζήτησης θέτοντας ημερομηνίες έναρξης και λήξης.
    • +
    • Φιλτράρισμα με βάση τον τύπο του στοιχείου: επιλέξτε τον τύπο των στοιχείων για τις στατιστικές σχετικά με αυτό το στοιχείο.
    • +
    • Φιλτράρισμα με βάση τον χρήστη: επιλέξετε τον χρήστη για τις στατιστικές σχετικά με το συγκεκριμένο χρήστη.
    • +
    • Φιλτράρισμα με βάση τον αναγνωριστικό εικόνας: επιλέξτε το αναγνωριστικό εικόνας για τις στατιστικές σχετικά με αυτή την εικόνα.
    • +
    • Φιλτράρισμα με βάση το όνομα του αρχείου: επιλέξετε το όνομα αρχείου για τις στατιστικές σχετικά με αυτό το αρχείο.
    • +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/maintenance.html b/sources/language/el_GR/help/maintenance.html new file mode 100755 index 0000000..8eee56d --- /dev/null +++ b/sources/language/el_GR/help/maintenance.html @@ -0,0 +1,26 @@ +

    Συντήρηση

    + +

    Για τη βελτιστοποίηση του χρόνου δημιουργίας σελίδας το Piwigo χρησιμοποιεί προσωρινά αποθηκευμένες πληροφορίες. Για παράδειγμα, αντί να υπολογίζουν τον αριθμό των φωτογραφιών που περιέχονται σε κάθε λεύκωμα σε κάθε σελίδα ξανά αυτές οι πληροφορίες αποθηκεύονται στη βάση δεδομένων. Στη θεωρία αυτές οι πληροφορίες θα πρέπει πάντα να είναι σωστές, αλλά μερικές φορές μπορεί να συμβεί ένα λάθος στις προσωρινά αποθηκευμένες πληροφορίες και να αποβούν παρωχημένες.

    + +

    Ορισμένες πληροφορίες γίνονται λιγότερο χρήσιμες όσο περνάει ο καιρός. Η διαγραφή αυτών των άχρηστων πληροφοριών από τη βάση δεδομένων θα σας εξοικονομούσε χώρο στο δίσκο.

    + +
      +
    • Διαγραφή ορφανών ετικετών
    • +
    +
      +
    • Ενημέρωση πληροφοριών λευκώματος: Για κάθε λεύκωμα, η ακόλουθη πληροφορία ελέγχεται, και ενημερώνεται εάν χρειάζεται : λίστα μητρικών λευκωμάτων, ο αριθμός των φωτογραφιών, ημερομηνία τελευταίας φωτογραφίας, θέση όμορρων λευκωμάτων, η θέση ανάμεσα σε όλα τα άλμπουμ. Η ενέργεια αυτή ελέγχει επίσης τη συνοχή αντιπροσωπευτικών φωτογραφιών.
    • +
    • Ενημέρωση πληροφοριών φωτογραφιών: Για κάθε φωτογραφία, η επικαιροποίηση πληροφοριών είναι : την πλήρη διαδρομή προς το αρχείο, το μέση αξιολόγηση. Προειδοποίηση, δεν πρέπει να συγχέουμε: οι πληροφορίες μεταδεδομένων πρέπει να συγχρονίζονται από Διαχείριση » Εργαλεία » συγχρονισμός, ή στην οθόνη τροποποίηση μιας φωτογραφίας (μέσω Φωτογραφία για παράδειγμα).
    • +
    +
      +
    • Επιδιόρθωση και βελτιστοποίηση της βάσης δεδομένων:Εκτελέστε επαναταξινόμηση, επισκευή και λειτουργίες βελτιστοποίησης σε κάθε πίνακα της βάσης δεδομένων.
    • +
    • Επανεκκίνηση ελέγχου ακεραιότητας
    • +
    + +
      +
    • Εκκαθάριση Στοιχείων ιστορικού: Διαγραφή όλων των γραμμών από τον πίνακα ιστορικού. Οθόνη Διαχείριση » Εργαλεία » Ιστορικό δεν θα εμφανίζει πλέον πληροφορίες για το ιστορικό. Προειδοποίηση: όλα τα δεδομένα θα χαθούν, χωρίς οποιοδήποτε τρόπο να τα ανακτήσεται.
    • +
    • Εκκαθάριση συνοπτικού Ιστορικού: Διαγραφή όλων των πληροφοριών συνοπτικού σχετικά με το ιστορικό επισκέψων. Η σύνοψη αυτή υπολογίζεται από τις λεπτομέρειες του ιστορικού.
    • +
    • Εκκαθάριση συνεδριών: Διαγραφή συνεδριών χρήστη που έχουν λήξει.
    • +
    • Εκκαθάριση μη χρησιμοποιηθέντων ειδοποιήσεων τροφοδοσιών
    • +
    • Εκκαθάριση ιστορικού αναζήτησης
    • +
    • Εκκαθάριση καταρτιζόμενων προτύπων
    • +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/notification_by_mail.html b/sources/language/el_GR/help/notification_by_mail.html new file mode 100755 index 0000000..ed53aed --- /dev/null +++ b/sources/language/el_GR/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

    Ειδοποίηση μέσω e-mail (NBM)

    + +

    Διαμόρφωση και διαχείριση ειδοποιήσεων μέσω e-mail στους χρήστες ενημερώνοντας τους για τις αλλαγές στο δικτυακό σας τόπο.

    + +

    Αυτή η οθόνη αποτελείται από τρεις καρτέλες:

    + +

    Ρυθμίσεις

    +

    Διαθέσιμο μόνο για webmasters, αυτή η καρτέλα καθορίζει τις παραμέτρους της ειδο[ποίησης μέσω e-mail.

    + +

    Eγγραφή

    +

    Διαθέσιμο μόνο για webmasters, αυτή η καρτέλα διαχειρίζεται την εγγραφή ενός χρήστη για ειδοποιήσεις μέσω e-mail. Προσθήκη στους χρήστες στήν ενότητα εγγεγραμμένων για να λαμβάνουν ειδοποιήσεις με e-mail.

    + +

    Αποστολή

    +

    Διαθέσιμο μόνο για webmasters και διαχειριστές, αυτή η καρτέλλα επιτρέπει στους διαχειρηστές να στέλνουν ειδοποιήσεις μέσω e-mail σε εγγεγραμμένους χρήστες.

    diff --git a/sources/language/el_GR/help/permalinks.html b/sources/language/el_GR/help/permalinks.html new file mode 100755 index 0000000..a04f0bb --- /dev/null +++ b/sources/language/el_GR/help/permalinks.html @@ -0,0 +1,7 @@ +

    Μόνιμοι Σύνδεσμοι

    + +

    Μόνιμοι Σύνδεσμοι χρησιμοποιούνται για να κάνουν καλύτερες τις διευθύνσεις λευκωμάτων. Όταν ένα λεύκωμα έχει ένα Μονιμο Σύνδεσμο καθορισμένο, τότε δεν απαιτείται το ID του λευκώματος πλέονστην διεύθηνση url.

    + +

    Όταν διαγράφεις ένα Μόνιμο Σύνδεσμο, τότε μπορεί να αποθηκευτεί στο ιστορικό μονίμων συνδέσμων, έτσι ώστε οι εξωτερικοί σύνδεσμοι των σελίδων του Piwigo να εξακολουθούν να λειτουργούν. Στον πίνακα ιστορικού μονίμων συνδέσμων μπορείτε να δείτε την ημερομηνία κατά την οποία ο σύνδεσμος έχει διαγραφεί, η τελευταία φορά που χρησιμοποιήθηκε και πόσες φορές αυτός σύνδεσμος έχει χρησιμοποιηθεί.

    + +

    Σημειώστε ότι οι Μόνιμοι Σύνδεσμοι πρέπει να είναι μοναδικοί για κάθε λεύκωμα. Επίσης, στο ιστορικό μονίμων συνδέσμων δεν μπορείτε να έχετε ορίσει τον ίδιο σύνδεσμος περισσότερες από μία φορές.

    diff --git a/sources/language/el_GR/help/photos_add_ftp.html b/sources/language/el_GR/help/photos_add_ftp.html new file mode 100755 index 0000000..e29c2a4 --- /dev/null +++ b/sources/language/el_GR/help/photos_add_ftp.html @@ -0,0 +1,68 @@ +
    + Γρήγορη Εκκίνηση + +
      +
    1. Δημιουργήστε έναν κατάλογο στον υπολογιστή σας.
    2. + +
    3. Αντιγράψτε μερικές φωτογραφίες μέσα σε αυτόν τον κατάλογο, κι αλλάξετε το μέγεθός τους για προβολή σε ιστοσελίδες. Προειδοποίηση: το όνομα των αρχείων και καταλόγων πρέπει να περιέχει μόνο γράμματα, αριθμούς, "-", "_" ή ".". Όχι κενά διαστήματα, ούτε τονιζόμενους χαρακτήρες.
    4. + +
    5. Με τη βοήθεια ενός προγράμματος FTP, αντιγράψτε τον κατάλογό σας στο κατάλογο "galleries" της Piwigo εγκατάστασης σας .
    6. + +
    7. Συνδεθείτε στη γκαλερί σας και πηγαίνετε στο Διαχείριση και κάντε κλικ στο μεγάλο κουμπί Συγχρονισμός.
    8. +
    + +

    Συγχαρητήρια! Έχετε δημιουργήσει με επιτυχία το πρώτο λεύκωμα της συλλογής φωτογραφιών σας.

    +
    + +
    + Οργάνωση καταλόγων και αρχείων + +
      + +
    • + +

      Καταλόγοι λευκωμάτων στον κατάλογο "galleries" του Piwigo. + Ακολουθεί παρακάτω το δέντρο καταλόγου μιας πολύ μικρής γκαλερί(αλλά + με πολλά χαρακτηριστικά γνωρίσματα):

      + +
      +Γκαλλερί
      +|-- γάμος
      +|   |-- εορτασμός
      +|   |   |-- άφιξη
      +|   |   |   |-- paul-alone.jpg
      +|   |   |   +-- sarah-alone.jpg
      +|   |   +-- αναχώρηση
      +|   |       +-- paul-and-sarah.jpg
      +|   +-- πάρτυ
      +|       |-- dancers001.jpg
      +|       |-- dancers002.jpg
      +|       +-- dancers003.jpg
      ++-- μήνας του μέλιτος
      +    |-- hotel.png
      +    |-- video-from-plane.avi
      +    +-- pwg_representative
      +        +-- video-from-plane.jpg
      +
      + +
    • + +
    • Εκτός από "pwg_representative" (βλέπε τις εξηγήσεις παρακάτω), κάθε κατάλογο κάτω απο το "galleries" παράγει ένα λεύκωμα. Δεν υπάρχει όριο στο βάθος.
    • + +
    • Βασικά, κάθε στοιχείο αντιπροσωπεύεται από ένα αρχείο. Ένα αρχείο μπορεί να είναι ένα + στοιχείο Piwigo εάν η επέκταση της είναι μεταξύ file_ext των + δυνατότητων παράμετρου διαμόρφωσης(βλέπε include/config_default.inc.php file). Ένα αρχείο μπορεί + να είναι μια εικόνα εάν η επέκταση της είναι μεταξύ picture_ext + των δυνατότητων παράμετρου διαμόρφωσης.
    • + +
    • Δεν υπάρχουν στοιχεία φωτογραφία (βίντεο, ήχους, κείμενα αρχείου, ό, τι θέλετε ...) αντιπροσωπεύονται από προεπιλογή από ένα εικονίδιο που αντιστοιχεί στο όνομα επέκτασης αρχείου. Προαιρετικά, μπορείτε να συνδέσετε μια μικρογραφία και ένα αντιπροσωπευτικό αρχείο (βλέπε video.avi στο παραπάνω παράδειγμα).
    • + +
    • Προειδοποίηση: το όνομα των αρχείων και καταλόγων πρέπει να περιέχει μόνο γράμματα, αριθμούς, "-", "_" ή ".". Όχι κενά διαστήματα, ούτε τονιζόμενους χαρακτήρες.
    • + +
    • Αφού οι φωτογραφίες είναι σωστά τοποθετημένους + καταλόγους, μεταβείτε στη διεύθυνση: Διαχείρηση » Εργαλεία » + Συνγχρονισμός
    • + +
    +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/search.html b/sources/language/el_GR/help/search.html new file mode 100755 index 0000000..0b465e4 --- /dev/null +++ b/sources/language/el_GR/help/search.html @@ -0,0 +1,25 @@ +

    Search

    +

    Αναζήτηση

    + +

    Αυτή η σελίδα σας επιτρέπει να αναζητήσετε εικόνες στο συνόλο της γκαλερί σας.

    + +
    + +
    Αναζήτηση για λέξεις
    +
    Αναζήτηση για μία ή περισσότερες λέξεις ανάμεσα στα χαρακτηριστικά που σχετίζονται με τις εικόνες + της γκαλερί σας. Χρησιμοποιείται το * ως μπαλαντέρ για επιμέρους αποτελέσματα.
    + +
    Αναζήτηση για δημιουργό
    +
    Χρησιμοποιείται το * ως μπαλαντέρ για επιμέρους αποτελέσματα.
    + +
    Αναζήτηση κατά ημερομηνία
    +
    Επιλέξτε μια ημερομηνία και / ή μια ώρα λήξης για το ερώτημά σας. Αφήστε κενό πεδίο της ημερομηνίας + αν θέλετε να κάνετε ένα ερώτημα για «πριν». Το έτος κατά το τελευταίο + πεδίο πρέπει να αναγράφεται με την ακόλουθη μορφή: ΕΕΕΕ (π.χ. 2004)
    + +
    Αναζήτηση σε λευκώματα
    +
    Επιλέξτε λεύκωμα ή λευκώματα που θέλετε να αναζητήσετε. Όλα + τα υπο-λευκώματα μπορούν να αναζητηθούν επιλέγοντας το μητρικό λεύκωμα και ενεργοποιώντας τη δυνατότητα + αναζήτησης σε υπο-λευκώματα.
    + +
    \ No newline at end of file diff --git a/sources/language/el_GR/help/synchronize.html b/sources/language/el_GR/help/synchronize.html new file mode 100755 index 0000000..58c0263 --- /dev/null +++ b/sources/language/el_GR/help/synchronize.html @@ -0,0 +1,14 @@ +

    Συγχρονισμός

    + +

    Υπάρχουν δύο διαφορετικά είδη συγχρονισμού:

    +
      +
    • κατάλογοι / αρχεία
    • +
    • αρχεία μεταδεδομένων
    • +
    + +

    Συγχρονισμός αρχείων και καταλόγων είναι η ενημέρωση του δέντρου των καταλόγων σας με το δέντρο των λευκωμάτων σας από τη βάση δεδομένων. +Συγχρονισμός αρχείων μεταδεδομένων είναι η ενημέρωση πληροφοριών φωτογραφιών, όπως το μέγεθος αρχείου, διαστάσεις σε pixels, πληροφορίες EXIF ή IPTC, από τη βάση δεδομένων.

    + +

    Όταν συγχρονίζεται τις μεταφορτώσεις σας με την γκαλερί σας θα πρέπει πρώτα να συγχρονίσετε τα αρχεία και τους καταλόγους.

    + +

    Η διαδικασία συγχρονισμού μπορεί να διαρκέσει μεγάλο χρονικό διάστημα (ανάλογα με το φορτίο του διακομιστή και τον αριθμό των στοιχείων που πρέπει να διαχειριστείτε) έτσι είναι δυνατό να κάνετε για κάθε λεύκωμα χωριστά.

    \ No newline at end of file diff --git a/sources/language/el_GR/help/user_list.html b/sources/language/el_GR/help/user_list.html new file mode 100755 index 0000000..8004419 --- /dev/null +++ b/sources/language/el_GR/help/user_list.html @@ -0,0 +1,23 @@ +

    Λίστα Χρηστών

    + +

    Εδώ ακριβώς μπορείτε να διαχειριστείτε τους χρήστες της γκαλερί του Piwigo σας.

    + +

    Προσθήκη Χρήστη

    + +

    Ένας διαχειριστής μπορεί να προσθέτει χειροκίνητα χρήστες. Για κάθε χρήστη που δημιουργήται δώστε ένα όνομα χρήστη, κωδικό πρόσβασης και να υποβάλεται μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου.

    + +

    Λίστα Χρηστών

    + +

    Η λίστα των υπαρχόντων χρηστών μπορεί να φιλτράρεται κατα όνομα χρήστη (χρησιμοποιήστε * ως μπαλαντέρ), την ομάδα ή την κατάσταση. Μπορεί να παρουσιαστεί κατά ημερομηνία εγγραφής ή κατά όνομα χρήστη, σε αύξουσα ή φθίνουσα σειρά.

    + +

    Αυτή η οθόνη επιτρέπει την διαχείριση πολλών χρηστών ταυτόχρονα, χρησιμοποιώντας διαφορετικές δράσεις:

    + +
      +
    • διαγράψετε χρήστες (απαιτείται επιβεβαίωση)
    • +
    • αλλάξετε την κατάσταση του χρήστη
    • +
    • συνδέση ή αποσύνδεση από τις ομάδες
    • +
    • τροποποίηση στις ιδιότητες εμφάνισης
    • +
    • τροποποίηση πρόσθετων ιδιοτήτων
    • +
    + +

    Ο στόχος είναι ο επιλεγμένος χρήστης (εξ ορισμού) ή όλοι οι χρήστες όπως εμφανίζονται στην φιλτραρισμένη λίστα.

    \ No newline at end of file diff --git a/sources/language/el_GR/index.php b/sources/language/el_GR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/el_GR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/el_GR/install.lang.php b/sources/language/el_GR/install.lang.php new file mode 100644 index 0000000..b749253 --- /dev/null +++ b/sources/language/el_GR/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = "Χρειάζεστε βοήθεια; Ρωτήστε στο Πίνακα μηνυμάτων του Piwigo."; +$lang['Visitors will be able to contact site administrator with this mail'] = "Οι επισκέπτες θα μπορούν να χρησιμοποιήσουν αυτό το email για να επικοινωνήσουν με τον διαχειριστή του site"; +$lang['PHP 5 is required'] = "Aπαιτείτε PHP 5"; +$lang['It appears your webhost is currently running PHP %s.'] = "Φαίνετται ότι ο webhost τώρα τρέχει PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Το Piwigo θα προσπαθήσει να αλλάξει την διαμόρφωση της PHP 5 δημιουργώντας ή τροποποιώντας ένα .htaccess αρχείο."; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Λάβε υπ' όψη ότι μπορείς να αλλάξεις την διαμόρφωση και να επανεκκινήσεις το Piwigo μετά από αυτό."; +$lang['Try to configure PHP 5'] = "Προσπάθησε να διαμορφώσεις την PHP 5"; +$lang['Sorry!'] = "Συγγνώμη!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Το Piwigo δεν είναι σε θέση να διαμορφώσει την PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Πρέπει να αναφέρετε στην υποστήριξη του παροχέα ςσας για να διαπιστώσετε πως μπορείτε να αλλάξετε σε PHP 5 μόνοι σας."; +$lang['Hope to see you back soon.'] = "Ελπίζουμε να σας δούμε πάλι σύντομα."; +$lang['Congratulations, Piwigo installation is completed'] = 'Συγχαρητήρια, η εγκατάσταση του Piwigo ολοκληρώθηκε'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Μια εναλλακτική λύση είναι να αντιγράψετε το κείμενο σε στο πλαίσιο παρακάτω και να το επικολλήστε στο αρχείο "local/config/database.inc.php" (Προειδοποίηση : το database.inc.php πρέπει να περιέχει ότι είναι στην περιοχή κειμένου, χωρίς enter ή κενό)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Η δημιουργία του αρχείου local/config/database.inc.php απέτυχε.'; +$lang['Download the config file'] = 'Κατέβασμα του αρχείου διαμόρωσης'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Μπορείς να κατεβάσεις το αρχείο διαμόρφωσης και να το ανεβάσεις στο local/config κατάλογο της εγκατάστασης σου.'; +$lang['Just another Piwigo gallery'] = 'Ακόμα μια γκαλερί Piwigo'; +$lang['Welcome to my photo gallery'] = 'Καλώς ήλθατε στη φωτογραφική μου γκαλερί'; +$lang['Admin configuration'] = 'Ρυθμίσεις Διαχειριστή της ιστοσελίδας'; +$lang['Basic configuration'] = 'Βασικές διαμόρφωση'; +$lang['Can\'t connect to server'] = 'Δεν είναι δυνατή η σύνδεση με τον διακομιστή'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Σύνδεση με διακομιστή επιτυχής, αλλά η σύνδεση με τη βάση δεδομένων είναι αδύνατη'; +$lang['Database configuration'] = 'Διαμόρφωση Βάσης Δεδομένων'; +$lang['Database name'] = 'Όνομα Βάσης Δεδομένων'; +$lang['Database table prefix'] = 'πρόθεμα πίνακα της βάσης δεδομένων '; +$lang['Default gallery language'] = 'Γλώσσας προεπιλεγμένης γκαλερί'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Μην διστάσετε να συμβουλευτείτε το φόρουμ μας για οποιαδήποτε βοήθεια:%s'; +$lang['Host'] = 'διακομιστήw υποδοχής'; +$lang['Installation'] = 'Εγκατάσταση'; +$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Έτσι Θα δείχνει στους επισκέπτες. Είναι απαραίτητο για την διαχείριση της ιστοσελίδας'; +$lang['Start Install'] = 'Ξεκινήστε την εγκατάσταση'; +$lang['User'] = 'Χρήστης'; +$lang['Welcome to your new installation of Piwigo!'] = 'Καλώς ήρθατε στην νέα σας εγκατάσταση του Piwigo!'; +$lang['also given by your host provider'] = 'Επίσης, δίνεται από την εταιρία φιλοξενίας σας'; +$lang['user login given by your host provider'] = 'Όνομα χρήστη που έχει λάβει από το φορέα υποδοχής σας'; +$lang['user password given by your host provider'] = 'Κωδικός προσβασης χρήστη που έχει λάβει από το φορέα υποδοχής σας'; +$lang['localhost or other, supplied by your host provider'] = 'localhost ή άλλο, που σας παρέχεται από τον πάροχο φιλοξενίας σας'; +?> \ No newline at end of file diff --git a/sources/language/el_GR/iso.txt b/sources/language/el_GR/iso.txt new file mode 100644 index 0000000..688250f --- /dev/null +++ b/sources/language/el_GR/iso.txt @@ -0,0 +1 @@ +Ελληνικά [GR] \ No newline at end of file diff --git a/sources/language/el_GR/upgrade.lang.php b/sources/language/el_GR/upgrade.lang.php new file mode 100755 index 0000000..29b9635 --- /dev/null +++ b/sources/language/el_GR/upgrade.lang.php @@ -0,0 +1,40 @@ +%s
    , before ?>, insert:'] = 'Σε %s, πριν ?>, εισάγετε:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Μόνο ένας διαχειριστής μπορεί να τρέξει αναβάθμιση: Παρακαλώ συνδεθείτε παρακάτω. '; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Μόνο τα προθέματα μικρογραφιών και η διεύθυνση ηλεκτρονικού ταχυδρομείου του webmaster έχουν σωθεί από προηγούμενες διαμορφώσεις'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Εκτελέστε έναν έλεγχο συντήρησης [Διαχείριση>Εργαλεία>Συντήρηση] Αν αντιμετωπίζετε κάποιο πρόβλημα.'; +$lang['SQL queries'] = 'ερωτήματα SQL'; +$lang['Statistics'] = 'Στατιστικά'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Η σελίδα αυτή προτείνει την αναβάθμιση της βάσης δεδομένων από την παλιά έκδοση Piwigo σας στη νέα έκδοση. Ο βοηθός αναβάθμισης νομίζει ότι τρέχετε την έκδοση %s (ή κάτι τέτοιο).'; +$lang['Upgrade from version %s to %s'] = 'Αναβάμηση απο έκδοση %s σε %s'; +$lang['Upgrade informations'] = 'Πληροφορίες Αναβάθμησης'; +$lang['Upgrade'] = 'Αναβάθμηση'; +$lang['User permissions and group permissions have been erased'] = 'Τα δικαιώματα χρηστών και ομάδων έχουν διαγραφτεί'; +$lang['You do not have access rights to run upgrade'] = 'Δεν έχετε δικαιώματα πρόσβασης για την εκτέλεση αναβάθμισης'; +$lang['total SQL time'] = 'Συνολικός χρόνος SQL'; +$lang['total upgrade time'] = 'Συνολικός χρόνος αναβάθμησης'; +?> \ No newline at end of file diff --git a/sources/language/en_GB/about.html b/sources/language/en_GB/about.html new file mode 100644 index 0000000..305fef1 --- /dev/null +++ b/sources/language/en_GB/about.html @@ -0,0 +1,5 @@ +

    This photo gallery is based on Piwigo.

    + +

    Piwigo is photo gallery software for the web, built by an active community of users and developers. Extensions make Piwigo easily customisable. And, for icing on the cake, Piwigo is free and opensource.

    + +

    Visit the Piwigo website

    \ No newline at end of file diff --git a/sources/language/en_GB/admin.lang.php b/sources/language/en_GB/admin.lang.php new file mode 100644 index 0000000..4f40034 --- /dev/null +++ b/sources/language/en_GB/admin.lang.php @@ -0,0 +1,162 @@ +%s merged into tag %s'] = 'Keywords %s merged into keyword %s'; +$lang['The %d following tags were deleted'] = "The following %d keywords have been deleted"; +$lang['The anomaly will be ignored until next application version'] = "The anomaly will be ignored until the next version of the application"; +$lang['The following tag was deleted'] = 'The following keyword was deleted'; +$lang['The number of comments a page must be between 5 and 50 included.'] = "The number of comments on a page must be between 5 and 50 inclusive."; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "The webmaster has added you to the mail notification list."; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "The webmaster has removed you from the list for receiving notifications by mail."; +$lang['There is no available subscribers to mail.'] = "There are no subscribers to be notified by mail."; +$lang['Thumbnails generation in progress...'] = 'Thumbnail generation in progress...'; +$lang['Time to send mail is limited. Others mails are skipped.'] = "The maximum time for sending mail has been exceeded. Remaining emails have been skipped."; +$lang['Update albums informations'] = "Update album information"; +$lang['Update photos information'] = "Update photo information"; +$lang['User list'] = "User list"; +$lang['Virtual albums to move'] = "Virtual albums to be moved"; +$lang['With no tag'] = 'With no keyword'; +$lang['You are running on development sources, no check possible.'] = "You are running a development version, no check possible."; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'You have specified $conf[\'order_by\'] in your local configuration file, this parameter is deprecated, please remove it or rename it to $conf[\'order_by_custom\'] !'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Please upgrade your system to take full advantage of the application, otherwise it might not work correctly, or not at all'; + +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is designed for photographers who want to view, manage, edit, enhance, organise, tag, and share photographs.'; +$lang['You have %d orphan tags: %s.'] = 'You have %d orphan keywords: %s.'; +$lang['Source tag'] = 'Source keyword'; +$lang['Select the destination tag'] = 'Select the destination keyword'; +$lang['Select at least one tag'] = 'Select at least one keyword'; +$lang['No destination tag selected'] = 'No destination keyword selected'; +$lang['New tag'] = 'New keyword'; +$lang['Delete orphan tags'] = 'Delete orphan keywords'; +$lang['Delete selected tags'] = 'Deleted selected keywords'; +$lang['Add tags'] = 'Add keywords'; +$lang['Add a tag'] = 'Add a keyword'; +$lang['%d albums including'] = '%d albums included'; +$lang['%d album including'] = '%d album included'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'The Piwigo publish Plug-in allows you to export and synchronise photos from Lightroom directly to your Piwigo photo gallery.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is an open source digital photo organiser that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Select a zone with your mouse to define a new centre of interest.'; +$lang['Save Settings'] = 'Save settings'; +$lang['Read Piwigo Documentation'] = 'Read Piwigo documentation'; +$lang['New Version'] = 'New version'; +$lang['Missing Plugins'] = 'Missing plugins'; +$lang['Manage Permissions'] = 'Manage permissions'; +$lang['Manage authorizations for selected albums'] = 'Manage authorisations for selected albums'; +$lang['Installed Languages'] = 'Installed languages'; +$lang['Installed Themes'] = 'Installed themes'; +$lang['Inactive Languages'] = 'Inactive languages'; +$lang['Inactive Plugins'] = 'Inactive themes'; +$lang['Ignore All'] = 'Ignore all'; +$lang['Follow Orientation'] = 'Follow orientation '; +$lang['Dump Database'] = 'Dump database'; +$lang['Center of interest'] = 'Centre of interest'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'By default, the centre of interest is placed in the middle of the photo.'; +$lang['Active Themes'] = 'Active themes'; +$lang['Add New Language'] = 'Add a new language'; +$lang['Active Languages'] = 'Active languages'; +$lang['Active Plugins'] = 'Active plugins'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'You are using the Flash uploader. Problems? Try the Browser uploader instead.'; +$lang['Upload Photos'] = 'Upload photos'; +$lang['Uploaded Photos'] = 'Uploaded photos'; +$lang['Update All'] = 'Update all'; +$lang['Update Complete'] = 'Update complete'; +$lang['Switch to clear or dark colors for administration'] = 'Switch to clear or dark colours for administration'; +$lang['Start Upload'] = 'Start upload'; +$lang['Pending Comments'] = 'Pending comments'; +$lang['Obsolete Plugins'] = 'Obsolete plugins'; +$lang['Multiple Size'] = 'Multiple size'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'This theme could not be activated as the parent theme ( %s )is missing'; +$lang['Help Me'] = 'Help me'; +$lang['An error occured during extraction (%s).'] = 'An error occurred during the files (%s) extraction.'; +$lang['An error has occured during upgrade.'] = 'An error has occurred during upgrade.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'An error has occurred during extract. Please check file permissions of your Piwigo installation.
    Click here to show log error.'; \ No newline at end of file diff --git a/sources/language/en_GB/common.lang.php b/sources/language/en_GB/common.lang.php new file mode 100644 index 0000000..ebf4d8a --- /dev/null +++ b/sources/language/en_GB/common.lang.php @@ -0,0 +1,70 @@ + diff --git a/sources/language/en_GB/install.lang.php b/sources/language/en_GB/install.lang.php new file mode 100644 index 0000000..8f5d165 --- /dev/null +++ b/sources/language/en_GB/install.lang.php @@ -0,0 +1,23 @@ +This photo gallery is based on Piwigo.

    + +

    Piwigo is a photo gallery software for the web, built by an active +community of users and developers. Extensions make Piwigo easily +customizable. Icing on the cake, Piwigo is free and opensource.

    + +

    Visit Piwigo website

    diff --git a/sources/language/en_UK/admin.lang.php b/sources/language/en_UK/admin.lang.php new file mode 100644 index 0000000..1cbc919 --- /dev/null +++ b/sources/language/en_UK/admin.lang.php @@ -0,0 +1,977 @@ +Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo for Android application empowers you to connect your Android phone or tablet to your Piwigo gallery, create some albums and upload several photos at once.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'; +$lang['A locked gallery is only visible to administrators'] = 'A locked gallery is only visible to administrators'; +$lang['A new version of Piwigo is available.'] = "A new version of Piwigo is available."; +$lang['Access type'] = "Access type"; +$lang['ACCESS_0'] = "Free access"; +$lang['ACCESS_1'] = "Access to all"; +$lang['ACCESS_2'] = "Access to registered users"; +$lang['ACCESS_3'] = "Access to administrators"; +$lang['ACCESS_4'] = "Access to webmasters"; +$lang['ACCESS_5'] = "No access"; +$lang['Action'] = 'Action'; +$lang['Actions'] = "Actions"; +$lang['Activate comments'] = 'Activate comments'; +$lang['Activate icon "%s"'] = 'Activate icon "%s"'; +$lang['Activate icon "new" next to albums and pictures'] = 'Activate icon "new" next to albums and pictures'; +$lang['Activate Navigation Bar'] = 'Activate navigation bar'; +$lang['Activate Navigation Thumbnails'] = 'Activate navigation thumbnails'; +$lang['Activate'] = "Activate"; +$lang['Active Languages'] = 'Active Languages'; +$lang['Active Plugins'] = 'Active Plugins'; +$lang['Active Themes'] = 'Active Themes'; +$lang['Add a criteria'] = 'Add a criteria'; +$lang['Add a filter'] = 'Add a filter'; +$lang['add a new watermark'] = 'add a new watermark'; +$lang['Add a tag'] = "Add a tag"; +$lang['Add a user'] = "Add a user"; +$lang['Add a virtual album'] = "Add a virtual album"; +$lang['Add another set of photos'] = 'Add another set of photos'; +$lang['Add detailed content'] = "Add some detailed content"; +$lang['Add group'] = "Add group"; +$lang['Add New Language'] = 'Add New Language'; +$lang['add new photos to caddie'] = "add new photos to caddie"; +$lang['Add New Theme'] = "Add a new theme"; +$lang['Add Photos'] = 'Add Photos'; +$lang['Add tags'] = 'Add tags'; +$lang['Add to caddie'] = "Add to caddie"; +$lang['Add write access to the "%s" directory'] = 'Add write access to the "%s" directory'; +$lang['Add'] = "Add"; +$lang['Add/delete a permalink'] = "Add/delete a permalink"; +$lang['Added by %s'] = 'Added by %s'; +$lang['added'] = "added"; +$lang['Administration Home'] = 'Administration Home'; +$lang['administrators'] = 'administrators'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom is photography software designed to manage large quantities of digital images and to do post production work.'; +$lang['Advanced features'] = "Advanced features"; +$lang['Album "%s" has been added'] = 'Album "%s" has been added'; +$lang['Album "%s" now contains %d photos'] = 'Album "%s" now contains %d photos'; +$lang['Album list management'] = "Album list management"; +$lang['Album manual order was saved'] = "Album manual order was saved"; +$lang['Album name'] = 'Album name'; +$lang['Album photos associated to the following albums: %s'] = "Album photos associated to the following albums: %s"; +$lang['Album updated successfully'] = "Album updated successfully"; +$lang['albums added in the database'] = "albums added in the database"; +$lang['Albums authorized thanks to group associations'] = "Albums authorized thanks to group associations"; +$lang['Albums automatically sorted'] = 'Albums automatically sorted'; +$lang['albums deleted in the database'] = "albums deleted in the database"; +$lang['All %d photos are selected'] = 'All %d photos are selected'; +$lang['All extensions are up to date.'] = 'All extensions are up to date.'; +$lang['All languages are up to date.'] = 'All languages are up to date.'; +$lang['All optimizations have been successfully completed.'] = "All optimizations have been successfully completed."; +$lang['All plugins are up to date.'] = 'All plugins are up to date.'; +$lang['All themes are up to date.'] = 'All themes are up to date.'; +$lang['all'] = "all"; +$lang['Allow rating'] = "Allow rating"; +$lang['Allow user customization'] = 'Allow user customization'; +$lang['Allow user registration'] = "Allow user registration"; +$lang['Allow users to delete their own comments'] = "Allow users to delete their own comments"; +$lang['Allow users to edit their own comments'] = "Allow users to edit their own comments"; +$lang['Allowed file types: %s.'] = 'Allowed file types: %s.'; +$lang['an error happened'] = "an error occurred"; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'An error has occured during extract. Please check file permissions of your piwigo installation.
    Click here to show log error.'; +$lang['An error has occured during upgrade.'] = 'An error has occured during upgrade.'; +$lang['An error occured during extraction (%s).'] = "An error occured during the files (%s) extraction."; +$lang['An information email was sent to group "%s"'] = "Information email sent to group \"%s\""; +$lang['and'] = "and"; +$lang['Anomaly'] = "Anomaly"; +$lang['any visitor can see this album'] = 'any visitor can see this album'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Only webmasters can see this tab, not administrators.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture is a powerful tool to refine images and manage massive libraries on Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture is designed for professional photographers with iPhoto simplicity.'; +$lang['Applications'] = 'Applications'; +$lang['Apply action'] = 'Apply action'; +$lang['apply automatic sort order'] = 'apply automatic sort order'; +$lang['Apply selected corrections'] = "Apply selected corrections"; +$lang['Apply to sub-albums'] = "Apply to sub-albums"; +$lang['Apply watermark if height is bigger than'] = 'Apply watermark if height is bigger than'; +$lang['Apply watermark if width is bigger than'] = 'Apply watermark if width is bigger than'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = "Are you sure you want to install this upgrade? You must verify if this version does not need prior uninstallation."; +$lang['Are you sure you want to delete this plugin?'] = "Are you sure you want to delete this plugin?"; +$lang['Are you sure you want to install this plugin?'] = "Are you sure you want to install this plugin?"; +$lang['Associate to album'] = "Associate to album"; +$lang['associate to group'] = "associate to group"; +$lang['Associated'] = "Associated"; +$lang['Authorize users to add comments on selected albums'] = "Authorize users to add comments on selected albums"; +$lang['Authorized'] = "Authorized"; +$lang['Automatic correction'] = "Automatic correction"; +$lang['automatic order'] = 'automatic order'; +$lang['Automatic sort order'] = 'Automatic sort order'; +$lang['Available on'] = 'Available on'; +$lang['Available only with HTML format'] = "Available only with HTML format"; +$lang['Available versions for'] = 'Available versions for'; +$lang['Average rate'] = "Average rate"; +$lang['average time'] = "average time"; +$lang['Basic settings'] = 'Basic settings'; +$lang['Batch Manager'] = 'Batch Manager'; +$lang['between'] = "between"; +$lang['between %d and %d pixels'] = 'between %d and %d pixels'; +$lang['between %.2f and %.2f'] = 'between %.2f and %.2f'; +$lang['bottom left corner'] = 'bottom left corner'; +$lang['bottom right corner'] = 'bottom right corner'; +$lang['Bound Theme'] = 'Bound Theme'; +$lang['By %s'] = 'By %s'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'By default, the center of interest is placed in the middle of the photo.'; +$lang['By rank'] = 'By rank'; +$lang['Caddie management'] = "Caddie management"; +$lang['Caddie'] = "Caddie"; +$lang['cancel manual order'] = 'cancel manual order'; +$lang['Cancel'] = 'Cancel'; +$lang['Cannot delete the old permalink !'] = "The old permalink cannot be deleted!"; +$lang['Can\'t connect to server.'] = "Connection to server unavailable."; +$lang['Can\'t create temporary file.'] = "Temporary file cannot be created."; +$lang['Can\'t download archive.'] = "Archive cannot be downloaded."; +$lang['Can\'t read or extract archive.'] = "Archive cannot be read or extracted."; +$lang['Center of interest'] = 'Center of interest'; +$lang['Change Admin Colors'] = 'Change administration colors'; +$lang['Check all'] = "Check all"; +$lang['Check automatic corrections'] = "Check automatic corrections"; +$lang['Check for updates'] = "Check for updates"; +$lang['Check for upgrade failed for unknown reasons.'] = "Check for upgrade failed for unknown reasons."; +$lang['Check for upgrade'] = "Check for upgrade"; +$lang['Check integrity'] = "Integrity check"; +$lang['Choose an action'] = 'Choose an action'; +$lang['Choose an option'] = "Choose an option"; +$lang['Classic display'] = "Classic display"; +$lang['clean'] = "clean up"; +$lang['Comments for all'] = "Comments for all"; +$lang['Complementary mail content'] = "Complementary mail content"; +$lang['Configuration'] = "Configuration"; +$lang['Confirm merge'] = 'Confirm merge'; +$lang['confirm'] = "confirm"; +$lang['Continue processing treatment'] = "Continue ongoing treatment"; +$lang['Correction applied with error'] = "Correction applied with error"; +$lang['Correction applied with success'] = "Correction successfully applied"; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Corrected anomaly will no longer be ignored'; +$lang['Correction'] = "Correction"; +$lang['create a new album'] = 'create a new album'; +$lang['create a new site'] = 'create a new site'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Create the "%s" directory at the root of your Piwigo installation'; +$lang['Create this site'] = "Create this site"; +$lang['Create'] = 'Create'; +$lang['created'] = "created"; +$lang['Crop'] = 'Crop'; +$lang['Current name'] = "Current name"; +$lang['custom']='Custom'; +$lang['Database synchronization with files'] = "Database synchronization with files"; +$lang['Database'] = "Database"; +$lang['Date'] = "Date"; +$lang['Day'] = "Day"; +$lang['Deactivate all'] = "Deactivate all"; +$lang['Deactivate'] = "Deactivate"; +$lang['Default comments order'] = 'Default comments order'; +$lang['Default display'] = "Default display"; +$lang['Default photos order'] = "Default photos order"; +$lang['Default user cannot be deleted'] = "Default user cannot be deleted"; +$lang['Default user does not exist'] = "The default user does not exist"; +$lang['default values'] = "default values"; +$lang['default'] = "default"; +$lang['delete album'] = "delete album"; +$lang['Delete multiple size images']='Delete multiple size images'; +$lang['Delete orphan tags'] = 'Delete orphan tags'; +$lang['delete photo'] = 'delete photo'; +$lang['Delete Representant'] = "Delete album thumbnail"; +$lang['Delete selected photos'] = "Delete selected photos"; +$lang['Delete selected tags'] = "Delete selected tags"; +$lang['Delete selected users'] = "Delete selected users"; +$lang['Delete this language'] = 'Delete this language'; +$lang['delete this site and all its attached elements'] = "delete this site and all the related information"; +$lang['Delete this theme'] = 'Delete this theme'; +$lang['delete'] = "delete"; +$lang['Deleted on'] = "Deleted on"; +$lang['deleted'] = "deleted"; +$lang['deleted'] = 'deleted'; +$lang['Deletions'] = "Deletions"; +$lang['Deny selected groups'] = "Deny selected groups"; +$lang['Deny selected users'] = "Deny selected users"; +$lang['Description'] = "Description"; +$lang['Detailed informations'] = 'Detailed information'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'; +$lang['directories + files'] = "directories + files"; +$lang['Directory does not exist'] = 'Directory does not exist'; +$lang['Directory'] = "Directory"; +$lang['Discover album:'] = "Discover album:"; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'display maximal information (added albums and photos, deleted albums and photos)'; +$lang['Display options'] = "Display options"; +$lang['display'] = 'display'; +$lang['Dissociate from album'] = "Dissociate from album"; +$lang['dissociate from group'] = "dissociate from group"; +$lang['Dissociated'] = "Dissociated"; +$lang['Do you want to activate anyway?'] = 'Do you want to activate anyway?'; +$lang['Documentation'] = "Documentation"; +$lang['Does not represent'] = "Is not thumbnail for"; +$lang['Download,'] = 'Download,'; +$lang['Downloads'] = "Downloads"; +$lang['Drag to re-order'] = "Click-and-drag to re-order"; +$lang['Drop into album'] = 'Select an album'; +$lang['Dump Database'] = 'Dump Database'; +$lang['Duplicate selected tags'] = 'Duplicate selected tags'; +$lang['Duplicate'] = 'Duplicate'; +$lang['Duplicates'] = 'Duplicates'; +$lang['Edit album permissions'] = "Edit album permissions"; +$lang['Edit album'] = "Edit album"; +$lang['Edit photo information'] = "Edit photo information"; +$lang['Edit photo'] = 'Edit photo'; +$lang['Edit ranks'] = "Edit ranks"; +$lang['Edit selected tags'] = "Edit selected tags"; +$lang['Edit tags'] = "Edit tags"; +$lang['Element type'] = "Element type"; +$lang['Element'] = "Element"; +$lang['Email administrators when a comment is deleted'] = "Email administrators when a comment is deleted"; +$lang['Email administrators when a comment is modified'] = "Email administrators when a comment is modified"; +$lang['Email admins when a comment requires validation'] = "Email admins when a comment requires validation"; +$lang['Email admins when a new user registers'] = "Email admins when a new user registers"; +$lang['Email admins when a valid comment is entered'] = "Email admins when a valid comment is entered"; +$lang['Environment'] = "Environment"; +$lang['Error list'] = "List of errors"; +$lang['Error on file "%s" : %s'] = 'Error on file "%s" : %s'; +$lang['Error when sending email to %s [%s].'] = "Error when sending email to %s [%s]."; +$lang['ERROR'] = 'ERROR'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'; +$lang['Errors caption'] = "Errors legends"; +$lang['errors during synchronization'] = "errors during synchronization"; +$lang['even already synchronized photos'] = "even already synchronized photos"; +$lang['Everybody'] = 'Everybody'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = "Execution time exceeded, the treatment must continue [Estimated time: %d seconds]."; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = "Execution time is out, treatment must be continue [Estimated time: %d second]."; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension not available, admin should disable exif use'; +$lang['existing album'] = 'existing album'; +$lang['Extend for templates'] = "Extend templates"; +$lang['Extensions Update'] = 'Extensions Update'; +$lang['Failed to write file to disk'] = 'Failed to write file to disk'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Features include gallery browsing, album creation and photo upload.'; +$lang['File upload stopped by extension'] = 'File upload stopped by extension'; +$lang['File'] = "File"; +$lang['File/directory read error'] = "File/directory read error"; +$lang['Find a new representant by random'] = "Find a new random album thumbnail"; +$lang['first photo added on %s'] = "first photo added on %s"; +$lang['Follow Orientation'] = 'Follow Orientation'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Following plugins may not be compatible with the new version of Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Following themes may not be compatible with the new version of Piwigo:'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'; +$lang['for the file format'] = "for the file format"; +$lang['for this file format'] = "for this file format"; +$lang['Forbid this language to users'] = 'Forbid this language to users'; +$lang['Forbid this theme to users'] = "Forbid this theme to users"; +$lang['Forbidden'] = "Forbidden"; +$lang['Form'] = "Form"; +$lang['FTP + Synchronization'] = 'FTP + Synchronization'; +$lang['Gallery title'] = "Gallery title"; +$lang['Gallery unlocked'] = 'Gallery unlocked'; +$lang['GD library is missing'] = "GD library is missing"; +$lang['GD version'] = "GD version"; +$lang['General'] = "General"; +$lang['General statistics'] = "General statistics"; +$lang['Generate multiple size images']='Generate multiple size images'; +$lang['Get Support on Piwigo Forum'] = 'Get support on Piwigo forum'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'; +$lang['global mode'] = "global mode"; +$lang['Go to %s or %s for more informations'] = 'Go to %s or %s for more information'; +$lang['Go to'] = "Go to"; +$lang['Grant selected groups'] = "Grant selected groups"; +$lang['Grant selected users'] = "Grant selected users"; +$lang['Graphics Library'] = 'Graphics Library'; +$lang['group "%s" added'] = "group \"%s\" added"; +$lang['group "%s" deleted'] = "group \"%s\" deleted"; +$lang['group "%s" updated'] = "group \"%s\" updated"; +$lang['Group management'] = "Groups management"; +$lang['Group name'] = "Group name"; +$lang['Group'] = "Group"; +$lang['Groups and users'] = 'Groups and users'; +$lang['Groups'] = "Groups"; +$lang['Guest cannot be deleted'] = "Guest cannot be deleted"; +$lang['Guest Settings'] = 'Guest settings'; +$lang['guest'] = "guest"; +$lang['Guests'] = "Guests"; +$lang['height must be a number superior to'] = "height must be a number greater than"; +$lang['Height'] = 'Height'; +$lang['Hello'] = "Hello"; +$lang['Hello,'] = "Hello,"; +$lang['Help Me'] = 'Help Me'; +$lang['hide details'] = 'hide details'; +$lang['Hide'] = "Hide"; +$lang['High definition enabled'] = "High definition enabled"; +$lang['High definition'] = "High definition"; +$lang['high'] = "high"; +$lang['History'] = "History"; +$lang['Hit'] = "Hit"; +$lang['Hour'] = "Hour"; +$lang['Hoverbox display'] = "Hoverbox display"; +$lang['I decide to update anyway'] = 'I decide to update anyway'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'; +$lang['If you encounter problems or have any question, please send a message to'] = "If you encounter problems or have any question, please send a message to"; +$lang['Ignore All'] = 'Ignore All'; +$lang['Ignore selected anomalies'] = "Ignore selected anomalies"; +$lang['Ignore this update'] = 'Ignore this update'; +$lang['Image id'] = "Image id"; +$lang['Image Quality'] = 'Image quality'; +$lang['Images manual order was saved'] = "Images manual order saved"; +$lang['Impossible automatic correction'] = "Automatic correction impossible"; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'This theme could not be activated, as the parent theme is missing: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossible to deactivate this language, first set another language as default.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossible to deactivate this language, you need at least one language.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossible to deactivate this theme, you need at least one theme.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'This theme cannot be deleted, because other themes depends on it: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'; +$lang['Inactive Languages'] = 'Inactive Languages'; +$lang['Inactive Plugins'] = 'Inactive Plugins'; +$lang['Inactive Themes'] = 'Inactive themes'; +$lang['include child albums'] = 'include child albums'; +$lang['Include display of recent photos grouped by dates'] = "Include display of recent photos grouped by dates"; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Include history data (Warning: server memory limit may be exceeded)'; +$lang['include photos with lower privacy level'] = 'include photos with lower privacy level'; +$lang['Information data registered in database'] = "Information data registered in database"; +$lang['Informations'] = "Information"; +$lang['Install on your computer,'] = 'Install on your computer,'; +$lang['Install'] = "Install"; +$lang['Installed Languages'] = 'Installed Languages'; +$lang['Installed Themes'] = "Installed Themes"; +$lang['Instructions to use Piwigo'] = "Instructions to use Piwigo"; +$lang['Invert'] = 'Invert'; +$lang['IP'] = "IP"; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'; +$lang['jump to album'] = "jump to album"; +$lang['jump to photo'] = "jump to photo"; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = "Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will be sent emails when a new release is available (sometimes including a security bug fix, it is important to know and upgrade) and when major events happen to the project. Only a few emails a year."; +$lang['Landscape'] = 'Landscape'; +$lang['Language has been successfully installed'] = 'Language has been successfully installed'; +$lang['Languages which need upgrade'] = 'Languages which need upgrade'; +$lang['Languages'] = 'Languages'; +$lang['Last hit'] = "Last hit"; +$lang['Last import'] = 'Last import'; +$lang['Last revisions'] = "Last revisions"; +$lang['Last send'] = "Last sent"; +$lang['Learn more'] = 'Learn more'; +$lang['leave'] = "leave"; +$lang['Level 0'] = "---"; +$lang['Level 1'] = "Contacts"; +$lang['Level 2'] = "Friends"; +$lang['Level 4'] = "Family"; +$lang['Level 8'] = "Admins"; +$lang['Link all album photos to a new album'] = "Link all album photos to a new album"; +$lang['Link all album photos to some existing albums'] = "Link all album photos to some existing albums"; +$lang['Linked albums'] = "Linked albums"; +$lang['List'] = 'List'; +$lang['Local'] = "Local"; +$lang['Lock albums'] = "Lock albums"; +$lang['Lock gallery'] = "Lock gallery"; +$lang['Lock'] = "Lock"; +$lang['Locked'] = "Locked"; +$lang['Mail address is obligatory for all users'] = "Mail address is mandatory for all users"; +$lang['Mail content'] = "Mail content"; +$lang['Mail sent to %s [%s].'] = "Mail sent to %s [%s]."; +$lang['Mail theme'] = 'Mail theme'; +$lang['Main "guest" user does not exist'] = "The main \"guest\" user does not exist"; +$lang['Main "guest" user status is incorrect'] = "The main \"guest\" user status is incorrect"; +$lang['Main "webmaster" user does not exist'] = "The main \"webmaster\" user does not exist"; +$lang['Main "webmaster" user status is incorrect'] = "The main \"webmaster\" user status is incorrect"; +$lang['Main Page'] = 'Main page'; +$lang['Maintenance'] = "Maintenance"; +$lang['Make this language available to users'] = 'Make this language available to users'; +$lang['Make this theme available to users'] = 'Make this theme available to users'; +$lang['manage album photos'] = "manage album photos"; +$lang['Manage authorizations for selected albums'] = "Manage authorizations for selected albums"; +$lang['Manage permissions for group "%s"'] = "Manage permissions for the group \"%s\""; +$lang['Manage permissions for user "%s"'] = "Manage permissions for the user \"%s\""; +$lang['Manage Permissions'] = 'Manage Permissions'; +$lang['Manage photo ranks'] = 'Photos sort order'; +$lang['Manage photos'] = 'Manage photos'; +$lang['manage sub-albums'] = "manage sub-albums"; +$lang['Manage tags'] = "Manage tags"; +$lang['Manage the members'] = 'Manage the members'; +$lang['Manage this set of %d photos'] = 'Manage this set of %d photos'; +$lang['Manage'] = "Manage"; +$lang['manual order'] = 'manual order'; +$lang['Manual order'] = 'Manual order'; +$lang['Maximum file size: %sB.'] = 'Maximum file size: %sB.'; +$lang['Maximum height'] = 'Maximum height'; +$lang['Maximum width'] = 'Maximum width'; +$lang['Members'] = "Members"; +$lang['Menu Management'] = 'Menus'; +$lang['Merge selected groups'] = 'Merge selected groups'; +$lang['Merge selected tags'] = 'Merge selected tags'; +$lang['Merge tags'] = 'Merge tags'; +$lang['Metadata synchronization results'] = "Metadata synchronization results"; +$lang['Metadata synchronized from file'] = "Metadata synchronized from file"; +$lang['middle'] = 'middle'; +$lang['Minimum width'] = 'Minimum width'; +$lang['Minimum height'] = 'Minimum height'; +$lang['Minimum privacy level'] = "Minimum privacy level"; +$lang['Miscellaneous'] = 'Miscellaneous'; +$lang['Missing a temporary folder'] = 'Missing a temporary folder'; +$lang['Missing Plugins'] = 'Missing Plugins'; +$lang['modified'] = 'modified'; +$lang['Modify information'] = "Modify information"; +$lang['Month'] = "Month"; +$lang['Move albums'] = "Move albums"; +$lang['Move to album'] = 'Move to album'; +$lang['Move'] = "Move"; +$lang['Multiple Size'] = 'Multiple Size'; +$lang['Name of the duplicate'] = "Name of the duplicate"; +$lang['Name'] = "Name"; +$lang['New name'] = "New name"; +$lang['New parent album'] = "New parent album"; +$lang['New photos added'] = "New photos added"; +$lang['New photos were added'] = "New photos have been added"; +$lang['New tag'] = "New tag"; +$lang['New Version'] = 'New Version'; +$lang['new'] = "new"; +$lang['No destination tag selected'] = 'No destination tag selected'; +$lang['No display'] = "No display"; +$lang['No file was uploaded'] = 'No file was uploaded'; +$lang['No group is permitted to see this private album'] = 'No group is permitted to see this private album'; +$lang['No group selected, no action possible.'] = 'No group selected, no action possible.'; +$lang['No mail to send.'] = "No mail to be sent."; +$lang['No members to manage'] = "No members to manage"; +$lang['No order field selected'] = 'No order field selected'; +$lang['No photo can be deleted'] = "No photo can be deleted"; +$lang['No photo in the current set.'] = 'No photo in the current set.'; +$lang['No photo in this album'] = "No photo in this album"; +$lang['No photo selected, %d photos in current set'] = 'No photo selected, %d photos in current set'; +$lang['No photo selected, no action possible.'] = 'No photo selected, no action possible.'; +$lang['No results'] = "No results"; +$lang['No user to send notifications by mail.'] = "No user to be notified by mail."; +$lang['no write access'] = "no write access"; +$lang['none'] = "none"; +$lang['None'] = 'None'; +$lang['Not cropped correctly?'] = 'Not cropped correctly?'; +$lang['nothing'] = "nothing"; +$lang['Notification'] = "Notification"; +$lang['Notify administrators when a comment is'] = 'Notify administrators when a comment is'; +$lang['Number of comments per page'] = "Number of comments per page"; +$lang['Number of albums per page'] = 'Number of albums per page'; +$lang['Number of downloads'] = "Number of downloads"; +$lang['number of miniaturized photos'] = "number of thumbnails created"; +$lang['Number of rates'] = "Number of rates"; +$lang['Number of thumbnails to create'] = "Number of thumbnails to create"; +$lang['Numeric identifier : %d'] = 'Numeric identifier : %d'; +$lang['Obsolete Plugins'] = 'Obsolete Plugins'; +$lang['on the %d selected photos'] = 'on the %d selected photos'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'On your Linux, simply install Shotwell with your package manager and then activate Piwigo publishing option.'; +$lang['on'] = "on"; +$lang['only directories'] = "directories only"; +$lang['only perform a simulation (no change in database will be made)'] = "only perform a simulation (nothing will be changed in the database)"; +$lang['Only private albums are listed'] = "Only private albums are listed"; +$lang['Opacity'] = 'Opacity'; +$lang['Operating system'] = "Operating system"; +$lang['Operation in progress'] = 'Treatment in progress.'; +$lang['Optimizations have been completed with some errors.'] = "Optimizations have been completed with some errors."; +$lang['Optional URL keyword'] = "Optional URL keyword"; +$lang['Options'] = "Options"; +$lang['Options'] = "Options"; +$lang['Order of menubar items has been updated successfully.'] = 'Order of menubar items has been updated successfully.'; +$lang['Original file : %s'] = 'Original file : %s'; +$lang['Original Size'] = 'Original Size'; +$lang['Original templates'] = "Original templates"; +$lang['Orphan tags deleted'] = 'Orphan tags deleted'; +$lang['Other plugins'] = "Other plugins available"; +$lang['Other private albums'] = "Other private albums"; +$lang['other'] = "other"; +$lang['Overall'] = "Overview"; +$lang['overrides existing values with empty ones'] = "overrides existing values with empty ones"; +$lang['Page banner'] = "Page banner"; +$lang['Page end'] = 'Page end'; +$lang['Pages seen'] = "Pages seen"; +$lang['Panorama'] = 'Panorama'; +$lang['Parameter'] = "Settings"; +$lang['Parameters'] = "Parameters"; +$lang['Parent album'] = "Parent album"; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = "Password confirmation is missing. Please confirm the chosen password."; +$lang['Password is missing. Please enter the password.'] = "Password is missing. Please enter the password."; +$lang['Path'] = "Path"; +$lang['Pending Comments'] = 'Pending Comments'; +$lang['pending validation'] = 'pending validation'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = "Permalink %s has previously been used by album %s. Delete it from the permalinks history first"; +$lang['Permalink %s is already used by album %s'] = "Permalink %s is already used by album %s"; +$lang['Permalink history'] = "Permalinks history"; +$lang['Permalink'] = "Permalink"; +$lang['Permalinks'] = "Permalinks"; +$lang['Permission denied'] = "Permission denied"; +$lang['Permission granted for groups'] = 'Permission granted for groups'; +$lang['Permission granted for users'] = 'Permission granted for users'; +$lang['Permission granted thanks to a group'] = "Permission granted thanks to a group"; +$lang['Permission granted'] = "Permission granted"; +$lang['Permission management'] = 'Permission management'; +$lang['Permissions'] = "Permissions"; +$lang['Photo %s of %s'] = 'Photo %s of %s'; +$lang['Photo informations updated'] = 'Photo information updated'; +$lang['Photo name'] = 'Photo name'; +$lang['Photo Page'] = 'Photo page'; +$lang['Photo Properties'] = 'Photo properties'; +$lang['Photo sizes with crop'] = 'Photo sizes with crop'; +$lang['Photo unreachable or no support'] = "Photo unreachable or unsupported format"; +$lang['photos added in the database'] = "photos added in the database"; +$lang['photos candidates for metadata synchronization'] = "photos candidates for metadata synchronization"; +$lang['photos deleted from the database'] = "photos deleted from the database"; +$lang['Photos generation in progress...'] = 'Photos generation in progress...'; +$lang['photos informations synchronized with files metadata'] = 'photos\' information synchronized with files metadata'; +$lang['photos per page'] = "photos per page"; +$lang['photos updated in the database'] = "photos updated in the database"; +$lang['Photos'] = "Photos"; +$lang['Piwigo Administration'] = "Piwigo Administration"; +$lang['Piwigo Announcements Newsletter'] = "Piwigo Announcement Newsletter"; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo cannot retrieve upgrade file from server'; +$lang['Piwigo configuration'] = "Piwigo configuration"; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo export plugin for Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export plugin for iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo for Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish plugin for digiKam'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish plugin for Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish plugin for Shotwell'; +$lang['Piwigo Update'] = 'Piwigo Update'; +$lang['Piwigo Uploader'] = 'Piwigo Uploader'; +$lang['Piwigo version'] = "Piwigo version"; +$lang['pixels'] = 'pixels'; +$lang['Please select at least two groups'] = 'Please select at least two groups'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = "Please check \"plugins\" folder and sub-folders permissions (CHMOD)."; +$lang['Please wait...'] = 'Please wait...'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'; +$lang['Plugin has been successfully copied'] = "The plugin has been successfully copied"; +$lang['Plugin list'] = "Plugins list"; +$lang['Plugins which need upgrade'] = "Plugins to be upgraded"; +$lang['Plugins'] = "Plugins"; +$lang['Portrait'] = 'Portrait'; +$lang['Position'] = "Position"; +$lang['Posted %s on %s'] = 'Posted %s on %s'; +$lang['Predefined filter'] = 'Predefined filter'; +$lang['Preferences'] = "Preferences"; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'The time to prepare the list of users who will be sent mail is limited. Other users are not listed.'; +$lang['Privacy level set to "%s"'] = 'Privacy level set to "%s"'; +$lang['Privacy level'] = "Privacy level"; +$lang['private'] = "private"; +$lang['Private'] = "Private"; +$lang['Properties'] = "Properties"; +$lang['Public / Private'] = "Public / Private"; +$lang['Public'] = "Public"; +$lang['public'] = "public"; +$lang['Purge compiled templates'] = "Purge compiled templates"; +$lang['Purge history detail'] = "Purge history details"; +$lang['Purge history summary'] = "Purge history summary"; +$lang['Purge never used notification feeds'] = "Purge never used notification feeds"; +$lang['Purge search history'] = "Purge search history"; +$lang['Purge sessions'] = "Purge sessions"; +$lang['Quick Local Synchronization'] = "Quick Local Synchronization"; +$lang['Random photo'] = "Random photo"; +$lang['randomly represented'] = "random album thumbnail"; +$lang['ranks'] = "ranks"; +$lang['Rate date'] = "Rate date"; +$lang['Rate'] = "Rate"; +$lang['Rated %d times, score : %.2f'] = 'Rated %d times, score : %.2f'; +$lang['Ratio'] = "Ratio"; +$lang['Rating by guests'] = "Rating by guests"; +$lang['Rating'] = "Rating"; +$lang['Read Piwigo Documentation'] = 'Read Piwigo Documentation'; +$lang['reduce to single existing albums'] = "reduce to single existing albums"; +$lang['Refresh photo set'] = 'Refresh photo set'; +$lang['Refresh'] = "Refresh"; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'; +$lang['registered users'] = 'registered users'; +$lang['registration date'] = "registration date"; +$lang['Reinitialize check integrity'] = "Reinitialize integrity check"; +$lang['Reject'] = "Reject"; +$lang['Released on'] = "Released on"; +$lang['Remote'] = "Remote"; +$lang['Remove all filters'] = 'Remove all filters'; +$lang['remove author'] = 'remove author'; +$lang['remove creation date'] = 'remove creation date'; +$lang['Remove from caddie'] = 'Remove from caddie'; +$lang['remove tags'] = 'Remove tags'; +$lang['remove this filter'] = 'remove this filter'; +$lang['remove title'] = 'remove title'; +$lang['Rename'] = 'Rename'; +$lang['Repair and optimize database'] = "Repair and optimize database"; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "Replacement of original templates by customized templates from the template-extension subfolder"; +$lang['Replacers (customized templates)'] = "Substitutes (customized templates)"; +$lang['Representant'] = "Album Thumbnail"; +$lang['Representation of albums'] = "Album thumbnail"; +$lang['Representative'] = 'Album thumbnail'; +$lang['Represents'] = 'Is thumbnail for'; +$lang['Reset ignored updates'] = 'Reset ignored updates'; +$lang['Resize after upload'] = 'Resize after upload'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Resize after upload disabled due to the use of GD as graphic library'; +$lang['Resize'] = 'Resize'; +$lang['Restore default configuration. You will lose your plugin settings!'] = "Restore default configuration. You will lose your plugin settings!"; +$lang['Restore'] = "Restore"; +$lang['Save manual order'] = 'Save manual order'; +$lang['Save order'] = "Save order"; +$lang['Save Settings'] = 'Save Settings'; +$lang['Save Template Directory'] = 'Save template directory'; +$lang['Save to permalink history'] = "Save to permalinks history"; +$lang['Save visits in history for'] = 'Save visits in history for'; +$lang['Search for new images in the directories'] = "Search for new images in the directories"; +$lang['Searching...'] = "Searching..."; +$lang['Section'] = "Section"; +$lang['See you soon,'] = "See you soon,"; +$lang['See you soon.'] = "See you soon."; +$lang['Select a file'] = 'Select a file'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Select a zone with your mouse to define a new center of interest.'; +$lang['Select an album'] = 'Select an album'; +$lang['Select at least one album'] = "Select at least one album"; +$lang['Select at least one comment'] = 'Select at least one comment'; +$lang['Select at least one photo'] = "Select at least one photo"; +$lang['Select at least one user'] = "Select at least one user"; +$lang['Select at least one tag'] = "Select at least one tag"; +$lang['Select at least two tags for merging'] = 'Select at least two tags for merging'; +$lang['Select files'] = 'Select files'; +$lang['Select groups...'] = 'Select groups...'; +$lang['Select recipients'] = "Select recipients"; +$lang['Select the destination tag'] = 'Select the destination tag'; +$lang['Select users...'] = 'Select users...'; +$lang['Select:'] = 'Select:'; +$lang['selection'] = "selection"; +$lang['Selection'] = 'Selection'; +$lang['Send an information email to group members'] = "Send an information email to group members"; +$lang['Send connection settings by email'] = 'Send connection settings by email'; +$lang['Send mail as'] = "Send mail as"; +$lang['Send mail on HTML format'] = "Send mail in HTML format"; +$lang['Send mail to users'] = "Send mail to users"; +$lang['Send'] = "Send"; +$lang['Set as default language for unregistered and new users'] = 'Set as default language for unregistered and new users'; +$lang['Set as default theme for unregistered and new users'] = "Set as default theme for unregistered and new users"; +$lang['Set author'] = 'Set author'; +$lang['Set creation date'] = 'Set creation date'; +$lang['Set title'] = 'Set title'; +$lang['set to'] = "set to"; +$lang['Settings'] = 'Settings'; +$lang['Sharpen'] = 'Sharpen'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'; +$lang['show details'] = 'show details'; +$lang['Show info'] = "Show info"; +$lang['Show menubar'] = "Show menubar"; +$lang['simple visitors'] = 'simple visitors'; +$lang['Simulation'] = "Simulation"; +$lang['singly represented'] = 'fixed album thumbnail'; +$lang['Site manager'] = "Site manager"; +$lang['Some themes and plugins may be not available yet.'] = 'Some themes and plugins may be not available yet.'; +$lang['Some upgrades are available for extensions.'] = 'Some upgrades are available for extensions.'; +$lang['Source tag'] = 'Source tag'; +$lang['Start pLoader and add your photos.'] = 'Start pLoader and add your photos.'; +$lang['Start Upload'] = 'Start Upload'; +$lang['Statistics'] = "Statistics"; +$lang['Status of user "%s" updated'] = "User \"%s\" status updated"; +$lang['Status'] = "Status"; +$lang['status'] = "status"; +$lang['Storage album'] = "Storage album"; +$lang['sub-albums'] = "sub-albums"; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = "Subscribe %s to Piwigo Announcements Newsletter"; +$lang['Subscribe %s'] = "Subscribe %s"; +$lang['Subscribe to notification by mail'] = "Subscribe to notification by mail"; +$lang['Subscribe'] = "Subscribe"; +$lang['Subscribe/unsubscribe users'] = "Subscribe/unsubscribe users"; +$lang['Subscribed'] = "Subscribed"; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "Subscribers could be listed (available) only if there is new elements to notify."; +$lang['Sum of rates'] = "Sum of rates"; +$lang['Summary'] = "Summary"; +$lang['Support'] = "Support"; +$lang['Switch to clear or dark colors for administration'] = 'Switch to clear or dark colors for administration'; +$lang['synchronize files metadata with database photos informations'] = "synchronize database photos with files metadata"; +$lang['synchronize files structure with database'] = "synchronize files structure with database"; +$lang['Synchronize metadata'] = "Synchronize metadata"; +$lang['Synchronize'] = "Synchronize"; +$lang['Tag "%s" already exists'] = "Tag \"%s\" already exists"; +$lang['Tag "%s" is now a duplicate of "%s"'] = "Tag \"%s\" is now a duplicate of \"%s\""; +$lang['Tag "%s" was added'] = "Tag \"%s\" has been added"; +$lang['Tag selection'] = "Tags selection"; +$lang['Tags %s merged into tag %s'] = 'Tags %s merged into tag %s'; +$lang['target'] = "target"; +$lang['Templates configuration has been recorded.'] = "Templates configuration has been recorded."; +$lang['Templates'] = "Templates"; +$lang['test this remote site'] = "test this remote site"; +$lang['test'] = "test"; +$lang['The %d following tags were deleted'] = "The following %d tags have been deleted"; +$lang['The anomaly will be ignored until next application version'] = "The anomaly will be ignored until next application version"; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'The center of interest is the most meaningful area of the photo.'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = "The file or directory cannot be accessed (either it does not exist or the access is denied)"; +$lang['The following tag was deleted'] = 'The following tag was deleted'; +$lang['the forum'] = "the forum"; +$lang['The gallery URL is not valid.'] = "The gallery URL is not valid."; +$lang['The name of a group must not contain " or \' or be empty.'] = "The name of a group must not contain \" or ' or be empty."; +$lang['The name of an album must not be empty'] = "The name of an album must not be empty"; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "The name of directories and files must comprise only letters, numbers, \"-\", \"_\" or \".\""; +$lang['The number of comments a page must be between 5 and 50 included.'] = "The number of comments on a page must be between 5 and 50 included."; +$lang['The original image quality must be a number between %d and %d'] = 'The original image quality must be a number between %d and %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'The original maximum height must be a number between %d and %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'The original maximum width must be a number between %d and %d'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = "The permalink name must be composed of a-z, A-Z, 0-9, \"-\", \"_\" or \"/\". It must not be numeric or begin with a number followed by \"-\""; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'The picture dimensions will be reduced to %dx%d pixels.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'The Piwigo export plugin allows you to create albums and export photos.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'The uploaded file was only partially uploaded'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'The uploaded files exceed the post_max_size directive in php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "The version of %s [%s] installed is not compatible with the version required [%s]"; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = "The webmaster has subscribed you to be notified by mail."; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = "The webmaster has unsubscribed you from receiving notifications by mail."; +$lang['The whole page'] = 'The whole page'; +$lang['The whole set'] = 'The whole set'; +$lang['the wiki'] = "the wiki"; +$lang['Theme has been successfully installed'] = 'Theme has been successfully installed'; +$lang['Themes which need upgrade'] = 'Themes which need upgrade'; +$lang['Themes'] = "Themes"; +$lang['There is no available subscribers to mail.'] = "There is no subscribers to be notified by mail."; +$lang['There is no group in this gallery.'] = 'There is no group in this gallery.'; +$lang['There is no other language available.'] = 'There is no other language available.'; +$lang['There is no other plugin available.'] = 'There is no other plugin available.'; +$lang['There is no other theme available.'] = 'There is no other theme available.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'This album contains %d photos, added between %s and %s.'; +$lang['This album contains %d photos, added on %s.'] = 'This album contains %d photos, added on %s.'; +$lang['This album contains no photo.'] = 'This album contains no photo.'; +$lang['This is a major update, with new exciting features.'] = 'This is a major update, with new exciting features.'; +$lang['This is a minor update, with only bug corrections.'] = 'This is a minor update, with only bug corrections.'; +$lang['This name is already used by another group.'] = "This name is already used by another group."; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'THIS PLUGIN IS NOW PART OF PIWIGO CORE! UNINSTALL IT NOW!'; +$lang['This group will be set to default'] = "This group will be used by default"; +$lang['This group will be unset to default'] = "This group will no longer be used by default"; +$lang['This site already exists'] = "This site already exists"; +$lang['This theme was not designed to be directly activated'] = 'This theme was not designed to be directly activated'; +$lang['Thumbnail'] = "Thumbnail"; +$lang['Thumbnails generation in progress...'] = 'Thumbnails generation in progress...'; +$lang['Time to send mail is limited. Others mails are skipped.'] = "The time to send mail is limited. Others mails have been skipped."; +$lang['Time'] = "Time"; +$lang['Title'] = "Title"; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'; +$lang['To send ?'] = "To send?"; +$lang['To subscribe'] = "To subscribe"; +$lang['To unsubscribe'] = "To unsubscribe"; +$lang['Toggle \'default group\' property'] = "Reverse 'default group' property"; +$lang['Tools'] = "Tools"; +$lang['top left corner'] = 'top left corner'; +$lang['top right corner'] = 'top right corner'; +$lang['total time'] = "total time"; +$lang['Two updates are available'] = 'Two updates are available'; +$lang['Type here the author name'] = 'Type the author name here'; +$lang['Type here the title'] = 'Type the title here'; +$lang['Type here the name of the new group'] = 'Type the name of the new group here'; +$lang['Type in a search term'] = "Type in a search term"; +$lang['Unable to check for upgrade.'] = "Unable to check for upgrade."; +$lang['Unable to dump database.'] = 'Unable to dump database.'; +$lang['Uncheck all'] = "Uncheck all"; +$lang['Uninstall'] = "Uninstall"; +$lang['Uninstalled Plugins'] = 'Uninstalled Plugins'; +$lang['unit mode'] = "single mode"; +$lang['Unknown upload error'] = 'Unknown upload error'; +$lang['unknown'] = 'unknown'; +$lang['Unlock gallery'] = 'Unlock gallery'; +$lang['Unlocked'] = "Unlocked"; +$lang['unset'] = "unset"; +$lang['Unsubscribe from notification by mail'] = "Unsubscribe from notification by mail"; +$lang['Unsubscribed'] = "Unsubscribed"; +$lang['Update albums informations'] = 'Update albums\' information'; +$lang['Update All'] = 'Update All'; +$lang['Update Complete'] = 'Update Complete'; +$lang['Update in progress... Please wait.'] = 'Update in progress... Please wait.'; +$lang['Update photos information'] = 'Update photos\' information'; +$lang['update the database from files'] = "update the database with files"; +$lang['Update to Piwigo %s'] = 'Update to Piwigo %s'; +$lang['Updates'] = 'Updates'; +$lang['Upload Photos'] = 'Upload Photos'; +$lang['Upload'] = "Upload"; +$lang['Uploaded Photos'] = 'Uploaded Photos'; +$lang['Use the default photo sort order (defined in the configuration file)'] = "Use the default photo sort order (defined in the configuration file)"; +$lang['Used metadata'] = "Metadata used"; +$lang['user "%s" added'] = "user \"%s\" added"; +$lang['User "%s" created with "%s" like password'] = "User \"%s\" created with \"%s\" as password"; +$lang['User %s [%s] added.'] = "User %s [%s] added."; +$lang['User %s [%s] was added to the subscription list.'] = "User %s [%s] added to the subscription list."; +$lang['User %s [%s] was not added to the subscription list.'] = "User %s [%s] not added to the subscription list."; +$lang['User %s [%s] was not removed from the subscription list.'] = "User %s [%s] not removed from the subscription list."; +$lang['User %s [%s] was removed from the subscription list.'] = "User %s [%s] removed from the subscription list."; +$lang['User comments validation'] = "User comments validation"; +$lang['User list'] = "Users list"; +$lang['User status'] = "User status"; +$lang['User'] = "User"; +$lang['Users'] = "Users"; +$lang['user_status_admin'] = "Administrator"; +$lang['user_status_generic'] = "Generic"; +$lang['user_status_guest'] = "Guest"; +$lang['user_status_normal'] = "User"; +$lang['user_status_webmaster'] = "Webmaster"; +$lang['Validate'] = "Validate"; +$lang['Validation'] = "Validation"; +$lang['Version'] = "Version"; +$lang['View in gallery'] = 'View in gallery'; +$lang['Virtual album added'] = "Virtual album added"; +$lang['Virtual album deleted'] = "Virtual album deleted"; +$lang['Virtual album name'] = "Virtual album name"; +$lang['Virtual album'] = "Virtual album"; +$lang['Virtual albums to move'] = "Virtual albums to move"; +$lang['Virtual Links'] = 'Virtual Links'; +$lang['Visit Gallery'] = 'Visit the gallery'; +$lang['Visit language site'] = 'Visit language site'; +$lang['Visit Piwigo project website'] = 'Visit Piwigo project website'; +$lang['Visit plugin site'] = 'Visit plugin site'; +$lang['Visit theme site'] = 'Visit theme site'; +$lang['Visited %d times'] = 'Visited %d times'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'visitors need to login and have the appropriate permissions to see this album'; +$lang['Waiting'] = "Pending"; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WARNING! This plugin does not seem to be compatible with this version of Piwigo.'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = "Warning: subscribing or unsubscribing will send mails to users"; +$lang['Watermark'] = 'Watermark'; +$lang['Web Form'] = 'Web Form'; +$lang['Webmaster cannot be deleted'] = "Webmaster cannot be deleted"; +$lang['Webmaster status is required.'] = 'Webmaster status is required.'; +$lang['Week starts on'] = 'Week starts on'; +$lang['Who can see these photos?'] = 'Who can see these photos?'; +$lang['Who can see this photo?'] = 'Who can see this photo?'; +$lang['width must be a number superior to'] = "width must be a number greater than"; +$lang['Width'] = 'Width'; +$lang['With blank value, gallery title will be used'] = "If blank, the gallery title will be used"; +$lang['With no album'] = 'With no album'; +$lang['With no tag'] = 'With no tag'; +$lang['With no virtual album'] = 'With no virtual album'; +$lang['wrong filename'] = "wrong filename"; +$lang['X Position'] = 'X Position'; +$lang['X Repeat'] = 'X Repeat'; +$lang['Y Position'] = 'Y Position'; +$lang['Year'] = "Year"; +$lang['You are running on development sources, no check possible.'] = "You are running on development sources, no check possible."; +$lang['You are running the latest version of Piwigo.'] = "You are running Piwigo latest version."; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'You are using the Browser uploader. Try the Flash uploader instead.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'You are using the Flash uploader. Problems? Try the Browser uploader instead.'; +$lang['You can activate only one mobile theme.'] = 'You can activate only one mobile theme.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'; +$lang['You cannot delete your account'] = "You cannot delete your account"; +$lang['You cannot move an album in its own sub album'] = "You cannot move an album in its own sub album"; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'You can\'t define a default photo order because you have a custom setting in your local configuration.'; +$lang['You have %d orphan tags: %s.'] = 'You have %d orphan tags: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = "You have subscribed to receive notifications by mail."; +$lang['You have unsubscribed from receiving notifications by mail.'] = "You have unsubscribed from being notified by mail."; +$lang['You might go to plugin list to install and activate it.'] = "Go to the plugins list to install and activate it."; +$lang['You need to confirm deletion'] = "You must confirm deletion"; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "You should upgrade your system to take full advantage of the application, otherwise the application could work improperly, or not at all"; +$lang['Your configuration settings are saved'] = 'Your configuration settings are saved'; +$lang['Zoom'] = 'Zoom'; +$lang['[%s] Visit album %s'] = "[%s] Visit album %s"; +$lang['[NBM] Problems or questions'] = "[NBM] Problems or questions"; +$lang['Purge user cache'] = 'Purge user cache'; +$lang['Loading...'] = 'Loading...'; +$lang['Show %s users'] = 'Show %s users'; +$lang['No matching user found'] = 'No matching user found'; +$lang['Showing %s to %s of %s users'] = 'Showing %s to %s of %s users'; +$lang['(filtered from %s total users)'] = '(filtered from %s total users)'; +$lang['No user selected, no action possible.'] = 'No user selected, no action possible.'; +$lang['%d of %d users selected'] = '%d of %d users selected'; +$lang['No user selected of %d users'] = 'No user selected of %d users'; +$lang['All %d users are selected'] = 'All %d users are selected'; +$lang['on the %d selected users'] = 'on the %d selected users'; +$lang['User %s added'] = 'User %s added'; +$lang['Registered on %s, %s.'] = 'Registered on %s, %s.'; +$lang['Last visit on %s, %s.'] = 'Last visit on %s, %s.'; +$lang['Change password'] = 'Change password'; +$lang['Password updated'] = 'Password updated'; +$lang['Change username'] = 'Change username'; +$lang['Update user'] = 'Update user'; +$lang['User %s updated'] = 'User %s updated'; +$lang['Users modified'] = 'Users modified'; +$lang['close'] = 'close'; +$lang['Open user details'] = 'Open user details'; +$lang['Close user details'] = 'Close user details'; +?> \ No newline at end of file diff --git a/sources/language/en_UK/common.lang.php b/sources/language/en_UK/common.lang.php new file mode 100644 index 0000000..82dc5cd --- /dev/null +++ b/sources/language/en_UK/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/en_UK/en_UK.jpg b/sources/language/en_UK/en_UK.jpg new file mode 100644 index 0000000..ad551d8 Binary files /dev/null and b/sources/language/en_UK/en_UK.jpg differ diff --git a/sources/language/en_UK/help/cat_modify.html b/sources/language/en_UK/help/cat_modify.html new file mode 100644 index 0000000..ce02815 --- /dev/null +++ b/sources/language/en_UK/help/cat_modify.html @@ -0,0 +1,133 @@ +

    Edit album

    + +

    Informations

    + +
      + +
    • name: rename the album (a virtual rename in case + of a physical album).
    • + +
    • description: short text giving a general idea of the content, + this text will be displayed at the bottom of the thumbnails page.
    • + +
    + +

    Move

    + +

    If the album is virtual, you can move it. Moving a album means +changing its parent album.

    + +

    Options

    + +
      + +
    • Access type: Permissions management. If you make a + album private, all its child albums becomes private. If you make a + album public, all its parent albums becomes public.
    • + +
    • Lock: The album and its sub-albums will + be temporary disabled for maintenance.
    • + +
    • Comments: Authorize users to comment photos of this + album.
    • + +
    + +

    You can also manage these options on the "Properties" +management screen (screens Comments, Lock, +Public/Private, Representative available from Administration » Albums » Properties).

    + +

    Sort order

    + +

    Use the default images sort order.

    + +

    Indicate whether this sort order will apply to subalbums also.

    + +

    Select specific sorting criteria to be used with this album.

    +
      +
    • Creation date: Photo shooting date
    • +
    • Post date: Synchronization date
    • +
    • Average rate (*): Average rate could be changed by the visitor rating
    • +
    • Most visited (*): The current visit might change the most visited order
    • +
    • File name: Name given in information field
    • +
    • Id: Internal Id (recent categories have an higher id than previous ones.
    • + +
    +

    (*)Warning: Be sure to test these sort orders by yourself as they can give unexpected results.

    + + +

    Representant

    + +

    The album representative is the thumbnail displayed on the main page (category.php) to represent +the album when +it contains only sub-albums and no direct photo (just as the root album).

    +photo of a album :

    + +
      + +
    • Photo page: one of the action buttons let you set the current photo as the representative for the + displayed album. This button is available only for administrators.
    • + +
    • Modify informations about a photo in + administration. This screen can be reached from picture.php or Batch + management in unit mode. See the help of this screen for + details.
    • + +
    • Administration » Albums » Properties, + Representative. See the help of this screen for details.
    • + +
    • Edit album (the present screen).
    • + +
    + +

    The choice of a representative depends on the +allow_random_representative configuration parameter (see include/config_default.inc.php).

    + +

    In default mode (allow_random_representative set to false), +each album containing at least one element is represented by a fixed +element. Once set (at album creation), the representative changes only +when an administrator ask for it. If the representative is not appropriate, +you can ask to Find a new representant by random.

    + +

    If the allow_random_representative configuration parameter is +set to true, a category containing photos may have no fixed +representant. Just use Delete representant button.

    + +

    If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to Modify +informations about a photo screen. The only option on the current screen +is the Delete representant button.

    + +

    Link all album photos to a new album

    + +
      + +
    • Virtual album name: Name of the new album to be created, +all photos of the current category will be linked to the new one.
    • + +
    • Parent album: Where the new album will be, +leave empty to create it at root.
    • + +
    + +

    Link all album photos to existing albums

    + +
      + +
    • Albums: Choose the destination album.
    • + +
    + +

    Send an information email to group members

    + +
      + +
    • Group: recipients group
    • + +
    • Mail content: Free text to send to them.
    • + +
    \ No newline at end of file diff --git a/sources/language/en_UK/help/cat_move.html b/sources/language/en_UK/help/cat_move.html new file mode 100644 index 0000000..58f3115 --- /dev/null +++ b/sources/language/en_UK/help/cat_move.html @@ -0,0 +1,14 @@ +

    Moving virtual Albums

    + +

    Only virtual albums can have a new parent album.

    + +

    Virtual albums to move

    + +

    Select one or several virtual albums you want to move. +If the list is empty, that mean you have not created one yet.

    + +

    New parent album

    + +

    Select the new parent album (virtual or physical). +If you do not select any parent, the virtual selected albums will be moved to the root. +A album cannot be moved into itself or to one of its child.

    \ No newline at end of file diff --git a/sources/language/en_UK/help/cat_options.html b/sources/language/en_UK/help/cat_options.html new file mode 100644 index 0000000..11222f3 --- /dev/null +++ b/sources/language/en_UK/help/cat_options.html @@ -0,0 +1,22 @@ +

    Album options

    + +

    Options management for several albums at once.

    + +
    + +
    Comments
    +
    A photo can receive comments from your visitors if it belongs to an album with comments activated.
    + +
    Lock
    +
    Locked albums are disabled for maintenance. Only administrators can view them in the gallery.
    + +
    Public / private
    +
    Once an album become private, give access rights to users and groups
    + +
    Representative
    +
    This option is available when you set the configuration setting +allow_random_representative (see include/config_defaults.inc.php) to +true. Each album can be represented by a random photo or by a photo chosen as a unique representative.
    + +
    diff --git a/sources/language/en_UK/help/cat_perm.html b/sources/language/en_UK/help/cat_perm.html new file mode 100644 index 0000000..cabda09 --- /dev/null +++ b/sources/language/en_UK/help/cat_perm.html @@ -0,0 +1,13 @@ +

    Edit album permissions

    + +

    This screen is only available for private albums. Here you can select +users and groups authorized for a album.

    + +

    Groups

    + +

    You can deny or grant groups access for the current album. By modifying +groups authorizations, the users belonging to these groups will be denied or granted access to the album.

    + +

    Users

    + +

    You can deny or grant access to individual users. Users that have access through a group can be denied access by exception.

    diff --git a/sources/language/en_UK/help/configuration.html b/sources/language/en_UK/help/configuration.html new file mode 100644 index 0000000..cb40e9a --- /dev/null +++ b/sources/language/en_UK/help/configuration.html @@ -0,0 +1,101 @@ +

    Configuration

    + +

    This screen let the administrator do basic gallery configuration. Indeed, this screen only shows simple configuration parameters that should be enough for the vast majority of administrators. If you want to see other numerous (and advanced) configuration parameters, read the default configuration file include/config_default.inc.php.

    + +

    The screen is divided into different sections, grouping configuration parameters by theme.

    + + +

    Main

    +
      +
    • Gallery title: used in RSS feed and notifications by email.
    • + +
    • Page banner: displayed on top of each public page.
    • + +
    • Gallery URL: used for the RSS feed.
    • + +
    • Lock gallery: Lock the entire gallery for maintenance. Only administrator users will be able to reach the gallery.
    • + +
    • Rating: Photo rating feature is enabled.
    • + +
    • Rating by guests: Even unregistered users can rate images.
    • + +
    • Allow user registration: Anybody can register.
    • + +
    • Mail address is mandatory for all users: mail address will be checked on registration or profile update, except if the action is done by an administrator.
    • + +
    • Email admins when a new user registers: administrators will be notified by mail for each registration.
    • + +
    • Default photos order: you can define a personalized order with these drop-down menus.
    • + +
    + +

    History

    + +

    Visits on pages category.php and picture.php will be saved in the history table.

    + +

    Visits will be shown in Administration » Tools » History.

    + +
      +
    • Save page visits by guests: page visits by guests will be recorded.
    • + +
    • Save page visits by users: visits by registrered users will be recorded.
    • + +
    • Save page visits by administrators: page visits by administrators will be recorded.
    • + +
    + +

    Comments

    +
      + +
    • Comments for all: Even unregistered guest can post comments.
    • + +
    • Number of comments per page.
    • + +
    • Validation: an administrator must validate users comments before they become visible on the site. User comments validation + takes place in screen Administration » Tools » Pending Comments.
    • + +
    • Email admins when a valid comment is entered: Sends an email to the administrators when a user enters a comment and this comment is validated.
    • + +
    • Email admins when a comment requires validation: +Sends an email to the administrators when a user enters a comment that requires validation by the admin. +User comments validation takes place in the screen Administration » Tools » Pending Comments.
    • + +
    + +

    Default display

    + +

    Here you can change display options used by guest, the default user that is not connected. Once connected, these options are overridden by the user's own options +(modifiable in profile).

    + +

    It is possible to change the display options for all existing users on the Administration » +Users » Manage screen where you can select a list of users.

    + +
      + +
    • Language: Apply to Piwigo labels only. Album names, photo names and all descriptions fields are not localized.
    • + +
    • Number of photos per row
    • + +
    • Number of rows per page
    • + +
    • Interface theme
    • + +
    • Recent period: By days. Period during which a photo is shown as new. Must be greater than 1 day.
    • + +
    • Expand all albums: Expand all albums by + default in the menu Warning: this option is resources intensive and may generate a huge menu if your album tree contains many albums.
    • + +
    • Show number of comments: Show the number of comments for each photo on the thumbnails page. Resource intensive.
    • + +
    • Show hits count: Display hits observed on photo just under its thumbnail on the thumbnails page. Only when advanced configuration parameter is:
      + $conf['show_nb_hits'] = true;
      + Notice: false by default.
    • + +
    • Maximum width of the photos: maximum displayed width. Photos larger than this setting will be resized on display. Rather than choosing this option, you might consider modifying the width of your photos; that would be a better practice.
    • + +
    • Maximum height of the photos: Same as for the maximum width setting.
    • + +
    \ No newline at end of file diff --git a/sources/language/en_UK/help/extend_for_templates.html b/sources/language/en_UK/help/extend_for_templates.html new file mode 100644 index 0000000..a46f947 --- /dev/null +++ b/sources/language/en_UK/help/extend_for_templates.html @@ -0,0 +1,51 @@ +

    Template Extension Configuration

    + +

    About

    +

    Your Piwigo gallery can be customised by replacing existing template files with customised versions. For example, the default header template (header.tpl) can be replaced by a customised header template (my-header.tpl). After submitting the changes to the database the gallery will display the customised header instead of the original header.
    +Template extensions are a powerful way to create customised themes for both new and advanced users. Used together with the LocalFiles Editor you can create your own child themes.

    + +

    Original Template

    +

    A theme contains a number of template files that make up the gallery pages. These are the original templates.

    + +

    Optional URL Keyword

    +

    These are words found in the gallery URL after the module name. They can also be active permalinks (See the permalink documentation for more information). WARNING: if the same original template and same keyword is used on more than one customised template only the last one is active.

    + +

    Bound Theme

    +

    The bound theme is the theme from which the template files are being replaced.

    + +

    Where are the original templates?

    +

    Original templates are the template files shipped with each theme. These are saved in /themes/default/template (or themes//template). These template files should not be edited in place as changes will be lost with theme upgrades.
    +Supported original templates include:

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl and/or thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl and/or footer.tpl
    • +
    • picture_content.tpl and/or picture.tpl
    • + +
    • profile.tpl and/or profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl and/or search_rules.tpl
    • +
    • nbm.tpl and/or notification.tpl
    • +
    • identification.tpl and/or register.tpl
    • +
    • redirect.tpl
    • +
    +

    Saving customised templates

    +

    Customised templates should be saved in the template-extension folder or subfolders. For example, /template-extension/my-default/header.tpl (or /template-extension//header.tpl) Template files can have any name with a .tpl extension. The template files in subfolders appear in the Template configuration screen as available custom templates.

    +

    Activating customised templates

    +

    Select the original template to replace. Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword. Select a bound theme and the changes will be effective on that theme. Submit the changes to the database.

    +

    Deactivating customised templates

    +

    Unselect the original template and submit the changes to the database.
    +Delete the customised template files from the template-extension folder.

    + + +

    Warnings

    +
      +
    • The original template must be the original template otherwise you may have unpredictable results.
    • +
    • If the same original template and same URL keyword is used on more than one customised template only the last one is active.
    • +
    • Distributed sample template files are for test purposes only. Do not edit them. Create your own ones or copy existing theme template files into /template-extension//
    • +
    • When the customised template is deleted the original template file is immediately reactivated.
    • +
    \ No newline at end of file diff --git a/sources/language/en_UK/help/group_list.html b/sources/language/en_UK/help/group_list.html new file mode 100644 index 0000000..eeae61d --- /dev/null +++ b/sources/language/en_UK/help/group_list.html @@ -0,0 +1,22 @@ +

    Groups list

    + +

    This is the place where you manage groups.

    + +

    Add a group

    + +

    Administrator can add groups.

    + +

    Groups list

    + +

    For each group the following actions can be applied:

    + + +
      +
    • go to user management (Admin » Users » Manage)
    • +
    • go to permissions management screen to grant or deny access to private albums.
    • +
    • delete the group (requires a confirmation)
    • +
    • toggle status "default" (requires a confirmation)
    • +
    + +

    Default groups

    +

    Default groups are groups that are automatically associated to each new user upon registration or creation by an administrator.

    diff --git a/sources/language/en_UK/help/help_add_photos.html b/sources/language/en_UK/help/help_add_photos.html new file mode 100644 index 0000000..8a88411 --- /dev/null +++ b/sources/language/en_UK/help/help_add_photos.html @@ -0,0 +1,27 @@ +

    Several ways to add your photos in your gallery:

    + +
      +
    • Direct upload inside your web browser is the + simplest and most immediate way. It depends on your browser capabilities + and your web server. For a huge quantity of photos or in case you encounter some problem, + the other methods are just waiting for you!
    • +
    + + + +
      +
    • pLoader is a desktop application, to be installed on your computer. Drag & drop photos into pLoader window, click on "Upload to Piwigo" and let pLoader do the job. You can find other desktop applications such as WinToPiwigo or the Digikam export plugin to Piwigo.
    • +
    + + + +
    +
      +
    • FTP transfer is the most recommended way to add a + very large collection of photos with a minimum number of clicks. Follow + the guide to prepare your photos. The FTP method let you control precisely + the physical organization of your photos on your server.
    • +
    + + +
    \ No newline at end of file diff --git a/sources/language/en_UK/help/help_groups.html b/sources/language/en_UK/help/help_groups.html new file mode 100644 index 0000000..aed7d7a --- /dev/null +++ b/sources/language/en_UK/help/help_groups.html @@ -0,0 +1,11 @@ +

    Groups are a convenient way to set permissions for a list of users.

    + +

    Create groups in Administration » Users +» Groups and associate users to this group +in Administration » Users » +Manage.

    + +

    A user can belong to several groups. Authorization takes precedence over +interdiction : if user "jack" belongs to groups "family" and "friends", and +that only group "family" can see album "Christmas 2010" album then +"jack" will be able to see "Christmas 2010".

    diff --git a/sources/language/en_UK/help/help_misc.html b/sources/language/en_UK/help/help_misc.html new file mode 100644 index 0000000..c46e82a --- /dev/null +++ b/sources/language/en_UK/help/help_misc.html @@ -0,0 +1,9 @@ +

    Once you created your gallery you can configure it for your visitor +

      +
    • The default display as you like in Administration » Configuration » Options tab Guest Settings
    • +
    • The default theme in Administration » Configuration » Themes
    • +
    • The default language in Administration » Configuration » Languages
    • +
    + By default, each new user will inherit these properties upon registration. +

    +

    If you have any question, Piwigo community will welcome you on its forum.

    \ No newline at end of file diff --git a/sources/language/en_UK/help/help_permissions.html b/sources/language/en_UK/help/help_permissions.html new file mode 100644 index 0000000..600d541 --- /dev/null +++ b/sources/language/en_UK/help/help_permissions.html @@ -0,0 +1,57 @@ +
    +Permissions on photos + +

    Each photo has a privacy level (a lock). Each user also has a privacy level (a key). There are 5 privacy levels:

    +
      +
    1. None
    2. +
    3. Contacts
    4. +
    5. Friends (which is higher than a contact)
    6. +
    7. Family (which is higher than a friend)
    8. +
    9. Admins (which is higher than any other level)
    10. +
    + +

    Higher levels have permissions on lower levels. For a given user, the higher the privacy level, the more photos he can see.

    + +

    For example, if photo "peter_wedding-0024.jpg" has "Family" privacy level, then:

    +
      +
    • Peter (who is an "Admin") will see the photo because "Admins" can see all photos
    • +
    • Beth (who is a "Family" member) will also see the photo
    • +
    • Mary (who is just a "Friend") won't see the photo
    • +
    + +

    A user that has no permission to see the content of a album won't see the album itself, not even its title. The same principle applies to a tag.

    + +

    You can set the privacy level of a user on Administration » Users » Manage screen.

    + +
    + +
    +Permissions on albums + +

    If privacy levels do not fit your needs, you can also manage permissions on albums for a user or a group. You can manage permissions on photos and albums at the same time, without conflict.

    + +

    You can forbid access to albums. Switch the album access type to +"private" if you want to manage permissions.

    + +

    You can set a album to private by editing a single album +(Administration » Albums » Manage +» edit) or by setting options to your whole album tree +(Administration » Albums » +Properties » Public / Private).

    + +

    Once the album is private, you can manage permissions for groups and +users with 3 screens:

    + +
      + +
    • Administration » Users » Manage » + permissions action (one link per user)
    • + +
    • Administration » Users » Groups » + permissions action (one link per group)
    • + +
    • Administration » Albums » Manage » edit + album permissions action (one link per album)
    • + +
    +
    diff --git a/sources/language/en_UK/help/help_virtual_links.html b/sources/language/en_UK/help/help_virtual_links.html new file mode 100644 index 0000000..f6b5ca8 --- /dev/null +++ b/sources/language/en_UK/help/help_virtual_links.html @@ -0,0 +1,12 @@ +

    Photos are displayed in the album corresponding to their file +directory.

    + +

    You can also display a photo in several albums, without duplicating +the file on your web server. Associate the photo to any album from the +photo editing screen (that any administrator can reach from the photo page +on the gallery side).

    + +

    Virtual albums are based on this concept: they have no corresponding +directory. Create virtual albums +from Administration » Albums » +Manage.

    diff --git a/sources/language/en_UK/help/history.html b/sources/language/en_UK/help/history.html new file mode 100644 index 0000000..701b2de --- /dev/null +++ b/sources/language/en_UK/help/history.html @@ -0,0 +1,22 @@ +

    History

    + +

    On these screens, you can monitor your gallery visits history according to the options you have chosen in: Administration » Configuration » Options » History

    + +

    Statistics

    +
      +

      If you have chosen to record the pages visited (index.php and picture.php), you can monitor them from this tab.

      +
    • Global statistics: visits per year.
    • +
    • Yearly statistics: visits per month in the selected year .
    • +
    • Monthly statistics: visits per days in the selected month .
    • +
    • Daily statistics: visits per hours in the selected day.
    • +
    + +

    Search

    +
      +

      If you have chosen to record the pages visited (index.php and picture.php), you can browse the details from this tab with the help of different filters.

      +
    • Filter by date: select the date range to search by setting start and end dates.
    • +
    • Filter by type of element: select the type of element for statistics on that element.
    • +
    • Filter by user: select the user for statistics on that user.
    • +
    • Filter by image identifier: select the image identifier for statistics on that image.
    • +
    • Filter by name of the file: select the file name for statistics on that file..
    • +
    \ No newline at end of file diff --git a/sources/language/en_UK/help/index.php b/sources/language/en_UK/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/en_UK/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/en_UK/help/maintenance.html b/sources/language/en_UK/help/maintenance.html new file mode 100644 index 0000000..671c92c --- /dev/null +++ b/sources/language/en_UK/help/maintenance.html @@ -0,0 +1,26 @@ +

    Maintenance

    + +

    To optimise page generation time Piwigo uses cached information. For example, instead of counting the number of photos contained in each album at each page reload this information is stored in the database. In theory this information should always be correct but sometimes an error can occur and cached information becomes out of date.

    + +

    Some information becomes less useful as time goes by. Deleting this useless information from the database will save you some disk space.

    + +
      +
    • Delete orphan tags
    • +
    +
      +
    • Update albums informations: For each album, the following information is checked, and updated if necessary : list of parent albums, number of photos, last photo date, position among brother albums, position among all albums. This action also checks the representative photos consistency.
    • +
    • Update photos information: For each photo, information updated is : full path to file, average rate. Warning, do not mix up: metadata information must be synchronised from Administration » Tools » synchronise, or on the modification screen of a single photo (through Photo for example).
    • +
    +
      +
    • Repair and optimise the database:Perform re-order, repair and optimise operations on each table of the database.
    • +
    • Reinitialize integrity check
    • +
    + +
      +
    • Purge history details: Delete all lines from the history table. Screen Administration » Tools » History will not longer show information for the past history. Warning: all data will be lost, without any way to get them back.
    • +
    • Purge history summary: Delete all the summary information about visit history. This summary is calculated from the history details.
    • +
    • Purge sessions: Delete expired user sessions.
    • +
    • Purge never used notification feeds
    • +
    • Purge searches history
    • +
    • Purge compiled templates
    • +
    \ No newline at end of file diff --git a/sources/language/en_UK/help/notification_by_mail.html b/sources/language/en_UK/help/notification_by_mail.html new file mode 100644 index 0000000..da9ac2a --- /dev/null +++ b/sources/language/en_UK/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

    Notification By Mail (NBM)

    + +

    Configure and manage email notifications to users notifying them of changes to your site.

    + +

    This screen comprises three tabs:

    + +

    Settings

    +

    Available only for webmasters, this tab sets the notification by mail parameters.

    + +

    Subscribe

    +

    Available only for webmasters, this tab manages a user's subscription to email notifications. Add users to the subscribed box for them to receive notifications by mail.

    + +

    Send

    +

    Available only for webmasters and administrators, this tab allows administrators to send notification emails to subscribed users.

    + diff --git a/sources/language/en_UK/help/permalinks.html b/sources/language/en_UK/help/permalinks.html new file mode 100644 index 0000000..fc49492 --- /dev/null +++ b/sources/language/en_UK/help/permalinks.html @@ -0,0 +1,7 @@ +

    Permalinks

    + +

    Permalinks are used to make album urls nicer. When a album has a permalink defined, the id of the album is not required anymore in the url.

    + +

    When a permalink is deleted, you can save it in the permalink history, so that external links to Piwigo pages still work. In the permalink history table you can see the date when the permalink has been deleted, the last time it was used and the number of times this permalink has been used.

    + +

    Note that permalinks must be unique per album. Also in the permalink history you cannot have the same permalink defined more than once.

    diff --git a/sources/language/en_UK/help/photos_add_ftp.html b/sources/language/en_UK/help/photos_add_ftp.html new file mode 100644 index 0000000..3d39f1e --- /dev/null +++ b/sources/language/en_UK/help/photos_add_ftp.html @@ -0,0 +1,70 @@ +
    + Quick Start + +
      +
    1. Create a directory on your computer.
    2. + +
    3. Copy some photos inside this directory, resize them for web display. Warning: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, nor accentuated characters.
    4. + +
    5. With a FTP client, copy your directory in the "galleries" directory of your Piwigo installation.
    6. + +
    7. Logon your gallery and go to Administration and click on the big Synchronization button.
    8. +
    + +

    Congratulations! You have successfully created the first album of your photo gallery.

    +
    + +
    + Directories and files organization + +
      + +
    • + +

      Album directories are in the Piwigo directory + "galleries". Here follows the directory tree of a very small gallery (but + using many features):

      + +
      +galleries
      +|-- wedding
      +|   |-- celebration
      +|   |   |-- arrival
      +|   |   |   |-- paul-alone.jpg
      +|   |   |   +-- sarah-alone.jpg
      +|   |   +-- departure
      +|   |       +-- paul-and-sarah.jpg
      +|   +-- party
      +|       |-- dancers001.jpg
      +|       |-- dancers002.jpg
      +|       +-- dancers003.jpg
      ++-- honeymoon
      +    |-- hotel.png
      +    |-- video-from-plane.avi
      +    +-- pwg_representative
      +        +-- video-from-plane.jpg
      +
      + +
    • + +
    • Except for "pwg_representative" (see explanations below), each directory under "galleries" produces a album. There is no limit on deepness.
    • + +
    • Basically, an element is represented by a file. A file can be a + Piwigo element if its extension is among file_ext + configuration parameter possibilities (see include/config_default.inc.php file). A file can + be a picture if its extension is among picture_ext + configuration parameter possibilities.
    • + +
    • No photo elements (video, sounds, file texts, whatever you want...) are represented by default by an icon corresponding to the filename + extension. Optionally, you can associate a thumbnail and a representative + file (see video.avi in the example above).
    • + +
    • Warning: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, nor accentuated characters.
    • + +
    • Once photos are correctly placed in the + directories, go to: Administration » Tools » + Synchronize
    • + +
    +
    diff --git a/sources/language/en_UK/help/search.html b/sources/language/en_UK/help/search.html new file mode 100644 index 0000000..ae1330a --- /dev/null +++ b/sources/language/en_UK/help/search.html @@ -0,0 +1,24 @@ +

    Search

    + +

    This page let you search photos among the whole gallery.

    + +
    + +
    Search for words
    +
    Search for one or several words among the attributes related to the photos + of the gallery. Use * as a wildcard for partial matches.
    + +
    Search for an author
    +
    Use * as a wildcard for partial matches.
    + +
    Search by date
    +
    Select a date and/or an ending date for your query. Leave date field empty + if you want to make a "before" query. The year in the last + field must be entered in the following format : AAAA (i.e. 2004)
    + +
    Search in albums
    +
    Select album or albums you wish to search. All + sub-albums can be searched by selecting the parent album and setting enable + search sub-albums below.
    + +
    diff --git a/sources/language/en_UK/help/synchronize.html b/sources/language/en_UK/help/synchronize.html new file mode 100644 index 0000000..7eac01a --- /dev/null +++ b/sources/language/en_UK/help/synchronize.html @@ -0,0 +1,14 @@ +

    Synchronise

    + +

    There are two different types of synchronisation:

    +
      +
    • directories/files
    • +
    • file metadata
    • +
    + +

    Synchronising directories and files is about updating your directories tree with the album tree in the database. +Synchronising file metadata is about updating photo information, such as filesize, dimensions in pixels, EXIF or IPTC information, in the database.

    + +

    When synchronising your uploads with your gallery you must first synchronise directories and files.

    + +

    The synchronisation process may take a long time (depending on server load and the number of elements to manage) so it is possible to do it album by album.

    \ No newline at end of file diff --git a/sources/language/en_UK/help/user_list.html b/sources/language/en_UK/help/user_list.html new file mode 100644 index 0000000..371facf --- /dev/null +++ b/sources/language/en_UK/help/user_list.html @@ -0,0 +1,23 @@ +

    Users list

    + +

    This is where you manage the users of your Piwigo gallery.

    + +

    Add a user

    + +

    An administrator can add users manually. For each user create a username, a password and submit a valid email address.

    + +

    Users list

    + +

    The list of existing users can be filtered on username (use * as wildcard), group or status. It can be ordered by registration date or username, in ascending or descending order.

    + +

    This screen allows the management of several users at once, using different actions:

    + +
      +
    • delete users (requires confirmation)
    • +
    • change the status of the user
    • +
    • associate or dissociate from groups
    • +
    • modify display properties
    • +
    • modify additional preferences
    • +
    + +

    The target is the selected user (by default) or all users as displayed in the filtered list.

    \ No newline at end of file diff --git a/sources/language/en_UK/index.php b/sources/language/en_UK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/en_UK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/en_UK/install.lang.php b/sources/language/en_UK/install.lang.php new file mode 100644 index 0000000..17f94e1 --- /dev/null +++ b/sources/language/en_UK/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Need help? Ask your question on the Piwigo message board.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Visitors will be able to use this email to contact the site administrator'; +$lang['PHP 5 is required'] = "PHP 5 is required"; +$lang['It appears your webhost is currently running PHP %s.'] = "It appears your webhost is currently running PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file."; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note you can change your configuration by yourself and then restart Piwigo.'; +$lang['Try to configure PHP 5'] = "Try to configure PHP 5"; +$lang['Sorry!'] = "Sorry!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo was not able to configure PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "You should refer to your hosting provider's support and see how you can switch to PHP 5 by yourself."; +$lang['Hope to see you back soon.'] = "Hope to see you back soon."; +$lang['Congratulations, Piwigo installation is completed'] = 'Congratulations, Piwigo installation is completed'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning: database.inc.php must only contain what is in the textarea, no line return or space character)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Creation of config file local/config/database.inc.php failed.'; +$lang['Download the config file'] = 'Download the config file'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'You can download the config file and upload it to the local/config directory in your installation.'; +$lang['Just another Piwigo gallery'] = 'Just another Piwigo gallery'; +$lang['Welcome to my photo gallery'] = 'Welcome to my photo gallery'; +$lang['Welcome to your new installation of Piwigo!'] = 'Welcome to your new installation of Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Don\'t hesitate to consult our forums for any help: %s'; +?> \ No newline at end of file diff --git a/sources/language/en_UK/iso.txt b/sources/language/en_UK/iso.txt new file mode 100644 index 0000000..043ea10 --- /dev/null +++ b/sources/language/en_UK/iso.txt @@ -0,0 +1 @@ +English [UK] \ No newline at end of file diff --git a/sources/language/en_UK/upgrade.lang.php b/sources/language/en_UK/upgrade.lang.php new file mode 100644 index 0000000..3d40fce --- /dev/null +++ b/sources/language/en_UK/upgrade.lang.php @@ -0,0 +1,43 @@ +release %s (or equivalent).'] = 'This page proposes to upgrade the database from your old Piwigo version to the new version. The upgrade assistant thinks you are currently running release %s (or equivalent).'; +$lang['Upgrade from version %s to %s'] = "Upgrade from version %s to %s"; +$lang['Statistics'] = "Statistics"; +$lang['total upgrade time'] = "total upgrade time"; +$lang['total SQL time'] = "total SQL time"; +$lang['SQL queries'] = "SQL queries"; +$lang['Upgrade informations'] = "Upgrade information"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'As a precaution, the following plugins have been deactivated. You must check for upgradable plugins before reactivating them:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Only an administrator can run an upgrade: please sign in below.'; +$lang['You do not have access rights to run upgrade'] = "You do not have access rights to run upgrade"; +$lang['All sub-albums of private albums become private'] = "All sub-albums of private albums become private"; +$lang['User permissions and group permissions have been erased'] = "Users and groups permissions have been erased"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Only thumbnails prefix and webmaster mail address have been saved from previous configuration"; +$lang['In %s, before ?>, insert:'] = 'In %s, before ?>, insert:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'As a precaution, the following themes have been deactivated. You must check for upgradable themes before reactivating them:'; +?> \ No newline at end of file diff --git a/sources/language/en_US/common.lang.php b/sources/language/en_US/common.lang.php new file mode 100644 index 0000000..7d4ce4c --- /dev/null +++ b/sources/language/en_US/common.lang.php @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/sources/language/en_US/en_US.jpg b/sources/language/en_US/en_US.jpg new file mode 100644 index 0000000..d5926e4 Binary files /dev/null and b/sources/language/en_US/en_US.jpg differ diff --git a/sources/language/en_US/index.php b/sources/language/en_US/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/en_US/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/en_US/iso.txt b/sources/language/en_US/iso.txt new file mode 100644 index 0000000..753f271 --- /dev/null +++ b/sources/language/en_US/iso.txt @@ -0,0 +1 @@ +English [US] \ No newline at end of file diff --git a/sources/language/eo_EO/about.html b/sources/language/eo_EO/about.html new file mode 100644 index 0000000..148536b --- /dev/null +++ b/sources/language/eo_EO/about.html @@ -0,0 +1,5 @@ +

    Tiu galerio funkcias per Piwigo.

    + +

    Piwigo estas programo de reta fota galerio. Ĝin kontruis aktiva komunumo de uzantoj kaj programistoj. Kromprogramoj povas facile personigi la galerion. Bonuso : Piwigo estas libera kaj senpaga.

    + +

    Vizitu la retejon de Piwigo

    diff --git a/sources/language/eo_EO/admin.lang.php b/sources/language/eo_EO/admin.lang.php new file mode 100644 index 0000000..021c598 --- /dev/null +++ b/sources/language/eo_EO/admin.lang.php @@ -0,0 +1,976 @@ +Flash uploader instead.'] = 'Vi uzas la foliumilan alsutilon, kaze de problemo, provu la Flash alsutilon anstatau.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Vi uzas la Flash-alsutilon, kaze de problemo, provu la Foliumilan alsutilon anstatau.'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif funkcioj ne disponeblas, administranto malvalidigu EXIF-uzon'; +$lang['Hide'] = "Kasita"; +$lang['Photo Properties'] = 'Fotaj ecoj'; +$lang['Photo name'] = 'Foto-nomo'; +$lang['Name'] = 'Nomo'; +$lang['Description'] = 'Priskribo'; +$lang['Parent album'] = 'Patra fotaro'; +$lang['Album name'] = 'Fotara nomo'; +$lang['Create'] = 'Krei'; +$lang['ACCESS_0'] = "Libera atingo"; +$lang['ACCESS_1'] = "Atingo por ciuj"; +$lang['ACCESS_2'] = "Atingo por registritaj uzantoj"; +$lang['ACCESS_3'] = "Atingo por administrantoj"; +$lang['ACCESS_4'] = "Atingo por retestroj"; +$lang['ACCESS_5'] = "Neniu atingo"; +$lang['Level 0'] = "---"; +$lang['Level 1'] = 'Kontaktoj'; +$lang['Level 2'] = "Amikoj"; +$lang['Level 4'] = "Familio"; +$lang['Level 8'] = 'Administrantoj'; + + +$lang['%d association'] = '%d asocio'; +$lang['%d associations'] = '%d asocioj'; +$lang['%d day'] = '%d tago'; +$lang['%d days'] = '%d tagoj'; +$lang['%d group'] = '%d grupo'; +$lang['%d groups'] = '%d grupoj'; +$lang['%d hour'] = '%d horo'; +$lang['%d hours'] = '%d horoj'; +$lang['(this tag will be deleted)'] = '(tiu etikedo estos forigita)'; +$lang['%d week'] = '%d semajno'; +$lang['%d weeks'] = '%d semajnoj'; +$lang['%d year'] = '%d jaro'; +$lang['%d years'] = '%d jaroj'; +$lang['%s ago'] = '%s antaŭe'; +$lang['%s in the future'] = '%s venonte'; +$lang['%d line filtered'] = '%d filtrita linio'; +$lang['%d lines filtered'] = '%d filtritaj linioj'; +$lang['%d of %d photos selected'] = '%d fotoj el %d elektiĝis'; +$lang['%d parameter was updated.'] = '%d parametro ĝisdatiĝis.'; +$lang['%d parameters were updated.'] = '%d parametroj ĝisdatiĝis.'; +$lang['%d physical'] = '%d fizika'; +$lang['%d physicals'] = '%d fizikaj'; +$lang['%d photos were deleted'] = '%d foto forigitaj'; +$lang['%d second'] = '%d sekundo'; +$lang['%d seconds'] = '%d sekundoj'; +$lang['%d tag'] = '%d etikedo'; +$lang['%d tags'] = '%d etikedoj'; +$lang['%d user'] = '%d uzanto'; +$lang['%d user comment rejected'] = '%d komento de la uzanto malakceptita'; +$lang['%d user comment validated'] = '%d komento de la uzanto validigita'; +$lang['%d user comments rejected'] = '%d komentoj de la uzanto malakceptitaj'; +$lang['%d user comments validated'] = '%d komentoj de la uzanto validigitaj'; +$lang['%d user deleted'] = '%d uzanto forigita'; +$lang['%d user was not updated.'] = '%d uzanto ne ĝisdatigita.'; +$lang['%d user was updated.'] = '%d uzanto ĝisdatigita.'; +$lang['%d users'] = '%d uzantoj'; +$lang['%d users deleted'] = '%d uzantoj forigitaj'; +$lang['%d users were not updated.'] = '%d uzantoj ne ĝisdatigitaj.'; +$lang['%d users were updated.'] = '%d uzantoj ĝisdatigitaj.'; +$lang['%d mail was sent.'] = '%d retmesaĝo sendiĝis.'; +$lang['%d mails were not sent.'] = '%d retmesaĝoj ne sendiĝis.'; +$lang['%d mails were sent.'] = '%d retmesaĝoj sendiĝis.'; +$lang['%d member'] = '%d membro'; +$lang['%d members'] = '%d membroj'; +$lang['%d minute'] = '%d minuto'; +$lang['%d minutes'] = '%d minutoj'; +$lang['%d month'] = '%d monato'; +$lang['%d months'] = '%d monatoj'; +$lang['%d photo was deleted'] = '%d foto forigita'; +$lang['%d album moved'] = '%d albumo moviĝis'; +$lang['%d albums moved'] = '%d albumoj moviĝis'; +$lang['%d albums including'] = '%d albumoj inkluzive'; +$lang['%d album including'] = '%d albumo inkluzive'; +$lang[' and %d virtual'] = 'kaj %d virtuala'; +$lang[' and %d virtuals'] = 'kaj %d virtualaj'; +$lang['%d anomalies have been detected corrected.'] = '%d nenormalaĵoj troviĝis kaj korektiĝis.'; +$lang['%d anomalies have been detected.'] = '%d nenormalaĵoj troviĝis.'; +$lang['%d anomalies have been ignored.'] = '%d nenormalaĵoj ignoriĝis.'; +$lang['%d anomalies have not been corrected.'] = 'Ne eblis korektiĝi %d nenormalaĵojn.'; +$lang['%d anomaly has been corrected.'] = '%d nenormalaĵo korektiĝis.'; +$lang['%d anomaly has been detected.'] = '%d nenormalaĵo troviĝis.'; +$lang['%d anomaly has been ignored.'] = '%d nenormalaĵo ignoriĝis.'; +$lang['%d anomaly has not been corrected.'] = 'Ne eblis korektiĝi %d nenormalaĵon.'; +$lang['%d mail was not sent.'] = '%d retmesaĝo ne sendiĝis.'; +$lang['%d guests'] = '%d vizitantoj'; +$lang['%d guest'] = '%d vizitanto'; +$lang['user "%s" added'] = 'uzanto "%s" aldonita'; +$lang['user_status_admin'] = 'Administranto'; +$lang['user_status_generic'] = 'Komuna'; +$lang['user_status_guest'] = 'Gasto'; +$lang['user_status_normal'] = 'Uzanto'; +$lang['user_status_webmaster'] = 'Retestro'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'vizitantoj bezonas ensaluti kaj havas la taŭgajn permesojn por vidi tiun fotaron'; +$lang['width must be a number superior to'] = 'larĝeco devas esti nombro pli granda ol'; +$lang['wrong filename'] = 'maltaŭga dosieronomo'; +$lang['Ignore this update'] = 'Malatentu tiun ĝisdatigon'; +$lang['Image Quality'] = 'Bilda kvalito'; +$lang['Inactive Languages'] = 'Malaktivaj lingvoj'; +$lang['Inactive Plugins'] = 'Malaktivaj krom-programoj'; +$lang['Inactive Themes'] = 'Malavtivaj temoj'; +$lang['Informations'] = 'Informo'; +$lang['Install'] = 'Instali'; +$lang['Hello,'] = 'Saluton,'; +$lang['Help Me'] = 'Helpu min'; +$lang['History'] = 'Historio'; +$lang['Hour'] = 'Horo'; +$lang['Group'] = 'Grupo'; +$lang['Group name'] = 'Grup-nomo'; +$lang['Groups'] = 'Grupoj'; +$lang['Groups and users'] = 'Grupoj kaj uzantoj'; +$lang['Guest Settings'] = 'Agordoj por gastoj'; +$lang['Guest cannot be deleted'] = 'Gasto ne ĝisdatigeblas'; +$lang['Guests'] = 'Gastoj'; +$lang['Hello'] = 'Saluton'; +$lang['Go to'] = 'Iri al'; +$lang['Forbidden'] = 'Malpermesitaj'; +$lang['Error when sending email to %s [%s].'] = 'Eraro dum sendado de retmesaĝo al %s [%s].'; +$lang['Everybody'] = 'Ĉiuj'; +$lang['Failed to write file to disk'] = 'Malsukcesis skribi la dosieron sur la diskon'; +$lang['File'] = 'Dosiero'; +$lang['Forbid this language to users'] = 'Malpermesi tiun lingvon al uzantoj'; +$lang['ERROR'] = 'ERARO'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERARO: TIU KROM-PROGRAMO MANKAS SED ĜI INSTALIĜIS! MALINSTALU ĜIN SENPROKRASTE.'; +$lang['Edit album'] = 'Redakti fotaron'; +$lang['Edit album permissions'] = 'Redakti fotarajn permesojn'; +$lang['Edit photo'] = 'Modifi foton'; +$lang['Edit photo information'] = 'Redakti fotan informon'; +$lang['Edit ranks'] = 'Redakti rangojn'; +$lang['Edit selected tags'] = 'Redakti elektitajn etikedojn'; +$lang['Edit tags'] = 'Redakti etikedojn'; +$lang['Element'] = 'Eroj'; +$lang['Element type'] = 'Tipo de ero'; +$lang['Email administrators when a comment is deleted'] = 'Sendu retmesaĝon al la administrantoj kiam komento estis forigita'; +$lang['Email administrators when a comment is modified'] = 'Sendu retmesaĝon al la administrantoj kiam komento estis modifiita'; +$lang['Email admins when a comment requires validation'] = 'Sendu retmesaĝon al la administrantoj kiam komento bezonas validigo'; +$lang['Email admins when a new user registers'] = 'Sendu retmesaĝon al la administrantoj kiam nova uzanto registras'; +$lang['Email admins when a valid comment is entered'] = 'Sendu retmesaĝon al la administrantoj kiam valida komento entajpiĝas'; +$lang['Environment'] = 'Ĉirkaŭaĵo'; +$lang['Error list'] = 'Listo de eraroj'; +$lang['Download,'] = 'Elŝuti,'; +$lang['Downloads'] = 'Elŝutadoj'; +$lang['Drag to re-order'] = 'Ŝovmetu por reorganizi'; +$lang['Drop into album'] = 'Elekti albumon'; +$lang['Delete orphan tags'] = 'Forigi orfajn etikedojn'; +$lang['Delete selected photos'] = 'Forigi elektitajn fotojn'; +$lang['Delete selected tags'] = 'Forigi elektitajn etikedojn'; +$lang['Delete selected users'] = 'Forigi elektitajn uzantojn'; +$lang['Delete this language'] = 'Forigi tiun lingvon'; +$lang['Delete this theme'] = 'Forigi tiun temon'; +$lang['Deletions'] = 'Forigadoj'; +$lang['Detailed informations'] = 'Detalaj informoj'; +$lang['Directory'] = 'Dosierujo'; +$lang['Directory does not exist'] = 'La dosierujo ne ekzistas'; +$lang['Crop'] = 'Stuci'; +$lang['Current name'] = 'Kurenta nomo'; +$lang['Database'] = 'Datenbazo'; +$lang['Date'] = 'Dato'; +$lang['Day'] = 'Tago'; +$lang['Deactivate'] = 'Malŝalti'; +$lang['Deactivate all'] = 'Malŝalti ĉiuj'; +$lang['Default display'] = 'Apriora vido'; +$lang['Default user cannot be deleted'] = 'Apriora uzanto ne forigeblas'; +$lang['Default user does not exist'] = 'La apriora uzanto ne ekzistas'; +$lang['Delete Representant'] = 'Forigi fotaran miniaturon'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Korektita malnormalaĵo ne plu malatentiĝos'; +$lang['Correction applied with success'] = 'Korektado sukcese plenumiĝis'; +$lang['Correction applied with error'] = 'Korektado fuŝe plenumiĝis'; +$lang['Correction'] = 'Korektado'; +$lang['Add a criteria'] = 'Aldoni regulon'; +$lang['Associated'] = 'Asociita'; +$lang['Associate to album'] = 'Asocii kun fotaro'; +$lang['Add Photos'] = 'Aldoni fotojn'; +$lang['Add a filter'] = 'Aldoni filtrilon'; +$lang['Add a tag'] = 'Aldoni etikedon'; +$lang['Add a user'] = 'Aldoni uzanton'; +$lang['Add a virtual album'] = 'Aldoni virtualan fotaron'; +$lang['Add detailed content'] = 'Aldoni detalan enhavon'; +$lang['Add group'] = 'Aldoni grupon'; +$lang['A new version of Piwigo is available.'] = 'Nova versio de Piwigo disponeblas.'; +$lang['Activate Navigation Bar'] = 'Aktivigi navigan breton'; +$lang['Activate'] = 'Aktivigi'; +$lang['Actions'] = 'Agoj'; +$lang['Action'] = 'Ago'; +$lang[', click on'] = ', musklaku sur'; +$lang['%d waiting for validation'] = '%d atendanta validigon'; +$lang['Lock gallery'] = 'Ŝlosi galerion'; +$lang['Gallery unlocked'] = 'Malŝlosita galerio'; +$lang['Gallery title'] = 'Galeria titolo'; +$lang['The gallery URL is not valid.'] = 'La galeria retadreso ne validas.'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader signifas Piwigo Uploader. De via komputilo, pLoader preparas viajn fotojn kaj transigas ilin al via photogalerio en Piwigo.'; +$lang['With blank value, gallery title will be used'] = 'Se malplenas, la galeria titolo uziĝos'; +$lang['Visit Gallery'] = 'Vizitu la galerion'; +$lang['There is no group in this gallery.'] = 'Ne estas grupo en tiu galerio'; +$lang['Unlock gallery'] = 'Malŝlosi galerion'; +$lang['View in gallery'] = 'Vidi en galerio'; +$lang['A locked gallery is only visible to administrators'] = 'Ŝlosita galerio nur videblas al la administrantoj'; +$lang['Activate icon "%s"'] = 'Aktivigi la bildsimbolon "%s"'; +$lang['Activate icon "new" next to albums and pictures'] = 'Vidigi la bildsimbolon "nova" apud la albumoj kaj la fotoj'; +$lang['Active Plugins'] = 'Aktivaj kromprogramoj'; +$lang['Active Languages'] = 'Aktivaj lingvojn'; +$lang['Add tags'] = 'Aldoni etikedojn'; +$lang['Active Themes'] = 'Aktivaj temoj'; +$lang['%s photos have been regenerated'] = '%s fotoj regeneriĝis'; +$lang['%s photos can not be regenerated'] = '%s fotoj ne regeneriĝeblas'; +$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s estu agordita je "false" en via dosiero local/config/config.inc.php'; +$lang['%s has been successfully updated.'] = '%s sukcese ĝisdatiĝis'; +$lang['Add New Theme'] = 'Aldoni novan temon'; +$lang['Add New Language'] = 'Aldoni novan lingvon'; +$lang['Add'] = 'Aldoni'; +$lang['Activate comments'] = 'Aktivigi komentojn'; +$lang['Hoverbox display'] = 'Vido dum musumo'; +$lang['Display options'] = 'Vidigaj opcioj'; +$lang['Include display of recent photos grouped by dates'] = 'Ankaŭ vidigu freŝajn fotojn grupitajn laŭ datoj'; +$lang['No display'] = 'Neniu vido'; +$lang['display'] = 'Vido'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'Vidigi kiel eble plej da informoj (aldonitaj fotaroj kaj fotoj, forigitaj fotaroj kaj fotoj) '; +$lang['Update to Piwigo %s'] = 'Ĝisdatigi al Piwigo %s'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Restu en rilato kun la projekto Piwigo, aliĝu al la reta bulteno de Piwigo. Retmesaĝoj sendiĝos al vi kiam nova eldono disponeblos (foje enhavanta sekurecocimo-reparon gravan kaj ĝisdatigendan) kaj kiam okazos eventoj gravaj por la projekto. Nur kelkaj retmesaĝoj jare.'; +$lang['An error has occured during upgrade.'] = 'Eraro okazis dum la plibonigado.'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Kontrolserĉo de plibonigoj malsukcesis sen konataj kialoj.'; +$lang['Languages which need upgrade'] = 'Lingvoj bezonantaj plibonigojn'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Ĉu vi certe deziras instali tiun plibonigon? Vi devas kontroli, ĉu la kurenta versio ne bezonas antaŭan malinstaligon.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Vi povas rekte ĝisdatigi al Piwigo %s, sen uzi na Piwigo %s (rekomendita).'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne povas kolekti la plibonigan dosieron el la servilo'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Konsilindas plibonigi la sistemon por komplete profiti de la aplikaĵo, alie la aplikaĵo eble ne funkcios aŭ nur malkorekte.'; +$lang['Check for updates'] = 'Kontrolserĉi ĝisdatigojn'; +$lang['Choose an action'] = 'Elekti agon'; +$lang['Choose an option'] = 'Elekti opcio'; +$lang['Classic display'] = 'Klasika vido'; +$lang['Check for upgrade'] = 'Kontrolserĉi plibonigojn'; +$lang['Plugins which need upgrade'] = 'Kromprogramoj bezonantaj plibonigojn'; +$lang['Some upgrades are available for extensions.'] = 'Plibonigoj disponeblas por etendaĵoj.'; +$lang['Unable to check for upgrade.'] = 'Maleblas kontrolserĉi plibonigojn.'; +$lang['Themes which need upgrade'] = 'Temoj bezonantaj plibonigojn'; +$lang['Check all'] = 'Kontroli ĉion'; +$lang['Change Admin Colors'] = 'Ŝanĝi la administrajn kolorojn'; +$lang['Can\'t read or extract archive.'] = 'Arĥivo ne legeblas aŭ eltireblas.'; +$lang['Can\'t download archive.'] = 'Arĥivo ne elŝuteblas.'; +$lang['Cannot delete the old permalink !'] = 'La malnova konstanta ligilo ne forigeblas!'; +$lang['Cancel'] = 'Nuligi'; +$lang['Album updated successfully'] = 'Fotaro sukcese ĝisdatigita'; +$lang['Activate Navigation Thumbnails'] = 'Aktivigi navigajn miniaturojn'; +$lang['Added by %s'] = 'Aldonita de %s'; +$lang['Add/delete a permalink'] = 'Aldoni/forigi konstantan ligilon'; +$lang['Locked'] = 'Ŝlositaj'; +$lang['Last send'] = 'Lasta sendo'; +$lang['Last revisions'] = 'Lastaj revizioj'; +$lang['Mail sent to %s [%s].'] = 'Retmesaĝo sendita al %s [%s]'; +$lang['Link all album photos to a new album'] = 'Ligi ĉiujn fotarojn al la nova'; +$lang['Link all album photos to some existing albums'] = 'Ligi ĉiujn fotarojn al la jam ekzistantaj'; +$lang['Linked albums'] = 'Ligitaj fotaroj'; +$lang['List'] = 'Listo'; +$lang['Local'] = 'Loka'; +$lang['Lock'] = 'Ŝlosi'; +$lang['Lock albums'] = 'Ŝlosi fotarojn'; +$lang['Mail address is obligatory for all users'] = 'Retadreso devigas por ĉiu uzanto'; +$lang['Mail content'] = 'Mesaĝa enhavo'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkluzivigi historidatumojn (Atentu! La limo de la servila memoro eble transpasiĝos)'; +$lang['Information data registered in database'] = 'Informo registriĝis en datumbazon'; +$lang['Install on your computer,'] = 'Instali sur la komputilon'; +$lang['Installed Languages'] = 'Instalitaj lingvoj'; +$lang['Installed Themes'] = 'Instalitaj temoj'; +$lang['Instructions to use Piwigo'] = 'Instrukcioj por uzi na Piwigo'; +$lang['Invert'] = 'Inversigi'; +$lang['Language has been successfully installed'] = 'La lingvo sukcese instaliĝis.'; +$lang['Languages'] = 'Lingvoj'; +$lang['Last hit'] = 'Lasta trafo'; +$lang['Last import'] = 'Lasta importo'; +$lang['Landscape'] = 'Horizontala'; +$lang['Hit'] = 'Trafo'; +$lang['Ignore All'] = 'Malatenti ĉion'; +$lang['Ignore selected anomalies'] = 'Malatenti selektitajn nenormalojn'; +$lang['Image id'] = 'Bilda nomo'; +$lang['Images manual order was saved'] = 'Permana bild-ordo konserviĝis'; +$lang['Go to %s or %s for more informations'] = 'Iri al %s aŭ %s por pliaj informoj'; +$lang['Grant selected groups'] = 'Doni atingon al la selektitaj groupoj'; +$lang['Grant selected users'] = 'Doni atingon al la selektitaj uzantoj'; +$lang['Graphics Library'] = 'Grafika biblioteko'; +$lang['High definition'] = 'Alta distingivo'; +$lang['High definition enabled'] = 'Alta distingivo ŝaltita'; +$lang['Group management'] = 'Grupomastrumado'; +$lang['General statistics'] = 'Ĝeneralaj statistikoj'; +$lang['Forbid this theme to users'] = 'Malpermesi tiun temon al uzantoj'; +$lang['Form'] = 'Respondilo'; +$lang['Apply watermark if height is bigger than'] = 'Apliki filigranon se la alto superas'; +$lang['Height'] = 'Alto'; +$lang['Maximum height'] = 'Maksimuma alto'; +$lang['Minimum height'] = 'Minimuma alto'; +$lang['The original maximum height must be a number between %d and %d'] = 'La originala maksimuma alto estu nombro inter %d and %d'; +$lang['height must be a number superior to'] = 'Alto estu nombro super'; +$lang['Configuration'] = 'Agordo'; +$lang['Confirm merge'] = 'Konfirmu la kunfandon'; +$lang['Continue processing treatment'] = 'Pludaŭrigi okazantan traktadon'; +$lang['I decide to update anyway'] = 'Mi decidas ĉiel ĝisdatigi'; +$lang['IP'] = 'IP'; +$lang['Administration Home'] = 'Administra hejmo'; +$lang['remove author'] = 'Forigi aŭtoron'; +$lang['remove tags'] = 'Forigi etikedojn'; +$lang['remove this filter'] = 'Forigi tiun filtrilon'; +$lang['remove title'] = 'Forigi titolon'; +$lang['show details'] = 'Montri detalojn'; +$lang['the wiki'] = 'la vikio'; +$lang['top left corner'] = 'supra maldekstra angulo'; +$lang['top right corner'] = 'supra dekstra angulo'; +$lang['total time'] = 'tuta tempo'; +$lang['unknown'] = 'nekonata'; +$lang['the forum'] = 'la forumo'; +$lang['Duplicates'] = 'Duobloj'; +$lang['Error on file "%s" : %s'] = 'Eraro en dosiero "%s": %s'; +$lang['Errors caption'] = 'Klarigetoj de la eraroj'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'La plenumtempo transpasita, la traktado pludaŭru [taksita tempo: %d sekundo].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'La plenumtempo transpasita, la traktado pludaŭru [taksita tempo: %d sekundoj].'; +$lang['Extend for templates'] = 'Etendi ŝablonojn'; +$lang['Extensions Update'] = 'Ĝisdatigo de kromaĵoj'; +$lang['FTP + Synchronization'] = 'FTP + sinkronigo'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Eblecoj inkluzivas foliumadon de galerio, kreadon de fotaroj kaj alŝutadon de fotoj.'; +$lang['File upload stopped by extension'] = 'La dosieran alŝuton finis kromaĵo'; +$lang['File/directory read error'] = 'Eraro je la legado de dosier(uj)o'; +$lang['Find a new representant by random'] = 'Hazarde trovi novan fotaran miniaturon'; +$lang['Follow Orientation'] = 'Sekvi orientiĝon'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'La jenaj kromprogramoj eble ne kongruos kun la nova versio de Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'La jenaj temoj eble ne kongruos kun la nova versio de Piwigo:'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Por la grandecoj de stucitaj fotoj, kiel "kvadrato", Piwigo klopodos por ĉeestigi la interescentron.'; +$lang['GD library is missing'] = 'La biblioteko GD mankas'; +$lang['GD version'] = 'GD versio'; +$lang['Generate multiple size images'] = 'Generi multoblajn grandecojn de bildoj'; +$lang['Get Support on Piwigo Forum'] = 'Obteni helpon ĉe la forumo de Piwigo'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Anstataŭigado de originalaj ŝablonoj per tajloritaj ŝablonoj el la subdosierujo por ŝablonaj etendaĵoj'; +$lang['All extensions are up to date.'] = 'Ĉiuj kromaĵoj estas ĝisdataj.'; +$lang['All languages are up to date.'] = 'Ĉiuj lingvoj estas ĝisdataj.'; +$lang['All plugins are up to date.'] = 'Ĉiuj kromaprogramoj estas ĝisdataj.'; +$lang['All themes are up to date.'] = 'Ĉiuj temoj estas ĝisdataj.'; +$lang['Album "%s" now contains %d photos'] = 'Fotaro "%s" nun enhavas %d fotojn'; +$lang['Album "%s" has been added'] = 'Fotaro "%s" aldoniĝis'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom estas fota programaro desegnita por administri grandajn kvantojn de ciferecaj bildoj kaj post-trakti ilin.'; +$lang['Add write access to the "%s" directory'] = 'Aldonu skribaliron al la dosierujo "%s"'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'La aplikaĵo Piwigo por iOS ebligas vin konektiĝi al via galerio Piwigo, por krei fotarojn kaj elŝuti plurajn fotojn unufoje el via iPhone, iPas aŭ iPod Touch.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'La aplikaĵo Piwigo por Android ebligas vin konektiĝi al via galerio Piwigo, por krei fotarojn kaj elŝuti plurajn fotojn unufoje el via telefono aŭ tabuleto Android.'; +$lang['Advanced features'] = 'Specialaj funkcioj'; +$lang['Access type'] = 'Tipo de atingo'; +$lang['Allow user customization'] = 'Permesi al uzantoj tajloradon'; +$lang['Allow user registration'] = 'Permesi al uzantoj registriĝi'; +$lang['Allow users to edit their own comments'] = 'Permesi al uzantoj redakti iliajn proprajn komentojn'; +$lang['Authorized'] = 'Permesita'; +$lang['Authorize users to add comments on selected albums'] = 'Permesi al uzantoj aldoni komentojn sur selektitaj fotaroj'; +$lang['Average rate'] = 'Meza takso'; +$lang['Available versions for'] = 'Disponeblaj versioj por'; +$lang['Available only with HTML format'] = 'Nur disponebla HTML-formate'; +$lang['Available on'] = 'Disponebla ĉe'; +$lang['Applications'] = 'Aplikaĵoj'; +$lang['Apply action'] = 'Apliki agon'; +$lang['Apply selected corrections'] = 'Apliki selektitajn korektojn'; +$lang['Apply to sub-albums'] = 'Apliki al subfotaroj'; +$lang['All optimizations have been successfully completed.'] = 'Ĉiuj optimumigoj sucese plenumiĝis.'; +$lang['Albums authorized thanks to group associations'] = 'Fotaroj rajtigitaj dank\' al grupaparteno'; +$lang['Album photos associated to the following albums: %s'] = 'La fotoj de l\' fotaro asociiĝis al la jenaj fotaroj: %s'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u uzantoj aŭtomate havas permeson ĉar ili apartenas al permeshava grupo'; +$lang['%s value is not correct file because exif are not supported'] = 'La valoro de %s maltaŭgas ĉar "exif" ne akceptiĝas'; +$lang['Albums automatically sorted'] = 'Fotaroj aŭtomate ordigitaj'; +$lang['Anomaly'] = 'Nenormalo'; +$lang['Allow rating'] = 'Permesi pritakson'; +$lang['Allow users to delete their own comments'] = 'Permesi al uzantoj forigi iliajn proprajn komentojn'; +$lang['Album manual order was saved'] = 'La permana fotara ordo konserviĝis'; +$lang['Album list management'] = 'Administrado de la fotara listo'; +$lang['Check automatic corrections'] = 'Ŝalti la aŭtomatajn korektojn'; +$lang['Comments for all'] = 'Komentoj al ĉiuj'; +$lang['Discover album:'] = 'Malkovru la fotaron:'; +$lang['Deleted on'] = 'Forigi ĉe'; +$lang['Create this site'] = 'Krei tiun retejon'; +$lang['Can\'t connect to server.'] = 'Konekto al la servilo ne disponeblas.'; +$lang['Can\'t create temporary file.'] = 'Ne eblas krei provizoran dosieron.'; +$lang['Caddie management'] = 'Administrado de la korbo'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo apriore kreos novan retan grandon el la tredistingiva versio de via foto.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'La interesa punkto apriore lokiĝas ĉe la mezo de la foto.'; +$lang['Automatic sort order'] = 'Aŭtomata ordiga ordo'; +$lang['Center of interest'] = 'Interesa punkto'; +$lang['Are you sure you want to install this plugin?'] = 'Ĉu vi certe deziras instali tiun kromaĵon?'; +$lang['Batch Manager'] = 'Stapla administrilo'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ĉirkaŭa maksimuma distingivo: %dM bilderoj (t.e. %dx%d bilderoj).'; +$lang['Apply watermark if width is bigger than'] = 'Apliki la filigranon se la larĝeco estas pli ol'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture estas desegnita por profesiaj fotistoj kun la simpleco de iPhoto.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture estas potenca ilo por rafini bildojn kaj administri larĝegajn bibliotekojn ĉe komputiloj Mac.'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Nur retestroj povas vidi tiun langeton, ne administrantoj.'; +$lang['An information email was sent to group "%s"'] = 'Informa retmesaĝo sendiĝis al la grupo "%s"'; +$lang['An error occured during extraction (%s).'] = 'Eraro okazi dum la eltirado de dosieroj (%s).'; +$lang['By rank'] = 'Laŭ rango'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Eraro okazis dum eltirado. Bonvolu kontroli la dosieropermesojn de via instalo de Piwigo.
    Musklaku ĉi tie por vidi la erarprotokolo.'; +$lang['Are you sure you want to delete this plugin?'] = 'Ĉu vi certe deziras forigi tiun kromaĵon?'; +$lang['Bound Theme'] = 'Ligita temo'; +$lang['By %s'] = 'Per %s'; +$lang['Automatic correction'] = 'Aŭtomata korekto'; +$lang['Main Page'] = 'Ĉefa paĝo'; +$lang['Maintenance'] = 'Funkciteno'; +$lang['Manage'] = 'Administri'; +$lang['Manage Permissions'] = 'Administri la permesojn'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Krei la "%s" dosierujon ĉe la radiko de via Piwigo-instalo'; +$lang['Delete multiple size images'] = 'Forigi la multoblan grandecon de fotoj'; +$lang['Documentation'] = 'Dokumentaro'; +$lang['Does not represent'] = 'Ne estas miniaturo por'; +$lang['Dump Database'] = 'Ŝuti la datumbazon'; +$lang['Duplicate'] = 'Duobligi'; +$lang['Duplicate selected tags'] = 'Duobligi la selektitajn etikedojn'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Doni skribaliron (chmod777) al la "%s" dosierujo ĉe la radiko de via Piwigo-instalo'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se neniu tredistingiva versio disponeblas kaj se la kuranta retgrandeco plias ol la ĉisubaj grandecoj, Piwigo konsideros ĝin kiel tredistingiva versio kaj kreos la novan retgrandecon de ĝi.'; +$lang['If you encounter problems or have any question, please send a message to'] = 'En kazo de problemoj aŭ demandoj, bonvolu sendi mesaĝon al'; +$lang['Do you want to activate anyway?'] = 'Ĉu vi tamen volas aktivigi ĝin?'; +$lang['Dissociated'] = 'Malligita'; +$lang['Dissociate from album'] = 'Malligi de la fotaro'; +$lang['Deny selected users'] = 'Rifuzi la selektitajn uzantojn'; +$lang['Deny selected groups'] = 'Rifuzi la selektitajn grupojn'; +$lang['Permission granted'] = 'Atingo permesita'; +$lang['Permission denied'] = 'Atingo malpermesita'; +$lang['Default photos order'] = 'Apriora ordo de fotoj'; +$lang['Default comments order'] = 'Apriora ordo de komentoj'; +$lang['Database synchronization with files'] = 'Sinkronigo de la datumbazo kun la dosieroj'; +$lang['Complementary mail content'] = 'Komplementa enhavo de retmesaĝo'; +$lang['Check integrity'] = 'Kontrolo pri integreco'; +$lang['Manage photos'] = 'Administri la fotojn'; +$lang['Manage tags'] = 'Administri la etikedojn'; +$lang['Manage the members'] = 'Administri la membrojn'; +$lang['Impossible automatic correction'] = 'Neeblas aŭtomata korektado'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Neeblis malaktivigi tiun temon, ĉar la patra temo mankas: %s.'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Neeblas malaktivigi tiun lingvon, unue elektu alian aprioran lingvon.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Neeblas malaktivigi tiun lingvon, nepras almenaŭ unu lingvo.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Neeblas malaktivigi tiun temon, nepras almenaŭ unu temo.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Neeblas forigi tiun temon, ĉar aliaj temoj dependas de ĝi: %s.'; +$lang['Modify information'] = 'Modifi informon'; +$lang['Month'] = 'Monato'; +$lang['Move'] = 'Movi'; +$lang['Move albums'] = 'Movi fotarojn'; +$lang['Move to album'] = 'Movi al fotaro'; +$lang['Name of the duplicate'] = 'Nomo de la duoblo'; +$lang['New Version'] = 'Nova Versio'; +$lang['New name'] = 'Nova nomo'; +$lang['New parent album'] = 'Nova patra fotaro'; +$lang['New photos added'] = 'Novaj fotoj aldonitaj'; +$lang['New photos were added'] = 'Novaj fotoj aldoniĝis'; +$lang['New tag'] = 'Nova etikedo'; +$lang['No file was uploaded'] = 'Neniu dosiero alŝutiĝis'; +$lang['No group selected, no action possible.'] = 'Neniu grupo estis selektita, neniu ago eblas.'; +$lang['No mail to send.'] = 'Neniu mesaĝo sendenda.'; +$lang['No members to manage'] = 'Neniu membro administrenda '; +$lang['Maximum width'] = 'Maksimuma larĝo'; +$lang['Members'] = 'Membroj'; +$lang['Menu Management'] = 'Menuoj'; +$lang['Merge selected groups'] = 'Kunfandi la selektitajn grupojn'; +$lang['Merge selected tags'] = 'Kunfandi la selektitajn etikedojn'; +$lang['Merge tags'] = 'Kunfandi etikedojn'; +$lang['No photo can be deleted'] = 'Eblas forigi neniun foton '; +$lang['No photo in this album'] = 'Neniu foto en tiu fotaro'; +$lang['No photo selected, no action possible.'] = 'Sen foto selektita, neniu ago eblas.'; +$lang['No results'] = 'Neniu rezulto'; +$lang['No user to send notifications by mail.'] = 'Neniun uzanton oni sciigos retmesaĝe.'; +$lang['None'] = 'Nenio'; +$lang['Not cropped correctly?'] = 'Ĉu la foto ne estis taŭge stucita?'; +$lang['Multiple Size'] = 'Multopla grandeco'; +$lang['Number of albums per page'] = 'Nombro da fotaroj ĉe ĉiu paĝo'; +$lang['Number of comments per page'] = 'Nombro da komentoj ĉe ĉiu paĝo'; +$lang['Number of downloads'] = 'Nombro da elŝutadoj'; +$lang['Number of thumbnails to create'] = 'Nombro da miniaturoj kreendaj'; +$lang['Opacity'] = 'Opakeco'; +$lang['Permissions'] = 'Permisiloj'; +$lang['Photo Page'] = 'Fotopaĝo'; +$lang['Photo informations updated'] = 'Fotoinformoj ĝisdatiĝis'; +$lang['Photos'] = 'Fotoj'; +$lang['Piwigo Administration'] = 'Administro de Piwigo'; +$lang['Piwigo Update'] = 'Ĝisdatiĝo de Piwigo'; +$lang['Permalinks'] = 'Konstantaj ligiloj'; +$lang['Permalink history'] = 'Historio pri la konstantaj ligiloj'; +$lang['Permalink %s is already used by album %s'] = 'La konstantan ligilon %s jam uzas la fotaro %s'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'La konstantan ligilon %s antaŭe uzis la fotaro %s. Unue forigu ĝin de la historio pri konstantaj ligiloj.'; +$lang['Numeric identifier : %d'] = 'Nombra identigilo: %d'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Ĉe via Linux, simple instalu na Shotwell kun via pako-administrilo kaj poste aktivigu la publikigan opcion de Piwigo.'; +$lang['Operating system'] = 'Operaciumo'; +$lang['Operation in progress'] = 'Prilaboro fariĝas'; +$lang['Obsolete Plugins'] = 'Malaktualaj kromprogramoj'; +$lang['Number of rates'] = 'Nombro da takso'; +$lang['Rate'] = 'Takso'; +$lang['Rated %d times, score : %.2f'] = 'Taskita %d fojoj, poetaro: %.2f'; +$lang['Sum of rates'] = 'Sumo da takso'; +$lang['Rate date'] = 'Taksdato'; +$lang['No photo selected, %d photos in current set'] = 'Neniu foto selektita, %d fotoj en la kuranta aro'; +$lang['No photo in the current set.'] = 'Neniu foto en la kuranta aro'; +$lang['No group is permitted to see this private album'] = 'Neniu grupo rajtas vidi tiun privatan fotaron'; +$lang['No order field selected'] = 'Neniu ordokampo selektiĝis'; +$lang['No destination tag selected'] = 'Neniu celetikedo selektiĝis'; +$lang['Options'] = 'Opcioj'; +$lang['Original Size'] = 'Originala grandeco'; +$lang['Original file : %s'] = 'Originala dosiero: %s'; +$lang['Original templates'] = 'Originalaj ŝablonoj'; +$lang['Remove all filters'] = 'Forigi ĉiujn filtrilojn'; +$lang['Remove from caddie'] = 'Fortiri de la ĉareto'; +$lang['Rename'] = 'Renomi'; +$lang['Repair and optimize database'] = 'Repari kaj optimumigi la datumbazon'; +$lang['Replacers (customized templates)'] = 'Anstataŭigoj (tajloritaj ŝablonoj)'; +$lang['Representant'] = 'Fotara Miniaturo'; +$lang['Representation of albums'] = 'Fotara miniaturo'; +$lang['Representative'] = 'Fotara miniaturo'; +$lang['Represents'] = 'Estas miniaturo por'; +$lang['Please wait...'] = 'Bonvolu atendi...'; +$lang['Plugin has been successfully copied'] = 'La kromaĵo sukcese kopiiĝis'; +$lang['Plugin list'] = 'Kromaĵolisto'; +$lang['Plugins'] = 'Kromaĵoj'; +$lang['Portrait'] = 'Portreto'; +$lang['Position'] = 'Pozicio'; +$lang['Posted %s on %s'] = 'Afiŝitaj %s je la %s'; +$lang['Predefined filter'] = 'Antaŭdifinita filtrilo'; +$lang['Preferences'] = 'Preferoj'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'La tempo por prepari la liston de uzantoj, al kiuj retmesaĝo estos sendita, limiĝas. Aliaj uzantoj ne ĉeestas la liston.'; +$lang['Privacy level'] = 'Privateca nivelo'; +$lang['Privacy level set to "%s"'] = 'Privateca nivelo agordita je "%s"'; +$lang['Private'] = 'Privata'; +$lang['Properties'] = 'Propreco'; +$lang['Public'] = 'Publika'; +$lang['Public / Private'] = 'Publika / Privata'; +$lang['Send'] = 'Sendi'; +$lang['Send mail as'] = 'Sendi mesaĝon kiel'; +$lang['Send mail on HTML format'] = 'Sendi la mesaĝon laŭ HTML-formato'; +$lang['Send mail to users'] = 'Sendi mesaĝo al uzantoj'; +$lang['Set author'] = 'Defini aŭtoron'; +$lang['Show menubar'] = 'Montri la menuzonon'; +$lang['Simulation'] = 'Simulado'; +$lang['Site manager'] = 'Retejadministrilo'; +$lang['Some themes and plugins may be not available yet.'] = 'Kelkaj temoj kaj kromaĵoj eble ne jam disponeblas'; +$lang['Source tag'] = 'Fonta etikedo'; +$lang['Start pLoader and add your photos.'] = 'Komenci pLoader kaj aldoni viajn fotojn.'; +$lang['Statistics'] = 'Statistiko'; +$lang['Status'] = 'Stato'; +$lang['Status of user "%s" updated'] = 'Stato de la uzanto "%s" ĝisdatiĝis'; +$lang['Storage album'] = 'Memorfotaro'; +$lang['Subscribe'] = 'Aboni'; +$lang['Subscribe %s'] = 'Abonigi %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonigi %s al la novaĵoletero de Piwigo'; +$lang['Subscribe to notification by mail'] = 'Aboni al retaj atentigoj'; +$lang['Subscribe/unsubscribe users'] = 'Abonigi/malabonigi uzantojn'; +$lang['Subscribed'] = 'Abonita'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Eblas atentigi la abonantojn nur se ekzistas novaj elementoj atentigindaj.'; +$lang['Summary'] = 'Resumo'; +$lang['Support'] = 'Subteno'; +$lang['User status'] = 'Stato de la uzanto'; +$lang['Users'] = 'Uzantoj'; +$lang['Validate'] = 'Validigi'; +$lang['Validation'] = 'Validigo'; +$lang['Version'] = 'Versio'; +$lang['Virtual Links'] = 'Virtualaj ligiloj'; +$lang['Virtual album'] = 'Virtuala fotaro'; +$lang['Virtual album added'] = 'Virtuala fotaro aldoniĝis'; +$lang['Virtual album deleted'] = 'Virtuala fotaro forigita'; +$lang['Virtual album name'] = 'Nomo de la virtuala fotaro'; +$lang['Virtual albums to move'] = 'Virtualaj albumoj movendaj'; +$lang['Visit Piwigo project website'] = 'Viziti la retejon de la projekto Piwigo'; +$lang['Visit language site'] = 'Vizitu la lingvan retejon'; +$lang['Visit plugin site'] = 'Vizitu la kromaĵan retejon'; +$lang['Visit theme site'] = 'Vizitu la teman retejon'; +$lang['Visited %d times'] = 'Vizitita %d fojojn'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATENTU! Tiu kromaĵo ŝajne ne kongruas kun tiu versio de Piwigo.'; +$lang['Waiting'] = 'Pritraktota'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Atentu: je ekabono kaj malabono sendiĝos retmesaĝoj al la uzantoj'; +$lang['Watermark'] = 'Filigrano'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'La retestro abonigis vin al la retaj atentigoj.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'La retestro malabonigis vin de la retaj atentigoj.'; +$lang['Title'] = 'Titolo'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Por eksporti viajn fotojn de digiKam al Piwigo, simple instalu na digiKam kaj la Kipi-kromaĵojn.'; +$lang['To send ?'] = 'Ĉu sendi?'; +$lang['To subscribe'] = 'Por aboni'; +$lang['To unsubscribe'] = 'Por malaboni'; +$lang['Tools'] = 'Iloj'; +$lang['Two updates are available'] = 'Du ĝisdatigoj disponeblas'; +$lang['Type here the author name'] = 'Entajpu la aŭtoran nomon ĉitien'; +$lang['Type here the name of the new group'] = 'Entajpu la nomon de la nova grupo ĉitien'; +$lang['Type here the title'] = 'Entajpu la titolon ĉitien'; +$lang['Type in a search term'] = 'Entajpu serĉoterminon'; +$lang['Unable to dump database.'] = 'Ne eblas ŝuti la datumbazon.'; +$lang['Uncheck all'] = 'Malselekti ĉiujn'; +$lang['Uninstall'] = 'Malinstali'; +$lang['Uninstalled Plugins'] = 'Malinstalitaj kromprogramoj'; +$lang['Unknown upload error'] = 'Nekonata alŝuteraro'; +$lang['Unlocked'] = 'Malŝlosita'; +$lang['Unsubscribe from notification by mail'] = 'Malaboni de retaj atentigoj'; +$lang['Unsubscribed'] = 'Malabonita'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'La nomo de dosieroj kaj dosierujoj nur enhavu literojn, nombrojn, "-", "_" aŭ "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'La nombro da komentoj sur ĉiu paĝo estu inter 5 kaj 50.'; +$lang['The original image quality must be a number between %d and %d'] = 'La originala bilda kvalito estu nombro inter %d kaj %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'La originala maksimuma larĝeco estu nombro inter %d kaj %d'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'La bildaj dimensioj malpligrandiĝos al %dx%d rastrumeroj.'; +$lang['The uploaded file was only partially uploaded'] = 'La alŝutita dosiero nur parte alŝutiĝis'; +$lang['The whole page'] = 'La tuta paĝo'; +$lang['The whole set'] = 'La tuta aro'; +$lang['Theme has been successfully installed'] = 'La temo sukcese instaliĝis'; +$lang['Themes'] = 'Temoj'; +$lang['There is no available subscribers to mail.'] = 'Ne estas abonantoj atentigindaj rete.'; +$lang['There is no other language available.'] = 'Ne estas alia lingvo disponebla.'; +$lang['There is no other plugin available.'] = 'Ne estas alia kromaĵo disponebla.'; +$lang['Select at least one comment'] = 'Selektu almenaŭ unu komenton'; +$lang['Select at least one photo'] = 'Selektu almenaŭ unu foton'; +$lang['Select at least one user'] = 'Selektu almenaŭ unu uzanton'; +$lang['Select at least two tags for merging'] = 'Selektu almenaŭ du etikedojn por kunfando'; +$lang['Select groups...'] = 'Selektu grupojn...'; +$lang['Select recipients'] = 'Selektu la ricevantojn'; +$lang['Select the destination tag'] = 'Selektu la destinetikedon'; +$lang['Select users...'] = 'Selekti uzantojn'; +$lang['Select:'] = 'Selekti:'; +$lang['Selection'] = 'Selekto'; +$lang['Send an information email to group members'] = 'Sendi informan retmesaĝon al grupaj membroj'; +$lang['Send connection settings by email'] = 'Sendi agordojn rete'; +$lang['Set as default language for unregistered and new users'] = 'Agordi kiel apriora lingvo por neregistritaj kaj novaj uzantoj'; +$lang['Set as default theme for unregistered and new users'] = 'Agordi kiel apriora temo por neregistritaj kaj novaj uzantoj'; +$lang['Set creation date'] = 'Agordi kreadodaton'; +$lang['Set title'] = 'Agordi titolon'; +$lang['Settings'] = 'Agordojn'; +$lang['Sharpen'] = 'Pliakrigi'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = '"Shotwell" estas malfermitkoda fotoorganizilo funkcianta ĉe Linux. Estas la apriora fotoadministrilo ĉe Ubuntu kaj Fedora.'; +$lang['Show info'] = 'Montri informaĵon'; +$lang['There is no other theme available.'] = 'Ne estas alia disponebla temo.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Tiu fotaro enhavas %d fotojn, aldonitajn inter la %s kaj la %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Tiu fotaro enhavas %d fotojn, aldonitajn je la %s.'; +$lang['This album contains no photo.'] = 'Tiu fotaro enhavas neniun foton.'; +$lang['This group will be set to default'] = 'Tiu grupo uziĝos apriore'; +$lang['This group will be unset to default'] = 'Tiu grupo ne plu uziĝos apriore'; +$lang['This is a major update, with new exciting features.'] = 'Tiu estas grava ĝisdatigo, kun amaso da novaj trajtoj.'; +$lang['This is a minor update, with only bug corrections.'] = 'Tiu estas malgrava ĝisdatigo, kun nur cimoriparoj.'; +$lang['This name is already used by another group.'] = 'La nomon jam uzas alia grupo'; +$lang['This site already exists'] = 'Tiu retejo jam ekzistas'; +$lang['This theme was not designed to be directly activated'] = 'Tiu temo ne desegniĝis por rekte aktiviĝi'; +$lang['Thumbnail'] = 'Miniaturo'; +$lang['Thumbnails generation in progress...'] = 'Generado de miniaturoj farata...'; +$lang['Time'] = 'Tempo'; +$lang['User %s [%s] added.'] = 'Uzanto %s [%s] aldoniĝis.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Uzanto %s [%s] aldoniĝis al la abonlisto.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Uzanto %s [%s] ne aldoniĝis al la abonlisto.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Uzanto %s [%s] ne foriĝis de la abonlisto.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Uzanto %s [%s] foriĝis de la abonlisto.'; +$lang['User comments validation'] = 'Validigo de la komentoj de la uzanto'; +$lang['User list'] = 'Listo de uzantoj'; +$lang['Web Form'] = 'Retformularo'; +$lang['Webmaster cannot be deleted'] = 'Ne eblas forigi retejestron'; +$lang['Webmaster status is required.'] = 'Nepras retejestra stato'; +$lang['Week starts on'] = 'Semajno komenciĝas je la'; +$lang['Who can see these photos?'] = 'Kiu povas vidi tiujn fotojn?'; +$lang['Who can see this photo?'] = 'Kiu povas vidi tiun foton?'; +$lang['Width'] = 'Larĝo'; +$lang['With no album'] = 'Sen fotaro'; +$lang['With no tag'] = 'Sen etikedo'; +$lang['With no virtual album'] = 'Sen virtuala albumo'; +$lang['X Position'] = 'Pozicio X'; +$lang['X Repeat'] = 'Ripeto X'; +$lang['Y Position'] = 'Pozicio Y'; +$lang['created'] = 'kreita'; +$lang['custom'] = 'Tajlori'; +$lang['default'] = 'apriore'; +$lang['default values'] = 'aprioraj valoroj'; +$lang['delete'] = 'forigi'; +$lang['delete album'] = 'forigi la fotaron'; +$lang['delete photo'] = 'forigi la foton'; +$lang['deleted'] = 'forigita'; +$lang['directories + files'] = 'dosierujoj + dosieroj'; +$lang['dissociate from group'] = 'malkunigi el la grupo'; +$lang['administrators'] = 'administrantoj'; +$lang['albums added in the database'] = 'fotaroj aldonitaj al la datumbazo'; +$lang['albums deleted in the database'] = 'fotaroj forigitaj de la datumbazo'; +$lang['all'] = 'ĉio'; +$lang['an error happened'] = 'eraro okazis'; +$lang['and'] = 'kaj'; +$lang['any visitor can see this album'] = 'iu ajn vizitanto povas vidi tiun fotaron'; +$lang['apply automatic sort order'] = 'apliki aŭtomata ordiga ordo'; +$lang['associate to group'] = 'asocii al la grupo'; +$lang['automatic order'] = 'aŭtomata ordo'; +$lang['average time'] = 'meza tempo'; +$lang['between'] = 'inter'; +$lang['between %.2f and %.2f'] = 'inter %.2f kaj %.2f'; +$lang['between %d and %d pixels'] = 'inter %d kaj %d rastrumeroj'; +$lang['bottom left corner'] = 'malsupra maldekstra angulo'; +$lang['bottom right corner'] = 'malsupra dekstra angulo'; +$lang['cancel manual order'] = 'nuligi la permanan ordon'; +$lang['clean'] = 'purigi'; +$lang['confirm'] = 'Konfirmi'; +$lang['create a new site'] = 'Krei novan retejon'; +$lang['jump to photo'] = 'iri al la foto'; +$lang['leave'] = 'lasi'; +$lang['manage album photos'] = 'Administri fotarajn fotojn'; +$lang['manage sub-albums'] = 'Administri sub-fotarojn'; +$lang['manual order'] = 'permana ordo'; +$lang['middle'] = 'mezo'; +$lang['modified'] = 'modifita'; +$lang['new'] = 'nova'; +$lang['no write access'] = 'neniu skribaliro'; +$lang['none'] = 'neniu'; +$lang['nothing'] = 'nenio'; +$lang['number of miniaturized photos'] = 'nombro da miniaturoj kreitaj'; +$lang['on'] = 'je la'; +$lang['on the %d selected photos'] = 'sur la %d selektitaj fotoj'; +$lang['only directories'] = 'nur dosierujoj'; +$lang['only perform a simulation (no change in database will be made)'] = 'nur simuladi (nenio ŝanĝiĝos en la datumbazo)'; +$lang['other'] = 'alia'; +$lang['overrides existing values with empty ones'] = 'viŝskribi ekzistantajn valorojn de malplenaj'; +$lang['pending validation'] = 'pritaktata kontrolo'; +$lang['photos added in the database'] = 'fotoj aldonitaj al la datumbazo'; +$lang['photos candidates for metadata synchronization'] = 'fotoj elektitaj por metadatumsinkronigado'; +$lang['photos deleted from the database'] = 'fotoj forigitaj de la datumbazo'; +$lang['photos informations synchronized with files metadata'] = 'fotoinformoj sinkronigitaj kun la dosiermetadatumoj'; +$lang['photos per page'] = 'fotoj sur ĉiu paĝo'; +$lang['photos updated in the database'] = 'fotoj ĝisdatigitaj en la datumbazo'; +$lang['pixels'] = 'rastrumeroj'; +$lang['private'] = 'privata'; +$lang['public'] = 'publika'; +$lang['randomly represented'] = 'hazarda fotara miniaturo'; +$lang['ranks'] = 'rangoj'; +$lang['registered users'] = 'registritaj uzantoj'; +$lang['registration date'] = 'registrodato'; +$lang['remove creation date'] = 'forigi la kreodaton'; +$lang['selection'] = 'selekto'; +$lang['set to'] = 'agordi kiel'; +$lang['simple visitors'] = 'simplaj vizitantoj'; +$lang['singly represented'] = 'fiksita fotara miniaturo'; +$lang['status'] = 'stato'; +$lang['sub-albums'] = 'subfotaroj'; +$lang['synchronize files metadata with database photos informations'] = 'sinkronigi la datumbazajn fotojn kun dosiermetadatumoj'; +$lang['synchronize files structure with database'] = 'sinkronigi la dosierstrukturon kun la datumbazo'; +$lang['test this remote site'] = 'testi tiun foran retejon'; +$lang['unit mode'] = 'unuopa modo'; +$lang['unset'] = 'malŝalti'; +$lang['update the database from files'] = 'ĝisdatigi la datumbazon kun dosieroj'; +$lang['test'] = 'testo'; +$lang['target'] = 'celo'; +$lang['Main "guest" user does not exist'] = 'La ĉefa "invitita" uzanto ne ekzistas'; +$lang['Main "guest" user status is incorrect'] = 'La stato de la ĉefa "invitita" uzanto ne validas'; +$lang['Main "webmaster" user does not exist'] = 'La ĉefa "retestra" uzanto ne ekzistas'; +$lang['Main "webmaster" user status is incorrect'] = 'La stato de la ĉefa "retestra" uzanto ne validas'; +$lang['Make this language available to users'] = 'Igi tiun lingvon disponeblan al uzantoj'; +$lang['Make this theme available to users'] = 'Igi tiun temon disponeblan al uzantoj'; +$lang['Manage authorizations for selected albums'] = 'Administri la rajtigojn por la selektitaj fotaroj'; +$lang['Manage permissions for group "%s"'] = 'Administri la permesojn por la grupo "%s"'; +$lang['Manage permissions for user "%s"'] = 'Administri la permesojn por la uzanto "%s"'; +$lang['Manage photo ranks'] = 'Ordiga ordo de la fotoj'; +$lang['Manage this set of %d photos'] = 'Administri tiun aron de %d fotoj'; +$lang['Manual order'] = 'Permana ordo'; +$lang['Minimum width'] = 'Minimuma larĝeco'; +$lang['Miscellaneous'] = 'Diversaĵa'; +$lang['Metadata synchronization results'] = 'Rezultoj de la sinkronigo de metadatumoj'; +$lang['Metadata synchronized from file'] = 'Metadatumoj sinkronigitaj el la dosiero'; +$lang['Minimum privacy level'] = 'Minimuma privateconivelo'; +$lang['Missing Plugins'] = 'Mankantaj Kromaĵoj'; +$lang['Missing a temporary folder'] = 'Mankas provizora dosierujo'; +$lang['Notify administrators when a comment is'] = 'Sciigi la administrantojn kiam komento estas'; +$lang['Only private albums are listed'] = 'Nur privataj fotaroj listiĝas'; +$lang['Optimizations have been completed with some errors.'] = 'La finitaj optimumigoj enhavas erarojn.'; +$lang['Optional URL keyword'] = 'Opcia URL-ŝlosilvorto'; +$lang['Order of menubar items has been updated successfully.'] = 'Ordo de la menubreteroj sukcese ĝisdatiĝis.'; +$lang['Orphan tags deleted'] = 'Orfaj etikedoj forigitaj'; +$lang['Other plugins'] = 'Aliaj kromprogramoj disponeblaj'; +$lang['Other private albums'] = 'Aliaj privataj fotaroj'; +$lang['Overall'] = 'Superrigardo'; +$lang['Page banner'] = 'Paĝa rubando'; +$lang['Page end'] = 'Paĝofino'; +$lang['Pages seen'] = 'Paĝoj viditaj'; +$lang['Panorama'] = 'Panoramo'; +$lang['Parameter'] = 'Agordoj'; +$lang['Parameters'] = 'Parametroj'; +$lang['Path'] = 'Vojo'; +$lang['Pending Comments'] = 'Pritraktataj komentoj'; +$lang['Permalink'] = 'Konstanta ligilo'; +$lang['Piwigo Uploader'] = 'Alŝutilo de Piwigo'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Mankas konfirmado de pasvorto. Bonvolu konfirmi la elektitan pasvorton.'; +$lang['Password is missing. Please enter the password.'] = 'Mankas pasvorto. Bonvolu redakti la pasvorton.'; +$lang['Permission granted for groups'] = 'Atingo permesita por grupoj'; +$lang['Permission granted for users'] = 'Atingo permesita por uzantoj'; +$lang['Permission granted thanks to a group'] = 'Atingo permesita dank\' al grupo'; +$lang['Permission management'] = 'Administrado de permesoj'; +$lang['Photo sizes with crop'] = 'Fotograndeco kun stuco'; +$lang['Photo unreachable or no support'] = 'Neatingebla foto aŭ neakceptita formato'; +$lang['Photos generation in progress...'] = 'Generado de fotoj okazanta...'; +$lang['Piwigo Announcements Newsletter'] = 'Novaĵoletero de Piwigo'; +$lang['Piwigo Publish plugin for Lightroom'] = 'publikigokromaĵo de Piwigo por Lightroom'; +$lang['Piwigo configuration'] = 'Agordo de Piwigo'; +$lang['Piwigo export plugin for Aperture'] = 'eksportokromaĵo por Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'eksportokromaĵo por iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo por Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo por iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'publikigokromaĵo de Piwigo por Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'publikigokromaĵo de Piwigo por digiKam'; +$lang['Piwigo version'] = 'versio de Piwigo'; +$lang['Please select at least two groups'] = 'Bonvolu selekti almenaŭ du grupoj'; +$lang['Purge compiled templates'] = 'Viŝi la kompilitajn ŝablonojn'; +$lang['Purge history detail'] = 'Viŝi la historiodetalojn'; +$lang['Purge history summary'] = 'Viŝi la historioresumon'; +$lang['Purge never used notification feeds'] = 'Viŝi la neuzitajn sciigofluojn'; +$lang['Purge search history'] = 'Viŝi la serĉohistorion'; +$lang['Purge sessions'] = 'Viŝi seancojn'; +$lang['Purge user cache'] = 'Viŝi '; +$lang['Random photo'] = 'Hazarda foto'; +$lang['Rating'] = 'Pritakso'; +$lang['Ratio'] = 'Rilatumo'; +$lang['Read Piwigo Documentation'] = 'Legi dokumentaron pri Piwigo'; +$lang['Refresh'] = 'Aktualigi'; +$lang['Refresh photo set'] = 'Aktualigi la fotoloton'; +$lang['Resize'] = 'Ŝanĝi la grandecon'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Ŝanĝo de grandecon malŝaltita pro uzo de GD kiel grafika biblioteko'; +$lang['Resize after upload'] = 'Ŝanĝi la grandecon post alŝuto'; +$lang['Reinitialize check integrity'] = 'Repravalorizi la integrecokontrolojn'; +$lang['Save Template Directory'] = 'Konservi la ŝablonodosierujon'; +$lang['Save Settings'] = 'Konservi agordojn'; +$lang['Restore'] = 'Restaŭri'; +$lang['Remote'] = 'Fora'; +$lang['Released on'] = 'Eldonita je la'; +$lang['Quick Local Synchronization'] = 'Rapida loka sinkronigado'; +$lang['Rating by guests'] = 'Pritakso de la vizitantoj'; +$lang['Reject'] = 'Malakcepti'; +$lang['Save order'] = 'Konservi ordon'; +$lang['Save manual order'] = 'Konservi permanan ordon'; +$lang['You cannot move an album in its own sub album'] = 'Vi ne povas movi fotaron en ĝian propran subfotaron'; +$lang['Synchronize'] = 'Sinkronigi'; +$lang['Synchronize metadata'] = 'Sinkronigi metadatumojn'; +$lang['Tag "%s" already exists'] = 'La etikedo "%s" jam ekzistas'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'La etikedo "%s" nun estas la duoblo de "%s"'; +$lang['Tag "%s" was added'] = 'La etikedo "%s" aldoniĝis'; +$lang['Tag selection'] = 'Etikedoselekto'; +$lang['Templates'] = 'Ŝablonoj'; +$lang['Basic settings'] = 'Bazaj agordoj'; +$lang['General'] = 'Ĝenerala'; +$lang['Mail theme'] = 'Temo de la retmesaĝoj'; +$lang['Save to permalink history'] = 'Konservi en la historio de konstantaj ligiloj'; +$lang['Save visits in history for'] = 'Konservi la vizitojn en la historio por'; +$lang['Search for new images in the directories'] = 'Serĉi novajn bildojn en la dosierujoj'; +$lang['Searching...'] = 'Serĉanta...'; +$lang['Section'] = 'Sekcio'; +$lang['See you soon,'] = 'Ĝis baldaŭ,'; +$lang['See you soon.'] = 'Ĝis baldaŭ.'; +$lang['Select a file'] = 'Selekti dosieron'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selekti zonon per muso por difini la novan ĉefpunkton.'; +$lang['Select at least one album'] = 'Selekti almenaŭ unu fotaron'; +$lang['Select at least one tag'] = 'Selekti almenaŭ unu etikedon'; +$lang['Switch to clear or dark colors for administration'] = 'Ŝalti al helaj aŭ malhelaj koloroj por administro'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TIU KROMPROGRAMO NUN APARTENAS AL LA KERNO DE PIWIGO! MALINSTALIGU ĜIN NUN!'; +$lang['Tags %s merged into tag %s'] = 'La etikedoj %s kunfandiĝis en etikedon %s'; +$lang['Templates configuration has been recorded.'] = 'La ŝablonoj registriĝis'; +$lang['The %d following tags were deleted'] = 'La jenaj %d etikedoj foriĝis'; +$lang['The following tag was deleted'] = 'La jena etikedo foriĝis'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'La grupnomo ne enhavu " or " aŭ ne malplenu.'; +$lang['The name of an album must not be empty'] = 'La fotaronomo ne malplenu'; +$lang['You have %d orphan tags: %s.'] = 'Vi havas %d ofajn etikedojn: %s'; +$lang['Update albums informations'] = 'Ĝisdatigi fotarajn informojn'; +$lang['Update photos information'] = 'Ĝisdatigi fotajn informojn'; +$lang['Year'] = 'Jaro'; +$lang['You are running the latest version of Piwigo.'] = 'Vi uzas la plej novan version de Piwigo.'; +$lang['You cannot delete your account'] = 'Vi ne povas forigi vian konton'; +$lang['Update in progress... Please wait.'] = 'Ĝisdatigo okazanta... Bonvolu atendi.'; +$lang['Updates'] = 'Ĝisdatigoj'; +$lang['Upload'] = 'Elŝuti'; +$lang['Uploaded Photos'] = 'Elŝutitaj fotoj'; +$lang['Used metadata'] = 'Metadatumoj uzitaj'; +$lang['User'] = 'Uzanto'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Bonvolu kontroli la permesojn de la "kromprogramoj"-dosierujoj kaj subdosierujoj (CHMOD).'; +$lang['Reset ignored updates'] = 'Rekomencigi la preteratentitajn ĝisdatigojn'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaŭri aprioran agordon. Vi perdos viajn kromaĵajn agordojn!'; +$lang['The anomaly will be ignored until next application version'] = 'La anomalio estos malatentita ĝis la venonta aplikaĵoversio'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'La ĉefpunkto estas la plej signifoplena fotozono. '; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'La dosiero aŭ dosierujo ne atingeblas (ĉu pro neekzisto, ĉu pro rifuzita atingo)'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'La nomo de la konstanta ligilo enhavu signojn a-z, A-Z, 0-9, "-", "_", aŭ "/". Ĝi ne estu nur numera nek komenciĝu de nombro sekvata de "-"'; +$lang['Update All'] = 'Ĝisdatigi ĉion'; +$lang['Update Complete'] = 'Ĝisdatigo finiĝis'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'La eksportokromaĵo de Piwigo permesas al vi krei fotarojn kaj eksporti fotojn.'; +$lang['Toggle \'default group\' property'] = 'Inversigi la econ \'apriora grupo\''; +$lang['Your configuration settings are saved'] = 'Viaj agordoj konserviĝis'; +$lang['Zoom'] = 'Zomo'; +$lang['[%s] Visit album %s'] = '[%s] Viziti fotaron %s'; +$lang['[NBM] Problems or questions'] = '[NBM] Problemoj aŭ demandoj'; +$lang['add a new watermark'] = 'aldoni novan filigranon'; +$lang['add new photos to caddie'] = 'aldoni novajn fotojn al la korbo'; +$lang['User "%s" created with "%s" like password'] = 'Uzanto "%s" kreiĝis kun "%s" kiel pasvorto'; +$lang['You can activate only one mobile theme.'] = 'Vi povas aktivigi nur unu porteblan temon.'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Vi abonis la retmesaĝan atentigon'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Vi malabonis la retmesaĝan atentigon'; +$lang['You might go to plugin list to install and activate it.'] = 'Iru al la listo de kromprogramoj por instali kaj aktivigi ĝin.'; +$lang['You need to confirm deletion'] = 'Vi devas konfirmi la forigon'; +$lang['delete this site and all its attached elements'] = 'forigi tiun retejon kaj ĉiujn koncernatajn informojn'; +$lang['errors during synchronization'] = 'eraroj dum la sinkronigado'; +$lang['even already synchronized photos'] = 'eĉ jam sinkronigitaj fotoj'; +$lang['existing album'] = 'ekzistanta fotaro'; +$lang['first photo added on %s'] = 'unua foto aldonita je la %s'; +$lang['Last visit on %s, %s.'] = 'Lasta vizito je la %s, %s.'; +$lang['Registered on %s, %s.'] = 'Registrita je la %s, %s.'; +$lang['Update user'] = 'Ĝisdatiĝi uzanton'; +$lang['User %s added'] = 'Uzanto %s aldoniĝis'; +$lang['User %s updated'] = 'Uzanto %s ĝisdatiĝis'; +$lang['Users modified'] = 'Uzantoj modifitaj'; +$lang['added'] = 'aldonitaj'; +$lang['%d of %d users selected'] = '%d el %d uzantoj selektitaj'; +$lang['(filtered from %s total users)'] = '(filtrita el %s totalaj uzantoj)'; +$lang['All %d users are selected'] = 'Ĉiuj %d uzantoj selektiĝis'; +$lang['Change password'] = 'Ŝanĝi pasvorton'; +$lang['Change username'] = 'Ŝanĝi salutnomon'; +$lang['Loading...'] = 'Ŝutante...'; +$lang['No matching user found'] = 'Neniu kongruanta uzanto troviĝis'; +$lang['No user selected of %d users'] = 'Neniu uzanto selektita el %d uzantoj'; +$lang['No user selected, no action possible.'] = 'Sen uzanto selektita, neniu ago eblas.'; +$lang['Password updated'] = 'Pasvorto ĝisdatiĝis'; +$lang['Show %s users'] = 'Montri %s uzantojn'; +$lang['Showing %s to %s of %s users'] = 'Montrante %s ĝis %s el %s uzantoj'; +$lang['guest'] = 'gasto'; +$lang['hide details'] = 'kaŝi detalojn'; +$lang['high'] = 'alta'; +$lang['include child albums'] = 'inkluzivi la idajn fotarojn'; +$lang['include photos with lower privacy level'] = 'inkluzivi fotojn kun malalta privateconivelo'; +$lang['jump to album'] = 'iri al fotaro'; +$lang['on the %d selected users'] = 'sur la %d selektitaj uzantoj'; +$lang['reduce to single existing albums'] = 'trakti nur unu ekzistantan fotaron '; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'La grandon de la alŝutita dosiero transpasas la valoron de MAX_FILE_SIZE precizigita en la HTML-a formularo'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'La grandon de la alŝutita dosiero transpasas la valoron de upload_max_filesize en via dosiero php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'La tutan grandon de la alŝutitaj dosieroj transpasas la valoron de post_max_size en via dosiero php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'La versio de %s [%s] instalita ne kongruas kun la necesa versio [%s]'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'La tempo por sendi mesaĝon estas limigita. Aliaj retmesaĝoj estis preterpasitaj.'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Uzi la aprioran fotan ordigan ordon (difinita en la agorda dosiero)'; +$lang['You are running on development sources, no check possible.'] = 'Vi estas uzanta la disvolviĝajn fontojn, ne eblas kontroli la lastan version.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Vi ne povas difini aprioran fotoordon ĉar estas tajlorita agordo en via loka agordaro.'; +$lang['for the file format'] = 'por la dosieroformato'; +$lang['for this file format'] = 'por tiu dosieroformato'; +$lang['global mode'] = 'malloka reĝimo'; +$lang['group "%s" added'] = 'grupo "%s" aldoniĝis'; +$lang['group "%s" deleted'] = 'grupo "%s" foriĝis'; +$lang['group "%s" updated'] = 'grupo "%s" ĝisdatiĝis'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'En via dosiero php.ini, la grandeco upload_max_filesize (%sB) estas pli granda ol post_max_size (%sB), vi devus modifi tiun agordon'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery Android) estas malfermitkoda kliento (GPL v3) por Piwigo sur Android.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'La publikiga kromaĵo de Piwigo por Lightroom permesas al vi eksporti kaj sinkronigi viajn fotojn de Lightroom al via Piwigo-galerio.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Vi precizigis $conf[\'order_by\'] en via loka agordodosiero, tiu parametro ne plu validas, bonvolu forigi ĝin aŭ renomi ĝin al $conf[\'order_by_custom\']!'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam estas ĉiesaĵo por altnivela administrado de ciferecaj fotoj por Linux, Windows kaj MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam estas kreita por la fotantoj kaj fotistoj dezirantaj vidi, administri, redakti, plibonigi, organizi, etikedi kaj kunhavigi siajn fotojn.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto estas la apriora fotoadministrilo ĉe MacOSX. La eksportokromaĵo de Piwigo lasas vin krei novajn fotarojn kaj eksporti viajn fotojn rekte de iPhoto ak via Piwigo-galerio.'; +$lang['close'] = 'fermi'; +$lang['Close user details'] = 'Fermi la detalojn de la uzanto'; +$lang['Open user details'] = 'Malfermi la detalojn de la uzanto'; +?> \ No newline at end of file diff --git a/sources/language/eo_EO/common.lang.php b/sources/language/eo_EO/common.lang.php new file mode 100644 index 0000000..0ad82b8 --- /dev/null +++ b/sources/language/eo_EO/common.lang.php @@ -0,0 +1,423 @@ + \ No newline at end of file diff --git a/sources/language/eo_EO/eo_EO.jpg b/sources/language/eo_EO/eo_EO.jpg new file mode 100644 index 0000000..b38d261 Binary files /dev/null and b/sources/language/eo_EO/eo_EO.jpg differ diff --git a/sources/language/eo_EO/help/cat_modify.html b/sources/language/eo_EO/help/cat_modify.html new file mode 100755 index 0000000..a79a5ad --- /dev/null +++ b/sources/language/eo_EO/help/cat_modify.html @@ -0,0 +1,132 @@ +

    Redakti fotaron

    + +

    Informoj

    + +
      + +
    • nomo: renomi la fotaron (virtuala renomo kaze + de fizika fotaro).
    • + +
    • priskribo: mallonga teksto montranta ĝeneralan ideon de la enhavo, + tiu teksto vidiĝos malsupre de la miniaturopaĝo.
    • + +
    + +

    Movado

    + +

    Se la fotaro estas virtuala, vi povas movi ĝin. Movi fotaron signifas +ŝanĝi ĝian patran fotaron.

    + +

    Opcioj

    + +
      + +
    • Atingotipo: Administrado de permesiloj. Se vi igas + fotaron privatan, ĉiuj idaj fotaroj ĝiaj iĝas privataj. Se vi igas + fotaron publikan, ĉiuj idaj fotaroj ĝiaj iĝas publikaj.
    • + +
    • Ŝlosi: La fotaro kaj ĝiaj subfotaroj estos + provizore malvalidigitaj pro funkciteno.
    • + +
    • Komentoj: Permesi al la uzantoj komenti la fotojn de ĉitiu + fotaro.
    • + +
    + +

    Vi povas ankaŭ mastrumi tiujn opciojn ĉe la +mastrumekrano "Ecoj" (ekranoj Komentoj, Ŝlosi, +Publika/Privata, Reprezentanto disponebla el Administrado » Fotaroj » Ecoj).

    + +

    Ordiga ordo

    + +

    Uzi la aprioran bildan ordigan ordon.

    + +

    Indiki ĉu tiu ordiga ordo will apply to subalbums also.

    + +

    Selekti la specifajn ordigokriteriojn uzendaj kun ĉitiu fotaro.

    +
      +
    • Kreodato: Fotadodato
    • +
    • Afiŝodato: Sinkronigadodato
    • +
    • Meza takso (*): Meza takso ŝanĝus laŭ la taksado de la vizitantoj
    • +
    • Plej vizitita (*): La kuranta vizito eble ŝanĝos la ordo de la plej vizititaj
    • +
    • Dosieronomo: Nomo donita en informokampo
    • +
    • Identigilo: Ena identigilo (freŝaj kategorioj havas pli altan identigilon ol la antaŭaj).
    • + +
    +

    (*)Averto: Certu, ke vi testas tiujn ordigajn ordojn vi mem, ĉar eblas, ke ili montras neatenditajn rezultojn.

    + +

    Reprezentanto

    + +

    La fotaro-reprezentanto estas la miniaturo videbla sur la ĉefpaĝo (category.php) por reprezenti +la fotaton kiam +ĝi enhavas nur sub-fotarojn kaj neniun direktan foton (rekte en la radiko-fotaro).

    +foto de fotaro:

    + +
      + +
    • Foto paĝo: unu el la agobutonoj lasas vin agordi la kurantan foton kiel la reprezentanton por la + vidigita fotaro. Tiu butono disponeblas nur por la administrantoj.
    • + +
    • Modifi informojn pri foto en + administrado. Tiu ekrano atingeblas el picture.phpStapla + administrado en unureĝimo. Vidi la helpon de tiu ekrano por + la detaloj.
    • + +
    • Administrado » Fotaroj » Ecoj, + Reprezentanto. Vidi la helpon de tiu ekrano por la detaloj.
    • + +
    • Redakti fotaron (la nuna ekrano).
    • + +
    + +

    La elekto de reprezentanto dependas de la +allow_random_representative agorda parametro (vidi include/config_default.inc.php).

    + +

    En apriora reĝimo (allow_random_representative ŝaltita al falsa), +ĉiu fotaro enhavanta almenaŭ unu eron estas reprezentita de fiksita +ero. Post la agordo (je la fotara kreado), la reprezentanto ŝanĝiĝas nur +kiam administranto petas tion. Se la reprezentanto ne taŭgas, +vi povas peti por Trovi novan reprezentanton hazarde.

    + +

    Se la allow_random_representative agorda parametro estas ŝaltita +al vera, eblas ke kategorio enhavanta fotojn ne havu fiksitan +reprezentanton. Nur uzu la Forigi reprezentanton butonon.

    + +

    Se la fotaro enhavas nur sub-fotarojn kaj neniu foto, ĝin povas tamen reprezenti iu ajn elemento dank' al Modifi +informojn pri foto ekrano. La nura opcio sur la kuranta ekrano +estas la Forigi reprezentanton butono.

    + +

    Ligi ĉiujn fotarajn fotojn al nova fotaro

    + +
      + +
    • Nomo de virtuala fotaro: Nomo de la nova fotaro kreota, +ĉiuj fotoj de la kuranta kategorio estos ligita al la nova.
    • + +
    • Patra fotaro: Kie la nova fotaro kuŝos, +lasu malplena por krei ĝin ĉe la radiko.
    • + +
    + +

    Ligi ĉiujn fotojn de la fotaro al ekzistantaj fotaroj

    + +
      + +
    • Fotaroj: Elekti la celata fotaro.
    • + +
    + +

    Sendi informan retmesaĝon al la grupanoj

    + +
      + +
    • Grupo: grupo de ricevantoj
    • + +
    • Retmesaĝoenhavo: Libera teksto sendota al ili.
    • + +
    \ No newline at end of file diff --git a/sources/language/eo_EO/help/cat_move.html b/sources/language/eo_EO/help/cat_move.html new file mode 100755 index 0000000..a5b7e13 --- /dev/null +++ b/sources/language/eo_EO/help/cat_move.html @@ -0,0 +1,16 @@ +Dosierenhavo + +

    Movi virtualajn Fotarojn

    + +

    Nur virtualaj fotaroj povas havi novan patran fotaron.

    + +

    Virtualaj fotaroj movendaj

    + +

    Selektu unu aŭ plurajn virtualajn fotarojn, kiujn vi deziras movi. +Se la listo malplenas, tio signifas, ke vi ankoraŭ ne kreis iun.

    + +

    Nova patra fotaro

    + +

    Selektu la novan patran fotaron (virtualan aŭ realan). +Se vi ne selektas iun patran, la virtualaj fotaroj selektitaj moviĝos al la radiko. +Ne eblas movi fotaron enen de ĝi mem aŭ al unu el ĝiaj idoj.

    \ No newline at end of file diff --git a/sources/language/eo_EO/help/cat_options.html b/sources/language/eo_EO/help/cat_options.html new file mode 100755 index 0000000..f3ccd83 --- /dev/null +++ b/sources/language/eo_EO/help/cat_options.html @@ -0,0 +1,22 @@ +

    Fotaraj opcioj

    + +

    Administrado de la opcioj por pluraj fotaroj samtempe.

    + +
    + +
    Komentoj
    +
    Foto povas ricevi komentojn el viaj vizitantoj se ĝi apartenas al fotaro kun aktivigitaj komentoj.
    + +
    Ŝlosado
    +
    Ŝlositaj fotaroj malaktiviĝas dum funkciteno. Nur administrantoj povas vidi ilin en la galerio.
    + +
    Publika / privata
    +
    Post kiam fotaro iĝas privata, rajtigas atingon al uzantoj kaj grupoj
    + +
    Reprezentanto
    +
    Tiu opcio disponeblas, kiam vi ŝaltas la agordilo +allow_random_representative (vidu include/config_defaults.inc.php) al +vera. Ĉiu fotaro povas esti reprezentita de hazarda foto aŭ de selektita foto kiel nura reprezentanto.
    + +
    \ No newline at end of file diff --git a/sources/language/eo_EO/help/cat_perm.html b/sources/language/eo_EO/help/cat_perm.html new file mode 100755 index 0000000..d339be1 --- /dev/null +++ b/sources/language/eo_EO/help/cat_perm.html @@ -0,0 +1,13 @@ +

    Redakti fotaran permesojn

    + +

    Tiu ekrano nur disponeblas por privataj fotaroj. Ĉi tie vi povas selekti +uzantojn kaj grupojn rajtigitajn por fotaro.

    + +

    Grupoj

    + +

    Vi povas rifuzi aŭ doni grupatingon al la kuranta fotaro. Modifante +gruporajtigojn, atingo al la fotaro estos rifuzita aŭ donita al la uzantoj ene de tiuj grupoj.

    + +

    Uzantoj

    + +

    Vi povas rifuzi aŭ doni atingon al individuaj uzantoj. Atingo povas rifuziĝi al uzantoj kun grupatingo per escepto.

    \ No newline at end of file diff --git a/sources/language/eo_EO/help/group_list.html b/sources/language/eo_EO/help/group_list.html new file mode 100755 index 0000000..0530d96 --- /dev/null +++ b/sources/language/eo_EO/help/group_list.html @@ -0,0 +1,22 @@ +

    Listo de grupoj

    + +

    Tio estas la loko kie vi administras la grupojn.

    + +

    Aldoni grupon

    + +

    Administranto povas aldoni grupojn.

    + +

    Listo de grupoj

    + +

    Por ĉiu grupo, la jenaj agoj aplikeblas:

    + + +
      +
    • iri al administrado de uzantoj (Administrado » Uzantoj » Administri)
    • +
    • iri al la ekrano por administri la permesilojn por rajtigi aŭ rifuzi atingon al privataj fotaroj.
    • +
    • forigi la grupon (necesas konfirmo)
    • +
    • baskuligi la statuson al "apriora" (necesas konfirmo)
    • +
    + +

    Aprioraj grupoj

    +

    Aprioraj grupoj estas grupoj aŭtomate asociigitaj al ĉiu nova uzanto dum registrado aŭ kreado de administranto.

    \ No newline at end of file diff --git a/sources/language/eo_EO/help/help_groups.html b/sources/language/eo_EO/help/help_groups.html new file mode 100755 index 0000000..1403e35 --- /dev/null +++ b/sources/language/eo_EO/help/help_groups.html @@ -0,0 +1,11 @@ +

    Grupoj estas oportuna metodo por doni permesojn al listo de uzantoj.

    + +

    Krei grupojn en Administradon » Uzantojn +» Grupojn kaj asocii uzantojn al tiu grupo +en Administrado » Uzantoj » +Administri.

    + +

    Uzanto povas aparteni al pluraj grupoj. Rajtigoj havas prioritaton super +malpermeso: se la uzanto "Joĉjo" apartenas al grupoj "familio" kaj "amikoj", kaj +se nur la grupoj "familio" povas vidi la fotaron "Ferioj 2010", do +"Joĉjo" povos vidi la fotaron "Ferioj 2010".

    \ No newline at end of file diff --git a/sources/language/eo_EO/help/user_list.html b/sources/language/eo_EO/help/user_list.html new file mode 100755 index 0000000..48b4005 --- /dev/null +++ b/sources/language/eo_EO/help/user_list.html @@ -0,0 +1,23 @@ +

    Listo de uzantoj

    + +

    Tie estas, kie vi administras la uzantoj de via Piwigo-galerio.

    + +

    Aldoni uzanton

    + +

    Administranto povas permane aldoni uzantojn. Por ĉiu uzanto, kreu salutnomon, pasvorton kaj sendu validan retadreson.

    + +

    Listo de uzantoj

    + +

    Eblas filtri la liston de ekzistantaj uzantoj laŭ salutnomo (uzu * kiel ĵokeran signon), grupo aŭ stato. Eblas ordigi ĝin laŭ registrodato aŭ salutnomo, en krska aŭ malkreska ordo.

    + +

    Tiu ekrano permesas la administradon de pluraj uzantoj unugrupe, uzante variajn agojn:

    + +
      +
    • forigi uzantojn (necesas konfirmo)
    • +
    • ŝanĝi la staton de la uzanto
    • +
    • asocii al aŭ malasocii el grupoj
    • +
    • modifi vidigecojn
    • +
    • modifi aldonajn preferecojn
    • +
    + +

    Celas la selektitan uzanton (apriore) aŭ ĉiujn uzantojn kiel vidigitajn en la filtrita listo.

    \ No newline at end of file diff --git a/sources/language/eo_EO/install.lang.php b/sources/language/eo_EO/install.lang.php new file mode 100755 index 0000000..7a80237 --- /dev/null +++ b/sources/language/eo_EO/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Ĉu vi bezonas helpon? Starigu demandon ĉe la mesaĝtabulo de Piwigo.'; +$lang['Try to configure PHP 5'] = 'Provu agordi PHP 5'; +$lang['Sorry!'] = 'Pardonu!'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'La vizitantoj povos uzi tiun retadreson por kontakti la retestron'; +$lang['Welcome to my photo gallery'] = 'Bonvenon al mia foto-galerio'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ne kapablis agordi PHP 5.'; +$lang['verification'] = 'kontrolado'; +$lang['Hope to see you back soon.'] = 'Ĝis baldaŭa vizito via.'; +$lang['Start Install'] = 'Komenci la instaladon'; +$lang['Password ']['confirm'] = 'Pasvorto [konfirmu]'; +$lang['PHP 5 is required'] = 'Necesas PHP 5'; +$lang['User'] = 'Uzanto'; +$lang['Download the config file'] = 'Elŝuti la agordan dosieron'; +$lang['Database table prefix'] = 'Prefikso de datumtabeloj'; +$lang['Host'] = 'Gastiga komputilo'; +$lang['Installation'] = 'Instalado'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ne hezitu viziti niajn forumojn por obteni helpon: %s'; +$lang['Default gallery language'] = 'Apriora galeri-lingvo'; +$lang['Database name'] = 'Nomo de datumbazo'; +$lang['Database configuration'] = 'Agordo de datumbazo'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Anstataŭa solvo estas kopii la tekston en la ĉisupra tekstujo kaj alglui ĝin al la dosiero "local/config/database.inc.php" (Averto: nepras ke database.inc.php nur entenu tion, kio ĉeestas en la tekstujo, sen alineo nek spaceto)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'La kreado de local/config/database.inc.php malsukcesis.'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Sukcesis kontektado kun la servilo, sed ne eblis konektado kun la datumbazo'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulon, la instalado de Piwigo plenumiĝis'; +$lang['Can\'t connect to server'] = 'Ne eblas konekti kun la servilo'; +$lang['Basic configuration'] = 'Baza agordo'; +$lang['Admin configuration'] = 'Administra agordo'; +$lang['localhost or other, supplied by your host provider'] = 'loka gasto (localhost) aŭ alia, provizita de via provizanto de gastigo'; +?> \ No newline at end of file diff --git a/sources/language/eo_EO/iso.txt b/sources/language/eo_EO/iso.txt new file mode 100644 index 0000000..aa31b1d --- /dev/null +++ b/sources/language/eo_EO/iso.txt @@ -0,0 +1 @@ +Esperanto [EO] \ No newline at end of file diff --git a/sources/language/eo_EO/upgrade.lang.php b/sources/language/eo_EO/upgrade.lang.php new file mode 100755 index 0000000..4200e8d --- /dev/null +++ b/sources/language/eo_EO/upgrade.lang.php @@ -0,0 +1,40 @@ +release %s (or equivalent).'] = 'Tiu-ĉi paĝo proponas ĝisdatigi la datenbazon de via eksa Piwigo-versio al la nova. La ĝisdatiga asistanto pensas ke vi nun funkciigas versio %s (aŭ simila).'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Plenumu funkcitenan kontrolon en [Administrado>Iloj>Funkciteno] se vi alfrontas problemon.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Nur la miniatura prefikso kaj la retestra retadreso konserviĝis el la antaŭa agordo'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Kiel singardo, la jenaj temoj malaktiviĝis. Kontrolserĉu ĝisdatigojn antaŭ ol reaktivigi ilin:'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Kiel singardo, la jenaj krom-programoj malaktiviĝis. Kontrolserĉu ĝisdatigojn antaŭ ol reaktivigi ilin:'; +$lang['total upgrade time'] = 'kompleta ĝisdatigotempo'; +$lang['total SQL time'] = 'kompleta SQL-tempo'; +$lang['Upgrade from version %s to %s'] = 'Ĝisdatigu de versio %s al %s'; +$lang['Upgrade'] = 'Ĝisdatigi'; +$lang['Statistics'] = 'Statistikoj'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Nur administranto povas lanĉi ĝisdatigadon: bonvolu ensaluti ĉisube.'; +$lang['In %s, before ?>, insert:'] = 'En %s, antaŭ ?>, enmetu:'; +$lang['All sub-albums of private albums become private'] = 'Ĉiuj sub-fotaroj el privataj fotaroj iĝas privataj'; +?> \ No newline at end of file diff --git a/sources/language/es_AR/about.html b/sources/language/es_AR/about.html new file mode 100644 index 0000000..17330be --- /dev/null +++ b/sources/language/es_AR/about.html @@ -0,0 +1,5 @@ +

    Esta galería de fotos está basada en Piwigo.

    + +

    Piwigo es un programa para presentar una galería de fotos en Internet, construído por una comunidad activa de usuarios y desarroladores. Las extensiones hacen que Piwigo sea facilmente personalizable. Y como si esto fuera poco, Piwigo es libre y gratuito.

    + +

    Visitá el sitio web de Piwigo en castellano

    \ No newline at end of file diff --git a/sources/language/es_AR/common.lang.php b/sources/language/es_AR/common.lang.php new file mode 100644 index 0000000..7fc05c7 --- /dev/null +++ b/sources/language/es_AR/common.lang.php @@ -0,0 +1,424 @@ + \ No newline at end of file diff --git a/sources/language/es_AR/es_AR.jpg b/sources/language/es_AR/es_AR.jpg new file mode 100644 index 0000000..c4cb896 Binary files /dev/null and b/sources/language/es_AR/es_AR.jpg differ diff --git a/sources/language/es_AR/index.php b/sources/language/es_AR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/es_AR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/es_AR/iso.txt b/sources/language/es_AR/iso.txt new file mode 100644 index 0000000..a348c4b --- /dev/null +++ b/sources/language/es_AR/iso.txt @@ -0,0 +1 @@ +Argentina [AR] \ No newline at end of file diff --git a/sources/language/es_ES/about.html b/sources/language/es_ES/about.html new file mode 100644 index 0000000..4fb6564 --- /dev/null +++ b/sources/language/es_ES/about.html @@ -0,0 +1,18 @@ +

    Esta galeria fotográfica está basada en Piwigo.

    + +

    Piwigo es un programa de álbumes de fotos web, desarrollado por una comunidad activa de +usuarios y desarrolladores. Las extensiones hacen que Piwigo sea fácilmente personalizable. +Y lo mejor... Piwigo es de código abierto y gratuito.

    + +

    Visita el sitio web de Piwigo

    + +

    La traducción de Piwigo al español está mantenida por: (en orden alfabético) +

    +

    Gracias por vuestra colaboración

    \ No newline at end of file diff --git a/sources/language/es_ES/admin.lang.php b/sources/language/es_ES/admin.lang.php new file mode 100644 index 0000000..10382a7 --- /dev/null +++ b/sources/language/es_ES/admin.lang.php @@ -0,0 +1,976 @@ +Piwigo Newsletter
    '; +$lang['Purge search history'] = 'Purgar el historico de búsquedas'; +$lang['Hide'] = 'Ocultar'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Se sobrepasó el tiempo de ejecución. El procesamiento debe continuar [Tiempo estimado: %d segundos].'; +$lang['Operation in progress'] = 'Operación en progreso.'; +$lang['Please wait...'] = 'Por favor, espere...'; +$lang['Password is missing. Please enter the password.'] = 'Falta la contraseña. Por favor, introdúzcala.'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'La contraseña no ha sido confirmada. Por favor, confirme la contraseña elegida.'; +$lang['Allow users to edit their own comments'] = 'Autorizar a los usuarios a editar sus propios comentarios'; +$lang['Allow users to delete their own comments'] = 'Autorizar a los usuarios a eliminar sus propios comentarios'; +$lang['Email administrators when a comment is modified'] = 'Notificar a los administradores cuando se modifique un comentario'; +$lang['Email administrators when a comment is deleted'] = 'Notificar a los administradores cuando se elimine un comentario'; +$lang['Cannot delete the old permalink !'] = '¡Imposible eliminar este enlace permanente!'; +$lang['Hit'] = 'Acceso'; +$lang['Tools'] = 'Herramientas'; +$lang['Photos'] = 'Fotos'; +$lang['Themes'] = 'Temas'; +$lang['Instructions to use Piwigo'] = 'Instrucciones de uso de Piwigo'; +$lang['Installed Themes'] = 'Gestionar temas'; +$lang['Add New Theme'] = 'Añadir nuevo tema'; +$lang['Forbid this theme to users'] = 'Prohibir este tema a los usuarios'; +$lang['Set as default theme for unregistered and new users'] = 'Establecer como tema predeterminado para visitantes no registrados y para nuevos usuarios'; +$lang['unknown'] = 'desconocido'; +$lang['Upload Photos'] = 'Añadir fotos'; +$lang['Drop into album'] = 'Seleccionar álbum'; +$lang['+ Add an upload box'] = '+ Añadir campo de subida'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Crear el directorio "%s" en la raíz de su instalación Piwigo'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Concede permisos de escritura (chmod 777) al directorio "%s" en la raíz de su instalación Piwigo'; +$lang['existing album'] = 'Álbum existente'; +$lang['create a new album'] = 'Añadir un nuevo álbum'; +$lang['Album name'] = 'Nombre del álbum'; +$lang['Album "%s" has been added'] = 'Se ha añadido el álbum "%s"'; +$lang['Uploaded Photos'] = 'Fotos añadidas'; +$lang['%d photos uploaded'] = '%d fotos añadidas'; +$lang['Privacy level set to "%s"'] = 'Nivel de confidencialidad "%s"'; +$lang['Album "%s" now contains %d photos'] = 'El álbum "%s" ahora contiene %d fotos'; +$lang['Manage this set of %d photos'] = 'Administrar este lote de %d fotos'; +$lang['Select files'] = 'Seleccionar archivos'; +$lang['Everybody'] = 'Todo el mundo'; +$lang['Who can see these photos?'] = 'Compartir'; +$lang['Settings'] = 'Configuración'; +$lang['Resize'] = 'Redimensionar'; +$lang['Maximum width'] = 'Anchura máxima'; +$lang['pixels'] = 'Píxeles'; +$lang['Maximum height'] = 'Altura máxima'; +$lang['Image Quality'] = 'Calidad de la foto'; +$lang['Thumbnail'] = 'Miniatura'; +$lang['Save Settings'] = 'Guardar ajustes'; +$lang['Your configuration settings are saved'] = 'Las modificaciones han sido guardadas correctamente'; +$lang['Active Themes'] = 'Temas activados'; +$lang['Add write access to the "%s" directory'] = 'Permitir escritura en la carpeta "%s"'; +$lang['Administration Home'] = 'Administración'; +$lang['Change Admin Colors'] = 'Intercambiar colores'; +$lang['Delete this theme'] = 'Eliminar este tema'; +$lang['Directory does not exist'] = 'El directorio no existe'; +$lang['Download,'] = 'Descargar,'; +$lang['FTP + Synchronization'] = 'FTP + Sincronización'; +$lang['Get Support on Piwigo Forum'] = 'Obtener soporte en el foro de Piwigo'; +$lang['Help Me'] = 'Ayuda'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Imposible activar el tema, falta el archivo %s'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Este tema no puede ser eliminado porque hay otros temas que dependen de él: %s'; +$lang['Inactive Themes'] = 'Temas desactivados'; +$lang['Install on your computer,'] = 'Instalar en tu ordenador,'; +$lang['Make this theme available to users'] = 'Permitir este tema a los usuarios'; +$lang['Page end'] = 'Fin de la página'; +$lang['Piwigo Uploader'] = 'Piwigo Uploader'; +$lang['Read Piwigo Documentation'] = 'Leer la documentación Piwigo'; +$lang['Start pLoader and add your photos.'] = 'Iniciar pLoader y añadir fotos.'; +$lang['Switch to clear or dark colors for administration'] = 'Contrasta escogiendo colores claros o oscuros para la sección de administración'; +$lang['Theme has been successfully installed'] = 'El tema ha sido instalado con éxito'; +$lang['Visit Gallery'] = 'Volver a la galería'; +$lang['Visit Piwigo project website'] = 'Visitar el sitio web del proyecto Piwigo'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader significa Piwigo Uploader. Desde su ordenador, prepare sus fotos con pLoader y transfiéralas a su galería fotográfica Piwigo.'; +$lang['Guest Settings'] = 'Ajustes de los invitados'; +$lang['Main Page'] = 'Página principal'; +$lang['Photo Page'] = 'Página de la foto'; +$lang['Activate Navigation Bar'] = 'Activar barra de navegación'; +$lang['Activate Navigation Thumbnails'] = 'Activar flechas de navegación'; +$lang['Activate icon "%s"'] = 'Activar el icono "%s"'; +$lang['Photo Properties'] = 'Propiedades de la foto'; +$lang['Allow user customization'] = 'Permitir la personalización de la galería por el usuario'; +$lang['Languages'] = 'Idiomas'; +$lang['Installed Languages'] = 'Gestionar idiomas'; +$lang['Add New Language'] = 'Añadir nuevo idioma'; +$lang['Language has been successfully installed'] = 'El idioma se ha instalado con éxito'; +$lang['Select:'] = 'Seleccionar:'; +$lang['None'] = 'Ninguna'; +$lang['Invert'] = 'Invertir selección'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Imposible desactivar este tema, debe quedar por lo menos un tema activado.'; +$lang['Webmaster status is required.'] = 'Esta acción sólo la puede llevar a cabo un "webmaster".'; +$lang['Bound Theme'] = 'Tema personalizado'; +$lang['Allow rating'] = 'Permitir valoraciones'; +$lang['Select at least one comment'] = 'Seleccionar al menos un comentario'; +$lang['Active Plugins'] = 'Plugins activados'; +$lang['Inactive Plugins'] = 'Plugins desactivados'; +$lang['Missing Plugins'] = 'Plugins que faltan'; +$lang['Uninstalled Plugins'] = 'Plugins no instalados'; +$lang['By %s'] = 'Desarrollado por %s'; +$lang['Visit plugin site'] = 'Visitar el sitio web del plugin'; +$lang['Active Languages'] = 'Idiomas activados'; +$lang['Delete this language'] = 'Eliminar este idioma'; +$lang['Forbid this language to users'] = 'Prohibir este idioma a los usuarios'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Imposible desactivar este idioma, debe definir otro idioma por defecto primero.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Imposible desactivar este idioma, se necesita al menos un idioma.'; +$lang['Inactive Languages'] = 'Idiomas desactivados'; +$lang['Make this language available to users'] = 'Permitir este idioma a los usuarios'; +$lang['Set as default language for unregistered and new users'] = 'Idioma predeterminado para los invitados y los nuevos usuarios'; +$lang['Miscellaneous'] = 'Más información'; +$lang['Virtual Links'] = 'Enlaces virtuales'; +$lang['Add Photos'] = 'Añadir fotos'; +$lang['The following tag was deleted'] = 'La siguiente etiqueta ha sido eliminada'; +$lang['There is no other language available.'] = 'No hay otro idioma disponible'; +$lang['There is no other plugin available.'] = 'No hay otro plugin disponible'; +$lang['There is no other theme available.'] = 'No hay otro thema disponible'; +$lang['By rank'] = 'Por valoración'; +$lang['Manual order'] = 'Orden personalizado'; +$lang['Add another set of photos'] = 'Añadir otro conjunto de fotos'; +$lang['Order of menubar items has been updated successfully.'] = 'El orden de los elementos del menú ha sido actualizado con éxito.'; +$lang['This theme was not designed to be directly activated'] = 'Este tema no fue diseñado para ser activado directamente'; +$lang['Who can see this photo?'] = 'Compartir'; +$lang['Pending Comments'] = 'Comentarios en espera de validación'; +$lang['Menu Management'] = 'Administrar menús'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'En el archivo php.ini, la variable upload_max_filesize (%sB) es mayor que post_max_size (%sB). Debe cambiar esta configuración'; +$lang['Exif extension not available, admin should disable exif use'] = 'La extensión Exif no esta disponible. Un administrador debería deshabilitar el uso de metadatos Exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'El peso del archivo subido excede el valor de upload_max_filesize en el archivo php.ini: sB%'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'El peso total de los archivos transferidos excede el valor de post_max_size en su archivo php.ini: sB%'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'El peso del archivo subido excede el MAX_FILE_SIZE definido en el formulario HTML'; +$lang['The uploaded file was only partially uploaded'] = 'El archivo fue sólo parcialmente subido'; +$lang['No file was uploaded'] = 'No se ha subido ningún archivo'; +$lang['Missing a temporary folder'] = 'No se encuentra el directorio temporal'; +$lang['Failed to write file to disk'] = 'No se pudo escribir el archivo en el servidor'; +$lang['File upload stopped by extension'] = 'La transferencia de archivos fue detenida por una extensión'; +$lang['Unknown upload error'] = 'Error desconocido durante la transferencia'; +$lang['Error on file "%s" : %s'] = 'Error en el archivo "%s": %s'; +$lang['automatic order'] = 'Orden automático'; +$lang['manual order'] = 'orden manual'; +$lang['Albums automatically sorted'] = 'Álbums clasificados correctamente'; +$lang['Batch Manager'] = 'Gestión de lotes'; +$lang['include child albums'] = 'Incluir los sub-álbumes'; +$lang['Selection'] = 'Selección'; +$lang['Action'] = 'Acción'; +$lang['Set author'] = 'Establecer autor'; +$lang['Set title'] = 'Establecer el titulo'; +$lang['Set creation date'] = 'Establecer la fecha de creación'; +$lang['Apply action'] = 'Aplicar acción'; +$lang['on the %d selected photos'] = 'en las %d fotos seleccionadas'; +$lang['%d of %d photos selected'] = 'Fotos seleccionadas: %d de %d'; +$lang['No photo selected, %d photos in current set'] = 'Ninguna foto seleccionada entre las %d fotos del lote'; +$lang['All %d photos are selected'] = 'Todas las %d fotos del lote han sido seleccionadas'; +$lang['remove this filter'] = 'eliminar este filtro'; +$lang['Duplicates'] = 'Duplicados'; +$lang['Add a filter'] = 'Añadir filtro'; +$lang['Remove all filters'] = 'Eliminar todos los filtros'; +$lang['Refresh photo set'] = 'Actualizar el lote de fotos'; +$lang['The whole page'] = 'Página entera'; +$lang['The whole set'] = 'La totalidad del lote'; +$lang['No photo in the current set.'] = 'No hay fotos en este lote.'; +$lang['No photo selected, no action possible.'] = 'Selecciona al menos una foto para ejecutar cualquier acción.'; +$lang['Choose an action'] = 'Seleccionar una acción'; +$lang['remove author'] = 'eliminar el autor'; +$lang['Type here the author name'] = 'Escriba el nombre del autor'; +$lang['remove title'] = 'eliminar el título'; +$lang['Type here the title'] = 'Introduzca el título aquí'; +$lang['remove creation date'] = 'eliminar la fecha de creación'; +$lang['Album photos associated to the following albums: %s'] = 'Las fotos del álbum han sido asociadas con los álbumes siguientes: %s'; +$lang['Delete orphan tags'] = 'Eliminar etiquetas huérfanas '; +$lang['delete photo'] = 'Eliminar la foto'; +$lang['Orphan tags deleted'] = 'Etiquetas huérfanas eliminadas'; +$lang['Week starts on'] = 'La semana empieza en'; +$lang['You have %d orphan tags: %s.'] = 'Tiene %d etiquetas huérfanas: %s.'; +$lang['Remove from caddie'] = 'Eliminar de la cesta'; +$lang['Themes which need upgrade'] = 'Temas por actualizar'; +$lang['Languages which need upgrade'] = 'Idiomas por actualizar'; +$lang['All themes are up to date.'] = 'Todos los temas están actualizados.'; +$lang['All plugins are up to date.'] = 'Todos los plugins están actualizados.'; +$lang['All languages are up to date.'] = 'Todos los idiomas están actualizados.'; +$lang['Visit theme site'] = 'Visitar el sitio web del tema'; +$lang['Visit language site'] = 'Visita el sitio web del idioma'; +$lang['New Version'] = 'Nueva versión'; +$lang['Obsolete Plugins'] = 'Plugins obsoletos'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '¡ADVERTENCIA! Este plugin no parece ser compatible con esta versión de Piwigo.'; +$lang['Do you want to activate anyway?'] = '¿Quiere activarlo de todos modos?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESTE PLUGIN ES AHORA PARTE DEL NÚCLEO DE PIWIGO! PUEDE DESINSTÁLALO AHORA! '; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERROR: Falta este plugin aunque indique que está instalado. ¡DESINSTÁLALO!'; +$lang['Thumbnails generation in progress...'] = 'Generación de las miniaturas en curso...'; +$lang['Photos generation in progress...'] = 'Generación de fotos en curso...'; +$lang['%s photos have been regenerated'] = '%s fotos fueron regeneradas.'; +$lang['%s photos can not be regenerated'] = '%s fotos no pueden ser regeneradas'; +$lang['display'] = 'Visualizar'; +$lang['Type in a search term'] = 'Introduce un término de búsqueda'; +$lang['new'] = 'nuevo'; +$lang['No results'] = 'Sin resultados'; +$lang['Searching...'] = 'Buscando...'; +$lang['Activate icon "new" next to albums and pictures'] = 'Activar el icono "nuevo" al lado de álbumes y fotos'; +$lang['Add a criteria'] = 'Añadir criterio'; +$lang['Deactivate all'] = 'Desactivar todo'; +$lang['Default photos order'] = 'Orden de las fotos por defecto'; +$lang['Restore'] = 'Restaurar'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restablecer la configuración por defecto. Se perderán todos los ajustes personalizados.'; +$lang['Show menubar'] = 'Mostrar barra de menú'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'No se puede definir un orden predeterminado para las fotos porque está establecida una configuración personalizada en la configuración local de la aplicación.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Ha especificado $conf[\'order_by\'] en tu archivo de configuración local. Este parámetro esta obsoleto. Elimínalo o cámbiale el nombre a $conf[\'order_by_custom\']'; +$lang['Updates'] = 'Actualizaciones'; +$lang['Update in progress... Please wait.'] = 'Actualización en curso ... por favor espere.'; +$lang['Ignore this update'] = 'Ignorar esta actualización'; +$lang['Reset ignored updates'] = 'Restablecer actualizaciones ignoradas'; +$lang['Update All'] = 'Actualizar todo'; +$lang['ERROR'] = 'ERROR'; +$lang['Update Complete'] = 'Actualización completada'; +$lang['Piwigo Update'] = 'Actualizar Piwigo'; +$lang['Extensions Update'] = 'Actualizar extensiones'; +$lang['All extensions are up to date.'] = 'Todas las extensiones están actualizadas.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Los siguientes plugins pueden no ser compatibles con la nueva versión de Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Los siguientes temas pueden no ser compatibles con la nueva versión de Piwigo:'; +$lang['I decide to update anyway'] = 'Decido actualizar de todos modos'; +$lang['Update to Piwigo %s'] = 'actualización a Piwigo %s'; +$lang['Two updates are available'] = 'Dos actualizaciones están disponibles'; +$lang['This is a minor update, with only bug corrections.'] = 'Esta es una actualización menor, con sólo correcciones de errores.'; +$lang['This is a major update, with new exciting features.'] = 'Esta es una actualización importante, con nuevas características emocionantes.'; +$lang['Some themes and plugins may be not available yet.'] = 'Algunos de los temas y plugins pueden aún no estar disponibles.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Puedes actualizar a Piwigo %s directamente, sin necesidad de actualizar a Piwigo %s (recomendado).'; +$lang['Save Template Directory'] = 'Guardar directorio de plantillas'; +$lang['Dump Database'] = 'Volcar la base de datos'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incluir los datos del historial (Advertencia: el límite de memoria del servidor puede ser superado)'; +$lang['Unable to dump database.'] = 'No es posible vaciar la base de datos.'; +$lang['Some upgrades are available for extensions.'] = 'Hay actualizaciones disponibles para algunas extensiones.'; +$lang['Ignore All'] = 'Ignorar todo'; +$lang['Crop'] = 'Redimensionar '; +$lang['Width'] = 'Anchura'; +$lang['Height'] = 'Altura'; +$lang['Follow Orientation'] = 'Siguen la orientación'; +$lang['Graphics Library'] = 'Librería gráfica'; +$lang['Learn more'] = 'Más información'; +$lang['Rate'] = 'Valoración'; +$lang['Average rate'] = 'Clasificación'; +$lang['... or '] = '... o '; +$lang['Create'] = 'Crear'; +$lang['Start Upload'] = 'Iniciar transferencia'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Utilizar el formulario HTML para subir fotos al servidor.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Utilizar el formulario FLASH para subir fotos al servidor.'; +$lang['Maximum file size: %sB.'] = 'Tamaño máximo de los archivos : %sB.'; +$lang['Allowed file types: %s.'] = 'Extensiones permitidas: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolución máxima aproximada: %dM pixeles (o sea %dx%d píxeles).'; +$lang['Manage Permissions'] = 'Administrar permisos'; +$lang['Photo %s of %s'] = 'Foto %s de %s'; +$lang['show details'] = 'Mostrar detalles'; +$lang['hide details'] = 'ocultar los detalles'; +$lang['Merge tags'] = 'Fusionar etiquetas'; +$lang['Select the destination tag'] = 'Selecciona la etiqueta de destino'; +$lang['(this tag will be deleted)'] = '(esta etiqueta se eliminará)'; +$lang['Confirm merge'] = 'Confirman la fusión'; +$lang['Merge selected tags'] = 'Fusionar'; +$lang['No destination tag selected'] = 'No ha seleccionado ninguna etiqueta de destino'; +$lang['Tags %s merged into tag %s'] = 'Las etiquetas %s han sido fusionadas con la etiqueta %s'; +$lang['Select at least two tags for merging'] = 'Seleccionar al menos dos etiquetas para la fusión'; +$lang['Select an album'] = 'Seleccionar un álbum'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Por defecto, Piwigo creara un nuevo tamaño para la web, procedente de las fotos en alta resolución'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si no está disponible en alta definición (HD) y el tamaño actual es mayor que las dimensiones del cambio de medida, se considerará \'alta definición\' pese a que finalmente deberá reducirse el tamaño de la foto.'; +$lang['An error has occured during upgrade.'] = 'Hubo un error durante el proceso de actualización.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Imposible extraer los archivos. Por favor, verifique los permisos de los archivos de su instalación.
    Haga clic aquí para ver el informe de errores.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo no puede recuperar el archivo de actualización desde el servidor'; +$lang['Zoom'] = 'Ampliar'; +$lang['%s has been successfully updated.'] = '%s ha actualizado correctamente.'; +$lang['Add tags'] = 'Añadir etiquetas'; +$lang['Add to caddie'] = 'Añadir al carrito'; +$lang['Last import'] = 'Última importación'; +$lang['Predefined filter'] = 'Filtro predefinido'; +$lang['With no album'] = 'Sin álbumes'; +$lang['With no tag'] = 'Sin etiquetas'; +$lang['With no virtual album'] = 'Sin álbum virtual'; +$lang['Activate comments'] = 'Activar comentarios'; +$lang['Default comments order'] = 'Orden de los comentarios por defecto'; +$lang['Edit selected tags'] = 'Editar'; +$lang['Edit tags'] = 'Editar etiquetas'; +$lang['Original Size'] = 'Tamaño original'; +$lang['Photo name'] = 'Nombre de la foto'; +$lang['Resize after upload'] = 'Redimensionar después de subir la foto al servidor'; +$lang['Send connection settings by email'] = 'Enviar credenciales por email'; +$lang['The original image quality must be a number between %d and %d'] = 'La calidad de la foto original ha de ser un número entre %d y %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'La altura máxima de la foto original ha de ser un número entre %d y %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'La anchura máxima de la foto original ha de ser un número entre %d y %d'; +$lang['A locked gallery is only visible to administrators'] = 'Una galería bloqueada sólo es visible por los administradores'; +$lang['administrators'] = 'administradores'; +$lang['Gallery unlocked'] = 'Galería desbloqueada'; +$lang['modified'] = 'modifcado'; +$lang['Notify administrators when a comment is'] = 'Notificar a los administradores cuando un comentario sea'; +$lang['pending validation'] = 'validación pendiente'; +$lang['registered users'] = 'usuarios registrados'; +$lang['Save visits in history for'] = 'Guardar visitas en el historial por'; +$lang['simple visitors'] = 'visitantes simples'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Este álbum contiene %d fotos, añadidas entre %s y %s'; +$lang['This album contains %d photos, added on %s.'] = 'Este álbum contiene %d fotos, añadidas el %s'; +$lang['This album contains no photo.'] = 'Este álbum no contiene ninguna foto'; +$lang['Unlock gallery'] = 'Desbloquear galería'; +$lang['Applications'] = 'Aplicaciones'; +$lang['apply automatic sort order'] = 'Ordenar automáticamente'; +$lang['Automatic sort order'] = 'Orden automático'; +$lang['cancel manual order'] = 'Cancelar orden manual'; +$lang['Cancel'] = 'Cancelar'; +$lang['Center of interest'] = 'Centro de interés'; +$lang['Edit album permissions'] = 'Editar permisos de un álbum'; +$lang['Edit album'] = 'Editar álbum'; +$lang['Edit photo information'] = 'Editar información de la foto'; +$lang['List'] = 'Lista'; +$lang['Move to album'] = 'Mover al álbum'; +$lang['Not cropped correctly?'] = '¿No se ha recortado correctamente?'; +$lang['Save manual order'] = 'Guardar orden manual'; +$lang['Web Form'] = 'Formulario web'; +$lang['You can activate only one mobile theme.'] = 'Sólo se puede activar un tema para dispositivos móviles.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'La aplicación Piwigo para Android te permite conectarte a tu galería Piwigo desde tu teléfono o tablet Android, crear álbumes y subir varias fotos a la vez.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Las aplicación Piwigo para iOS te permite conectarte a tu galería Piwigo desde tu iPhone, iPad o iPod Touch, crear álbumes y subir varias fotos a la vez.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Lightroom es un software fotográfico diseñado para administrar grandes cantidades de imágenes y realizar el procesado de las mismas.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture es una potente herramienta para editar imágenes y administrar grandes colecciones en Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture está diseñada para fotógrafos profesionales con la simplicidad de iPhoto.'; +$lang['Available on'] = 'Disponible en'; +$lang['Available versions for'] = 'Versión disponible para'; +$lang['Delete multiple size images'] = 'Eliminar imágenes con múltiples tamaños'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam es un avanzado gestor de fotos gratuito para Linux, Windows y MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam está diseñado para fotógrafos que quieren ver, administrar, editar, mejorar, organizar, etiquetar y compartir sus fotos.'; +$lang['Edit ranks'] = 'Editar puntuaciones'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Las características que incluye son navegación, creación de álbumes y subida de fotos.'; +$lang['Generate multiple size images'] = 'Generar múltiples tamaños de imagen.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto es el gestor por defecto de fotos para MacOSX. El plugin para exportar de Piwigo permite crear nuevos álbums y exportar directamente las fotos desde iPhoto a tu galería Piwigo.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Para Linux, simplemente instala Shotwell con el gestor de paquetes y activa la opción de publicación en Piwigo.'; +$lang['Piwigo export plugin for Aperture'] = 'Plugin de Piwigo para Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin de Piwigo para iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo para Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for digiKam'] = 'Plugin de Piwigo para digiKam'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de publicación de Piwigo para Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Plugin de Piwigo para Shotwell'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (cliente RemoteGallery para Android) es un software cliente de Piwigo de código abierto (GPL v3) para la plataforma Android.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell es un software de código abierto para Linux que sirve para organizar colecciones de fotos. Es el software fotográfico por defecto en Ubuntu y Fedora.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'El plugin Piwigo Export permite crear álbumes y exportar fotos.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'El plugin de Piwigo Publish te permite exportar y sincronizar fotos de Lightroom directamente con tu galería fotográfica.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para exportar tus fotos desde digiKam a Piwigo, simplemente instala digiKam y los Kipi-plugins.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '&u usuarios tienen permiso automáticamente por pertenecer a grupos.'; +$lang['any visitor can see this album'] = 'cualquier visitante puede ver este álbum'; +$lang['Groups and users'] = 'Grupos y usuarios'; +$lang['Permission granted for groups'] = 'Permisos para grupos'; +$lang['Permission granted for users'] = 'Se concenden permisos a los usuarios'; +$lang['Select groups...'] = 'Seleccionar grupos'; +$lang['Select users...'] = 'Seleccionar usuarios...'; +$lang['There is no group in this gallery.'] = 'No hay grupos en esta galería'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'los visitantes necesitan iniciar sesión y tener permiso para ver este álbum'; +$lang['add a new watermark'] = 'Añadir una nueva marca de agua'; +$lang['Apply watermark if height is bigger than'] = 'Aplicar marca de agua si la altura es mayor de'; +$lang['Apply watermark if width is bigger than'] = 'Aplicar marca de agua si la anchura es mayor de'; +$lang['bottom left corner'] = 'Esquina inferior izquierda'; +$lang['bottom right corner'] = 'Esquina inferior derecha'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Por defecto, el centro de interés está situado en el centro de la foto.'; +$lang['custom'] = 'Personalizar'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para tamaños de fotos con recorte, como "Cuadrado", Piwigo hará lo posible para incluir el centro de interés.'; +$lang['include photos with lower privacy level'] = 'incluir fotos con un nivel de privacidad más bajo'; +$lang['middle'] = 'Centro'; +$lang['No group is permitted to see this private album'] = 'Ningún grupo tiene permisos para ver un álbum privado'; +$lang['Opacity'] = 'Opacidad'; +$lang['Permission management'] = 'Administración de permisos'; +$lang['Photo sizes with crop'] = 'Tamaño de las fotos con el recorte.'; +$lang['Select a file'] = 'Seleccionar archivo'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Seleccionar una zona con el ratón para definir un nuevo centro de interés.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'El centro de interés es la zona más significativa de la foto.'; +$lang['top left corner'] = 'Esquina superior izquierda'; +$lang['top right corner'] = 'Esquina superior derecha'; +$lang['X Position'] = 'Posición X'; +$lang['X Repeat'] = 'Repetir X'; +$lang['Y Position'] = 'Posición Y'; +$lang['Multiple Size'] = 'Tamaños múltiples'; +$lang['%d day'] = '%d día'; +$lang['%d days'] = '%d días'; +$lang['%d hour'] = '%d hora'; +$lang['%d hours'] = '%d horas'; +$lang['%d minute'] = '%d minuto'; +$lang['%d minutes'] = '%d minutos'; +$lang['%d month'] = '%d mes'; +$lang['%d months'] = '%d meses'; +$lang['%d second'] = '%d segundo'; +$lang['%d seconds'] = '%d segundos'; +$lang['%d year'] = '%d año'; +$lang['%d years'] = '%d años'; +$lang['%s ago'] = 'hace %s'; +$lang['%s in the future'] = '%s en el futuro'; +$lang['Added by %s'] = 'Añadida por %s'; +$lang['Numeric identifier : %d'] = 'Identificador numérico: %d'; +$lang['Original file : %s'] = 'Archivo original: %s'; +$lang['Posted %s on %s'] = 'Publicado %s, el %s'; +$lang['Rated %d times, score : %.2f'] = 'Valorada %d veces. Puntuación: %.2f'; +$lang['Sharpen'] = 'Enfoque'; +$lang['Visited %d times'] = 'Visitada %d veces'; +$lang['Watermark'] = 'Marca de agua'; +$lang['%d week'] = '%d semana'; +$lang['%d weeks'] = '%d semanas'; +$lang['Edit photo'] = 'Editar foto'; +$lang['create a new site'] = 'Crear un nuevo sitio'; +$lang['No order field selected'] = 'Ningún orden seleccionado'; +$lang['Duplicate selected tags'] = 'Borrar etiquetas duplicadas'; +$lang['Name of the duplicate'] = 'Nombre de los duplicados'; +$lang['Source tag'] = 'Origen de las etiquetas'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'La etiqueta "%s" es ahora un duplicado de "%s"'; +$lang['Landscape'] = 'Paisaje'; +$lang['Minimum height'] = 'Altura minima'; +$lang['Minimum width'] = 'Anchura minima'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Retrato'; +$lang['Manage photos'] = 'Administrar fotos'; +$lang['View in gallery'] = 'Ver en galería'; +$lang['Number of albums per page'] = 'Numero de álbumes por paginas'; +$lang['Ratio'] = 'Proporción'; +$lang['between %.2f and %.2f'] = 'entre %.2f y %.2f'; +$lang['between %d and %d pixels'] = 'entre %d y %d pixels'; +$lang['Duplicate'] = 'Duplicar'; +$lang['Manage the members'] = 'Gestionar los miembros'; +$lang['Merge selected groups'] = 'Combinar grupos seleccionados'; +$lang['No group selected, no action possible.'] = 'Ningún grupo seleccionado, no hay acción posible.'; +$lang['No members to manage'] = 'Ningún miembro para gestionar'; +$lang['Please select at least two groups'] = 'Por favor, seleccione por lo menos dos grupos'; +$lang['Rename'] = 'Renombrar'; +$lang['This group will be set to default'] = 'Este grupo se usa de forma predeterminado'; +$lang['This group will be unset to default'] = 'Este grupo ya no se utiliza por defecto'; +$lang['Type here the name of the new group'] = 'Escriba aquí el nombre del nuevo grupo'; + +$lang['Purge user cache'] = 'Limpiar cache de usuario'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Las dimensiones de la imagen se reducirá a %dx%d píxeles.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionado después de la carga al servidor debido a la utilización de GD como librería gráfica.'; +$lang['Select at least one tag'] = 'Selecciona al menos una etiqueta'; +$lang['Basic settings'] = 'Configuración básica'; +$lang['General'] = 'General'; +$lang['Mail theme'] = 'tema de correo'; +$lang['%d of %d users selected'] = '%d de %d usuarios seleccionados'; +$lang['(filtered from %s total users)'] = '(filtrado de un total de %s usuarios'; +$lang['All %d users are selected'] = 'Los %d usuarios están seleccionados'; +$lang['Change password'] = 'Cambiar contraseñas'; +$lang['Change username'] = 'Cambiar nombre de usuarios'; +$lang['Last visit on %s, %s.'] = 'Ultima visita el %s, %s'; +$lang['Loading...'] = 'Cargando...'; +$lang['No matching user found'] = 'Ningún miembro coincidentes encontrados'; +$lang['No user selected of %d users'] = 'Ninguno de los %d usuarios seleccionados'; +$lang['No user selected, no action possible.'] = 'Ningún usuario seleccionado, ninguna acción posible. '; +$lang['Password updated'] = 'Contraseña actualizado'; +$lang['Registered on %s, %s.'] = 'Registrado el %s, %s'; +$lang['Show %s users'] = 'Mostrar %s usuarios'; +$lang['Showing %s to %s of %s users'] = 'Mostrar de %s hasta %s de los %s usuarios'; +$lang['Update user'] = 'Actualizar usuario'; +$lang['User %s added'] = 'Usuario %s añadido'; +$lang['User %s updated'] = 'Usuario %s actualizado'; +$lang['Users modified'] = 'Usuarios modificados'; +$lang['on the %d selected users'] = 'en los %d usuarios seleccionados'; +$lang['close'] = 'cerrar'; +$lang['Close user details'] = 'Cerrar detalles de usuario'; +$lang['Open user details'] = 'Abrir detalles de usuario'; +?> \ No newline at end of file diff --git a/sources/language/es_ES/common.lang.php b/sources/language/es_ES/common.lang.php new file mode 100644 index 0000000..908606a --- /dev/null +++ b/sources/language/es_ES/common.lang.php @@ -0,0 +1,430 @@ + \ No newline at end of file diff --git a/sources/language/es_ES/es_ES.jpg b/sources/language/es_ES/es_ES.jpg new file mode 100644 index 0000000..2f3b9ce Binary files /dev/null and b/sources/language/es_ES/es_ES.jpg differ diff --git a/sources/language/es_ES/help/cat_modify.html b/sources/language/es_ES/help/cat_modify.html new file mode 100644 index 0000000..d91d3b9 --- /dev/null +++ b/sources/language/es_ES/help/cat_modify.html @@ -0,0 +1,117 @@ +

    Modificar una categoría

    + +

    Informaciones

    + +
      + +
    • nombre: renombrar la categoría (virtualmente para una categoría física).
    • + +
    • descripción: dar una idea del contenido de la categoría, esta indicación figurará bajo la página de las miniaturas.
    • + +
    + +

    Desplazar

    + +

    Si la categoría es virtual, usted puede desplazarla. Desplazar una categoría significa cambiar su categoría padre.

    + +

    Opciones

    + +
      + +
    • Tipo de acceso: gestión de los permisos. Si usted cambia una categoría a particular, todas sus categorías niños se vuelven particulares. Si usted cambia una categoría a pública, todas sus categorías madres se vuelven públicas.
    • + +
    • Bloquear: la categoría y todas sus categorías chicas se vuelven temporalmente inaccesibles para mantenimiento.
    • + +
    • Comentarios: autoriza a los usuarios a comentar los elementos de esta categoría.
    • + +
    • Autorizar el añadido de imágenes: autoriza a los usuarios a cargar ficheros. Esta opción está disponible sólo si la categoría es física (y no virtual).
    • + +
    + +

    Usted puede también administrar estas opciones por la gestión de las "Propiedades" +(pantallas Añadido, Comentarios, Bloquear, Pública / particular, Representante Disponibles a partir de Administración, Categorías, Propiedades).

    + +

    Orden de selección

    + +

    Utilizar el orden de selección de las imágenes por defecto.

    + +

    Indicar si la selección también se aplica a las subcategorías.

    + +

    Seleccionar las columnas de la selección que hay que utilizar para esta categoría.

    +
      +
    • Fecha de creación: Fecha de grabación
    • +
    • Fecha de añadido: Fecha de la sincronización
    • +
    • Nota media (*): la cual podría ser modificada por el visitante
    • +
    • Más vistas (*): La vista actual puede cambiar el orden de las más vistas
    • +
    • Nombre del fichero: Nombre del fichero dado en los campos de informaciones más arriba
    • +
    • Id: Id Interna (las categorías recientes tienen la "Id" mayor que las precedentes).
    • + +
    +

    (*)Atención: Pruebe usted mismo estas selecciones que podrian dar resultados imprevisibles.

    + + +

    Representante

    + +

    El representante de una categoría es la miniatura visualizada para representar la categoría en la página principal (category.php) Cuando una categoría contiene únicamente subcategorías y ningun elemento directo (como a la raíz)

    + +

    Existen 4 medios de escoger al representante de una categoría:

    + +
      + +
    • Página de visualización de las imágenes: En la barra de los botones de acción, uno de ellos permite escoger el elemento visualizado como representante de la categoría visualizada. Este botón de acción está disponible sólo para los administradores
    • + +
    • Modificar las informaciones de una imagen +en la administración. Se puede acceder a esta pantalla desde picture.php o Gestión por lote en él Modo unitario. Ver el ayudante de esta pantalla para los detalles.
    • + +
    • Administración, Categorías, Propiedades, Representante. Ver el ayudante de esta pantalla para los detalles.
    • + +
    • Modificar una categoría ( La pantalla actual).
    • + +
    + +

    La representación depende del parámetro de configuración +allow_random_representative (ver include/config_default.inc.php).

    + +

    Por defecto (allow_random_representative à false) cada categoría que contiene por lo menos un elemento es representada por un elemento fijo. Una vez fijado (a la creación de la categoría), el representante únicamente cambia cuando el administrador lo pide. Si el representante no conviene, usted puede pedir a Encontrar a un nuevo representante al azar.

    + +

    Si el parámetro de configuración allow_random_representative +es a true, una categoría que contiene elementos puede no tener representante fijo. Simplemente utilizar el botón Suprimir al representante.

    + +

    Si la categoría no contiene ningún elemento (sino únicamente subcategorías) puede ser representada a pesar de todo por cualquier elemento gracias a la pantalla Modificar las informaciones de una imagen. La unica opción de la pantalla presente es el botón +Suprimir al representante.

    + +

    Asociar todos los elementos de la categoría con una nueva categoría

    + +
      + +
    • Nombre de la categoría virtual: Nombre de la nueva categoría que hay que crear, todas las imágenes de la categoría corriente serán atadas a la nueva.
    • + +
    • Categoría padre: Donde la nueva categoría debe estar, dejar vacío para crearle sobre la página inicial.
    • + +
    + +

    Asociar todos los elementos de la categoría con categorías existentes

    + +
      + +
    • Categorías: Escoger la categoría de destino.
    • + +
    + +

    Enviarles un mail de informaciones a los miembros de un grupo

    + +
      + +
    • Grupo: Grupo de destinatarios
    • + +
    • Contenido del mail: Texto libre de enviarles.
    • + +
    diff --git a/sources/language/es_ES/help/cat_move.html b/sources/language/es_ES/help/cat_move.html new file mode 100644 index 0000000..e22d524 --- /dev/null +++ b/sources/language/es_ES/help/cat_move.html @@ -0,0 +1,12 @@ +

    Desplazamiento de categorías virtuales

    + +

    Usted puede cambiar al pariente de una categoría virtual.

    + +

    Categorías virtuales que hay que desplazar

    + +

    Seleccione una o varias categorías virtuales a desplazar. Si la lista está vacía, es porque usted todavía no la ha creado.

    + +

    Nueva categoría padre

    + +

    Seleccione la nueva categoría padre (virtual o física). Si usted no selecciona ninguna, las categorías que hay que desplazar habrán subido a la raíz de las categorías. +Usted no puede desplazar una categoría dentro de ella misma o sus niños.

    diff --git a/sources/language/es_ES/help/cat_options.html b/sources/language/es_ES/help/cat_options.html new file mode 100644 index 0000000..31ceead --- /dev/null +++ b/sources/language/es_ES/help/cat_options.html @@ -0,0 +1,30 @@ +

    Opciones de las categorías

    + +

    Gestión de las opciones para varias categorías a la vez.

    + +
    + +
    Autorización al añadido
    + +
    Devolver las categorías autorizadas al añadido por los visitantes. Esta opción no está disponible para las categorías virtuales y distantes.
    + +
    Comentarios usuarios
    + +
    Autorizar los usuarios a añadir comentarios en las categorías seleccionadas. +Por herencia, una imagen es commentable si pertenece por lo menos a una categoría commentable.
    + +
    Bloquear
    + +
    Las categorías seleccionadas se vuelven temporalmente inactivas para mantenimiento. Cuando una categoría es bloqueada, todas las categorías niño son bloqueadas. Cuando a una categoría se le quita el cierre, todas las categorías bloqueadas se vuelven abiertas.
    + +
    Pública / Particular
    + +
    Gestión del estatuto de las categorías. Los permisos son posibles sólo para las categorías particulares. En cuanto una categoría es privada, usted explícitamente debe autorizar a los usuarios o los grupos a acceder a ella. Cuando una categoría se vuelve particular, todas las categorías niño se vuelven particulares. Cuando una categoría se vuelve pública, todas las categorías padres se vuelven públicas.
    + +
    Representante
    + +
    Esta opción únicamente está disponible si el parámetro de configuración allow_random_representative (Ver include/config_default.inc.php) es +true. Cada categoría puede ser representada al azar o por una miniatura fija única.
    + +
    diff --git a/sources/language/es_ES/help/cat_perm.html b/sources/language/es_ES/help/cat_perm.html new file mode 100644 index 0000000..f310c66 --- /dev/null +++ b/sources/language/es_ES/help/cat_perm.html @@ -0,0 +1,11 @@ +

    Administrar los permisos para una categoría

    + +

    Esta pantalla está disponible sólo para las categorías particulares. Aquí usted podrá seleccionar a los usuarios y a los grupos autorizados para esta categoría.

    + +

    Grupos

    + +

    Usted puede autorizar o prohibir el acceso a los grupos. Modificando las autorizaciones de los grupos, usted probablemente modificará la lista de los usuarios autorizados gracias a la pertenencia a los grupos.

    + +

    Usuarios

    + +

    Usted puede autorizar o prohibirles el acceso a los usuarios individualmente.

    diff --git a/sources/language/es_ES/help/configuration.html b/sources/language/es_ES/help/configuration.html new file mode 100644 index 0000000..6f378fe --- /dev/null +++ b/sources/language/es_ES/help/configuration.html @@ -0,0 +1,99 @@ +

    Configuración

    + +

    Esta pantalla permite realizar las tareas básicas de administración de la galería. De hecho, sólo se muestran los principales parámetros de configuración que debieran ser suficiente para la gran mayoría de administradores. Si desea ver los parámetros de configuración avanzados, lea el archivo de configuración include/config_default.inc.php

    + +

    Esta pantalla está dividida en distintas secciones que agrupan parámetros de configuración por temas.

    + +

    Principal

    +
      + +
    • Título de la galería: utilizado para el canal RSS y las notificaciones por email.
    • + +
    • Banner (cabecera de la página): código html visible en la parte superior de cada página pública.
    • + +
    • URL de la galería: usada para la fuente RSS.
    • + +
    • Bloquear la galería: Bloquea la galería entera por labores de mantenimiento. Sólo se permite el acceso a los administradores.
    • + +
    • Valoración: Se habilita la característica para poder puntuar las imágenes.
    • + +
    • Valoración por los visitantes: Incluso los usuarios no registrados pueden puntuar las imágenes.
    • + +
    • Permitir el registro de usuarios: Cualquier usuario puede registrarse.
    • + +
    • Correo electrónico obligatorio para todos los usuarios: Se comprobará la dirección de correo electrónico en el registro o actualización de perfiles, excepto si la acción se lleva a cabo por un administrador.
    • + +
    • Email admins when a new user registers: administrators will be notified by mail for each registration.
    • + +
    • Notificar a los administradores en el momento de la inscripción de un usuario: Los administradores serán notificados por email para cada inscripción.
    • + +
    • Orden por defecto de las fotos: Se puede definir un orden personalizado con estos menús desplegables.
    • + +
    + +

    Historial

    + +

    Visitas en las páginas index.php y picture.php se guardarán en la tabla history.

    + +

    Las visitas se muestran en Administración » Herramientas » Historial.

    + +
      +
    • Registrar las páginas visitadas por los invitados: Se guardan las páginas visitadas por los invitados.
    • + +
    • Registrar las páginas visitadas por los usuarios: Se guardan las páginas visitadas por los usuarios.
    • + +
    • Registrar las páginas visitadas por los administradores: Se guardan las páginas visitadas por los administradores.
    • + +
    + +

    Comentarios

    +
      + +
    • Comentarios para todos: Incluso los usuarios no registrados pueden publicar comentarios.
    • + +
    • Número de comentarios por página.
    • + +
    • Validación: Un administrador debe previamente validar los comentarios escritos por los usuarios antes de que sean visibles públicamente en la galería. La validación de los comentarios de los usuarios se realiza en la pantalla Administración » Herramientas » Comentarios pendientes.
    • + +
    • Notificar a los administradores en el momento en que se escriba un comentario validado: Envía un correo electrónico a los administradores cuando un usuario escribe un comentario que ha sido validado.
    • + +
    • Notificar a los administradores cuando un comentario requiere ser validado: +Envía un correo electrónico a los administradores cuando un usuario escribe un comentario que requiere validación por parte del administrador. +La validación de los comentarios se realiza en Administración » Herramientas » Comentarios pendientes.
    • + +
    + + +

    Visualización por defecto

    +

    Aquí puede cambiar las opciones de visualización utilizadas por los invitados (usuarios no autenticados). Una vez hayan iniciado sesión, estas opciones son sobreescritas por las propias del usuario +(modificable en perfil.

    + +

    Es posible cambiar las opciones de visualización para todos los usuarios existentes en Administración » Usuarios » Administrar en la cual usted puede modificar estas opciones para una lista de usuarios seleccionados.

    + +
      + +
    • Idioma: Se aplica sólo a las etiquetas de Piwigo. En los campos de nombres de álbumes de fotos, nombres y descripciones no están localizados.
    • + +
    • Número de fotos por fila
    • + +
    • Número de filas por página
    • + +
    • Tema de la interfaz
    • + +
    • Período reciente: En días. El período durante el cual una imagen es considerada como novedad. Este período debe ser superior a 1 día.
    • + +
    • Expandir todos los álbumes: Expande todos los álbumes por defecto en el menú Advertencia: Esta opción es susceptible de consumir inútilmente recursos si su árbol de categorías contiene numerosos elementos.
    • + +
    • Mostrar el número de comentarios: Mostrar número de comentarios en cada foto debajo de cada miniatura. Consume recursos.
    • + +
    • Mostrar el número de isualizaciones: Muestra los accesos observados en la foto justo debajo de la miniatura en la página de miniaturas. Sólo cuando el parámetro de configuración avanzado es:
      + $conf['show_nb_hits'] = true;
      + Nota: es false por defecto.
    • + +
    • Anchura máxima de las fotos: anchura máxima visualizada. Las fotos más grandes que este valor, se ajustarán al tamaño de la pantalla. En lugar de usar esta opción, una buena práctica sería que considerara modificar el ancho de sus fotos.
    • + +
    • Altura máxima de las imágenes: la misma observación que en la anchura.
    • + +
    \ No newline at end of file diff --git a/sources/language/es_ES/help/extend_for_templates.html b/sources/language/es_ES/help/extend_for_templates.html new file mode 100644 index 0000000..1d20009 --- /dev/null +++ b/sources/language/es_ES/help/extend_for_templates.html @@ -0,0 +1,103 @@ +

    Configuración para "extender" los templates

    + +

    Objetivo

    +

    Definir las condiciones de sustitución de cada template (modelo) a partir de template-extensión + (template llamado "a reemplasar " (sustituto)).

    + +

    " Templates de origen " proviniendo de . / template / yoga (o de otra carpeta que "yoga") + son reemplazados por el sustituto si éste es vinculado a su template de origen + (y de modo facultativo, cuando la dirección (URL) contiene un URL contains un + " Parámetro facultativo del URL ").

    + +

    Los " Parámetros facultativo del URL " son aquellos a los que usted puede encontrar después del nombre del módulo en la dirección (URL).

    + +

    Así un " Parámetro facultativo del URL " puede ser un "permalink" (lazo permanente) activo +(ver el permalinks en nuestra documentación para más información).

    + +

    Leer las `advertencias` sobre las condiciones de utilización.

    + +

    ¿ Qué son las extensiones de los modelos?

    + +

    Este instrumento de configuración es a la vez poderoso para los principiantes y para los usuarios avanzados. +Por FTP, en el expediente template-extensión, Webmaster podrá duplicar una buena parte de los ficheros +.tpl distribuidos (" Templates de origen ") +con un nombre diferente ("reemplasar" (a sustituto)). + + "Templates de origen ", actualmente los modelos sostenidos de origen son:

    +
      +
    • index.tpl
    • +
    • mainpage_categories.tpl and/or thumbnails.tpl
    • +
    • menubar.tpl
    • +
    • header.tpl and/or footer.tpl
    • +
    • picture_content.tpl and/or picture.tpl
    • + +
    • profile.tpl and/or profile_content.tpl
    • +
    • tags.tpl
    • +
    • upload.tpl
    • +
    • about.tpl
    • +
    • popuphelp.tpl
    • +
    • search.tpl and/or search_rules.tpl
    • +
    • nbm.tpl and/or notification.tpl
    • +
    • identification.tpl and/or register.tpl
    • +
    • redirect.tpl
    • +
    + +

    ¿ Dónde puedo encontrar los " Templates de origen "?

    + +

    Los modelos distribuidos de origen son en template / yoga / +( no modificarlos directamente en este lugar por razones de evolución). + Así a partir de " templates de origen ", todo webmaster podrá crear su " replacers + (modelos personalisés) ".

    + +

    ¿ Dónde debo registrar a los "sustitutos"?

    + +

    Los sustitutos (templates modificados) pueden estar colocados en +el expediente template-extensión (o sus subexpedientes). +Los sustitutos pueden tener cualquier nombre de fichero con la extensión .tpl. Por ejemplo: template-extension/my-extension/video.tpl.

    + + +

    ¿ Cómo puedo activar mis "sustitutos"?

    +

    UnTemplate de origen debería ser asociado con cada + reemplaso con el fin de activar las sustituciones correspondientes. + Activar los sustitutos es la función de " Extender el templates " en los menús de + Configuración de la Administración.

    + +

    Si usted selecciona un Define parámetros facultativo del URL + entonces las sustituciones serán realizadas sólo sobre las páginas que utilizarán + esta palabra clave. Por ejemplo: index.php?/most_visited

    + +

    Los usuarios avanzados utilizarán los permalinks (permaliens, lazos permanentes) como strong> parámetro facultativo del URL .

    + + +

    Si usted selecciona untemplate atado entonces los cambios se realizaran solo sobre ese template.

    + +

    ¿ Cómo puedo desactivar mis "sustitutos"?

    +
      +
    • Desmarcar " template de origen ".
    • +
    • Por FTP suprimir "sustitutos".
    • +
    + +

    Advertencias

    +
      + +
    • El template de origen debe ser el verdadero + template " de origen " de otro modo usted podría tener resultados imprevisibles!
    • + +
    • Si varios sustitutos ( templates modoficados) tienen el mismo + template de origen y el mismo parámetro facultativo del URL entonces solamente el último sustituto será activo.
    • + +
    • No seleccionar parámetro facultativo del URL activará el template de sustitución a cada utilización del template. + Así como mencionado más arriba, la orden puede inhibir los sustitutos precedentes.
    • + +
    • Subexpedientes : + Los subexpedientes son ignorados pero son útiles para modificar la orden de los sustitutos.
      + distributed-samples: ¡ para sus pruebas son distribuidos! +No modificarlos :¡ Haga los suyos! +
    • + +
    • A la supresión del sustituto el template de origen inmediatamente será + reactivado.
    • + +
    diff --git a/sources/language/es_ES/help/group_list.html b/sources/language/es_ES/help/group_list.html new file mode 100644 index 0000000..3c3a450 --- /dev/null +++ b/sources/language/es_ES/help/group_list.html @@ -0,0 +1,21 @@ +

    Lista grupos

    + +

    Manipulación de las propiedades de los grupos definidos.

    + +

    Añadir un grupo

    + +

    El administrador puede añadir grupos.

    + +

    Lista grupos

    + +

    La lista permite para cada grupo:

    + +
      +
    • de acceder a la lista de los miembros
    • +
    • de acceder a los permisos
    • +
    • de suprimir el grupo (necesita una confirmación)
    • +
    • de invertir el estatuto " por defecto " (necesita una confirmación)
    • +
    + +

    Grupos por defecto

    +

    Los grupos por defecto son los grupos asociados automáticamente con cada nuevo usuario.

    diff --git a/sources/language/es_ES/help/help_add_photos.html b/sources/language/es_ES/help/help_add_photos.html new file mode 100644 index 0000000..95f6d82 --- /dev/null +++ b/sources/language/es_ES/help/help_add_photos.html @@ -0,0 +1,27 @@ +

    Existen varios métodos para añadir fotos en vuestro galería:

    + +
      + +
    • El añadido directo en su navegador Web es el método más simple y más inmediato. Depende de capacidades de su navegador y de su servidor. ¡ Para gruesos volúmenes o en caso de problemas, los métodos alternativos le esperan!
    • +
    + + + +
      +
    • pLoader es un software que hay que instalar sobre su ordenador. + Resbale sus fotos en la ventana de pLoader, haga clic sobre + "Trasladar hacia Piwigo" y pLoader se ocupa además. + Otros softwares clientes existen, como WinToPiwigo o el módulo + de expuerto Piwigo de Digikam.
    • +
    + + + +
    +
      +
    • El FTP es el método ideal para añadir una colección importante en un mínimo de operaciones. + Siga al guía para preparar sus fotos. Este método le permite controlar con precision la organización física de su fotos sobre su servidor.
    • +
    + + +
    \ No newline at end of file diff --git a/sources/language/es_ES/help/help_groups.html b/sources/language/es_ES/help/help_groups.html new file mode 100644 index 0000000..5962a3b --- /dev/null +++ b/sources/language/es_ES/help/help_groups.html @@ -0,0 +1,7 @@ +

    Los grupos de usuarios permiten asignar permisos a una lista de usuarios.

    + +

    Usted puede crear grupos y añadir usuarios en ello +Administración » Usuarios » Grupos.

    + +

    Un usuarios puede pertenecer a varios grupos. La autorización es más fuerte que la interdicción: si el usuario "piedra" pertenece a los grupos "familia" y "los amigos", y si sólo el grupo "familia" puede visitar la categoría " Navidad 2003 ", entonces "piedra" puede visitar esta categoría.

    + diff --git a/sources/language/es_ES/help/help_misc.html b/sources/language/es_ES/help/help_misc.html new file mode 100644 index 0000000..7c7b4bd --- /dev/null +++ b/sources/language/es_ES/help/help_misc.html @@ -0,0 +1,5 @@ +

    Una vez creado su galería, configure la visualización por defecto tal como deseado en + Administración » Configuración » Opciones » Parámetros invitado. En efecto, cada nuevo usuario heredará de estas propiedades de visualización.

    + +

    Para cualquier pregunta, la comunidad Piwigo está a la escucha en el foro.

    + diff --git a/sources/language/es_ES/help/help_permissions.html b/sources/language/es_ES/help/help_permissions.html new file mode 100644 index 0000000..980c669 --- /dev/null +++ b/sources/language/es_ES/help/help_permissions.html @@ -0,0 +1,46 @@ +
    +Permisos para fotos + +

    Cada foto tiene un nivel de privacidad (un cierre). Igual que cada usuario tiene su nivel de privacidad(una llave).Hay 5 niveles de privacidad:

    +
      +
    1. Ninguno
    2. +
    3. Contactos
    4. +
    5. Amigos (que es superior al de un contacto)
    6. +
    7. Familia (que es superior al de un amigo)
    8. +
    9. Admins (que es superior al de otros niveles)
    10. +
    + +

    Los niveles altos tienen permisos sobre los niveles bajos. Para un usuario dado, mas alto sera el nivel de privacidad, mas fotos pueda ver.

    + +

    Por ejemplo, si la foto "Boda_pedro-0024.jpg"tiene el nivel de privacidad"Familia", entonces:

    +
      +
    • Pedro (que es un "Admin") puede ver la foto porque"Admins" puede ver todas las fotos
    • +
    • Beth (que es un miembro de"Familia") puede ver también la foto
    • +
    • Maria (que solo es "Amigos") no puede ver la foto
    • +
    + +

    Un usuario que no tiene permiso para ver el contenido de una categoría no verá la categoría en sí misma, ni siquiera su título. El mismo principio se aplica a una etiqueta.

    + +

    Puede establecer el nivel de privacidad de un usuario en Administración » Usuarios » Gestion pantalla.

    + +
    + +
    +Permisos de las categorías + +

    Si los niveles de privacidad no se ajustan a sus necesidades, también puede administrar los permisos de las categorías para un usuario o un grupo. Puede administrar los permisos en las fotos y las categorías al mismo tiempo, sin conflicto.

    + +

    Usted puede prohibir el acceso a las categorías. Pase el tipo de acceso a "intimidad" si usted desea administrar los permisos

    + +

    Usted puede devolver una categoría particular editándola (Administración » Categorías » Administrar » Editar) O administrando las opciones para su árbol completo de categorías (Administración » Categorías » Propiedades » Pública / particular).

    + +

    Cuando ciertas categorías estan privadas, usted puede administrar los permisos con 3 pantallas:

    + +
      +
    • Administración » Usuarios » Administrar » Acciones Permisos (1 lazo por usuario)
    • +
    • Administración » Usuarios » Grupos » Acciones Permisos (1 lazo por grupo)
    • +
    • Administración » Categorías » Administrar » Modificar los permisos (1 lazo por categoría)
    • +
    + diff --git a/sources/language/es_ES/help/help_virtual_links.html b/sources/language/es_ES/help/help_virtual_links.html new file mode 100644 index 0000000..c27b281 --- /dev/null +++ b/sources/language/es_ES/help/help_virtual_links.html @@ -0,0 +1,7 @@ +

    Las fotos son visualizadas en las categorías que corresponden a los repertorios.

    + +

    Usted también puede visualizar una foto en varias categorías, sin duplicar el fichero sobre su servidor web. Asocie la foto con cualquier otra categoría desde la pantalla de edición de la foto (al cual pude acceder desde la página de visualización de la foto lado galería, cuando esta conectado como administrador)

    + +

    Las categorías virtuales parten de este principio : no tienen repertorio asociado. Cree categorías virtuales después Administración » Categorías » Administrar.

    + + diff --git a/sources/language/es_ES/help/history.html b/sources/language/es_ES/help/history.html new file mode 100644 index 0000000..9f7205e --- /dev/null +++ b/sources/language/es_ES/help/history.html @@ -0,0 +1,51 @@ +

    Histórico

    + +

    Estas pantallas permiten seguir el histórico de navegación en Piwigo + en función de las opciones que ha determinado en +Administración - General - pestaña Histórico.

    + +

    Estadísticas

    +
      +

      Si quiere que las visitas de las páginas index.php y picture.php sean +registradas en el cuadro history, +esta pestaña permite seguir el número de páginas visitadas

      + +
    • Estadísticas totales : visualiza las estadísticas por año.
    • + +
    • Estadísticas de un año : visualiza las estadísticas de los + meses del año seleccionado.
    • + +
    • Estadísticas de un mes : visualiza las estadísticas + de los días del mes seleccionado.
    • + +
    • Estadísticas de un día : visualiza las estadísticas + de las horas del día seleccionado.
    • + +
    + +

    Buscar

    +
      +

      Si quiere que las visitas de las páginas index.php y picture.php sean +registradas en el cuadro history, esta pestaña permite +seguir más detalladamente las páginas exploradas en su sitio con ayuda +de distintos filtros..

      + +
    • Filtrar por fecha : seleccionar la zona de observación cuya + actividad quiere observar.
    • + +
    • Filtrar por tipo de elemento : seleccionar el tipo de + elemento cuya actividad quiere observar .
    • + +
    • Filtrar por usuario : seleccionar el usuario cuya actividad + quiere observar.
    • + +
    • Filtrar por nombre del fichero : seleccionar el nombre del + fichero cuya actividad quiere observar.
    • + +
    • Filtrar por identificador de la imagen : seleccionar el + identificador de la imagen cuya actividad quiere observar.
    • +
    diff --git a/sources/language/es_ES/help/index.php b/sources/language/es_ES/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/es_ES/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/es_ES/help/maintenance.html b/sources/language/es_ES/help/maintenance.html new file mode 100644 index 0000000..1ec7fca --- /dev/null +++ b/sources/language/es_ES/help/maintenance.html @@ -0,0 +1,51 @@ +

    Mantenimiento

    + +

    Para optimizar el tiempo de generación de las páginas, Piwigo utiliza informaciones en viñeta. Por ejemplo, en lugar de contar el número de elementos contenidos en cada categoría a cada nueva carga de página, esta información es almacenada en la base de datos. Teóricamente, esta información debe siempre estar correcta, pero a veces un error puede sobrevenir y la información en viñeta se vuelve falsa.

    + +

    Informaciones se vuelven inútiles con tiempo. Suprimirlas de la base de datos liberara espacio en el disco.

    + +
      + +
    • + Elementos no atados : + Visualiza las imágenes que no son asociadas con una categoría virtual +
    • +
    • + Ficheros que llevan el mismo nombre en varias categorías físicas : + Visualiza las imágenes o los ficheros que eventualemente podrían estar encontrados en varias categorías. +
    • + +
    + +
      + +
    • Poner al día las informaciones de las categorías: Para cada categoría, las informaciones a controllar y\o poner al día son las siguientes: lista de las categorías madres, número de elementos, fecha del último elemento, la posición entre las categorías hermana, posición en el árbol completo de las categorías. Esta acción también verifica la coherencia de los representantes.
    • + +
    • Poner al día las informaciones de las imágenes: Para cada imagen, las informaciones que hay que poner al día son: camino completo hacia el fichero, la nota media. Atención: No confundir con los méta-datos que son sincronizados sobre la pantalla Administración, Categorías, Sincronizar O sobre la pantalla Modificar las informaciones de una imagen +(accesible desde la página de visualización de una imagen picture.php).
    • + +
    • Reparar y optimizar la base de datos : +Para cada tabla de la base de datos Piwigo efectua operaciones de ré-planificación, de reparación y de optimización. +
    • + +
    + +
      +
    • Vaciar el histórico : +Suprime todas las líneas de la tabla history. La pantalla +Administración, Especiales, histórico no muestrara ninguna información sobre el pasado. Atención: todos los datos estarán perdidos y no existe ningún medio de recuperarlos. +
    • + +
    • Vaciar el sumario del históricoSuprime todas las informaciones recapitulativas (obtenidas a partir del detalle de la peataña histórico).
    • + +
    • Purgar las sesiones: Suprimir las sesiones espiradas..
    • + +
    • Purgar los flujos jamás utilizados de notificación
    • + +
    • Purgar la pestaña histórico de las búsquedas
    • + +
    • Purgar el templates compilado
    • + +
    diff --git a/sources/language/es_ES/help/notification_by_mail.html b/sources/language/es_ES/help/notification_by_mail.html new file mode 100644 index 0000000..03d7848 --- /dev/null +++ b/sources/language/es_ES/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

    Notificación por mail

    + +

    Esta pantalla permite configurar, administrar las notificaciónes a los usuarios de cambios por el envío de un mail.

    + +

    Esta pantalla consta de 3 pestañas:

    + +

    Paramètrage

    +

    Accésible únicamente por el webmestres, esta pestaña permite situar los parámetros de la notificación por mail.

    + +

    Inscripción

    +

    Accésible únicamente por el webmestres, esta pestaña permite administrar las inscripciones / désinscriptions a la notificación por mail.

    + +

    Envío

    +

    Accésible por el webmestres y los administradores, este pestaña permite efectuar los envíos de los mails para notificar los cambios.

    + diff --git a/sources/language/es_ES/help/permalinks.html b/sources/language/es_ES/help/permalinks.html new file mode 100644 index 0000000..fe96ea7 --- /dev/null +++ b/sources/language/es_ES/help/permalinks.html @@ -0,0 +1,7 @@ +

    Lazos permanentes

    + +

    Los lazos permanentes son utilizados para devolver el url de las categorías. Cuando una categoría tiene un lazo permanente asociado, identificándolo de la categoría no es necesario más en el url.

    + +

    Cuando un lazo permanente es borrado, usted puede salvaguardarlo en la pestaña histórico de los lazos permanentes, de modo que los lazos externos tienen PWG todavía funcionan. En la pestaña histórico de los lazos permanentes usted puede ver la fecha de eliminación del lazo, así como la fecha de la última utilización y el número de utilizaciones de este lazo.

    + +

    Por favor, anote que los lazos permanentes deben ser únicos. Deben también ser únicos en la pestaña histórico de los lazos permanentes.

    diff --git a/sources/language/es_ES/help/photos_add_ftp.html b/sources/language/es_ES/help/photos_add_ftp.html new file mode 100644 index 0000000..9bc1dda --- /dev/null +++ b/sources/language/es_ES/help/photos_add_ftp.html @@ -0,0 +1,43 @@ +
    + Guía de inicio rápido +
      +
    1. Crea una nueva carpeta en tu ordenador.
    2. +
    3. Copia las fotos que quieras dentro de esta carpeta, luego redimensiónalas si es preciso para una óptima visualización en la web. Atención: El nombre de las carpetas y de los archivos debe contener sólo letras, números y/o los carácteres "-", "_" y ".". Sin espacios ni caracteres acentuados. Truco: Sustituye los espacios por "_". Ejemplo: Renombra "Cumpleaños de Ana" por "Cumpleaños_de_Ana".
    4. +
    5. Con un cliente FTP, sube la carpeta dentro del directorio "galleries" de tu instalación de Piwigo.
    6. +
    7. Inicia sesión en tu galería y dirígete a Administración y haz click en el botón grande situado en la parte inferior derecha que pone "Sincronización Rápida".
    8. +
    +

    ¡Felicidades! Acabas de crear con éxito el primer álbum de tu galería.

    +
    +
    + Organización de archivos y carpetas +
      +
    • +

      Cada álbum se representa por una carpeta dentro del directorio "galleries". + He aquí un ejemplo del árbol de directorios de una galería muy pequeña (pero + utilizando muchas características):

      +
      +			galleries
      +			|-- boda
      +			|   |-- celebracion
      +			|   |   |-- llegada
      +			|   |   |   |-- paul-solo.jpg
      +			|   |   |   +-- sara-sola.jpg
      +			|   |   +-- salida
      +			|   |       +-- paul-y-sara.jpg
      +			|   +-- fiesta
      +			|       |-- baile001.jpg
      +			|       |-- baile002.jpg
      +			|       +-- baile003.jpg
      +			+-- luna-de-miel
      +				|-- hotel.png
      +				|-- video-desde-el-avion.avi
      +				+-- pwg_representative
      +					+-- video-desde-el-avion.jpg
      +			
      +
    • +
    • A excepción de "pwg_representative" (ver explicaciones debajo), cada subdirectorio de "galleries" genera un álbum. No hay limite de profundidad en cuanto el número de subniveles a crear.
    • +
    • Fundamentalmente, cada elemento es representado por un archivo. Piwigo sólo reconocerá los archivos cuyas extensiones figuren en los parámetros de configuración file_ext (Ver archivo include/config_default.inc.php). Para Piwigo, un archivo de imagen será reconocido como una imagen sólo si su extensión se encuentra dentro de los parámetros de configuración picture_ext.
    • +
    • Los elementos que no son imágenes (vídeos, sonidos, archivos de texto, todo lo que quieras...) son representados de forma predeterminada por iconos que corresponden a la extensión cada archivo. Opcionalmente, puedes asociar una miniatura y un archivo de representación (ver video.avi en el ejemplo anterior).
    • +
    • Una vez todas las fotos estén organizadas y correctamente situadas en sus correspondientes carpetas, ir a Administración » Herramientas » Sincronizar.
    • +
    +
    diff --git a/sources/language/es_ES/help/search.html b/sources/language/es_ES/help/search.html new file mode 100644 index 0000000..052c6eb --- /dev/null +++ b/sources/language/es_ES/help/search.html @@ -0,0 +1,23 @@ +

    Búsqueda

    + +

    Búsqueda de imágenes a través del conjunto de la galería.

    + +
    + +
    Buscar una palabra
    + +
    Búsquar una o varias palabras en todos los atributos atados a las imágenes. Utilizar * como jocker para las búsquedas parciales.
    + +
    Búsqueda de un autor
    + +
    Utilizar * como jocker para las búsquedas parciales.
    + +
    Búsqueda por fecha
    + +
    Seleccionar una fecha y/o una fecha de fin. Dejar la fecha vacía si desea hacer una búsqueda "antes". El año debe escribirse en el último campo en forma de 4 cifras (2005 por ejemplo).
    + +
    Búsqueda en las categorías
    + +
    Seleccionar las categorías sobre las cuales restringir la búsqueda.
    + +
    diff --git a/sources/language/es_ES/help/synchronize.html b/sources/language/es_ES/help/synchronize.html new file mode 100644 index 0000000..709601d --- /dev/null +++ b/sources/language/es_ES/help/synchronize.html @@ -0,0 +1,11 @@ +

    Sincronizar

    + +
      + +
    • Existen 2 tipos de sincronizaciones: estructura y meta-datos. Sincronizar la estructura vuelve a sincronizar su árbol de los repertorios y los ficheros con la representación de la estructura en la base de datos. Sincronizar los méta-datos permite actualizar las informaciones como el peso del fichero, las dimensiones, los datos EXIF o IPTC.
    • + +
    • La primira sincronización a efectuar es la de la estructura
    • + +
    • El proceso de sincronización puede llevar tiempo (en proporción a la carga del servidor y la cantidad de ficheros por administrar), tambien es posible avanzar paso a paso: categoría por categoría.
    • + +
    diff --git a/sources/language/es_ES/help/user_list.html b/sources/language/es_ES/help/user_list.html new file mode 100644 index 0000000..2d88196 --- /dev/null +++ b/sources/language/es_ES/help/user_list.html @@ -0,0 +1,23 @@ +

    Lista usuarios

    + +

    Manipulación de las propiedades de los usuarios registrados. Solo los permisos son administrados en una pantalla diferente.

    + +

    Añadir un usuario

    + +

    El administrador puede añadir manualmente a usuarios.

    + +

    Lista usuarios

    + +

    La lista puede ser filtrada con nombre de usuario (* = mono), con grupo o el estatuto. La lista puede ser ordenada según la fecha de registro o el nombre de usuario, por orden ascendente al descendente.

    + +

    Esta pantalla funciona por modificación de varios usuarios simultáneamente:

    + +
      +
    • suprimir a usuarios (necesita una confirmación)
    • +
    • cambiar el estatuto
    • +
    • asociar o disociar grupos
    • +
    • modificar las propiedades de visualización
    • +
    • modificar las propiedades anexas
    • +
    + +

    El blanco es la lista de los usuarios seleccionados (por defecto) o bien todos los usuarios de la lista filtrada.

    diff --git a/sources/language/es_ES/index.php b/sources/language/es_ES/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/es_ES/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/es_ES/install.lang.php b/sources/language/es_ES/install.lang.php new file mode 100644 index 0000000..84283b4 --- /dev/null +++ b/sources/language/es_ES/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = '¿ Necesidad de ayuda? Plantee su pregunta sobre él foro de Piwigo.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Los visitantes podrán ponerse en contacto con usted por este mail'; +$lang['PHP 5 is required'] = 'PHP 5 requerido'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Aparentemente, la versión PHP de su alojador web es PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo va a tratar de pasar en PHP 5 creando o modificando el fichero .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note que usted mismo puede cambiar la configuración PHP y volver a lanzar Piwigo después.'; +$lang['Try to configure PHP 5'] = 'Trate de configurar PHP 5'; +$lang['Sorry!'] = 'Lo siento!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo no pudo configurar PHP 5.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = 'Usted debe ponerse en contacto con su alojador web con el fin de saber cómo configurar PHP 5'; +$lang['Hope to see you back soon.'] = 'Esperando verle muy pronto...'; +$lang['Congratulations, Piwigo installation is completed'] = 'Félicitation, Piwigo está completamente instalado'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Una solución alternativa es copiar el texto en la zona más abajo and de pegarlo en el fichero "local/config/database.inc.php" (Atención: database.inc.php debe contener sólo lo que se encuentra en la zona, no de regreso a la línea, ningún espacio'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'La creación del fichero de configuración local/config/database.inc.php fue suspendido.'; +$lang['Download the config file'] = 'Descargar el fichero de configuración'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Usted puede descargar el fichero de configuración y carga en el repertorio local/config de su instalación Piwigo.'; +$lang['Just another Piwigo gallery'] = 'Una galería Piwigo más '; +$lang['Welcome to my photo gallery'] = 'Bienvenido a mi galería de fotos'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'No dudes en escribir en nuestros foros para cualquier duda: %s'; +$lang['Welcome to your new installation of Piwigo!'] = '¡Bienvenid@ a la instalación de Piwigo!'; +$lang['localhost or other, supplied by your host provider'] = 'host local o de otro tipo, suministrado por el proveedor de alojamiento'; +?> \ No newline at end of file diff --git a/sources/language/es_ES/iso.txt b/sources/language/es_ES/iso.txt new file mode 100644 index 0000000..41d9764 --- /dev/null +++ b/sources/language/es_ES/iso.txt @@ -0,0 +1 @@ +Español [ES] \ No newline at end of file diff --git a/sources/language/es_ES/upgrade.lang.php b/sources/language/es_ES/upgrade.lang.php new file mode 100644 index 0000000..fba1f4d --- /dev/null +++ b/sources/language/es_ES/upgrade.lang.php @@ -0,0 +1,41 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Por favor, realice una comprobación de mantenimiento en [Administración>Herramientas>Mantenimiento] en caso de detectar algún problema.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaución, se han desactivado los siguientes plugins. Verifique si existen actualizaciones de los mismos antes de reactivarlos:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Sólo un administrador puede lanzar la actualización: por favor, identifíquese a continuación.'; +$lang['You do not have access rights to run upgrade'] = 'No dispone de los permisos suficientes para realizar la actualización.'; +$lang['All sub-albums of private albums become private'] = 'Todos aquellos sub-álbumes pertenecientes a álbumes privados se convertirán en privados'; +$lang['User permissions and group permissions have been erased'] = 'Los permisos de usuarios y grupos han sido eliminados'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Sólo el prefijo de las miniaturas y el email del webmaster han sido guardados por la configuración anterior'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Esta página propone actualizar la base de datos de su antigua versión de Piwigo a la nueva versión. El asistente de actualización detecta que actualmente está ejecutando la versión %s (o equivalente).'; +$lang['In %s, before ?>, insert:'] = 'En %s, antes ?>, insertar:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Como medida de precaución, los siguientes temas han sido desactivados. Compruebe si existe actualizaciones antes de reactivarlos:'; +?> \ No newline at end of file diff --git a/sources/language/et_EE/about.html b/sources/language/et_EE/about.html new file mode 100644 index 0000000..50cc1d6 --- /dev/null +++ b/sources/language/et_EE/about.html @@ -0,0 +1,14 @@ +

    See fotogallerii kasutab Piwigot.

    + +

    Piwigo on lihtne fotogalleriirakendus veebile, mida ehitab ja peab üleval üks tore kasutajate ja arendajate kogukond. Laienduste süsteem teeb Piwigo lihtsalt kohandatavaks. Pealekauba on Piwigo tasuta ja vaba tarkvara.

    + +

    Külasta Piwigo veebilehekülge

    + +

    Eestikeelset tõlget peavad üleval (tähestikulises järjekorras): +

    +Tänusõnad tõlkijatele!

    \ No newline at end of file diff --git a/sources/language/et_EE/admin.lang.php b/sources/language/et_EE/admin.lang.php new file mode 100644 index 0000000..bb85cee --- /dev/null +++ b/sources/language/et_EE/admin.lang.php @@ -0,0 +1,978 @@ +Piwigo for Android
    application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo for Android on programm mis võimaldab sul ühenduda Android telefoni või tahvelarvutiga su Piwigo galleriisse, toimetada albumeid ja laadida üles fotosid.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo for iOS on programm mis võimaldab sul ühenduda iPhone, iPad või iPod Touch-iga su Piwigo galleriisse, toimetada albumeid ja laadida üles fotosid.'; +$lang['A locked gallery is only visible to administrators'] = 'Lukustatud galleriid on ainult nähtavad administraatoritele'; +$lang['A new version of Piwigo is available.'] = 'Piwigo uus versioon on saadaval.'; +$lang['Activate Navigation Bar'] = 'Aktiveeri navigatsiooniriba'; +$lang['Activate Navigation Thumbnails'] = 'Aktiveeri navigeerimiseks pisipildid'; +$lang['Activate comments'] = 'Aktiveeri kommentaarid'; +$lang['Activate icon "%s"'] = 'Aktiveeri ikoon "%s"'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktiveeri ikoon "uus" albumite ja fotode juures'; +$lang['Activate'] = 'Aktiveeri'; +$lang['Active Languages'] = 'Aktiivsed keeled'; +$lang['Active Plugins'] = 'Aktiivsed pluginad'; +$lang['Active Themes'] = 'Aktiivsed teemad'; +$lang['Add New Theme'] = 'Lisa uus teema'; +$lang['Add a virtual album'] = 'Lisa virtuaalne album'; +$lang['Add another set of photos'] = 'Lisa fotode komplekt'; +$lang['Add detailed content'] = 'Lisa detailne sisu'; +$lang['Add group'] = 'Lisa grupp'; +$lang['Add tags'] = 'Lisa märksõnu'; +$lang['Add write access to the "%s" directory'] = 'Lisa kirjutamisõigused kaustale "%s"'; +$lang['Add/delete a permalink'] = 'Lisa või kustuta püsilink'; +$lang['Added by %s'] = 'Lisas %s'; +$lang['Administration Home'] = 'Administreerimine'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom on fotograafia arvutiprogramm, mis on mõeldud haldamaks suuri fotode kogusid ning fotode järeltöötluseks.'; +$lang['Album "%s" has been added'] = 'Lisati album "%s"'; +$lang['Album "%s" now contains %d photos'] = 'Album "%s" sisaldab nüüd %d fotot'; +$lang['Album list management'] = 'Albumite haldamine'; +$lang['Album manual order was saved'] = 'Albumite järjekord salvestati'; +$lang['Album name'] = 'Albumi nimi'; +$lang['Album photos associated to the following albums: %s'] = 'Albumis sisalduvad fotod on seotud veel järgmiste albumitega: %s'; +$lang['Album updated successfully'] = 'Album uuendati'; +$lang['Albums automatically sorted'] = 'Albumeid sorteeritakse automaatselt'; +$lang['All %d photos are selected'] = 'Kõik %d fotod on valitud'; +$lang['All extensions are up to date.'] = 'Kõik laiendused on uuendatud ja ajakohased.'; +$lang['All languages are up to date.'] = 'Kõik keeled on uuendatud ja ajakohased.'; +$lang['All plugins are up to date.'] = 'Kõik pluginad on uuendatud ja ajakohased.'; +$lang['All themes are up to date.'] = 'Kõik teemad on uuendatud ja ajakohased.'; +$lang['Allow rating'] = 'Luba fotode hindamine'; +$lang['Allow user customization'] = 'Luba kasutajatel muuta kujundust'; +$lang['Allow user registration'] = 'Luba kasutajatel registreeruda'; +$lang['Allow users to delete their own comments'] = 'Luba kasutajatel kustutada oma kommentaare'; +$lang['Allow users to edit their own comments'] = 'Luba kasutajatel toimetada oma kommentaare'; +$lang['Allowed file types: %s.'] = 'Lubatud faililaiendid: %s'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'Lahtipakkimisel tekkis viga. Palun vaata üle Piwigo failide kirjutamisõigused.
    Näita logifaili.'; +$lang['An error has occured during upgrade.'] = 'Uuendamisel tekkis viga.'; +$lang['An error occured during extraction (%s).'] = 'Faili lahtipakkimisel tekkis viga (%s).'; +$lang['An information email was sent to group "%s"'] = 'Epost informatsiooniga saadeti grupile "%s"'; +$lang['Anomaly'] = 'Hälve'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Siiski, see kaart on ainult veebimeistritele nähtav, mitte administraatoritele.'; +$lang['Applications'] = 'Rakendused'; +$lang['Apply action'] = 'Rakenda tegevused'; +$lang['Apply selected corrections'] = 'Rakenda valitud parandused'; +$lang['Apply to sub-albums'] = 'Rakenda alam-albumitele'; +$lang['Apply watermark if height is bigger than'] = 'Lisa vesimärk juhul kui foto kõrgus on suurem kui'; +$lang['Apply watermark if width is bigger than'] = 'Lisa vesimärk juhul kui foto laius on suurem kui'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Lahutuse ligilähedane maksimum: %dM pikslit (see on %dx%d pikslit).'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Tahad sa kindlasti paigaldada seda uuendust? Sa pead kinnitama kas see versioon ei vaja eelnevalt kõrvaldamist.'; +$lang['Are you sure you want to delete this plugin?'] = 'Kas sa kindlasti tahad kustutada selle plugina?'; +$lang['Are you sure you want to install this plugin?'] = 'Kas sa kindlasti tahad paigaldada selle plugina?'; +$lang['Associate to album'] = 'Seo albumiga'; +$lang['Associated'] = 'Seotud'; +$lang['Authorize users to add comments on selected albums'] = 'Luba kasutajatel kommenteerida valtiduid albumeid'; +$lang['Authorized'] = 'Lubatud'; +$lang['Automatic correction'] = 'Automaatne parandamine'; +$lang['Automatic sort order'] = 'Automaatne sortimine'; +$lang['By rank'] = 'Hinde järgi'; +$lang['Can\'t connect to server.'] = 'Ei olnud võimalik ühenduda serveriga.'; +$lang['Can\'t create temporary file.'] = 'Ajutise faili loomine ebaõnnestus.'; +$lang['Can\'t download archive.'] = 'Arhiivi ei õnnestunud alla laadida.'; +$lang['Can\'t read or extract archive.'] = 'Arhiivi ei õnnestunud lugeda või lahti pakkida.'; +$lang['Cancel'] = 'Katkesta'; +$lang['Cannot delete the old permalink !'] = 'Polnud võimalik kustutada vana püsilinki'; +$lang['Change Admin Colors'] = 'Vaheta halduse värvid'; +$lang['Check all'] = 'Vali kõik'; +$lang['Check automatic corrections'] = 'Vaata automaatseid parandusi'; +$lang['Check for updates'] = 'Otsi uuendusi'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Versiooni uuenduse otsimine nurjus teadmata põhjustel.'; +$lang['Check for upgrade'] = 'Otsi versiooni uuendust'; +$lang['Check integrity'] = 'Vaata terviklikkust'; +$lang['Choose an action'] = 'Vali tegevus'; +$lang['Choose an option'] = 'Vali valik'; +$lang['Classic display'] = 'Klassikaline kuvamine'; +$lang['Comments for all'] = 'Kommentaarid kõigile'; +$lang['Configuration'] = 'Seadistamine'; +$lang['Confirm merge'] = 'Kinnita kokkusulatamist'; +$lang['Continue processing treatment'] = 'Jätka praegust käsitlust'; +$lang['Correction'] = 'Parandus'; +$lang['Email administrators when a comment is deleted'] = 'Saada epost administraatoritele kommentaari kustutamise puhul'; +$lang['Email administrators when a comment is modified'] = 'Saada epost administraatoritele kommentaari toimetamise puhul'; +$lang['Main "webmaster" user does not exist'] = 'Peamine veebimeister puudub'; +$lang['Main "webmaster" user status is incorrect'] = 'Peamise veebimeistri kasutajaolek on vigane'; +$lang['Notify administrators when a comment is'] = 'Anna administraatoritele teada kui kommentaari'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Veebimeister on sulle ette määranud teadaannete saamise meili teel.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Veebimeister on tühistanud su teadaannete saamise meili peale.'; +$lang['Webmaster cannot be deleted'] = 'Veebimeistrit ei saa kustutada'; +$lang['Webmaster status is required.'] = 'Veebimeistrile on olek nõutav'; +$lang['administrators'] = 'administraatorid'; +$lang['user_status_admin'] = 'Administraator'; +$lang['user_status_webmaster'] = 'Veebimeister'; +$lang['Advanced features'] = 'Täiendatud võimalusi'; +$lang['All optimizations have been successfully completed.'] = 'Kõik optimeeringud on edukalt läbi viidud.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture on üks võimas fototöötlusprogram Macidele.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture on mõeldud professionaalsetele fotograafidele ent iPhoto kasutajasõbralikkusega.'; +$lang['Available on'] = 'Saadaval'; +$lang['Available only with HTML format'] = 'Ainult saadaval HTML vormingus'; +$lang['Available versions for'] = 'Versioonid saadaval'; +$lang['Batch Manager'] = 'Pakktöötluse haldur'; +$lang['Bound Theme'] = 'Bound Theme'; +$lang['By %s'] = 'Autor: %s'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo loob vaikimisi uue, veebile mõeldud suuruses foto kõrge lahutusega versioonist.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Huvikeskpunkt pannakse vaikimisi keset fotot.'; +$lang['Caddie management'] = 'Korvi haldamine'; +$lang['Center of interest'] = 'Huvikeskpunkt'; +$lang['Complementary mail content'] = 'Täiendav meilisisu'; +$lang['Correction applied with error'] = 'Parandust rakendamisel esines viga'; +$lang['Correction applied with success'] = 'Parandati edukalt'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Parandatud anomaaliat ei ignoreerita edaspidi'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Loo kaust "%s" paigaldatud Piwigo juurikasse'; +$lang['Create this site'] = 'Loo gallerii'; +$lang['Create'] = 'Loo'; +$lang['Crop'] = 'Kärbi'; +$lang['Current name'] = 'Praegune nimi'; +$lang['Database synchronization with files'] = 'Andmebaasi sünkroniseerimine failide kaudu'; +$lang['Database'] = 'Andmebaas'; +$lang['Date'] = 'Kuupäev'; +$lang['Day'] = 'Päev'; +$lang['Deactivate all'] = 'Deaktiveeri kõik'; +$lang['Deactivate'] = 'Deaktiveeri'; +$lang['Default comments order'] = 'Kommentaaride vaikimisi järjestus'; +$lang['Default display'] = 'Vaikimisi kuvamine'; +$lang['Default photos order'] = 'Fotode vaikimisi järjestus'; +$lang['Default user cannot be deleted'] = 'Vaikekasutajat ei saa kustutada'; +$lang['Default user does not exist'] = 'Vaikekasutaja ei eksisteeri'; +$lang['Delete Representant'] = 'Kustuta albumi pisipilt'; +$lang['Delete multiple size images'] = 'Kustuta mitmesuuruslike pilte'; +$lang['Delete orphan tags'] = 'Kustuta orvuks jäänud märksõnad'; +$lang['Delete selected photos'] = 'Kustuta valitud fotod'; +$lang['Delete selected tags'] = 'Kustuta valitud märksõnad'; +$lang['Delete selected users'] = 'Kustuta valitud kasutajad'; +$lang['Delete this language'] = 'Kustuta see keel'; +$lang['Delete this theme'] = 'Kustuta see teema'; +$lang['Deleted on'] = 'Kustutatud'; +$lang['Deletions'] = 'Kustutamised'; +$lang['Deny selected groups'] = 'Keela valitud grupid'; +$lang['Deny selected users'] = 'Keela valitud kasutajad'; +$lang['Description'] = 'Kirjeldus'; +$lang['Detailed informations'] = 'Täiendatud informatsioon'; +$lang['Directory does not exist'] = 'Kaust ei eksisteeri'; +$lang['Directory'] = 'Kaust'; +$lang['Discover album:'] = 'Avasta album:'; +$lang['Display options'] = 'Kuvamisvalikud'; +$lang['Dissociate from album'] = 'Eralda sellest albumist'; +$lang['Dissociated'] = 'Eraldatud'; +$lang['Do you want to activate anyway?'] = 'Kas sa tahad selle siiski aktiveerida?'; +$lang['Documentation'] = 'Dokumentatsioon'; +$lang['Does not represent'] = 'Puuduvad pisipildid'; +$lang['Download,'] = 'Laadi alla,'; +$lang['Downloads'] = 'Allalaadimised'; +$lang['Drag to re-order'] = 'Klõpsa ja lohista ümberjärjestamiseks'; +$lang['Drop into album'] = 'Vali album'; +$lang['Dump Database'] = 'Viska andmebaas minema'; +$lang['Duplicate selected tags'] = 'Dubleeri valitud märksõnad'; +$lang['Duplicates'] = 'Duplikaadid'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'VIGA: PLUGIN PUUDUB ENT ON INSTALLITUD! KÕRVALDA SEE KOHE!'; +$lang['ERROR'] = 'VIGA'; +$lang['Edit album permissions'] = 'Toimeta albumi ligipääsuluba'; +$lang['Edit album'] = 'Toimeta albumit'; +$lang['Edit photo information'] = 'Toimeta foto infot'; +$lang['Edit photo'] = 'Toimeta fotot'; +$lang['Edit ranks'] = 'Toimeta hinnanguid'; +$lang['Edit selected tags'] = 'Toimeta valitud märksõnu'; +$lang['Edit tags'] = 'Toimeta märksõnu'; +$lang['Element type'] = 'Elemendi tüüp'; +$lang['Element'] = 'Element'; +$lang['Email admins when a comment requires validation'] = 'Teavita administraatoreid epostiga kui kommentaar vajab kinnitamist'; +$lang['Email admins when a new user registers'] = 'Teavita administraatoreid epostiga kui uus kasutaja registreerus'; +$lang['Email admins when a valid comment is entered'] = 'Teavita administraatoreid epostiga kui kehtiv kommentaar sisestati'; +$lang['Environment'] = 'Keskkond'; +$lang['Error list'] = 'Vigade nimekiri'; +$lang['Error on file "%s" : %s'] = 'Viga faili "%s" puhul : %s'; +$lang['Error when sending email to %s [%s].'] = 'Viga eposti saatmisel saajale %s [%s].'; +$lang['Errors caption'] = 'Vigade seletuskiri'; +$lang['Everybody'] = 'Kõik'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Täitmisaeg lõppes, hooldust peab siiski lõpuni viima [Arvestatud aeg: %d sekundit].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Täitmisaeg lõppes, hooldust peab siiski lõpuni viima [Arvestatud aeg: %d sekundit].'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif laiendus ei ole saadaval, administraator peaks selle kasutamise deaktiveerima'; +$lang['Extend for templates'] = 'Laienda malle'; +$lang['Extensions Update'] = 'Laienduste uuendused'; +$lang['FTP + Synchronization'] = 'FTP + Sünkroniseerimine'; +$lang['Failed to write file to disk'] = 'Faili kirjutamine kettale nurjus'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Võimalusi nagu gallerii kuvamine, albumite loomine ja fotode üles laadimine.'; +$lang['File upload stopped by extension'] = 'Faili üleslaadimine lõpetati laienduse poolt'; +$lang['File/directory read error'] = 'Faili või kausta lugemisviga'; +$lang['File'] = 'Fail'; +$lang['Find a new representant by random'] = 'Vaheta albumi pisipilt juhuslikult valitu vastu'; +$lang['Follow Orientation'] = 'Järgi orientatsiooni'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Järgmised pluginad võib-olla ei ühildu uue Piwigo versiooniga:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Järgmised teemad võib-olla ei ühildu uue Piwigo versiooniga:'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Fotosuurustega, mis nõuavad kärpimist (nagu nt "Ruut"), püüab Piwigo võimalikult hästi arvestada foto huvikeskpunktiga.'; +$lang['Forbid this language to users'] = 'Keela kasutajatel seda keelt kasutada'; +$lang['Forbid this theme to users'] = 'Keela kasutajatel seda teemad kasutada'; +$lang['Forbidden'] = 'Keelatud'; +$lang['Form'] = 'Kuju'; +$lang['GD library is missing'] = 'GD teek on puuduv'; +$lang['GD version'] = 'GD teegi versioon'; +$lang['Gallery title'] = 'Gallerii nimi'; +$lang['Gallery unlocked'] = 'Gallerii lukustamata'; +$lang['General statistics'] = 'Üldine statistika'; +$lang['Generate multiple size images'] = 'Genereeri fotole mitmes suuruses variandid'; +$lang['Get Support on Piwigo Forum'] = 'Leia abi Piwigo foorumist'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Anna kirjutamisõigused (chmod 777) kaustale "%s", mis asub Piwigo juurkataloogis'; +$lang['Go to %s or %s for more informations'] = 'Vaata %s või %s lisa informatsiooni saamiseks'; +$lang['Go to'] = 'Mine'; +$lang['Grant selected groups'] = 'Luba valitud grupidele'; +$lang['Grant selected users'] = 'Luba valitud kasutajatele'; +$lang['Graphics Library'] = 'Graphics Library'; +$lang['Group management'] = 'Grupide haldamine'; +$lang['Group name'] = 'Grupi nimi'; +$lang['Group'] = 'Grupp'; +$lang['Groups and users'] = 'Grupid ja kasutajad'; +$lang['Groups'] = 'Grupid'; +$lang['Guest Settings'] = 'Külalise valikud'; +$lang['Guest cannot be deleted'] = 'Külaliskasutajat ei saa kustutada'; +$lang['Guests'] = 'Külalised'; +$lang['Height'] = 'Kõrgus'; +$lang['Hello,'] = 'Tere tulemast'; +$lang['Hello'] = 'Tere tulemast'; +$lang['Help Me'] = 'Aita mind'; +$lang['Hide'] = 'Peida'; +$lang['High definition enabled'] = 'Kõrge lahutus võimaldatud'; +$lang['High definition'] = 'Kõrge lahutus'; +$lang['high'] = 'kõrge'; +$lang['History'] = 'Ajalugu'; +$lang['Hit'] = 'Tabamus'; +$lang['Hour'] = 'Tund'; +$lang['Hoverbox display'] = 'Hõljukkasti kuvamine'; +$lang['I decide to update anyway'] = 'Ma valin siiski uuendada'; +$lang['IP'] = 'IP'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Juhul kui puudub kõrge lahutusega foto, ja praegune veebile mõeldud suurus (nn veebi-suurus) on suurem kui uus valitud suurus, siis märgib Piwigo suurima foto kui kõrge lahutusega, ja väiksemad, veebile mõeldud versioonid tehakse sellest. (See kõik tähendab lihtsalt, et Piwigo on nutikas.)'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Kui satud probleemi otsa, või sul tekib mõni küsimus, saatke sõnumiga aadressile'; +$lang['Ignore All'] = 'Eira kõike'; +$lang['Ignore selected anomalies'] = 'Eira valitud hälbeid'; +$lang['Ignore this update'] = 'Eira seda uuendust'; +$lang['Image Quality'] = 'Foto kvaliteet'; +$lang['Image id'] = 'Foto id'; +$lang['Images manual order was saved'] = 'Fotode valitud järjestus salvestati'; +$lang['Impossible automatic correction'] = 'Automaatne parandamine ei ole võimalik'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Teemat ei saa aktiveerida, kuna puudub selle üldteema: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Vaikekeelt ei saa deaktiveerida, vali kõigepealt teine vaikekeel.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Viimast ja ainsat keelt ei saa deaktiveerida, vähemalt nõutakse vähemalt üht keelt.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Viimast ja ainsat teemat ei saa deaktiveerida, nõutakse vähemalt üht teemat.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Teemat ei saa kustutada, kuna teised teemad kasutavad seda: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Initsialiseerimisfailis "php.ini" on upload_max_filesize (%sB) suurem kui post_max_size (%sB), sa peaksid muutma need võrdväärseteks'; +$lang['Inactive Languages'] = 'Deaktiveeritud keeled'; +$lang['Inactive Plugins'] = 'Deaktiveeritud pluginad'; +$lang['Inactive Themes'] = 'Deaktiveeritud teemad'; +$lang['Include display of recent photos grouped by dates'] = 'Kuva hiljutisi fotosid kuupäevade kaupa'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Kuva ajalugu (hoiatus: serveri mälulimiit võib ületuda)'; +$lang['Information data registered in database'] = 'Informatsiooniandmed registreeriti andmebaasis'; +$lang['Informations'] = 'Informatsioon'; +$lang['Install on your computer,'] = 'Paigalda su arvutisse,'; +$lang['Installed Languages'] = 'Paigaldatud keeled'; +$lang['Installed Themes'] = 'Paigaldatud teemad'; +$lang['Install'] = 'Paigalda'; +$lang['Instructions to use Piwigo'] = 'Piwigo kasutusjuhendeid'; +$lang['Invert'] = 'Inverteeri'; +$lang['Language has been successfully installed'] = 'Keel on paigaldatud'; +$lang['Languages which need upgrade'] = 'Uuendamist vajavad keeled'; +$lang['Languages'] = 'Keeled'; +$lang['Last hit'] = 'Viimane tabamus'; +$lang['Last import'] = 'Viimane sisestus'; +$lang['Last revisions'] = 'Viimane revisjon'; +$lang['Last send'] = 'Viimati saadetud'; +$lang['Learn more'] = 'Õpi rohkem'; +$lang['Level 0'] = '—'; +$lang['Level 1'] = 'Kontaktid'; +$lang['Level 2'] = 'Sõbrad'; +$lang['Level 4'] = 'Perekond'; +$lang['Level 8'] = 'Administraatorid'; +$lang['Link all album photos to a new album'] = 'Seo kõik albumi fotod uude albumisse'; +$lang['Link all album photos to some existing albums'] = 'Seo kõik albumi fotod teise albumiga'; +$lang['Linked albums'] = 'Seotud albumid'; +$lang['List'] = 'Nimekiri'; +$lang['Local'] = 'Lokaalne'; +$lang['Lock albums'] = 'Lukusta albumid'; +$lang['Lock gallery'] = 'Lukusta gallerii'; +$lang['Locked'] = 'Lukustatud'; +$lang['Lock'] = 'Lukk'; +$lang['Mail address is obligatory for all users'] = 'Eposti aadress on kohustuslik'; +$lang['Mail content'] = 'Eposti sisu'; +$lang['Mail sent to %s [%s].'] = 'Epost saadetud aadressile %s [%s].'; +$lang['Main "guest" user does not exist'] = 'Külaliskasutaja puudub'; +$lang['Main "guest" user status is incorrect'] = 'Külaliskasutaja olek on vigane'; +$lang['Main Page'] = 'Avaleht'; +$lang['Maintenance'] = 'Hooldamine'; +$lang['Make this language available to users'] = 'Tee see keel saadavaks kasutajatele'; +$lang['Make this theme available to users'] = 'Tee see teema saadavaks kasutajatele'; +$lang['Manage Permissions'] = 'Halda pääsuõigusi'; +$lang['Manage authorizations for selected albums'] = 'Halda valitud albumite volitusi'; +$lang['Manage permissions for group "%s"'] = 'Halda grupi "%s" pääsuõigusi'; +$lang['Manage permissions for user "%s"'] = 'Halda kasutaja "%s" pääsuõigusi'; +$lang['Manage photo ranks'] = 'Halda foto hinnanguid'; +$lang['Manage tags'] = 'Halda märksõnu'; +$lang['Manage this set of %d photos'] = 'Halda seda %d foto kogu'; +$lang['Manage'] = 'Halda'; +$lang['Manual order'] = 'Käsijärjestus +'; +$lang['Maximum height'] = 'Maksimum kõrgus'; +$lang['Maximum width'] = 'Maksimum laius'; +$lang['Maximum file size: %sB.'] = 'Maksimum faili suurus: %sB.'; +$lang['Members'] = 'Liikmed'; +$lang['Menu Management'] = 'Menüüd'; +$lang['Merge selected tags'] = 'Liida valitud märksõnad'; +$lang['Merge tags'] = 'Liida märksõnad'; +$lang['Metadata synchronization results'] = 'Metaandmete sünkroniseerimise tulemused'; +$lang['Metadata synchronized from file'] = 'Metaandmed sünkroniseeritud failist'; +$lang['Minimum privacy level'] = 'Madalaim privaatsuse tase'; +$lang['Miscellaneous'] = 'Nipet-näpet'; +$lang['Missing Plugins'] = 'Puuduvad pluginad'; +$lang['Missing a temporary folder'] = 'Puudub ajutiste failide kataloog'; +$lang['Modify information'] = 'Muuda informatsiooni'; +$lang['Month'] = 'Kuu'; +$lang['Move albums'] = 'Liiguta albumeid'; +$lang['Move to album'] = 'Liiguta albumisse'; +$lang['Move'] = 'Liiguta'; +$lang['Multiple Size'] = 'Mitmed suurused'; +$lang['Name of the duplicate'] = 'Duplikaadi nimi'; +$lang['Name'] = 'Nimi'; +$lang['New Version'] = 'Uus versioon'; +$lang['New name'] = 'Uus nimi'; +$lang['New parent album'] = 'Uus kõrgema taseme album'; +$lang['New photos added'] = 'Uusi fotosid lisatud'; +$lang['New photos were added'] = 'Uusi fotosid on lisatud'; +$lang['New tag'] = 'Uus märksõna'; +$lang['No destination tag selected'] = 'Sihtmärksõna puudub'; +$lang['No display'] = 'Kuvamine puudub'; +$lang['No file was uploaded'] = 'Ühtki faili ei laaditud üles'; +$lang['No group is permitted to see this private album'] = 'Ükski grupp ei ole lubatud vaadata seda privaatset albumit'; +$lang['No mail to send.'] = 'Ühtki meili pole saata.'; +$lang['No order field selected'] = 'Järjestuskriteerium on valimata'; +$lang['No photo can be deleted'] = 'Ühtki fotot ei saa kustutada'; +$lang['No photo in the current set.'] = 'Fotod puuduvad valitud kogumikus.'; +$lang['No photo in this album'] = 'Selles albumis pole ühtki fotot'; +$lang['No photo selected, %d photos in current set'] = 'Ühtki fotot pole valitud, selles kogumikus on %d fotot.'; +$lang['No photo selected, no action possible.'] = 'Ühtki fotot pole valitud, ükski tegevus pole võimalik'; +$lang['No results'] = 'Ei leidnud vasteid'; +$lang['No user to send notifications by mail.'] = 'Ühtki kasutajat pole, keda teavitada epostiga.'; +$lang['None'] = 'Mitte ükski'; +$lang['Not cropped correctly?'] = 'Ei kärbitud õigesti?'; +$lang['Notification'] = 'Teatamine'; +$lang['Number of comments per page'] = 'Kommentaaride arv lehekülje kohta'; +$lang['Number of downloads'] = 'Allalaadimiste arv'; +$lang['Number of rates'] = 'Hinnangute arv'; +$lang['Number of thumbnails to create'] = 'Tekitavate pisipiltide arv'; +$lang['Numeric identifier : %d'] = 'ID-number: %d'; +$lang['Obsolete Plugins'] = 'Iganenud pluginad'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'GNU/Linuksi kasutajana, lihtsalt paigalda rakendus Shotwell kasutades paketihaldurit, ning aktiveeri Piwigo avaldamisvõimaluse.'; +$lang['Only private albums are listed'] = 'Ainult privaatsed albumid on loendatud'; +$lang['Opacity'] = 'Läbipaistmatus'; +$lang['Operating system'] = 'operatsioonisüsteem'; +$lang['Optional URL keyword'] = 'Valikulised URL võtmesõnad'; +$lang['Options'] = 'Valikud'; +$lang['Original Size'] = 'Originaal suurus'; +$lang['Original file : %s'] = 'Originaalfail: %s'; +$lang['Original templates'] = 'Originaalmallid'; +$lang['Other plugins'] = 'Teisi pluginaid'; +$lang['Other private albums'] = 'Teisi privaatseid albumeid'; +$lang['Overall'] = 'Ülevaade'; +$lang['Page banner'] = 'Lehekülje päistiitel'; +$lang['Page end'] = 'Lehekülje jalus'; +$lang['Pages seen'] = 'Lehti nähtud'; +$lang['Parameter'] = 'Seadistused'; +$lang['Parameters'] = 'Parameetrid'; +$lang['Parent album'] = 'Kõrgema tasandi album'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Parooli kinnitus puudub. Palun kinnita valitud parool.'; +$lang['Password is missing. Please enter the password.'] = 'Parool puudub. Palun sisesta parool.'; +$lang['Path'] = 'Asukoht'; +$lang['Pending Comments'] = 'Ootel kommentaarid'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Püsilinki "%s" on juba kasutusel albumi "%s" jaoks. Kustuta see püsilinkide ajaloost.'; +$lang['Permalink %s is already used by album %s'] = 'Püsilinki "%s" on juba kasutusel albumi "%s" jaoks'; +$lang['Permalink history'] = 'Püsilinkide ajalugu'; +$lang['Permalink'] = 'Püsilink'; +$lang['Permalinks'] = 'Püsilingid'; +$lang['Permission denied'] = 'Ligipääs keelatud'; +$lang['Permission granted for groups'] = 'Ligipääsuluba antud grupidele'; +$lang['Permission granted for users'] = 'Ligipääsuluba antud kasutajatele'; +$lang['Permission granted thanks to a group'] = 'Ligipääsuluba antud tänu grupile'; +$lang['Permission granted'] = 'ligipääsuluba antud'; +$lang['Permission management'] = 'Ligipääsulubade haldamine'; +$lang['Permissions'] = 'Ligipääsuload'; +$lang['Photo %s of %s'] = 'Foto %d %d-st'; +$lang['Photo Page'] = 'Foto lehekülg'; +$lang['Photo Properties'] = 'Foto omadused'; +$lang['Photo informations updated'] = 'Foto info uuendatud'; +$lang['Photo name'] = 'Foto nimi'; +$lang['Photo sizes with crop'] = 'Foto suurused kärpimisega'; +$lang['Photo unreachable or no support'] = 'Fotole puudub ligipääs või on see toetamata vormingus'; +$lang['Photos generation in progress...'] = 'Fotode genereerimine edenemisel...'; +$lang['Photos'] = 'Fotod'; +$lang['Piwigo Administration'] = 'Piwigo administratsioon'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo teadaannete infoleht'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo avaldamisplugin Lightroomi jaoks'; +$lang['Piwigo Update'] = 'Piwigo uuendus'; +$lang['Piwigo Uploader'] = 'Piwigo üleslaadija'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ei suutnud saada kätte uuendusfaili serverilt'; +$lang['Piwigo configuration'] = 'Piwigo seadistused'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksportimisplugin Aperturele'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksportimisplugin iPhotole'; +$lang['Piwigo for Android'] = 'Piwigo Androidile'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS-ile (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo avaldamisplugin rakendusele Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo avaldamisplugin rakendusele digiKam'; +$lang['Piwigo version'] = 'Piwigo versioon'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Palun vaata kausta "plugins" ja selle alam-kaustade ligipääsulube (CHMOD).'; +$lang['Please wait...'] = 'Palun oota...'; +$lang['Plugin has been successfully copied'] = 'Plugin on edukalt kopeeritud'; +$lang['Private'] = 'Privaatne'; +$lang['Public / Private'] = 'Avalik / Privaatne'; +$lang['Public'] = 'Avalik'; +$lang['Rating by guests'] = 'Külaliste hinnangud'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Taasta vaikeseadistused. Hoiatus! kõik pluginate seadistused taastatakse ka.'; +$lang['Templates configuration has been recorded.'] = 'Malli seadistused on salvestatud'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Kasuta fotode järjestamise vaikeväärtust'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Fotode järjestamise vaikeväärtus pole võimalik siin valida, kuna sul on kohandatud väärtus oma seadistusfailis.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Sa oled valinud $conf[\'order_by\'] su seadistusfailis, see väärtus on iganenud, palun kustuta see või nimeta see ümber väärtuseks $conf[\'order_by_custom\'].'; +$lang['Your configuration settings are saved'] = 'Sinu seadistused on salvestatud'; +$lang['guest'] = 'külaline'; +$lang['user_status_guest'] = 'Külaline'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Külalised peavad logima sisse ja omama õiged ligipääsuload, et kuvada seda albumit'; +$lang['Optimizations have been completed with some errors.'] = 'Optimeeringud on läbiviidud mõne veaga.'; +$lang['Order of menubar items has been updated successfully.'] = 'Menüüde järjestus on muudetud'; +$lang['Plugin list'] = 'Pluginate nimekiri'; +$lang['Plugins which need upgrade'] = 'Uuendatavad pluginad'; +$lang['Plugins'] = 'Pluginad'; +$lang['Position'] = 'Asukoht'; +$lang['Posted %s on %s'] = 'Saadetud %s %s'; +$lang['Predefined filter'] = 'Eelnevalt määratud filter'; +$lang['Preferences'] = 'Eelistused'; +$lang['Privacy level set to "%s"'] = 'Privaatsustase kohandati tasemele "%s"'; +$lang['Privacy level'] = 'Privaatsustase'; +$lang['Properties'] = 'Omadused'; +$lang['Purge compiled templates'] = 'Kõrvalda kompileeritud mallid'; +$lang['Purge history detail'] = 'Kõrvalda ajaloo detailid'; +$lang['Purge history summary'] = 'Kõrvalda ajaloo kokkuvõte'; +$lang['Purge never used notification feeds'] = 'Kõrvalda mitte kunagi kasutatud teatevoogud'; +$lang['Purge search history'] = 'Kõrvalda otsingute ajalugu'; +$lang['Purge sessions'] = 'Kõrvalda seanssid'; +$lang['Quick Local Synchronization'] = 'Kohalik kiirsünkroniseerimine'; +$lang['Random photo'] = 'Juhufoto'; +$lang['Rate date'] = 'Hinnangu kuupäev'; +$lang['Rated %d times, score : %.2f'] = 'Hinnatud %d korda, skoor: %.2f'; +$lang['Rating'] = 'Hinnang'; +$lang['Read Piwigo Documentation'] = 'Loe Piwigo dokumentatsiooni'; +$lang['Refresh photo set'] = 'Uuenda fotokogu'; +$lang['Refresh'] = 'Laadi uuesti'; +$lang['Reinitialize check integrity'] = 'Algväärtusta terviklikkuskontroll'; +$lang['Reject'] = 'Lükka tagasi'; +$lang['Released on'] = 'Väljalastud'; +$lang['Remote'] = 'Kauge'; +$lang['Remove all filters'] = 'Eemalda kõik filtrid'; +$lang['Remove from caddie'] = 'Eemalda korvist'; +$lang['Repair and optimize database'] = 'Paranda ja optimeeri andmebaasi'; +$lang['Replacers (customized templates)'] = 'Asendajaid (kohandatud mallid)'; +$lang['Representant'] = 'Albumi pisipilt'; +$lang['Representation of albums'] = 'Albumi pisipilt'; +$lang['Representative'] = 'Albumi pisipilt'; +$lang['Represents'] = 'Kasutatakse pisipildina järgmistes kohtades'; +$lang['Reset ignored updates'] = 'Algväärtusta uuenduste eiramised'; +$lang['Resize after upload'] = 'Suurenda pärast üleslaadimist'; +$lang['Resize'] = 'Suurenda'; +$lang['Restore'] = 'Taasta'; +$lang['Save Settings'] = 'Salvesta seadistused'; +$lang['Save Template Directory'] = 'Salvesta mallide kaust'; +$lang['Save manual order'] = 'Salvesta käsijärjestus'; +$lang['Save order'] = 'Salvesta järjestus'; +$lang['Save to permalink history'] = 'Salvesta püsilinkide ajalukku'; +$lang['Save visits in history for'] = 'Salvesta külastused ajaloos kuniks'; +$lang['Search for new images in the directories'] = 'Otsi uusi fotosid kaustadest'; +$lang['Searching...'] = 'Otsin...'; +$lang['Section'] = 'Sektsioon'; +$lang['See you soon,'] = 'Nägemiseni!'; +$lang['See you soon.'] = 'Nägemiseni!'; +$lang['Select a file'] = 'Vali fail'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vali huvipunkti asukoht'; +$lang['Select an album'] = 'Vali album'; +$lang['Select at least one album'] = 'Vali vähemalt üks album'; +$lang['Select at least one comment'] = 'Vali vähemalt üks kommentaar'; +$lang['Select at least one photo'] = 'Vali vähemalt üks foto'; +$lang['Select at least one user'] = 'Vali vähemalt üks kasutaja'; +$lang['Select at least two tags for merging'] = 'Vali vähemalt kaks märksõna mida mestida'; +$lang['Select files'] = 'Vali faile'; +$lang['Select groups...'] = 'Vali gruppe...'; +$lang['Select recipients'] = 'Vali saajad'; +$lang['Select the destination tag'] = 'Vali sihtmärksõna'; +$lang['Select users...'] = 'Vali kasutajaid...'; +$lang['Select:'] = 'Vali:'; +$lang['Selection'] = 'Valik'; +$lang['Send an information email to group members'] = 'Saada teavitusepost grupi liikmetele'; +$lang['Send connection settings by email'] = 'Saada ühenduse üksikasjade kirjeldus epostiga'; +$lang['Send mail as'] = 'Saada kui'; +$lang['Send mail on HTML format'] = 'Saada epost HTML-vormingus'; +$lang['Send mail to users'] = 'Saada epost kasutajatele'; +$lang['Send'] = 'Saada'; +$lang['Set as default language for unregistered and new users'] = 'Vali vaikekeeleks külalistele ja uutele kasutajatele'; +$lang['Set as default theme for unregistered and new users'] = 'Vali vaiketeemaks külalistele ja uutele kasutajatele'; +$lang['Set author'] = 'Seadista autor'; +$lang['Set creation date'] = 'Seadista loomise kuupäev'; +$lang['Set title'] = 'Seadista pealkiri'; +$lang['Settings'] = 'Seadistused'; +$lang['Sharpen'] = 'Teravusta'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell on vabatarkvaraline digifoto korraldaja mis jookseb GNU/Linuxi peal. See on vaikekorraldajaks määratud Ubuntu ja Fedora süsteemides.'; +$lang['Show info'] = 'Näita üksikasju'; +$lang['Show menubar'] = 'Näita menüüd'; +$lang['Simulation'] = 'Simuleeri'; +$lang['Site manager'] = 'Saidi administratsioon'; +$lang['Some themes and plugins may be not available yet.'] = 'Mõnda teemat ja pluginat võib-olla puuduvad veel.'; +$lang['Some upgrades are available for extensions.'] = 'Mõnel laiendusel on uuendusi saadaval'; +$lang['Source tag'] = 'Lähtemärksõna'; +$lang['Start Upload'] = 'Alusta üleslaadimine'; +$lang['Start pLoader and add your photos.'] = 'Käivita pLoader ja lisa fotod.'; +$lang['Statistics'] = 'Statistika'; +$lang['Status of user "%s" updated'] = 'Kasutaja "%s" olek uuendati'; +$lang['Status'] = 'Olek'; +$lang['Storage album'] = 'Ladustamisalbum'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Telli Piwigo kuulutuste uudiskiri kasutajale %s'; +$lang['Subscribe %s'] = 'Telli %s'; +$lang['Subscribe to notification by mail'] = 'Telli teavitusi'; +$lang['Subscribe/unsubscribe users'] = 'Esita või tühista tellimus kasutajatele'; +$lang['Subscribed'] = 'Tellitud'; +$lang['Subscribe'] = 'Telli'; +$lang['Sum of rates'] = 'Hinnangute summa'; +$lang['Summary'] = 'Kokkuvõtt'; +$lang['Support'] = 'Tugi'; +$lang['Switch to clear or dark colors for administration'] = 'Vaheta administratsiooni värvid tumedaks või heledaks'; +$lang['Synchronize metadata'] = 'Sünkroniseeri metaandmed'; +$lang['Synchronize'] = 'Sünkroniseerimine'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'SEE PLUGIN ON NÜÜD OSA PÄRIS PIWIGOST, KÕRVALDA SEE KOHE!'; +$lang['Tag "%s" already exists'] = 'Märksõna "%s" on juba olemas'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Märksõna "%s" dubleerib nüüdsest märksõna "%s"'; +$lang['Tag "%s" was added'] = 'Märksõna "%s" lisati'; +$lang['Tag selection'] = 'Märksõnade valimine'; +$lang['Tags %s merged into tag %s'] = 'Märksõnad %s mestiti märksõnadega %s'; +$lang['Templates'] = 'Mallid'; +$lang['The %d following tags were deleted'] = 'Järgmised %d märksõna on kustutatud'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksportimisplugin võimaldab sul luua albumeid ja eksportida fotosid.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo avaldamisplugin võimaldab sul eksportida ja sünkroniseerida fotosid Lightroomist otse su Piwigo galleriisse.'; +$lang['The anomaly will be ignored until next application version'] = 'Hälvet eiratakse kuni järgmise Piwigo versioonini'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Huvikeskpunkt on foto kõige olulisem koht.'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Failile või kaustale ei saada ligi (see kas ei eksisteeri või puuduvad ligipääsuõigused sellele)'; +$lang['The following tag was deleted'] = 'Järgmine märksõna kustutati'; +$lang['The gallery URL is not valid.'] = 'Selline gallerii aadress on vigane.'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Grupi nimi ei saa sisaldada jutumärke ega olla tühi.'; +$lang['The name of an album must not be empty'] = 'Albumi nimi ei saa olla tühi'; +$lang['Orphan tags deleted'] = 'Kasutamata jäänud märksõnad kustutati'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Kaustade ja failide nimetused saavad ainult sisaldada tähti, numbreid ning märke "-", "_" ja "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Kommentaaride arv lehekülje kohta peab jääma 5 ja 50 vahel.'; +$lang['The original image quality must be a number between %d and %d'] = 'Originaalfoto kvaliteedimäärang peab olema number %d ja %d vahel'; +$lang['The original maximum height must be a number between %d and %d'] = 'Originaalfoto suurim kõrgus peab olema number %d ja %d vahel'; +$lang['The original maximum width must be a number between %d and %d'] = 'Originaalfoto suurim laius peab olema number %d ja %d vahel'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Püsilingi nimi saab sisaldada ainult a-z, A-z, 0-9, "-", "_" ja "/". See ei saa olla number ega algada numbriga millele järgneb "-"'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Üleslaaditava faili suurus ületab määratud MAX_FILE_SIZE, mis on antud HTML formularis'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Üleslaaditava faili suurus ületab määratud MAX_FILE_SIZE, mis on antud failis php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Üleslaaditud fail jäi poolikuks'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Üleslaaditava faili suurus ületab määratud POST_FILE_SIZE, mis on antud failis php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Paigaldatud %s versioon [%s] ei ühildu nõutava versiooniga [%s]'; +$lang['The whole page'] = 'Terve lehekülg'; +$lang['The whole set'] = 'Terve kogu'; +$lang['Theme has been successfully installed'] = 'Teema installiti edukalt'; +$lang['Themes which need upgrade'] = 'Uuendamist vajavad teemad'; +$lang['Themes'] = 'Teemasid'; +$lang['There is no available subscribers to mail.'] = 'Pole tellijaid kellele saata teatiseid.'; +$lang['There is no group in this gallery.'] = 'Sel galleriil puuduvad üldse grupid.'; +$lang['There is no other language available.'] = 'Pole teisi keeli saadaval.'; +$lang['There is no other plugin available.'] = 'Pole teisi pluginaid saadaval.'; +$lang['There is no other theme available.'] = 'Pole teisi teemasid saadaval.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Album sisaldab %d fotot, lisatud %s ja %s vahel.'; +$lang['This album contains %d photos, added on %s.'] = 'Album sisaldab %d fotot, lisatud %s.'; +$lang['This album contains no photo.'] = 'Album ei sisalda ühtki fotot.'; +$lang['This is a major update, with new exciting features.'] = 'See on suurem väljalase uute põnevate võimalustega.'; +$lang['This is a minor update, with only bug corrections.'] = 'See uuendus koosneb peamiselt vaid veaparandustest.'; +$lang['This name is already used by another group.'] = 'Teine grupp on juba sama nimega olemas.'; +$lang['This site already exists'] = 'Selline sait on juba olemas'; +$lang['This theme was not designed to be directly activated'] = 'Seda teemat ei saa otse aktiveerida'; +$lang['Thumbnail'] = 'Pisipilt'; +$lang['Thumbnails generation in progress...'] = 'Pisipiltide tekitamine...'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Epostide saatmise aeg on piiratud. Teised epostid jäid saatmata.'; +$lang['Time'] = 'Aeg'; +$lang['Title'] = 'pealkiri'; +$lang['To send ?'] = 'Saada?'; +$lang['To subscribe'] = 'Tellimuse esitamiseks'; +$lang['To unsubscribe'] = 'Tellimuse tühistamiseks'; +$lang['Tools'] = 'Tööriistad'; +$lang['Two updates are available'] = 'Kaks uuendust on saadaval'; +$lang['Type here the author name'] = 'Autori nimi'; +$lang['Type here the title'] = 'Pealkiri'; +$lang['Type in a search term'] = 'Otsisõna'; +$lang['Unable to check for upgrade.'] = 'Uuenduste otsimine nurjus.'; +$lang['Unable to dump database.'] = 'Andmebaasi väljaviskamine nurjus.'; +$lang['Uncheck all'] = 'Tühista valik'; +$lang['Uninstalled Plugins'] = 'Kustutatud pluginad'; +$lang['Uninstall'] = 'Kustuta'; +$lang['Unknown upload error'] = 'Teadmatu viga üleslaadimisel'; +$lang['Unlock gallery'] = 'Lukusta gallerii lahti'; +$lang['Unlocked'] = 'Lukustamata'; +$lang['Unsubscribe from notification by mail'] = 'Tühista teatiste tellimus'; +$lang['Unsubscribed'] = 'Tellimus tühistatud'; +$lang['Update All'] = 'Uuenda kõik'; +$lang['Update Complete'] = 'Uuendus valmis'; +$lang['Update albums informations'] = 'Uuenda albumi infot'; +$lang['Update in progress... Please wait.'] = 'Uuendamine käib... Palun oota.'; +$lang['Update photos information'] = 'Uuenda foto infot'; +$lang['Update to Piwigo %s'] = 'Uuenda Piwigo versioonile %s'; +$lang['Updates'] = 'Uuendused'; +$lang['Upload Photos'] = 'Laadi üles fotosid'; +$lang['Uploaded Photos'] = 'Üleslaaditud fotod'; +$lang['Upload'] = 'Laadi üles'; +$lang['Used metadata'] = 'Kasutatud metaandmeid'; +$lang['User "%s" created with "%s" like password'] = 'Kasutaja "%s" loodud parooliga "%s"'; +$lang['User %s [%s] added.'] = 'Kasutaja %s [%s] lisatud.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Kasutaja %s [%s] lisatud tellijaks.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Kasutajat %s [%s] ei lisatud tellijaks.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Kasutaja %s [%s] tellimust ei tühistatud.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Kasutaja %s [%s] tellimus on tühistatud.'; +$lang['User comments validation'] = 'Kommentaaride kinnitamine'; +$lang['User list'] = 'Kasutajate nimekiri'; +$lang['User status'] = 'Kasutaja olek'; +$lang['User'] = 'Kasutaja'; +$lang['Users'] = 'Kasutajad'; +$lang['Validate'] = 'Kinnita'; +$lang['Validation'] = 'Kinnitamine'; +$lang['Version'] = 'Versioon'; +$lang['Virtual Links'] = 'Virtuaalsed lingid'; +$lang['Virtual album added'] = 'Virtuaalne album lisatud'; +$lang['Virtual album deleted'] = 'Virtuaalne album kustutatud'; +$lang['Virtual album name'] = 'Virtuaalse albumi nimi'; +$lang['Virtual album'] = 'Virtuaalne album'; +$lang['Virtual albums to move'] = 'Virtuaalseid albumeid mida liigutada'; +$lang['Visit Gallery'] = 'Külasta galeriid'; +$lang['Visit Piwigo project website'] = 'Külasta Piwigo projekti lehekülge'; +$lang['Visit language site'] = 'Külasta keelte lehekülge'; +$lang['Visit plugin site'] = 'Külasta pluginate lehekülge'; +$lang['Visit theme site'] = 'Külasta teemade lehekülge'; +$lang['Visited %d times'] = 'Külastatud %d korda'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'NB! See plugin ei paista olevat ühilduv praeguse Piwigo versiooniga.'; +$lang['Waiting'] = 'Ootel'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'NB! tellimuste esitamine ja tühistamine saadab kasutajatele eposti'; +$lang['Watermark'] = 'Vesimärk'; +$lang['Web Form'] = 'Veebiformular'; +$lang['Week starts on'] = 'Nädala esimene päev on'; +$lang['Who can see these photos?'] = 'Kes saab neid fotosid vaadata?'; +$lang['Who can see this photo?'] = 'Kes saab seda fotot vaadata?'; +$lang['Width'] = 'Laius'; +$lang['With blank value, gallery title will be used'] = 'Kui tühi, siis kasutatakse galerii pealkirja'; +$lang['With no album'] = 'Ühegi albumiga'; +$lang['With no tag'] = 'Ühegi märksõnaga'; +$lang['With no virtual album'] = 'Ühegi virtuaalse albumiga'; +$lang['X Position'] = 'X-positsioon'; +$lang['X Repeat'] = 'X-kordumine'; +$lang['Y Position'] = 'Y-positsioon'; +$lang['Year'] = 'Aasta'; +$lang['You are running on development sources, no check possible.'] = 'Sa jooksutad arenduslähtekoodi, kontroll ei ole võimaldatud.'; +$lang['You are running the latest version of Piwigo.'] = 'Sa jooksutad kõige värskeimat Piwigo versiooni.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Sa kasutad brauser-üleslaadijat. Proovi üleslaadija Flash versiooni.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Sa kasutad üleslaadija Flash versiooni. Probleeme? Proovi brauser versiooni.'; +$lang['You can activate only one mobile theme.'] = 'Ainult üks mobiilteema võib korraga olla aktiveeritud.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Sa võid uuendada Piwigo %s otse, ilma uuendamata versioonile %s (see on soovituslik).'; +$lang['You cannot delete your account'] = 'Sa ei saa kustutada seda kontot'; +$lang['You cannot move an album in its own sub album'] = 'Album ei saa asuda selle enda sees'; +$lang['You have %d orphan tags: %s.'] = 'Sul on %d kasutamata jäänud märksõna: %s.'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Sa tellid teavituste saamist epostile.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Sa enam ei telli teavituste saamist epostile.'; +$lang['You might go to plugin list to install and activate it.'] = 'Mine pluginate nimekirjalehele selle paigaldamiseks ja aktiveerimiseks.'; +$lang['You need to confirm deletion'] = 'Sa pead kinnitama kustutuse'; +$lang['Zoom'] = 'Suurendus'; +$lang['[%s] Visit album %s'] = '[%s] külastab albumit %s'; +$lang['[NBM] Problems or questions'] = '[NBM] Probleeme või küsimusi'; +$lang['add a new watermark'] = 'Lisa uus vesimärk'; +$lang['add new photos to caddie'] = 'Lisa fotosid korvisse'; +$lang['added'] = 'lisatud'; +$lang['albums added in the database'] = 'albumid lisatud andmebaasi'; +$lang['albums deleted in the database'] = 'albumid kustutatud andmebaasist'; +$lang['all'] = 'kõik'; +$lang['an error happened'] = 'Viga tekkis'; +$lang['and'] = 'ja'; +$lang['any visitor can see this album'] = 'iga külaline võib vaadata seda albumit'; +$lang['apply automatic sort order'] = 'rakenda automaatset järjestust'; +$lang['associate to group'] = 'seosta rühmaga'; +$lang['automatic order'] = 'automaatne järjestus'; +$lang['average time'] = 'keskmine aeg'; +$lang['between'] = 'vahel'; +$lang['bottom left corner'] = 'alumine vasakpoolne nurk'; +$lang['bottom right corner'] = 'alumine parempoolne nurk'; +$lang['cancel manual order'] = 'ära rakenda automaatset järjestamist'; +$lang['clean'] = 'korista'; +$lang['confirm'] = 'kinnita'; +$lang['create a new album'] = 'loo uus album'; +$lang['create a new site'] = 'loo uus sait'; +$lang['created'] = 'loodud'; +$lang['custom'] = 'Kohandatud'; +$lang['default values'] = 'vaikimisi valikud'; +$lang['default'] = 'vaikimisi valik'; +$lang['delete album'] = 'kustuta album'; +$lang['delete photo'] = 'kustuta foto'; +$lang['delete this site and all its attached elements'] = 'kustuta see sait ja kõik sellega seotud informatsioon'; +$lang['deleted'] = 'kustutatud'; +$lang['delete'] = 'kustuta'; +$lang['directories + files'] = 'kaustad + failid'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'kuva võimalikult palju informatsiooni (lisatud albumid ja fotod, kustutad albumid ja fotod)'; +$lang['display'] = 'kuva'; +$lang['dissociate from group'] = 'eralda rühmast'; +$lang['errors during synchronization'] = 'vigu sünkroniseerimisel'; +$lang['even already synchronized photos'] = 'juba sünkroniseeritud fotod'; +$lang['existing album'] = 'olemas-olev album'; +$lang['first photo added on %s'] = 'esimene foto lisatud %s'; +$lang['for the file format'] = 'failivormingule'; +$lang['for this file format'] = 'selle failivormingule'; +$lang['global mode'] = 'globaalne režiim'; +$lang['group "%s" added'] = 'grupp "%s" lisatud'; +$lang['group "%s" deleted'] = 'grupp "%s" kustutatud'; +$lang['group "%s" updated'] = 'grupp "%s" uuendatud'; +$lang['height must be a number superior to'] = 'kõrgus peab olema suurem kui'; +$lang['hide details'] = 'peida detailid'; +$lang['include child albums'] = 'kaasa alam-albumid'; +$lang['include photos with lower privacy level'] = 'kaasa fotod madalama privaatsustasemega'; +$lang['jump to album'] = 'mine albumisse'; +$lang['jump to photo'] = 'mine fotole'; +$lang['leave'] = 'välju'; +$lang['manage album photos'] = 'halda albumi fotosid'; +$lang['manage sub-albums'] = 'halda alam-albumeid'; +$lang['manual order'] = 'käsitsi järjestamine'; +$lang['middle'] = 'keskmine'; +$lang['modified'] = 'muudatud'; +$lang['new'] = 'uus'; +$lang['no write access'] = 'puudub kirjutamisõigus'; +$lang['none'] = 'puudub'; +$lang['nothing'] = 'ei midagi'; +$lang['number of miniaturized photos'] = 'tekitatud pisipiltide arv'; +$lang['on the %d selected photos'] = '%d-le valitud fotole'; +$lang['on'] = 'nendele'; +$lang['only directories'] = 'ainult kaustasid'; +$lang['only perform a simulation (no change in database will be made)'] = 'ainult simuleeri (midagi ei muudeta andmebaasis)'; +$lang['other'] = 'muu'; +$lang['overrides existing values with empty ones'] = 'tühistab praegused väärtused tühjadega'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader tähendab Piwigo Uploader. pLoader valmistab ette pildid su arvutis ning laadib need ülesse su Piwigo fotogaleriisse.'; +$lang['pending validation'] = 'kinnituse ootel'; +$lang['photos added in the database'] = 'fotosid lisatud andmebaasi'; +$lang['photos candidates for metadata synchronization'] = 'kandideerivad fotod metaandmete sünkroniseerimiseks'; +$lang['photos deleted from the database'] = 'fotosid kustutatud andmebaasist'; +$lang['photos informations synchronized with files metadata'] = 'fotode info sünkroniseeritud failide metaandmetega'; +$lang['photos per page'] = 'fotot ühel leheküljel'; +$lang['photos updated in the database'] = 'fotosid uuendatud andmebaasis'; +$lang['pixels'] = 'piksleid'; +$lang['private'] = 'privaatne'; +$lang['public'] = 'avalik'; +$lang['randomly represented'] = 'albumi juhuslik pisipilt'; +$lang['ranks'] = 'hinnanguid'; +$lang['registered users'] = 'registreeritud kasutajaid'; +$lang['registration date'] = 'registreerimise kuupäev'; +$lang['remove author'] = 'kõrvalda autor'; +$lang['remove creation date'] = 'kõrvalda loomise kuupäev'; +$lang['remove tags'] = 'kõrvalda märksõnad'; +$lang['remove this filter'] = 'kõrvalda filter'; +$lang['remove title'] = 'kõrvalda pealkiri'; +$lang['selection'] = 'valik'; +$lang['set to'] = 'sea selleks'; +$lang['show details'] = 'näita detaile'; +$lang['simple visitors'] = 'lihtsaid külastajaid'; +$lang['singly represented'] = 'fikseeritud albumi pisipilt'; +$lang['status'] = 'olek'; +$lang['sub-albums'] = 'alam-albumid'; +$lang['synchronize files metadata with database photos informations'] = 'Sünkroniseeri andmebaasis olevad fotod failide metaandmetega'; +$lang['synchronize files structure with database'] = 'Sünkroniseeri failistruktuur andmebaasiga'; +$lang['target'] = 'siht'; +$lang['test this remote site'] = 'proovi seda kaug-saiti'; +$lang['test'] = 'test'; +$lang['the forum'] = 'foorum'; +$lang['the wiki'] = 'viki'; +$lang['top left corner'] = 'ülemine vasakpoolne nurk'; +$lang['top right corner'] = 'ülemine parempoolne nurk'; +$lang['total time'] = 'aeg kokku'; +$lang['unit mode'] = 'ühe-režiim'; +$lang['unknown'] = 'tundmatu'; +$lang['unset'] = 'tühista'; +$lang['update the database from files'] = 'uuenda andmebaas failidega'; +$lang['user "%s" added'] = 'kasutaja "%s" lisati'; +$lang['user_status_generic'] = 'Üldine'; +$lang['user_status_normal'] = 'Kasutaja'; +$lang['width must be a number superior to'] = 'laius peab olema suurem kui'; +$lang['wrong filename'] = 'vigane failinimi'; +$lang['Albums authorized thanks to group associations'] = 'Autoriseeritud ligipääs kaustadele kuna oled grupiliige'; +$lang['Landscape'] = 'Maastik'; +$lang['Manage photos'] = 'Halda fotosid'; +$lang['Minimum height'] = 'Miinimum kõrgus'; +$lang['Minimum width'] = 'Miinimum laius'; +$lang['Number of albums per page'] = 'Albumeid lehekülje kohta'; +$lang['Panorama'] = 'Panoraama'; +$lang['Portrait'] = 'Portree'; +$lang['View in gallery'] = 'Vaata galeriis'; +$lang['Ratio'] = 'Suhe'; +$lang['Operation in progress'] = 'Kohandusi viiakse läbi. +'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hoia end Piwigo projektiga kursis! Telli Piwigo teadaannete infolehte. Sulle saadetakse meilile teadaanne kui uus Piwigo väljalase on saadaval (teinekord teavitatakse tähtsatest turvaparandustest) või muu suur sündmus toimub. Ainult paar infolehte aastas.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) on vaba tarkvara litsentsiga (GPL v3) Piwigo klient Android süsteemile.'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Teavitusmeilide saatmise aeg on piiratud. Ainult saadetud kasutajad loetletakse.'; +$lang['reduce to single existing albums'] = 'kahanda ainult olemasolevateks albumiteks'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto on MacOSX-i vaikimisi fotohaldur. Piwigo eksport plugin võimaldab sul luua uusi albumeid ja laadida üles oma fotod otse iPhotost.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam on mõeldud fotograafidele, kes tahavad vaadata, hallata, töödelda, toimetada, parandada, organiseerida ning jagada oma pilte.'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam on vaba tarkvaraline rakendus digipiltide haldamiseks, saadaval nii GNU/Linuxile, Windowsile kui ka MacOSX-ile.'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Uuendamine on soovitatud rakendusest parima saamiseks'; +$lang['Toggle \'default group\' property'] = 'Pööra \'default group\' omadus ümber'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Võimaldada lihtsat eksportimist digiKamist Piwigosse, paigalda laiendused digiKam ja Kipi-plugins.'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Tellijate loetelu on võimalik ainult siis, kui on uusi teavitusi. '; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Asenda originaalšabloonid kohandatud šablooniga (template-extension kaustast)'; +$lang['between %.2f and %.2f'] = '%.2f ja %.2f vahel'; +$lang['between %d and %d pixels'] = '%d ja %d pikslite vahel'; +$lang['This group will be unset to default'] = 'Seda rühma ei kasutata edaspidi vaikerühmana'; +$lang['Type here the name of the new group'] = 'Nimeta uus rühm'; +$lang['Merge selected groups'] = 'Liida valitud rühmad'; +$lang['No group selected, no action possible.'] = 'Ühtegi rühma pole valitud, seega ei saa midagi teha.'; +$lang['No members to manage'] = 'Puudub liikmeid keda hallata'; +$lang['Please select at least two groups'] = 'Vali vähemalt kaks rühma'; +$lang['Rename'] = 'Nimeta ümber'; +$lang['This group will be set to default'] = 'See rühm valitakse vaikerühmaks'; +$lang['Manage the members'] = 'Halda liikmeid'; +$lang['Duplicate'] = 'Tee koopia'; +$lang['Purge user cache'] = 'Tühjenda vahemälu'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Pildi mõõtmed kahanetakse %dx%d piksli peale.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Pildu suuruse muutmine pärast üles laadimist on välja lülitatud, sest kasutusel on GD graafika arhiiv.'; +$lang['Select at least one tag'] = 'Vali vähemalt üks märksõna'; +$lang['Basic settings'] = 'Põhilised seaded'; +$lang['General'] = 'Üldine'; +$lang['Mail theme'] = 'Maili teema'; +$lang['on the %d selected users'] = 'valitud %d kasutajatest'; +$lang['Showing %s to %s of %s users'] = 'Kuvatakse kasutjatest %s kasutajad alates %s kuni %s'; +$lang['Update user'] = 'Uuenda kasutaja'; +$lang['User %s added'] = 'Kasutja %s lisatud'; +$lang['User %s updated'] = 'Ksautaja %s uuendatud'; +$lang['Users modified'] = 'Kasutaja muudetud'; +$lang['%d of %d users selected'] = 'kasutajaid %d kasutajatest %d valitud'; +$lang['(filtered from %s total users)'] = '(filtreeritud %s kasutajatest)'; +$lang['All %d users are selected'] = 'Kõik %d kasutajad on valitud'; +$lang['Change password'] = 'Muuda salasõna'; +$lang['Change username'] = 'Muuda kasutajanime'; +$lang['Last visit on %s, %s.'] = 'Viimane külastus %s, %s.'; +$lang['Loading...'] = 'Laadimine...'; +$lang['No matching user found'] = 'Vastet ei leitud'; +$lang['No user selected of %d users'] = 'Kasutajat ei valitud etteantud %d kasutajatest'; +$lang['No user selected, no action possible.'] = 'Kasutajaid pole valitud, ei saa midagi teha'; +$lang['Password updated'] = 'Parool uuendatud'; +$lang['Registered on %s, %s.'] = 'Registreeritud %s, %s.'; +$lang['Show %s users'] = 'Näita %s kasutajaid'; +$lang['Close user details'] = 'Peida kasutaja üksikasjad'; +$lang['Open user details'] = 'Ava kasutaja üksikasjad'; +$lang['close'] = 'sulge'; +?> \ No newline at end of file diff --git a/sources/language/et_EE/common.lang.php b/sources/language/et_EE/common.lang.php new file mode 100644 index 0000000..9e6b46d --- /dev/null +++ b/sources/language/et_EE/common.lang.php @@ -0,0 +1,444 @@ + \ No newline at end of file diff --git a/sources/language/et_EE/et_EE.jpg b/sources/language/et_EE/et_EE.jpg new file mode 100644 index 0000000..2e55566 Binary files /dev/null and b/sources/language/et_EE/et_EE.jpg differ diff --git a/sources/language/et_EE/help/cat_modify.html b/sources/language/et_EE/help/cat_modify.html new file mode 100755 index 0000000..8afc632 --- /dev/null +++ b/sources/language/et_EE/help/cat_modify.html @@ -0,0 +1,48 @@ +

    Toimeta albumit

    + +

    Informatsioon

    + +
      + +
    • nimi: muuda albumi nime (muuda virtuaalselt, kui on tegemist + füüsilise albumiga).
    • + +
    • kirjeldus: lühike tekst, mis kirjeldab üldjoontes albumi sisu, + see tekst kuvatakse pisipiltide lehe allosas .
    • + +
    + +

    Liigutamine

    + +

    Kui album on virtuaalne, saad seda liigutada. Albumi liigutamine tähendab +tema põhialbumi muutmist.

    + +

    Omadused

    + +
      + +
    • Ligipääsu tüüp: Õiguste määramine. Kui muudad albumi privaatseks, + siis muutuvad ka kõik tema alamalbumid privaatseks. Kui sa muudad + albumi avalikuks, siis selle põhialbum muutub ka avalikuks.
    • + +
    • Lukk: Albumi ja selle alamalbumite ajutine + sulgemine.
    • + +
    • Kommentaarid: Määra albumi kommenteerimise + võimalikkus.
    • + +
    + +

    Neid muutmisi saad teha samuti lehel "Omadused" +(lehed Kommentaarid, Lukk, +Avalik/Privaatne, Kaanepilt on saadaval Administreerimine » Albumid » Omadused).

    + +

    Sorteerimisjärjestus

    + +

    Määra milline on vaikimisi piltide järjestus.

    + +

    Märgi linnuke, kui sama Sorteerimisjärjestus kehtib ka alamalbumitele.

    + diff --git a/sources/language/et_EE/help/cat_move.html b/sources/language/et_EE/help/cat_move.html new file mode 100755 index 0000000..305a779 --- /dev/null +++ b/sources/language/et_EE/help/cat_move.html @@ -0,0 +1,14 @@ +

    Virtuaalsete Albumite liigutamine

    + +

    Ainult virtuaalstel albumitel saab olla uus kõrgema tasandi album.

    + +

    Virtuaalseid albumeid mida liigutada

    + +

    Vali üks või mitu virtuaalset albumit, mida soovid liigutada. +Kui nimekiri on tühi, siis ei ole sa veel ühtegi loonud.

    + +

    Uus kõrgema taseme album

    + +

    Vali uus kõrgema taseme album (virtuaalne või füüsiline). +Kui sa ei vali ühtegi kõrgema taseme albumit, siis valitud albumid liigutatakse juurkausta. +Albumit ei saa liigutada tema enda või mõne tema almkausta sisse.

    \ No newline at end of file diff --git a/sources/language/et_EE/help/cat_options.html b/sources/language/et_EE/help/cat_options.html new file mode 100755 index 0000000..cf32cb4 --- /dev/null +++ b/sources/language/et_EE/help/cat_options.html @@ -0,0 +1,22 @@ +

    Albumi omadused

    + +

    Mitme albumi omaduste muutmine korraga.

    + +
    + +
    Kommentaarid
    +
    Külastajad saavad fotot kommenteerida, kui see asub albumis mille jaoks on kommentaarid lubatud.
    + +
    Lukk
    +
    Lukustatud albumid ei ole nähtavad. Ainult administraatorid näevad neid galeriis.
    + +
    Avalik / privaatne
    +
    Kui album on privaatne, saad määrata ligipääsu valitud kasutajatele või gruppidele
    + +
    Kaanepilt
    +
    See omadus on saadaval, kui asetad konfiguratsiooni sätetesse +allow_random_representative (vaata include/config_defaults.inc.php) +true. Iga albumi kaanepildiks võib olla juhuslik foto albumist või selleks kindlalt määratud foto.
    + +
    \ No newline at end of file diff --git a/sources/language/et_EE/help/cat_perm.html b/sources/language/et_EE/help/cat_perm.html new file mode 100755 index 0000000..42e1e28 --- /dev/null +++ b/sources/language/et_EE/help/cat_perm.html @@ -0,0 +1,14 @@ +

    Albumi volituste haldamine

    + +

    See lehekülhg on nähtav ainult privaatsete albumite puhul. Siin saad määrata +kasutajate ja gruppide ligipääsu albumile.

    + +

    Grupid

    + +

    Sa saad lubada või keelata gruppide ligipääsu konkreetsele albumile. Kasutajad, kes gruppi kuuluvad, +saavad vastavalt loa või keelu näha albumit.

    + +

    Kasutajad

    + +

    Sa saad võimaldada või piirata albumile ligipääsu individuaalselt kasutajale. +Kasutajatele, kellel on luba grupi kaudu, võib seada erandina piirangu.

    \ No newline at end of file diff --git a/sources/language/et_EE/help/configuration.html b/sources/language/et_EE/help/configuration.html new file mode 100755 index 0000000..e885527 --- /dev/null +++ b/sources/language/et_EE/help/configuration.html @@ -0,0 +1,100 @@ +

    Seadistused

    + +

    Sellel leheküljel saab administraator teha põhilisi muudatusi galeriis. Kuigi siin on võimalik muuta lihtsamaid parameetreid, peaks see olema piisav enamusele administraatoritele. Kui soovid näha paljusid teisi (ja edasijõudnumaid) seadistamis parameetreid, vaata vaikimisi seadistuste faili include/config_default.inc.php.

    + +

    Lehekülg on jaotaud erinevateks sektsioonideks, grupeerides seadistusparameetreid teemade järgi.

    + + +

    Peamine

    +
      +
    • Galerii nimi: kasutatakse RSS voos ja teadetes emailile.
    • + +
    • Lehekülje päistiitel: näidatakse iga avaliku lehe päises.
    • + +
    • Galerii URL: kasutatakse RSS voos.
    • + +
    • Lukusta galerii: Lukusta kogu galerii. Ainult administraatori staatuses kasutajad näevad galeriid selle seade puhul.
    • + +
    • Hindamine: Fotode hindamise lubamine.
    • + +
    • Hindamine külastajate poolt: Ka mitteregistreeritud kasutajad saavad pilte hinnata.
    • + +
    • Luba kasutajate registreerimine: Igaüks võib registreeruda.
    • + +
    • Meiliaadress on kohustuslik kõigile kasutajatele: meiliaadressi kontrollitakse registreerumisel või profiili uuendamisel, välja arvatud, kui neid toiminguid tehakse administraatori poolt.
    • + +
    • Saada email administraatorile, kui uus kasutaja registreerub: administraatorid saavad meilile teate igast uuest registreerumisest.
    • + +
    • Fotode vaikimisi järjestus: saad määrata fotode järjekorra nende rippmenüüde abil.
    • + +
    + +

    Ajalugu

    + +

    Külastused lehtedel category.php and picture.php salvestatakse history tabelis.

    + +

    Külastusi näidatakse:Administratsioon » Tööriistad » Ajalugu.

    + +
      +
    • Salvesta lehe külastuste arv külaliste põhiselt: külaliste külastused lehele salvestatakse .
    • + +
    • Salvesta lehe külastuste arv kasutajate põhiselt: registreeritud kasutajate külastused salvestatakse.
    • + +
    • Salvesta lehe külastuste arv administraatorite põhiselt: administraatorite külastused salvestatakse.
    • + +
    + +

    Kommentaarid

    +
      + +
    • Kommentaarid kõigile: Ka mitteregistreeritud kasutajad võivad kommenteerida.
    • + +
    • Kommentaaride arv lehel.
    • + +
    • Kinnitamine: administraator peab kinnitama kommentaarid, enne kui need lehel nähtavaks saavad. Kommentaaride kinnitamine toimub: Administreerimine » Tööriistad » Ootel kommentaarid.
    • + +
    • Teavita admine kui kinnitatud kommentaar on sisestatud: Saadab emaili administraatoreile kui kasutaja sisestab kommentaari mis on kinnitatud.
    • + +
    • Teavita admine kui kommentaar vajab kinnitamist: +Saadab emaili administraatoreile kui kasutaja sisestab kommentaari mis vajab kinnitamist admini poolt. +Kasutajate kommentaaride lubamine toimub lehel: Administreerimine » Tööriistad » Ootel kommentaarid.
    • + +
    + +

    Kuva seadistamine

    + +

    Siin saad muuta millisena näevad kuva külastajad, suvalised kasutajad, kes pole sisse logitud. Pärast sisselogimist, näeb iga kasutaja oma valikute järgi kujundust +(muudetav profiilis).

    + +

    On võimalik muuta kuva valikuid kõigi kasutajate jaoks: Administreerimine » +Kasutajad » Halda lehel, kus saad valida kasutajate nimekirja.

    + +
      + +
    • Language: Apply to Piwigo labels only. Album names, photo names and all descriptions fields are not localized.
    • + +
    • Number of photos per row
    • + +
    • Number of rows per page
    • + +
    • Interface theme
    • + +
    • Recent period: By days. Period during which a photo is shown as new. Must be greater than 1 day.
    • + +
    • Expand all albums: Expand all albums by + default in the menu Warning: this option is resources intensive and may generate a huge menu if your album tree contains many albums.
    • + +
    • Show number of comments: Show the number of comments for each photo on the thumbnails page. Resource intensive.
    • + +
    • Show hits count: Display hits observed on photo just under its thumbnail on the thumbnails page. Only when advanced configuration parameter is:
      + $conf['show_nb_hits'] = true;
      + Notice: false by default.
    • + +
    • Maximum width of the photos: maximum displayed width. Photos larger than this setting will be resized on display. Rather than choosing this option, you might consider modifying the width of your photos; that would be a better practice.
    • + +
    • Maximum height of the photos: Same as for the maximum width setting.
    • + +
    \ No newline at end of file diff --git a/sources/language/et_EE/help/group_list.html b/sources/language/et_EE/help/group_list.html new file mode 100755 index 0000000..d6f3f84 --- /dev/null +++ b/sources/language/et_EE/help/group_list.html @@ -0,0 +1,22 @@ +

    Gruppide nimekiri

    + +

    Siin saab hallata gruppe.

    + +

    Lisa grupp

    + +

    Administraatorid saavad gruppe lisada.

    + +

    Gruppide nimekiri

    + +

    Iaga grupiga saab teha järgnevaid tegevusi:

    + + +
      +
    • minna kasutajate halduse lehele(Administreeri » Kasutajad » Halda)
    • +
    • minna õiguste lehele et lubada või keelata juurdepääsu privaatalbumitele.
    • +
    • kustutada gruppe (vajab kinnitust)
    • +
    • valida vaikeväärtused (vajab kinnitust)
    • +
    + +

    Vaikegrupid

    +

    Vaikegrupid on grupid, mis on automaatselt seotud iga loodud kasutajaga.

    \ No newline at end of file diff --git a/sources/language/et_EE/install.lang.php b/sources/language/et_EE/install.lang.php new file mode 100755 index 0000000..45e9d91 --- /dev/null +++ b/sources/language/et_EE/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Vajad abi? Küsi Piwigo abilauast.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Sa võid teha muudatusi seadistusfailis ja pärast ümberkäivitada Piwigo.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo oskab ise proovida seadistada PHP 5, seadistades selleks .htaccess faili.'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ei suutnud seadistada PHP 5 kasutamist.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Külalised võivad kasutada seda epost-aadressi et ühendust võtta administraatoriga'; +$lang['also given by your host provider'] = 'samuti antud veebimajutuse teenusepakkuja poolt'; +$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'andmebaasi tabelite nimed alustatakse selle eesliitega (see hõlpsustab tabelite korraspidamist samas andmebaasis)'; +$lang['enter a login for webmaster'] = 'sisesta veebimeistri jaoks kasutajanimi'; +$lang['please enter your password again'] = 'palun sisesta parool uuesti'; +$lang['user login given by your host provider'] = 'veebimajutuse kasutajanimi'; +$lang['user password given by your host provider'] = 'veebimajutuse parool'; +$lang['verification'] = 'kinnitamine'; +$lang['webmaster login can\'t contain characters \' or "'] = 'veebimeistri kasutajanimi ei saa sisaldada jutumärke'; +$lang['localhost or other, supplied by your host provider'] = 'localhost või teised, antud teenusepakkuja poolt'; +?> \ No newline at end of file diff --git a/sources/language/et_EE/iso.txt b/sources/language/et_EE/iso.txt new file mode 100644 index 0000000..045562c --- /dev/null +++ b/sources/language/et_EE/iso.txt @@ -0,0 +1 @@ +Estonian [EE] \ No newline at end of file diff --git a/sources/language/et_EE/upgrade.lang.php b/sources/language/et_EE/upgrade.lang.php new file mode 100755 index 0000000..b9c12e6 --- /dev/null +++ b/sources/language/et_EE/upgrade.lang.php @@ -0,0 +1,40 @@ +%s
    , before ?>, insert:'] = 'In %s, before ?>, insert:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Ainult administraatoril on õigus uuendada, logi sisse allpool.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Ainult pisipiltide eesliides ja veebimeistri epostiaadress on eelmistest seadistustest talletatud'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Soorita hoolduskontroll [vt Administreerimine>Tööriistad>Hooldus] juhul kui sa märkad probleemi.'; +$lang['SQL queries'] = 'SQL andmebaasi päring'; +$lang['Statistics'] = 'Statistika'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'On soovitatud uuendada andmebaas Piwigo uuele versioonile. Uuendamisprogrammi abiline arvab et praegu jooksutatakse versiooni %s (või sellele vastavat).'; +$lang['Upgrade from version %s to %s'] = 'Ueenda versioonilt %s versioonile %s'; +$lang['Upgrade informations'] = 'Uuendusest lähemalt'; +$lang['Upgrade'] = 'Uuenda'; +$lang['User permissions and group permissions have been erased'] = 'Kasutajate ja gruppide kasutamisõigused on kustutatud'; +$lang['You do not have access rights to run upgrade'] = 'Sul puudub õigus käivitada uuendust'; +$lang['total SQL time'] = 'SQL aeg kokku'; +$lang['total upgrade time'] = 'uuendamisel kulutatud aeg kokku'; +?> \ No newline at end of file diff --git a/sources/language/fa_IR/about.html b/sources/language/fa_IR/about.html new file mode 100644 index 0000000..cf4e011 --- /dev/null +++ b/sources/language/fa_IR/about.html @@ -0,0 +1,17 @@ +

    اين گالري عکس توسط Piwigo به قدرت رسيده است.

    + +

    Piwigo يک گالري تصوير آنلاين است که براي وب طراحي شده . +Piwigo با کمک عموم ، کاربران و گشترش دهندگان به اين جايگاه رسيده است. +گسترش‌دهنده‌ها(Extensions)ی +Piwigo به راحتي قابل سفارشي کردن گالري شما هستند. +Piwigo يک اسکريپت رايگان و يک پروژه کدباز است.

    + +

    نمايش وب‌سايت پشتيباني Piwigo انگليسي

    + +

    The persian translation is maintained by (in alphabetical order): + +

    +.... Many thanks to you

    diff --git a/sources/language/fa_IR/admin.lang.php b/sources/language/fa_IR/admin.lang.php new file mode 100644 index 0000000..5195bb3 --- /dev/null +++ b/sources/language/fa_IR/admin.lang.php @@ -0,0 +1,979 @@ +Piwigo Uploader
    . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'نرم افزار pLoader یک آپلود کننده ی Piwigo است. pLoader عکس ها را از کامپیوتر شما آماده می کند و آنها را به گالری شما می فرستد.'; +$lang['Guest Settings'] = 'تنظیمات مهمان'; +$lang['Main Page'] = 'صفحه اصلی'; +$lang['Photo Page'] = 'برگه‌ی عکس'; +$lang['Activate Navigation Bar'] = 'فعال کردن نوار هدایتگر'; +$lang['Activate Navigation Thumbnails'] = 'فعال کردن هدایتگر عکس ریزه‌ها'; +$lang['Activate icon "%s"'] = 'فعال کردن آیکن "%s"'; +$lang['Photo Properties'] = 'ویژگی‌های عکس'; +$lang['Allow user customization'] = 'فعال بودن سفارشی کردن برای کاربر'; +$lang['Languages'] = 'زبان‌ها'; +$lang['Installed Languages'] = 'زبان‌های نصب شده'; +$lang['Add New Language'] = 'افزودن زبان تازه'; +$lang['Language has been successfully installed'] = 'زبان با موفقیت نصب شد'; +$lang['Select:'] = 'انتخاب:'; +$lang['None'] = 'هیچکدام'; +$lang['Invert'] = 'معکوس کردن'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'امکان از کار انداختن این زمینه وجود ندارد، شما باید دست کم یک زمینه برای گالری خود داشته باشید.'; +$lang['Webmaster status is required.'] = 'وضعیت مدیرکل ضروری است.'; +$lang['Bound Theme'] = 'محدود کردن زمینه'; +$lang['Allow rating'] = 'فعال بودن امتیازدهی'; +$lang['Select at least one comment'] = 'حداقل یک دیدگاه را انتخاب کنید'; +$lang['Active Plugins'] = 'فعال کردن افزونه‌ها'; +$lang['Inactive Plugins'] = 'افزونه‌های از کار انداخته شده'; +$lang['Missing Plugins'] = 'افزونه‌های گم شده'; +$lang['Uninstalled Plugins'] = 'افزونه های پاک شده'; +$lang['By %s'] = 'بوسیله‌ی %s'; +$lang['Visit plugin site'] = 'نمایش سایت سازنده ی افزونه'; +$lang['Active Languages'] = 'زبان‌های فعال'; +$lang['Delete this language'] = 'پاک کردن این زبان'; +$lang['Forbid this language to users'] = 'اجازه‌ی انتخاب این زبان به کاربران داده نشود'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'امکان از کار انداختن این زبان وجود ندارد، نخست یک زبان دیگر را به عنوان پیشفرض انتخاب نمایید.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'امکان از کار انداختن این زبان وجود ندارد، شما باید دست کم یک زبان برای گالری خود داشته باشید.'; +$lang['Inactive Languages'] = 'زبان‌های از کار انداخته شده'; +$lang['Make this language available to users'] = 'در دسترس قرار دادن این زبان برای کاربران'; +$lang['Set as default language for unregistered and new users'] = 'انتخاب بعنوان زبان پیشفرض برای مهمانان'; +$lang['Add Photos'] = 'افزودن عکس'; +$lang['The following tag was deleted'] = 'برچسب پاک شد'; +$lang['Miscellaneous'] = 'گوناگون'; +$lang['Virtual Links'] = 'پیوند مجازی'; +$lang['There is no other language available.'] = 'هیچ زبان دیگری موجود نیست.'; +$lang['There is no other plugin available.'] = 'هیچ افزونه ی دیگری موجود نیست.'; +$lang['There is no other theme available.'] = 'هیچ قالب دیگری موجود نیست.'; +$lang['Add another set of photos'] = 'افزودن یک ستِ عکس تازه'; +$lang['Order of menubar items has been updated successfully.'] = 'چیدمان آیتم‌های منو با موفقیت به روز شد.'; +$lang['This theme was not designed to be directly activated'] = 'این قالب برای فعال کردن مستقیم طراحی نشده است'; +$lang['Pending Comments'] = 'دیدگاه‌های در انتظار پذیرفته شدن'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'در فایل php.ini شما، مقدار upload_max_filesize (%sB) از post_max_size (%sB) بیشتر است، شما باید این تنظیمات را تغییر دهید.'; +$lang['Exif extension not available, admin should disable exif use'] = 'گسترش دهنده‌ی exif در دسترس نیست، مدیر کل باید exif را از کار بیندازد'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'مقدار فایل قابل آپلود که در فایل php.ini تنظیم شده با نام upload_max_filesize برابر %sB است'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'میزان فایل قابل آپلود بوسیله ی فرم که در فایل php.ini تنظیم شده با نام post_max_size برابر %sB است'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'بیشترین میزان آپلود فایل بوسیله ی فرم HTML که در یک فیلد پنهان در فرم با نام MAX_FILE_SIZE است'; +$lang['The uploaded file was only partially uploaded'] = 'فقط اندکی از فایل آپلود شد'; +$lang['No file was uploaded'] = 'هیچ فایلی آپلود نشد'; +$lang['Missing a temporary folder'] = 'یک مسیر موقت گم شده است'; +$lang['Failed to write file to disk'] = 'نمی‌توان روی دیسک فایلی نوشت'; +$lang['File upload stopped by extension'] = 'آپلود فایل بوسیله‌ی یک گسترش دهنده متوقف شد.'; +$lang['Unknown upload error'] = 'خطای نا معلوم در آپلود'; +$lang['Error on file "%s" : %s'] = 'خطا در فایل "%s": %s'; +$lang['Menu Management'] = 'منوها'; +$lang['automatic order'] = 'مرتب کردن به صورت خودکار'; +$lang['manual order'] = 'مرتب کردن دستی'; +$lang['Albums automatically sorted'] = 'آلبوم‌ها به صورت خودکار چیده شدند'; +$lang['Batch Manager'] = 'مدیریت دسته‌ای'; +$lang['include child albums'] = 'آلبوم ‌های زیرمجموع را نیز ضمیمه کن'; +$lang['Selection'] = 'انتخاب'; +$lang['Action'] = 'کار'; +$lang['Set author'] = 'تنظیم نویسنده'; +$lang['Set title'] = 'تنظیم عنوان'; +$lang['Set creation date'] = 'تنظیم تاریخ ساخت'; +$lang['Apply action'] = 'انجام کار'; +$lang['on the %d selected photos'] = 'بر روی %d تعداد عکس انتخاب شده'; +$lang['%d of %d photos selected'] = '%d عکس از %d عکس انتخاب شد'; +$lang['No photo selected, %d photos in current set'] = 'هیچ عکسی انتخاب نشده است، %d عکس در این سِت وجود دارد.'; +$lang['All %d photos are selected'] = 'همه‌ی %d عکس انتخاب شد'; +$lang['remove this filter'] = 'پاک کردن این فیلتر'; +$lang['Duplicates'] = 'دوتایی‌ها'; +$lang['Add a filter'] = 'افزودن فیلتر'; +$lang['Remove all filters'] = 'پاک کردن همه ی فیلتر ها'; +$lang['Refresh photo set'] = 'تازه کردن (Refresh) سِت عکس ها'; +$lang['The whole page'] = 'تمام صفحه'; +$lang['The whole set'] = 'تمامی عکس ها (کل سِت)'; +$lang['No photo in the current set.'] = 'هیچ عکسی در این سِت نیست.'; +$lang['No photo selected, no action possible.'] = 'هیچ عکسی انتخاب نشده است، هیچ کاری ممکن نیست.'; +$lang['Choose an action'] = 'یک کار را انتخاب کنید'; +$lang['remove author'] = 'پاک کردن نویسنده'; +$lang['Type here the author name'] = 'نام نویسنده را اینجا تایپ نمایید'; +$lang['remove title'] = 'پاک کردن عنوان'; +$lang['Type here the title'] = 'عنوان را اینجا تایپ نمایید'; +$lang['remove creation date'] = 'پاک کردن تاریخ ساخت'; +$lang['Album photos associated to the following albums: %s'] = 'عکس‌های این آلبوم به آلبوم‌های زیر پیوستند: %s'; +$lang['Delete orphan tags'] = 'پاک کردن برچسب‌های بی‌ریشه'; +$lang['delete photo'] = 'پاک کردن عکس'; +$lang['Orphan tags deleted'] = 'برچسب‌های بی‌ریشه پاک شدند'; +$lang['Remove from caddie'] = 'پاک کردن از سبد'; +$lang['Week starts on'] = 'روز آغازین هفته'; +$lang['You have %d orphan tags: %s.'] = 'شما %d برچسب بی ریشه دارید: %s.'; +$lang['Themes which need upgrade'] = 'قالب های نیازمند آپگرید'; +$lang['Languages which need upgrade'] = 'زبان‌های نیازمند آپگرید'; +$lang['All themes are up to date.'] = 'همه‌ی زمینه‌ها به روز می‌باشند.'; +$lang['All plugins are up to date.'] = 'همه‌ی افزونه‌ها به روز می‌باشند.'; +$lang['All languages are up to date.'] = 'تمام زبان‌ها به روز می‌باشند.'; +$lang['Visit theme site'] = 'نمایش سایت سازنده ی قالب'; +$lang['Visit language site'] = 'نمایش سایت سازنده ی زبان'; +$lang['New Version'] = 'نگارش تازه'; +$lang['new'] = 'تازه'; +$lang['No results'] = 'نتیجه‌ای پیدا نشد'; +$lang['Searching...'] = 'در حال جستجو ...'; +$lang['Type in a search term'] = 'عبارت مورد جستجو را اینجا تایپ نمایید'; +$lang['Obsolete Plugins'] = 'افزونه‌های از کار افتاده'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'هشدار! این افزونه به نظر نمی رسد با این نگارش از Piwigo سازگار باشد.'; +$lang['Do you want to activate anyway?'] = 'در هر صورت می‌خواهید فعال کنید؟'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'این افزونه در حال حاضر بخشی از هسته ی PIWIGO می باشد! هرچه سریع تر آن را پاک کنید!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'خطا: این افزونه گم شده است ولی در حالت نصب شده می‌باشد! هرچه زودتر آنرا پاک کنید.'; +$lang['display'] = 'نمایش'; +$lang['Learn more'] = 'بیشتر یاد بگیرید'; +$lang['Rate'] = "امتیاز"; +$lang['Average rate'] = 'میانگین امتیاز'; +$lang['... or '] = '... یا '; +$lang['Add a criteria'] = 'افزودن روش'; +$lang['Add tags'] = 'افزودن برچسب'; +$lang['Add to caddie'] = 'افزودن به سبد'; +$lang['All extensions are up to date.'] = 'تمام گسترش دهندگان به روز می‌باشند.'; +$lang['Create'] = 'ایجاد'; +$lang['Crop'] = 'بریدن'; +$lang['Deactivate all'] = 'از کار انداختن همه'; +$lang['ERROR'] = 'خطا'; +$lang['Extensions Update'] = 'گسترش به روز رسانی‌ها'; +$lang['Height'] = 'بلندا'; +$lang['Ignore All'] = 'چشم پوشی از همه'; +$lang['Ignore this update'] = 'چشم پوشی از این به روز رسانی '; +$lang['Manage Permissions'] = 'مدیریت مجوزها'; +$lang['Merge selected tags'] = 'ترکیب برچسب‌های انتخاب شده'; +$lang['Merge tags'] = 'ترکیب برچسب‌ها'; +$lang['Photo name'] = 'نام عکس'; +$lang['Piwigo Update'] = 'بروز رسانی Piwigo'; +$lang['hide details'] = 'پنهان کردن جزئیات'; +$lang['Select an album'] = 'یک آلبوم را انتخاب کنید'; +$lang['Select at least two tags for merging'] = 'حداقل دو برچسب را برای ادغام انتخاب کنید'; +$lang['Select the destination tag'] = 'انتخاب برچسب مقصد'; +$lang['Show menubar'] = 'نمایش عضو'; +$lang['Start Upload'] = 'آغاز آپلود'; +$lang['Tags %s merged into tag %s'] = 'برچسب %s با برچسب %s ادغام شد'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'نگارش %s [%s] نصب شده با نگارش مورد نیاز ( [%s] ) سازگار نیست'; +$lang['Two updates are available'] = 'دو عدد بروز رسانی آماده می باشند'; +$lang['Unable to dump database.'] = 'سیستم قادر به پاکسازی پایگاه داده نیست.'; +$lang['Update All'] = 'بروز رسانی همه'; +$lang['Update in progress... Please wait.'] = 'بروز رسانی در حال انجام است... شکیبا باشید.'; +$lang['Update to Piwigo %s'] = 'بروز رسانی به نگارش %s از Piwigo'; +$lang['Updates'] = 'بروز رسانی ها'; +$lang['Width'] = 'پهنا'; +$lang['With no album'] = 'بدون آلبوم'; +$lang['With no tag'] = 'بدون برچسب'; +$lang['With no virtual album'] = 'بدون آلبوم مجازی'; +$lang['show details'] = 'نمایش جزئیات'; +$lang['%s has been successfully updated.'] = '%s به درستی به روز رسانی شد.'; +$lang['%s photos can not be regenerated'] = '%s تا عکس قابلیت دوباره تولید شدن را ندارند'; +$lang['%s photos have been regenerated'] = '%s تا عکس دوباره تولید شدند'; +$lang['(this tag will be deleted)'] = '(این برچسب پاک خواهد شد)'; +$lang['A locked gallery is only visible to administrators'] = 'گالریِ قفل شده تنها برای مدیران قابل نمایش است'; +$lang['Activate comments'] = 'فعال کردن دیدگاه‌ها'; +$lang['Allowed file types: %s.'] = 'فرمت‌های مجاز: %s.'; +$lang['An error has occured during upgrade.'] = 'یک خطا هنگام آپگرید رخ داده است.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'بالاترین رزولوشن تقریبی: %dM پیکسل، برابر %dx%d پیکسل.'; +$lang['Available on'] = 'موجود برای'; +$lang['Available versions for'] = 'نگارش‌های موجود برای'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'بطور پیشفرض، Piwigo یک وب سایز تازه از حالت HD عکس شما ایجاد می‌کند.'; +$lang['Cancel'] = 'لغو'; +$lang['Confirm merge'] = 'پذیرش ترکیب'; +$lang['Default comments order'] = 'چیدمان پیشفرض برای دیدگاه‌ها'; +$lang['Default photos order'] = 'چیدمان پیشفرض برای عکس‌ها'; +$lang['Dump Database'] = 'پاکسازی پایگاه داده'; +$lang['Follow Orientation'] = 'دنبال کردن سودار'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'افزونه‌های زیر شاید با نگارش تازه‌ی Piwigo سازگار نباشند:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'زمینه‌های زیر شاید با نگارش تازه‌ی Piwigo سازگار نباشند:'; +$lang['Gallery unlocked'] = 'گالری باز شد'; +$lang['Graphics Library'] = 'کتابخانه‌ی گرافیک'; +$lang['Groups and users'] = 'گروه‌ها و کاربران'; +$lang['I decide to update anyway'] = 'هر طور شده به روز رسانی را انجام بده'; +$lang['Last import'] = 'آخرین واردات'; +$lang['List'] = 'فهرست'; +$lang['Maximum file size: %sB.'] = 'بیشترین حجم فایل: %sB.'; +$lang['Move to album'] = 'جابجایی به آلبوم'; +$lang['No destination tag selected'] = 'هیچ برچسب مقصدی انتخاب نشده است'; +$lang['Notify administrators when a comment is'] = 'مدیران را با خبر کن وقتی یک دیدگاه'; +$lang['Opacity'] = 'وضوح'; +$lang['Original Size'] = 'اندازه‌ی اصلی'; +$lang['Photo %s of %s'] = 'عکس %s از %s'; +$lang['Photos generation in progress...'] = 'عکس ها در حال تولید می باشند...'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo نمی تواند آپگرید های مورد نیاز را از سرور دریافت کند'; +$lang['Predefined filter'] = 'فیلتر از پیش تعریف شده'; +$lang['Reset ignored updates'] = 'بازنشانی بروز رسانی های چشم پوشی شده'; +$lang['Resize after upload'] = 'تغییر اندازه بعد از آپلود'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'بازنشانی تنظیمات پیشفرض. تنظیمات افزونه های شما پاک خواهد شد!'; +$lang['Restore'] = 'بازیابی'; +$lang['Save Template Directory'] = 'ذخیره ی مسیر قالب'; +$lang['Select a file'] = 'انتخاب یک فایل'; +$lang['Select groups...'] = 'انتخاب گروه ها...'; +$lang['Select users...'] = 'انتخاب کاربران...'; +$lang['Send connection settings by email'] = 'فرستادن تنظیمات اتصال با ایمیل'; +$lang['Some themes and plugins may be not available yet.'] = 'در حال حاضر بعضی از قالب ها و افزونه ها ممکن است در دسترس نباشند.'; +$lang['Some upgrades are available for extensions.'] = 'تعدادی آپگرید برای توسعه دهنده ها (Extensions) موجود می باشد.'; +$lang['The original image quality must be a number between %d and %d'] = 'کیفیت اصلی عکس باید عددی بین %d و %d باشد'; +$lang['The original maximum height must be a number between %d and %d'] = 'بیشترین بلندای اصلی عکس باید عددی بین %d و %d باشد'; +$lang['The original maximum width must be a number between %d and %d'] = 'بیشترین پهنای اصلی عکس باید عددی بین %d و %d باشد'; +$lang['This is a minor update, with only bug corrections.'] = 'این یک بروز رسانی کوچک است که در آن چند مشکل امنیتی اصلاح شده است.'; +$lang['Thumbnails generation in progress...'] = 'در حال تولید عکس ریزه...'; +$lang['Unlock gallery'] = 'باز کردن گالری'; +$lang['Update Complete'] = 'بروز رسانی انجام شد'; +$lang['Zoom'] = 'بزرگنمایی'; +$lang['administrators'] = 'مدیرکل'; +$lang['custom'] = 'سفارشی'; +$lang['modified'] = 'ویرایش شد'; +$lang['pending validation'] = 'در انتظار پذیرش است'; +$lang['registered users'] = 'کاربران'; +$lang['simple visitors'] = 'مهمان'; +$lang['Added by %s'] = 'افزوده شده بوسیله‌ی %s'; +$lang['Original file : %s'] = 'فایل اصلی : %s'; +$lang['Posted %s on %s'] = 'فرستاده شده توسط %s در %s'; +$lang['Visited %d times'] = '%s مرتبه نمایش داده شده'; +$lang['Activate icon "new" next to albums and pictures'] = 'فعال کردن آیکن "تازه" در کنار آلبوم‌ها و عکس‌ها'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
    Click here to show log error.'] = 'یک خطا هنگام باز کردن فایل رخ داده است. خواهشمندیم تنظیمات دسترسی نصب خود را بررسی کنید.
    +برای مشاهده‌ی جزئیات خطا اینجا کلیک کنید.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'اگر سایز عکس HD نباشد و اگر وب سایز کنونی بزرگتر از اندازه‌ی پس از تغییر سایز عکس باشد، Piwigo عکس را بعنوان HD جابجا کرده و یک سایز کوچکتر برای آن می‌سازد.'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'داد‌ه‌ی تاریخ شامل شود (هشدار: شاید به حافظه‌ی سرور فشار بیاورد)'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'دریافت Piwigo برای iOS (iPhone, iPad, iPod Touch)'; +$lang['Save visits in history for'] = 'ذخیره کردن بازدید ها برای'; +$lang['This album contains %d photos, added between %s and %s.'] = 'این آلبوم شامل %d عکس می باشد که بین %s و %s اضافه شده اند.'; +$lang['This album contains %d photos, added on %s.'] = 'این آلبوم شامل %d عکس می باشد که در %s اضافه شده اند.'; +$lang['This album contains no photo.'] = 'هیچ عکسی در این آلبوم وجود ندارد.'; +$lang['This is a major update, with new exciting features.'] = 'این یک بروز رسانی مهم است و دارای ویژگی های جالب و تازه می باشد.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'در حال حاضر شما از آپلود کننده ی مرورگر خود استفاده می کنید. می توانید آپلود کننده ی فلش را برای سرعت بیشتر امتحان کنید.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'در حال حاضر شما از آپلود کننده ی فلش استفاده می کنید. اگر مشکلی دارید، می توانید از آپلود کننده ی مرورگر خود استفاده کنید.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'شما میتوانید مستقیم نگارش خود را به %s تغییر دهید، بدون آنکه %s را نصب کنید. (این روش پیشنهاد می شود)'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'شما می توانید ترتیب چیده شدن عکس های خود را به پیشفرض تغییر بدهید، در حال حاضر شما از تنظیمات سفارشی استفاده می کنید.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'شما $conf[\'order_by\'] را برای تنظیمات محلی (Local) خود تعیین کرده اید و این پارامتر در حال حاضر به مشکل برخورده است. خواهشمند است آن را پاک کرده یا نام آنرا به $conf[\'order_by_custom\'] تغییر دهید !'; +$lang['%d day'] = '%d روز'; +$lang['%d days'] = '%d روز'; +$lang['%d hour'] = '%d ساعت'; +$lang['%d hours'] = '%d ساعت'; +$lang['%d minute'] = '%d دقیقه'; +$lang['%d minutes'] = '%d دقیقه'; +$lang['%d month'] = '%d ماه'; +$lang['%d months'] = '%d ماه'; +$lang['%d second'] = '%d ثانیه'; +$lang['%d seconds'] = '%d ثانیه'; +$lang['%d week'] = '%d هفته'; +$lang['%d weeks'] = '%d هفته'; +$lang['%d year'] = '%d سال'; +$lang['%d years'] = '%d سال'; +$lang['%s ago'] = '%d پیش'; +$lang['%s in the future'] = '%s آینده'; +$lang['Applications'] = 'برنامه‌های کاربردی'; +$lang['Apply watermark if height is bigger than'] = 'استفاده از چاپ سپید تنها زمانی که بلندا بیشتر باشد از'; +$lang['Apply watermark if width is bigger than'] = 'استفاده از چاپ سپید تنها زمانی که پهنا بیشتر باشد از'; +$lang['Automatic sort order'] = 'چیدمان خودکار'; +$lang['Edit photo'] = 'ویرایش عکس'; +$lang['Multiple Size'] = 'چند سایزه'; +$lang['Not cropped correctly?'] = 'درست بریده نشد؟'; +$lang['Numeric identifier : %d'] = 'شناسه‌ی عددی: %d'; +$lang['Permission management'] = 'مدیریت دسترسی‌ها'; +$lang['Piwigo for Android'] = 'دریافت Piwigo برای Android'; +$lang['Rated %d times, score : %.2f'] = 'به تعداد %d بار رأی داده شده، امتیاز : %.2f'; +$lang['Save manual order'] = 'ذخیره ی ترتیب دستی'; +$lang['Sharpen'] = 'حالت تیز (Sharpen)'; +$lang['Watermark'] = 'چاپ سپید (Watermark)'; +$lang['Web Form'] = 'حالت ویژه ی وب'; +$lang['X Position'] = 'مکان در محور X'; +$lang['X Repeat'] = 'تعداد تکرار در محور X'; +$lang['Y Position'] = 'مکان در محور Y'; +$lang['You can activate only one mobile theme.'] = 'شما فقط می توانید یک قالب برای موبایل فعال کنید.'; +$lang['add a new watermark'] = 'اضافه کردن یک چاپ سپید تازه'; +$lang['apply automatic sort order'] = 'استفاده از ترتیب خودکار'; +$lang['bottom left corner'] = 'گوشه ی پایین سمت چپ'; +$lang['bottom right corner'] = 'گوشه ی پایین سمت راست'; +$lang['cancel manual order'] = 'لغو تغییرات ترتیب دستی'; +$lang['middle'] = 'وسط'; +$lang['top left corner'] = 'گوشه ی بالا سمت چپ'; +$lang['top right corner'] = 'گوشه ی بالا سمت راست'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'نرم‌افزار Piwigo برای Android به شما قدرت وصل شدن به گالری، ساخت آلبوم و آپلود عکس به کمک موبایل یا تبلت آندرویدتان را می‌دهد.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'نرم‌افزار Piwigo برای iOS به شما قدرت وصل شدن به گالری، ساخت آلبوم و آپلود عکس به کمک iPhone، iPad یا iPod Touch ـتان را می‌دهد.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom یک نرم‌افزار عکاسی می‌باشد که برای مدیریت عکس‌های دیجیتالی بزرگ طراحی شده است.'; +$lang['Center of interest'] = 'نقطه‌ی طلایی (Center of Interest)'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'نرم افزار Shotwell را بر روی لینوکس خود نصب کرده و افزونه‌ی انتشار Piwigo را فعال کنید.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'افزونه ی انتشار Piwigo برای Photoshop Lightroom'; +$lang['Piwigo export plugin for Aperture'] = 'افزونه ی فرستنده ی Piwigo برای Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'افزونه ی فرستنده ی Piwigo برای iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'افزونه ی انتشار Piwigo برای Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'افزونه ی انتشار Piwigo برای digiKam'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell یک نرم افزار متن باز (Open Source) برای سازمان دهی عکس های دیجیتالی می باشد که بر روی سیستم عامل لینوکس قابل اجرا است. همچنین نرم افزار پیشفرض برای مدیریت عکس ها در Ubuntu و Fedora نیر می باشد.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'افزونه ی انتشار Piwigo به شما این امکان را می دهد تا عکس های خود را از Photoshop Lightroom بطور مستقیم همگام سازی کرده و وارد گالری Piwigo خود کنید.'; +$lang['There is no group in this gallery.'] = 'هیچ گروهی در این گالری وجود ندارد.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u تا کاربر دسترسی خودکار پیدا کردند زیرا وابسته به گروهی که دسترسی دارد هستند.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture یک ابزار نیرومند برای بازسازی عکس‌ها و مدیریت کتابخانه‌های فشرده در سیستم عامل Mac می‌باشد.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture برای عکاس‌های حرفه‌ای که از iPhoto استفاده می‌کنند طراحی شده است.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'نقطه‌ی طلایی بطور پیشفرض، در وسط عکس قرار می‌گیرد.'; +$lang['Delete multiple size images'] = 'پاک کردن عکس‌های چند سایزه'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'ویژگی‌هایی ازجمله باز کردن گالری، ساخت آلبوم و آپلود عکس.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'برای عکس‌هایی که بریده شده‌اند، برای نمونه "مربعی"، Piwigo به بهترین حالت ممکن نقطه‌ی طلایی عکس را شناسایی می‌کند.'; +$lang['Generate multiple size images'] = 'درست کردن عکس‌های چند سایزه'; +$lang['No group is permitted to see this private album'] = 'هیچ گروهی اجازه‌ی دیدن این آلبوم خصوصی را ندارد'; +$lang['Permission granted for groups'] = 'اجازه‌ی دسترسی به گروه‌ها داده شد'; +$lang['Permission granted for users'] = 'اجازه‌ی دسترسی به کاربران داده شد'; +$lang['Photo sizes with crop'] = 'سایز عکس برش داده شده'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (سیستم مدیریت گالری از راه دور برای Android) یک سیستم متن باز (Open Source) برای Piwigo می باشد (GPL v3) که بر روی Android قابل اجراست.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'برای انتخاب یک نقطه ی طلایی (Center of Interest) تازه، با موس خود روی منطقه ی دلخواهی از عکس کلیک کنید.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'افزونه ی فرستنده ی Piwigo به شما اجازه ی ساخت آلبوم و فرستادن عکس بر روی گالری را می دهد.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'نقطه ی طلایی (Center of Interest) مهم ترین محدوده ی عکس می باشد.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'برای فرستادن عکس های خود از digiKam به Piwigo، کافیست نرم افزار digiKam و افزونه های Kipi را نصب کنید.'; +$lang['any visitor can see this album'] = 'هر بازدید کننده ای می تواند این آلبوم را ببیند'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam یک نرم افزار رایگان پیشرفته برای مدیریت عکس های دیجیتالی بر روی سیستم عامل های لینوکس، ویندوز و MacOSX می باشد.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam برای عکاس هایی که می خواهند عکس ها را مشاهده، مدیریت، ویرایش و سازمان دهی کنند یا به آنها برچسب بزنند و آنها را به اشتراک بگذارند طراحی شده است.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto نرم افزار مدیریت عکس پیشفرض در سیستم عامل MacOSX می باشد. افزونه ی فرستنده ی Piwigo به شما اجازه ی ساخت آلبوم های تازه و فرستادن عکس ها از iPhone به Piwigo بطور مستقیم را می دهد.'; +$lang['include photos with lower privacy level'] = 'شامل عکس هایی که سطح خصوصی پایینی دارند نیز بشود'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'بازدید کننده ها باید وارد شوند و دسترسی مناسب را داشته باشند تا این آلبوم را ببینند'; +$lang[' and %d virtuals'] = ' و %d مجازی'; +$lang['%d physicals'] = ' %d فیزیکی'; +$lang['create a new site'] = 'ایجاد یک سایت تازه'; +$lang['No order field selected'] = 'هیچ فیلدی برای چیدمان انتخاب نشده است'; +$lang['Duplicate selected tags'] = 'دوتایی کردن برچسب‌های انتخاب شده'; +$lang['Name of the duplicate'] = 'نام پس از دوتایی شدن'; +$lang['Source tag'] = 'برچسب اصلی'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'برچسب "%s" از روی برچسب "%s" دوتایی شد'; +$lang['Landscape'] = 'چشم انداز'; +$lang['Manage photos'] = 'مدیریت عکس‌ها'; +$lang['Minimum height'] = 'کمترین بلندا'; +$lang['Minimum width'] = 'کمترین پهنا'; +$lang['Number of albums per page'] = 'شمار آلبوم‌ها در هر برگه'; +$lang['Panorama'] = 'پانوراما'; +$lang['Portrait'] = 'پرتره'; +$lang['View in gallery'] = 'نمایش در گالری'; +$lang['Duplicate'] = 'دوتایی کردن'; +$lang['Manage the members'] = 'مدیریت کاربران'; +$lang['Merge selected groups'] = 'ترکیب گروه‌های انتخاب شده'; +$lang['No group selected, no action possible.'] = 'گروهی انتخاب نشده است، هیچ کاری انجام نخواهد شد.'; +$lang['No members to manage'] = 'کاربری برای ترکیب وجود ندارد'; +$lang['Please select at least two groups'] = 'دست کم باید دو گروه را انتخاب کنید'; +$lang['Ratio'] = 'نسبت'; +$lang['Rename'] = 'تغییر نام'; +$lang['This group will be set to default'] = 'این گروه در حالت پیشفرض استفاده خواهد شد'; +$lang['This group will be unset to default'] = 'این گروه دیگر در حالت پیشفرض استفاده نخواهد شد'; +$lang['Type here the name of the new group'] = 'نام گروه تازه را اینجا بنویسید'; +$lang['between %.2f and %.2f'] = 'میان %.2f و %.2f'; +$lang['between %d and %d pixels'] = 'میان %d و %d پیکسل'; +$lang['Purge user cache'] = 'پاک کردن مخزن کاربر (کش)'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'اندازه‌ی این عکس به %dx%d پیکسل کاهش خواهد یافت.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'بدلیل استفاده از کتابخانه‌ی گرافیکیِ GD، امکان ویرایش سایز عکس پس از آپلود وجود ندارد.'; +$lang['Select at least one tag'] = 'دست کم باید یک برچسب انتخاب کنید'; +$lang['Basic settings'] = 'تنظیماتِ پایه'; +$lang['General'] = 'همگانی'; +$lang['Mail theme'] = 'زمینه‌ی ایمیل'; +$lang['Loading...'] = 'در حال بارگذاری...'; +$lang['No matching user found'] = 'هیچ کاربر مشابهی پیدا نشد'; +$lang['Password updated'] = 'گذرواژه به روز شد'; +$lang['Update user'] = 'به روز رسانیِ کاربر'; +$lang['Users modified'] = 'کاربر ویرایش شد'; +$lang['on the %d selected users'] = 'تعداد %d كاربر انتخاب شده'; +$lang['close'] = 'بستن'; +$lang['User %s updated'] = 'كاربر %s بروز رساني شد.'; +$lang['User %s added'] = 'كاربر %s اضافه شد.'; +$lang['Showing %s to %s of %s users'] = 'نمايش از %s تا %s از بين %s كاربر'; +$lang['Show %s users'] = 'نمايش %s كاربر'; +$lang['Registered on %s, %s.'] = 'ثبت شده در %s, %s.'; +$lang['Open user details'] = 'باز كردن مشخصات كاربر'; +$lang['No user selected, no action possible.'] = 'هيچ كاربري انتخاب نشده است، هيچ كاري ممكن نيست.'; +$lang['No user selected of %d users'] = 'هيچ كاربري از بين %d كاربر انتخاب نشده است.'; +$lang['Last visit on %s, %s.'] = 'آخرين بازديد در %s, %s.'; +$lang['Close user details'] = 'بستن مشخصات كاربر'; +$lang['Change username'] = 'تغيير نام كاربر'; +$lang['Change password'] = 'تغيير رمز'; +$lang['All %d users are selected'] = 'تمام %d كاربر انتخاب شده اند.'; +$lang['(filtered from %s total users)'] = '(فيلتر شده از بين %s كاربر)'; +$lang['%d of %d users selected'] = 'تعداد %d كاربر از %d كاربران انتخاب شده‌اند.'; +?> \ No newline at end of file diff --git a/sources/language/fa_IR/common.lang.php b/sources/language/fa_IR/common.lang.php new file mode 100644 index 0000000..646648f --- /dev/null +++ b/sources/language/fa_IR/common.lang.php @@ -0,0 +1,428 @@ + \ No newline at end of file diff --git a/sources/language/fa_IR/fa_IR.jpg b/sources/language/fa_IR/fa_IR.jpg new file mode 100644 index 0000000..f1c9046 Binary files /dev/null and b/sources/language/fa_IR/fa_IR.jpg differ diff --git a/sources/language/fa_IR/help/cat_modify.html b/sources/language/fa_IR/help/cat_modify.html new file mode 100755 index 0000000..d679974 --- /dev/null +++ b/sources/language/fa_IR/help/cat_modify.html @@ -0,0 +1,133 @@ +

    استفاده کنید آلبوم + +

    اطلاعات + +
      + +
    • برای نام : تغییر نام آلبوم (تغییر نام مجازی در مورد + از آلبوم فیزیکی ) . + +
    • برای توضیحات : متن های کوتاه به یک ایده کلی از محتوا، + این متن خواهد شد در پایین صفحه ریز عکسها نمایش داده شود. + + + +

      حرکت + +

      اگر آلبوم های مجازی است ، شما می توانید آن را حرکت می کند. حرکت یک آلبوم معنی +تغییر آلبوم پدر و مادر خود . + +گزینه

      + +
        + +
      • در نوع دسترسی : مدیریت و ویرایش . اگر شما به + آلبوم خصوصی ، همه آلبوم کودک خود را خصوصی می شود. اگر شما به + آلبوم عمومی، همه آلبوم پدر و مادر خود را عمومی می شود. + +
      • برای قفل است : این آلبوم و زیر آلبوم خواهد شد + به طور موقت غیر فعال شده است برای تعمیر و نگهداری می شود . + +
      • برای نظرات : اجازه به کاربران برای اظهار نظر از مطالب این + آلبوم + + + +

        شما همچنین می توانید این گزینه بر روی "خواص" مدیریت +صفحه مدیریت ( صفحه نمایش < دهانه +کلاس = " pwgScreen " > نظرات ، قفل ، + عمومی / خصوصی ، < طول +کلاس = " pwgScreen " > نماینده در دسترس از < طول +کلاس = " pwgScreen " > دولت » آلبوم ها» خواص ) + +منظور مرتب سازی بر

        + +

        استفاده از تصاویر پیش فرض مرتب کردن . + +

        نشان دهد که آیا این ترتیب نیز به subalbums اعمال خواهد شد. + +

        معیارهای مرتب سازی خاص با این آلبوم مورد استفاده قرار گیرد را انتخاب کنید. +

          +
        • برای تاریخ ایجاد : عکس تاریخ عکسبرداری است +
        • برای تاریخ نوشته است : تاریخ سنکرون +
        • برای متوسط ​​( * ) : متوسط ​​می تواند توسط رتبه بازدید کننده است تغییر +
        • برای بیشترین بازدید ( * ) < / strong> در این بازدید در حال حاضر ممکن است به منظور بیشترین بازدید را تغییر دهید +
        • برای نام فایل : نام داده شده در زمینه اطلاعات +
        • برای کد : داخلی شناسه ( شاخه ها دارای یک شناسه (شماره) بالاتر از قبلی است + + +

          ( * ) هشدار: مطمئن باشید که برای تست این سفارشات مرتب سازی بر اساس خودتان را به عنوان آنها می توانند نتایج غیر منتظره را + + +

          Representant + +

          نماینده آلبومتصویر بند انگشتی نمایش داده شده در صفحه اصلی ( category.php ) برای نشان دادن است +آلبوم زمانی +آن تنها شامل زیر آلبوم و هیچ عکس مستقیم ( فقط به عنوان آلبوم ریشه ) . +عکس از آلبوم : + +

            + +
          • در عکس : یکی از دکمه های اکشن به شما اجازه تنظیم عکس در حال حاضر به عنوان نماینده برای + آلبوم نمایش داده می شود . این دکمه موجود است فقط برای مدیران است . + +
          • در اصلاح در مورد عکس در + دولت . این صفحه نمایش را می توان از < طول رسیده است + کلاس = " pwgScreen " > picture.php یا + مدیریت در حالت واحد را . مشاهده کمک این صفحه نمایش برای + جزئیات . + +
          • در دولت » آلبوم ها» خواص ، + نماینده . به کمک این صفحه نمایش برای جزئیات بیشتر را مشاهده کنید. + +
          • در ویرایش آلبوم ( روی صفحه نمایش در حال حاضر ) . + + + +

            انتخاب یک نماینده بستگی به +به allow_random_representative و پارامتر پیکربندی (نگاه کنید به < دهانه +کلاس = "نام فایل " > شامل / config_default.inc.php ) + +

            در حالت پیش فرض ( به allow_random_representative و مجموعه را به غلط ) ، +هر آلبوم شامل حداقل یک عنصر است که توسط یک ثابت نشان داده شده است +عنصر . هنگامی که ( در ایجاد آلبوم ) تعیین می کنند، نماینده فقط تغییر +زمانی که یک مدیر از آنها بخواهید برای آن . اگر نماینده مناسب نیست، +شما می توانید بپرسید تا یافتنrepresentant جدید تصادفی + +

            اگر به allow_random_representative و پارامتر پیکربندی است +درست تنظیم کنید ، یک دسته شامل عکس ها ممکن است ثابت +representant . فقط حذف representant دکمه استفاده کنید. + +

            اگر این آلبوم فقط شامل زیر آلبوم و هیچ عکس، آن را می توانید با این وجود توسط هر تشکر عنصر نشان داده شده به اصلاح +اطلاعات در مورد یک عکس صفحه نمایش. تنها گزینه بر روی صفحه نمایش فعلی +است حذف representant است را فشار دهید. + +

            لینک تمام عکس های آلبوم به آلبوم + +
              + +
            • برای نام آلبوم مجازی است : نام آلبوم جدید را ایجاد ، +تمام عکس های از رده فعلی خواهد شد به یکی از جدید مرتبط است. + +
            • برای آلبوم مرجع است : از کجا آلبوم جدید خواهد بود ، +خالی برای ایجاد آن را در ریشه را ترک کنند. + + + +

              لینک تمام عکس های آلبوم به آلبوم های موجود + +
                + +
              • برای آلبوم ها : . را انتخاب کنید آلبوم مقصد است + + + +

                ارسال یک ایمیل به اطلاعات را به اعضای گروه + +
                  + +
                • برای گروه < / strong> در گروه دریافت کننده است + +
                • برای محتوای ایمیل است : متن رایگان برای ارسال به آنها را + + \ No newline at end of file diff --git a/sources/language/fa_IR/help/cat_move.html b/sources/language/fa_IR/help/cat_move.html new file mode 100755 index 0000000..c36b48a --- /dev/null +++ b/sources/language/fa_IR/help/cat_move.html @@ -0,0 +1,14 @@ +

                  استفاده از حرکت به آلبوم مجازی + +

                  تنها در آلبوم های مجازی می توانید یک آلبوم والدین جدید داشته باشد. + +

                  حرکت آلبوم مجازی + +

                  یک یا چند آلبوم مجازی که می خواهید برای حرکت انتخاب کنید. +اگر لیست خالی است، که منظور شما ایجاد یک نشده است. + +

                  جدید آلبوم والدین + +

                  آلبوم والدین جدید (مجازی یا فیزیکی) را انتخاب کنید. +اگر شما هر پدر و مادر را انتخاب کنید، در آلبوم های مجازی انتخاب خواهد شد به ریشه منتقل شد. + \ No newline at end of file diff --git a/sources/language/fa_IR/help/cat_options.html b/sources/language/fa_IR/help/cat_options.html new file mode 100755 index 0000000..9c2874d --- /dev/null +++ b/sources/language/fa_IR/help/cat_options.html @@ -0,0 +1,22 @@ +

                  استفاده از حرکت به آلبوم مجازی

                  استفاده گزینه های آلبوم + +مدیریت گزینه

                  برای چندین آلبوم در یک بار. + +

                  + +
                  نظرات +
                  یک عکس می تواند نظر از بازدید کنندگان خود را دریافت خواهید کرد اگر آن را به یک آلبوم با نظر فعال شده تعلق دارد. + +
                  قفل +آلبوم
                  قفل شده غیر فعال برای تعمیر و نگهداری می باشد. فقط مدیران می توانید آنها را در گالری ببینید. + +
                  عمومی / خصوصی +
                  آغاز هنگامی که یک آلبوم تبدیل خصوصی، دادن حقوق دسترسی به کاربران و گروه های + +
                  نماینده +
                  آغاز این گزینه در دسترس است هنگامی که شما تنظیمات پیکربندی +به allow_random_representative و (نگاه کنید به <دهانه +class = filename"> شامل / config_defaults.inc.php ) به +را واقعی . هر آلبوم را می توان با یک عکس به صورت تصادفی و یا یک عکس انتخاب به عنوان نماینده منحصر به فرد ارائه شده است. + + \ No newline at end of file diff --git a/sources/language/fa_IR/help/help_add_photos.html b/sources/language/fa_IR/help/help_add_photos.html new file mode 100755 index 0000000..c6aa4d3 --- /dev/null +++ b/sources/language/fa_IR/help/help_add_photos.html @@ -0,0 +1,21 @@ +

                  چند روش برای افزودن عکس هایتان به گالری:

                  + +
                    +
                  • آپلود مستقیم به کمک مرورگر خود ساده ترین و سریع ترین راه ممکن است. این روش به سرعت اینترنت شما و قابلیت های مرورگرتان بستگی دارد. اگر می خواهید تعداد خیلی زیادی عکس آپلود کنید و یا اگر در این روش به مشکلی برخوردید، روش های دیگری نیز برای آپلود عکس موجود است!
                  • +
                  + + + +
                    +
                  • استفاده از نرم افزار pLoader، که بر روی کامپیوتر شخصی شما قابل نصب می باشد. عکس های خود را به داخل پنجره ی pLoader بکشید، و روی دکمه ی "Upload to Piwigo" کلیک کنید و بقیه ی کار ها را به pLoader بسپارید. شما همچنین می توانید از نرم افزار های دیگری از جمله WinToPiwigo و یا افزونه ی فرستنده ی Digikam به Piwigo استفاده کنید.
                  • +
                  + + + +
                  +
                    +
                  • آپلود بوسیله ی FTP بهترین روش ممکن برای آپلود تعداد بسیار زیادی عکس فقط با چند کلیک می باشد و بیشتر از دیگر روش ها پیشنهاد می شود. با استفاده از راهنمایی ها از این روش بهترین استفاده را بکنید. استفاده از این روش به شما اجازه ی کنترل کامل بر تمام عکس های آپلود شده را می دهد.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/fa_IR/help/help_groups.html b/sources/language/fa_IR/help/help_groups.html new file mode 100755 index 0000000..0f0b68d --- /dev/null +++ b/sources/language/fa_IR/help/help_groups.html @@ -0,0 +1,5 @@ +

                  گروه بندی یک راه مناسب برای تنظیم کردن دسترسی برای لیستی از کاربران می باشد.

                  + +

                  به مسیر صفحه مدیریت » کاربران » گروه ها رفته و گروهی بسازید و از مسیر صفحه مدیریت » کاربران » مدیریت تعدادی کاربر را عضو این گروه بکنید.

                  + +

                  هر کاربر می تواند بطور همزمان عضو چند گروه باشد. دقت کنید که مجوز های داده شده بر تحریم های گذاشته شده روی کاربران مقدم می باشند : اگر کاربری با نام "کوروش" عضو گروه "خانواده" و همچنین گروه "دوستان" باشد، و فقط گروه "خانواده" اجازه ی دیدن آلبومی با نام "سال نو" را داشته باشد و گروه "دوستان" این اجازه را نداشته باشد، "کوروش" نیز اجازه ی دیدن آلبوم "سال نو" را خواهد داشت.

                  \ No newline at end of file diff --git a/sources/language/fa_IR/help/help_misc.html b/sources/language/fa_IR/help/help_misc.html new file mode 100755 index 0000000..bfe7698 --- /dev/null +++ b/sources/language/fa_IR/help/help_misc.html @@ -0,0 +1,9 @@ +

                  زمانی که شما گالری خود را می سازید می توانید آن را برای بازدید کنندگان پیکربندی کنید +

                    +
                  • نمایش پیشفرض گالری را می توانید از مسیر صفحه مدیریت » پیکربندی » گزینه ها و قسمت تنظیمات مهمان تغییر دهید
                  • +
                  • قالب پیشفرض گالری را می توانید از مسیر صفحه مدیریت » پیکربندی » قالب ها تغییر دهید
                  • +
                  • زبان پیشفرض گالری را می توانید از مسیر صفحه مدیریت » پیکربندی » زبان ها تغییر دهید
                  • +
                  + بطور پیشفرض، هر کاربری که در گالری شما نام نویسی کند گالری را با تنظیمات بالا خواهد دید. +

                  +

                  اگر هرگونه پرسشی داشتید، گروه Piwigo در انجمن Piwigo پاسخ شما را خواهد داد.

                  \ No newline at end of file diff --git a/sources/language/fa_IR/help/index.php b/sources/language/fa_IR/help/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/language/fa_IR/help/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/language/fa_IR/help/user_list.html b/sources/language/fa_IR/help/user_list.html new file mode 100755 index 0000000..7f71848 --- /dev/null +++ b/sources/language/fa_IR/help/user_list.html @@ -0,0 +1,23 @@ +

                  لیست کاربران

                  + +

                  اینجا جاییست که شما کاربران گالری خود را مدیریت می کنید.

                  + +

                  افزودن یک کاربر

                  + +

                  یک مدیر می تواند بطور دستی کاربر تازه ایجاد کند. برای هر کاربر یک نام کاربری، یک گذرواژه و یک ایمیل معتبر ثبت نماید.

                  + +

                  لیست کاربران

                  + +

                  The list of existing users can be filtered on username (use * as wildcard), group or status. It can be ordered by registration date or username, in ascending or descending order.

                  + +

                  این صفحه به شما امکان مدیریت و انجام کار های زیر را بر روی چند کاربر بطور همزمان می دهد:

                  + +
                    +
                  • پاک کردن کاربران (نیازمند تأیید)
                  • +
                  • تغییر وضعیت کاربران
                  • +
                  • associate or dissociate from groups
                  • +
                  • modify display properties
                  • +
                  • modify additional preferences
                  • +
                  + +

                  The target is the selected user (by default) or all users as displayed in the filtered list.

                  \ No newline at end of file diff --git a/sources/language/fa_IR/index.php b/sources/language/fa_IR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/fa_IR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/fa_IR/install.lang.php b/sources/language/fa_IR/install.lang.php new file mode 100644 index 0000000..26f0aeb --- /dev/null +++ b/sources/language/fa_IR/install.lang.php @@ -0,0 +1,69 @@ +Piwigo message board.'] = 'به کمک نیاز دارید ؟ پرسش خود را در تالارهای پشتیبانی Piwigo مطرح نمایید.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'بازدیدکنندگان می توانند بوسیله ی این ایمیل با مدیرکل ارتباط برقرار کنند'; +$lang['PHP 5 is required'] = 'نگارش پنجم PHP لازم است'; +$lang['It appears your webhost is currently running PHP %s.'] = 'به نظر می رسد هاست شما دارای نگارش PHP %s باشد.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo می‌تواند تنظیمات PHP شما را با ایجاد یا ویرایش یک فایل .htaccess به PHP 5 تغییر دهد.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'شما می توانید خودتان تنظیمات را تغییر دهید و Piwigo را دوباره راه اندازی کنید.'; +$lang['Try to configure PHP 5'] = 'در حال تنظیم PHP 5'; +$lang['Sorry!'] = "شرمنده!"; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo قادر به پیکربندی PHP 5 نیست.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'شما باید با سرویس دهنده ی هاست خود تماس گرفته و از آنها بپرسید که چگونه می توانید تنظیمات خود را به PHP 5 تغییر دهید.'; +$lang['Hope to see you back soon.'] = 'به امید دیدار دوباره ی شما.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Piwigo با موفقیت نصب شد'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'یک راه دیگر این است که شما متن بالا را کپی کنید و بدون اضافه یا کم کردن حتی یک حرف ،آن را در آدرس : "local/config/database.inc.php" قرار دهید'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'ایجاد فایل local/config/database.inc.php با مشکل مواجه شد.'; +$lang['Download the config file'] = 'دانلود فایل پیکربندی (Config)'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'شما می توانید فایل پیکربندی را دانلود کنید و آن را در مسیر local/config در محلی که گالری را نصب کردید آپلود کنید.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'هر مشکلی که داشتید را در انجمن مطرح کنید: %s'; +$lang['Just another Piwigo gallery'] = 'یک گالری دیگر با Piwigo'; +$lang['Password ']['confirm'] = 'تأیید گذرواژه'; +$lang['Welcome to my photo gallery'] = 'به گالری عکس من خوش آمدید'; +$lang['Welcome to your new installation of Piwigo!'] = 'به گالری Piwigo ی خود خوش آمدید!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost یا ادرس دیگر ، این را باید از هاست دریافت نمایید(در حالت معمول localhost میباشد)'; +?> \ No newline at end of file diff --git a/sources/language/fa_IR/iso.txt b/sources/language/fa_IR/iso.txt new file mode 100644 index 0000000..fc3e26e --- /dev/null +++ b/sources/language/fa_IR/iso.txt @@ -0,0 +1 @@ +فارسی [IR] \ No newline at end of file diff --git a/sources/language/fa_IR/upgrade.lang.php b/sources/language/fa_IR/upgrade.lang.php new file mode 100644 index 0000000..30f67f4 --- /dev/null +++ b/sources/language/fa_IR/upgrade.lang.php @@ -0,0 +1,43 @@ +release %s
                  (or equivalent).'] = 'پیشنهاد می‌شود که با استفاده از این صفحه بانک اطلاعاتی نگارش قدیمی Piwigo خود را به نگارش تازه ی آن ارتقا دهید. سیستم آپگرید نگارش کنونی گالری شما را نگارش %s تشخیص داده است.'; +$lang['Upgrade from version %s to %s'] = 'بروزرسانی از نگارش %s به نگارش %s'; +$lang['Statistics'] = "آمار"; +$lang['total upgrade time'] = 'زمان کل بروز رسانی'; +$lang['total SQL time'] = 'زمان کل SQL'; +$lang['SQL queries'] = 'کوئری(Query) های SQL'; +$lang['Upgrade informations'] = 'اطلاعات بروز رسانی'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'اگر به مشکلی برخوردید به [مدیریت > ابزار ها > نگهداری] مراجعه نمایید.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'هشدار، پلاگین های زیر در حال حاضر از کار افتاده اند. برای امنیت بیشتر، قبل از فعال کردن دوباره ی آن ها باید آپگرید های تازه آنها را بررسی کنید:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'فقط مدیران می توانند سیستم را بروز رسانی کنند.'; +$lang['You do not have access rights to run upgrade'] = 'شما دسترسی لازم برای بروز رسانی را ندارید'; +$lang['All sub-albums of private albums become private'] = 'تمام زیرآلبوم های مربوط به آلبوم های شخصی، شخصی شدند'; +$lang['User permissions and group permissions have been erased'] = 'مجوز های کاربران و گروه ها پاک شد'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'فقط پیشوند عکس های بندانگشتی و آدرس ایمیل مدیرکل از تنظیمات قدیمی باقی خواهد ماند'; +$lang['In %s, before ?>, insert:'] = 'در %s, قبل از ?>, اضافه کنید:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'هشدار، قالب های زیر در حال حاضر از کار افتاده اند!!. برای امنیت بیشتر، قبل از فعال کردن دوباره ی آن ها باید بروزرسانی تازه آنها را بررسی کنید:'; +?> \ No newline at end of file diff --git a/sources/language/fi_FI/about.html b/sources/language/fi_FI/about.html new file mode 100644 index 0000000..1e5290e --- /dev/null +++ b/sources/language/fi_FI/about.html @@ -0,0 +1,19 @@ +

                  Tämä kuvagalleria on luotu käyttäen Piwigoa.

                  + +

                  Piwigo on Web -pohjainen kuvagalleria, jonka on luonut käyttäjien ja +kehittäjien aktiivinen yhteisö. Laajennusten avulla Piwigoa on helppo muokata. +Pisteenä iin päälle, Piwigo on ilmainen ja käyttää avointa lähdekoodia.

                  + +

                  Vieraile Piwigon kotisivuilla

                  + +

                  Suomenkielistä käännöstä ylläpitää (Aakkosjärjestyksessä): + +

                  + + .... Suuri kiitos sinulle +

                  \ No newline at end of file diff --git a/sources/language/fi_FI/admin.lang.php b/sources/language/fi_FI/admin.lang.php new file mode 100755 index 0000000..a2d2fe8 --- /dev/null +++ b/sources/language/fi_FI/admin.lang.php @@ -0,0 +1,469 @@ +Click here to show log error.'] = 'Virhe purettaessa pakettia. Ole hyvä ja varmista oikeudet piwigon asennushakemistossa.
                  Klikkaa nähdäksesi virheloki.'; +$lang['Missing a temporary folder'] = 'Tilapäiskansio puuttuu'; +$lang['Month'] = 'Kuukausi'; +$lang['Name'] = 'Nimi'; +$lang['Name of the duplicate'] = 'Duplikaatin nimi'; +$lang['New Version'] = 'Uusi versio'; +$lang['New name'] = 'Uusi nimi'; +$lang['New photos added'] = 'Uusia kuvia lisätty'; +$lang['New photos were added'] = 'Uusia kuvia on lisätty'; +$lang['Maximum file size: %sB.'] = 'Maksimi tiedostokoko: %sB.'; +$lang['Maximum height'] = 'Maksimi korkeus'; +$lang['Maximum width'] = 'Maksimi leveys'; +$lang['Members'] = 'Jäsenet'; +$lang['Menu Management'] = 'Valikot'; +$lang['Merge selected groups'] = 'Yhdistä valitut ryhmät'; +$lang['Merge selected tags'] = 'Yhdistä valitut tägit'; +$lang['Merge tags'] = 'Yhdistä tägit'; +$lang['Minimum width'] = 'Minimi leveys'; +$lang['Miscellaneous'] = 'Sekalaiset'; +$lang['Missing Plugins'] = 'Puuttuvat liitännäiset'; +$lang['Modify information'] = 'Muokkaa tietoja'; +$lang['Maintenance'] = 'Ylläpito'; +$lang['Last import'] = 'Viimeisin tuonti'; +$lang['Last send'] = 'Viimeisin lähetys'; +$lang['Linked albums'] = 'Linkitetyt albumit'; +$lang['List'] = 'Lista'; +$lang['Loading...'] = 'Lataa...'; +$lang['Local'] = 'Paikallinen'; +$lang['Lock'] = 'Lukitse'; +$lang['Mail address is obligatory for all users'] = 'Sähköpostiosoite on pakollinen kaikille käyttäjille'; +$lang['Mail content'] = 'Sähköpostin sisältö'; +$lang['Mail sent to %s [%s].'] = 'Sähköposti lähetetty %s [%s]'; +$lang['Mail theme'] = 'Sähköpostiteema'; +$lang['Informations'] = 'Tietoa'; +$lang['Install'] = 'Asenna'; +$lang['Install on your computer,'] = 'Asenna tietokoneellesi,'; +$lang['Instructions to use Piwigo'] = 'Piwigo käyttöohjeet'; +$lang['Ignore All'] = 'Jätä kaikki huomiotta'; +$lang['Ignore this update'] = 'Älä huomioi tätä päivitystä'; +$lang['Image Quality'] = 'Kuvanlaatu'; +$lang['Image id'] = 'Kuvan tunnus'; +$lang['Error on file "%s" : %s'] = 'Virhe tiedostossa "%s":%s'; +$lang['Choose an option'] = 'Valitse vaihtoehto'; +$lang['Close user details'] = 'Sulje käyttäjätiedot'; +$lang['Continue processing treatment'] = 'Jatka meneillään olevaa käsittelyä'; +$lang['Associated'] = 'Liitetty'; +$lang['Authorized'] = 'Valtuutettu'; +$lang['Automatic correction'] = 'Automaattinen korjaus'; +$lang['Available only with HTML format'] = 'Saatavilla vain HTML-formaatissa'; +$lang['An error occured during extraction (%s).'] = 'Tapahtui virhe tiedoston/tiedostojen (%s) purkauksessa.'; +$lang['An error has occured during upgrade.'] = 'Tapahtui virhe päivityksen yhteydessä.'; +$lang['Anomaly'] = 'Poikkeama'; +$lang['Apply action'] = 'Toteuta toimenpide'; +$lang['Apply selected corrections'] = 'Toteuta valitut korjaukset'; +$lang['Apply watermark if height is bigger than'] = 'Lisää vesileima jos korkeus on suurempi kuin'; +$lang['Apply watermark if width is bigger than'] = 'Lisää vesileima jos leveys on suurempi kuin'; +$lang['Are you sure you want to delete this plugin?'] = 'Haluatko varmasti poistaa tämän liitännäisen?'; +$lang['Are you sure you want to install this plugin?'] = 'Haluatko varmasti asentaa tämän liitännäisen?'; +$lang['Forbid this language to users'] = 'Kiellä tämä kieli käyttäjiltä'; +$lang['Extend for templates'] = 'Laajenna mallineet'; +$lang['File upload stopped by extension'] = 'Tiedoston lähetys pysäytetty laajennuksen toimesta'; +$lang['Find a new representant by random'] = 'Etsi uusi satunnainen näytekuva albumille'; +$lang['Update albums informations'] = 'Päivitä albumin tiedot'; +$lang['Update in progress... Please wait.'] = 'Päivitys käynnissä...odota hetki'; +$lang['Update to Piwigo %s'] = 'Päivitä Piwigo-versioon %s'; +$lang['Updates'] = 'Päivitykset'; +$lang['Upload'] = 'Lähetä'; +$lang['Upload Photos'] = 'Lähetä valokuvat'; +$lang['Uploaded Photos'] = 'Lähetetyt valokuvat'; +$lang['Update All'] = 'Päivitä kaikki'; +$lang['Update Complete'] = 'Päivitys valmis'; +$lang['Update user'] = 'Päivitä käyttäjä'; +$lang['User %s added'] = 'Käyttäjä %s lisätty'; +$lang['User %s updated'] = 'Käyttäjä %s päivitetty'; +$lang['Who can see these photos?'] = 'Ketkä voivat nähdä nämä valokuvat?'; +$lang['Who can see this photo?'] = 'Ketkä voivat nähdä tämän valokuvan?'; +$lang['User list'] = 'Lista käyttäjistä'; +$lang['Users'] = 'Käyttäjät'; +$lang['Visit language site'] = 'Käy kieli-sivustolla'; +$lang['Visit plugin site'] = 'Käy liitännäis-sivustolla'; +$lang['Visit theme site'] = 'Käy teema-sivustolla'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'VAROITUS! Tämä liitännäinen ei näytä olevan yhteensopiva tämän Piwigo-version kanssa.'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'vierailijoiden on kirjauduttava ja heillä on oltava käyttöoikeudet tähän albumiin'; +$lang['photos deleted from the database'] = 'tietokannasta poistetut valokuvat'; +$lang['photos updated in the database'] = 'tietokantaan päivitetyt valokuvat'; +$lang['group "%s" updated'] = 'ryhmä "%s" päivitetty'; +$lang['guest'] = 'vieras'; +$lang['height must be a number superior to'] = 'korkeus on oltava suurempi lukui kuin'; +$lang['hide details'] = 'piilota lisätiedot'; +$lang['high'] = 'korkea'; +?> \ No newline at end of file diff --git a/sources/language/fi_FI/common.lang.php b/sources/language/fi_FI/common.lang.php new file mode 100644 index 0000000..8da7a4f --- /dev/null +++ b/sources/language/fi_FI/common.lang.php @@ -0,0 +1,424 @@ + \ No newline at end of file diff --git a/sources/language/fi_FI/fi_FI.jpg b/sources/language/fi_FI/fi_FI.jpg new file mode 100644 index 0000000..91ab021 Binary files /dev/null and b/sources/language/fi_FI/fi_FI.jpg differ diff --git a/sources/language/fi_FI/install.lang.php b/sources/language/fi_FI/install.lang.php new file mode 100755 index 0000000..254dfea --- /dev/null +++ b/sources/language/fi_FI/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Tarvitsetko apua? Kysy asiasta Piwigon keskustelupalstalla'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Voit muokata asetuksia itse ja käynnistää Piwigon uudelleen tämän jälkeen.'; +$lang['PHP 5 is required'] = 'PHP 5 vaaditaan'; +$lang['Password ']['confirm'] = 'Salasana [hyväksy]'; +$lang['Try to configure PHP 5'] = 'Yritä määrittää PHP 5'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Vierailijat voivat ottaa yhteyttä sivuston ylläpitäjään tätä sähköpostiosoitetta käyttäen'; +$lang['Welcome to my photo gallery'] = 'Tervetuloa kuvagalleriaani'; +$lang['enter a login for webmaster'] = 'Lisää käyttäjätunnus ylläpitäjälle'; +$lang['please enter your password again'] = 'Salasana uudelleen'; +$lang['webmaster login can\'t contain characters \' or "'] = 'Ylläpitäjän käyttäjätunnus ei voi sisältää \' tai " merkkejä'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Vaihtoehtoinen tapa on kopioida teksti ylläolevasta laatikosta ja liittää se tiedostoon "local/config/database.inc.php"(Varoitus: tiedoston database.inc.php tulee sisältää vain tekstiosuus, ei välejä eikä tyhjiä rivejä) '; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Konfigurointitiedoston local/config/database.inc.php luominen epäonnistui.'; +$lang['Download the config file'] = 'Lataa konfigurointitiedosto'; +$lang['Hope to see you back soon.'] = 'Toivottavasti näemme pian'; +$lang['Just another Piwigo gallery'] = 'Yksi Piwigo -galleria lisää'; +$lang['Keep it confidential, it enables you to access administration panel'] = 'Pidä salassa, se mahdollistaa pääsyn pääkäyttäjän paneeliin'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo voi yrittää vaihtaa konfiguraation PHP 5 :seen luomalla tai muuttamalla .htaccess -tiedostoa.'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ei pystynyt konfiguroimaan PHP5 :sta.'; +$lang['Sorry!'] = 'Anteeksi!'; +$lang['Welcome to your new installation of Piwigo!'] = 'Tervetuloa uuteen Piwigo -asennukseesi!'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Voit ladata konfiguraatiotiedoston ja siirtää sen asennuksesi local/config -hakemistoon. '; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Sinun tulee kääntyä hosting -palveluntarjoajasi puoleen ja kysyä kuinka voit vaihtaa PHP 5:seen itse.'; +$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'se tulee tietokannan taulun nimen etuliitteeksi (mahdollistaa taulujen helpomman hallinnan)'; +$lang['verification'] = 'vahvistus'; +?> \ No newline at end of file diff --git a/sources/language/fi_FI/iso.txt b/sources/language/fi_FI/iso.txt new file mode 100644 index 0000000..253578b --- /dev/null +++ b/sources/language/fi_FI/iso.txt @@ -0,0 +1 @@ +Finnish [FI] \ No newline at end of file diff --git a/sources/language/fi_FI/upgrade.lang.php b/sources/language/fi_FI/upgrade.lang.php new file mode 100755 index 0000000..37112f6 --- /dev/null +++ b/sources/language/fi_FI/upgrade.lang.php @@ -0,0 +1,40 @@ +%s, before ?>, insert:'] = 'In %s, before ?>, insert:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Vain admin voi ajaa päivityksen: ole hyvä ja kirjaudu alla.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Vain thumbnailien etuliite ja webmasterin sähköpostiosoite on tallennettu edellisestä konfiguraatiosta'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Aja huoltotarkistus [Administration>Tools>Maintenance] jos kohtaat ongelmia.'; +$lang['SQL queries'] = 'SQL-pyynnöt'; +$lang['Statistics'] = 'Statistiikka'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Tämä sivu ehdottaa Piwigo-tietokantasi päivitystä vanhasta versiosta uuteen. Päivitystyökalun mukaan ajat versiota %s (tai vastaavaa)'; +$lang['Upgrade from version %s to %s'] = 'Päivitys versiosta %s versioon %s'; +$lang['Upgrade informations'] = 'Päivitystiedot'; +$lang['Upgrade'] = 'Päivitys'; +$lang['User permissions and group permissions have been erased'] = 'Käyttäjien ja ryhmien oikeudet on tyhjennetty'; +$lang['You do not have access rights to run upgrade'] = 'Sinulla ei ole oikeutta ajaa päivitystä'; +$lang['total SQL time'] = 'Totaali SQL-aika'; +$lang['total upgrade time'] = 'Totaali päivitysaika'; +?> \ No newline at end of file diff --git a/sources/language/fr_CA/about.html b/sources/language/fr_CA/about.html new file mode 100644 index 0000000..9b3758c --- /dev/null +++ b/sources/language/fr_CA/about.html @@ -0,0 +1,14 @@ +

                  Cette galerie photo est basée sur Piwigo.

                  + +

                  Piwigo est un logiciel de galerie photo pour le web, bâti par une +communauté active d'utilisateurs et de développeurs. Les extensions rendent +Piwigo facilement personnalisable. Cerise sur le gâteau, Piwigo est libre et +gratuit.

                  + +

                  Visiter le site web de Piwigo

                  + +

                  La traduction québécoise est maintenu par (ordre alphabétique) : +

                  + .... Merci à lui

                  \ No newline at end of file diff --git a/sources/language/fr_CA/admin.lang.php b/sources/language/fr_CA/admin.lang.php new file mode 100644 index 0000000..f60e93f --- /dev/null +++ b/sources/language/fr_CA/admin.lang.php @@ -0,0 +1,986 @@ +Piwigo Uploader
                  . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader signifie Piwigo Uploader. Depuis votre ordinateur, pLoader prépare vos photos et les transfert vers votre galerie photo Piwigo.'; +$lang['Languages'] = 'Langues'; +$lang['Installed Languages'] = 'Langues installées'; +$lang['Add New Language'] = 'Ajouter une langue'; +$lang['Language has been successfully installed'] = 'La langue a été installée avec succès'; +$lang['Allow user customization'] = "Permettre la personnalisation de l'affichage"; +$lang['Select:'] = 'Sélectionner :'; +$lang['None'] = 'Rien'; +$lang['Invert'] = 'Inverser'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossible de désactiver ce thème, il doit rester au moins un thème activé.'; +$lang['Webmaster status is required.'] = 'Vous devez avoir le status de "webmaster".'; +$lang['Bound Theme'] = 'Thème rattaché'; +$lang['Allow rating'] = "Permettre les notations"; +$lang['Select at least one comment'] = 'Sélectionnez au moins un commentaire'; +$lang['Active Plugins'] = 'Plugins activés'; +$lang['Inactive Plugins'] = 'Plugins désactivés'; +$lang['Missing Plugins'] = 'Plugins manquants'; +$lang['Uninstalled Plugins'] = 'Plugins non installés'; +$lang['By %s'] = 'Par %s'; +$lang['Visit plugin site'] = 'Visitez le site du plugin'; +$lang['Active Languages'] = 'Langues activées'; +$lang['Delete this language'] = 'Supprimer cette langue'; +$lang['Forbid this language to users'] = 'Interdire cette langue aux utilisateurs'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossible de désactiver cette langue, commencez par définir une autre langue par défaut.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossible de désactiver cette langue, il doit rester au moins une langue.'; +$lang['Inactive Languages'] = 'Langues désactivées'; +$lang['Make this language available to users'] = 'Rendre cette langue disponible aux utilisateurs'; +$lang['Set as default language for unregistered and new users'] = 'Langue par défaut pour les invités et les nouveaux utilisateurs'; +$lang['Add Photos'] = 'Ajouter des photos'; +$lang['Miscellaneous'] = 'Divers'; +$lang['The following tag was deleted'] = 'Le mot clé suivant a été supprimé'; +$lang['Virtual Links'] = 'Liens virtuels'; +$lang['There is no other language available.'] = 'Il n\'y a pas d\'autre langue disponible.'; +$lang['There is no other plugin available.'] = 'Il n\'y a pas d\'autre plugin disponible.'; +$lang['There is no other theme available.'] = 'Il n\'y a pas d\'autre thème disponible.'; +$lang['delete'] = 'effacer'; +$lang['Add another set of photos'] = 'Ajouter d\'autres photos'; +$lang['Order of menubar items has been updated successfully.'] = 'L\'ordre des éléments du menu a été mis à jour avec succès.'; +$lang['This theme was not designed to be directly activated'] = 'Ce thème n\'est pas conçu pour être activé directement'; +$lang['Pending Comments'] = 'Commentaires en attente'; +$lang['Menu Management'] = 'Menus'; +$lang['%d of %d photos selected'] = '%d photos sur %d sont sélectionnées'; +$lang['Action'] = 'Action'; +$lang['Add a filter'] = 'Ajouter un filtre'; +$lang['Album photos associated to the following albums: %s'] = 'Les photos de l\'album ont été associées aux albums suivants : %s'; +$lang['Albums automatically sorted'] = 'Les albums ont été triés automatiquement'; +$lang['All %d photos are selected'] = 'Toutes les %d photos du lot sont sélectionnées'; +$lang['Apply action'] = 'Appliquer l\'action'; +$lang['automatic order'] = 'ordre automatique'; +$lang['Batch Manager'] = 'Gestion par lot'; +$lang['Choose an action'] = 'Choisir une action'; +$lang['Delete orphan tags'] = 'Supprimer les mots clés orphelins'; +$lang['delete photo'] = 'supprimer la photo'; +$lang['Duplicates'] = 'Doublons'; +$lang['Error on file "%s" : %s'] = 'Erreur sur le fichier "%s" : %s'; +$lang['Exif extension not available, admin should disable exif use'] = 'L\'extension Exif n\'est pas disponible, un administrateur devrait désactiver l\'utilisation des métadonnées Exif'; +$lang['Failed to write file to disk'] = 'Échec à l\'écriture du fichier sur le serveur'; +$lang['File upload stopped by extension'] = 'Le transfert du fichier a été arrêté par une extension'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Dans votre fichier php.ini, la variable upload_max_filesize (%sB) est plus grande que post_max_size (%sB), vous devriez modifier ce paramètre'; +$lang['include child albums'] = 'inclure les sous-albums'; +$lang['manual order'] = 'ordre manuel'; +$lang['Missing a temporary folder'] = 'Impossible de trouver le répertoire temporaire'; +$lang['No file was uploaded'] = 'Aucun fichier n\'a été transféré'; +$lang['No photo in the current set.'] = 'Aucune photo dans le lot.'; +$lang['No photo selected, %d photos in current set'] = 'Aucune photo sélectionnée parmi les %d photos du lot'; +$lang['No photo selected, no action possible.'] = 'Aucune photo sélectionnée, aucune action possible.'; +$lang['on the %d selected photos'] = 'sur les %d photos sélectionnées'; +$lang['Orphan tags deleted'] = 'Mots clés orphelins supprimés'; +$lang['Refresh photo set'] = 'Rafraîchir le lot de photos'; +$lang['Remove all filters'] = 'Supprimer tous les filtres'; +$lang['remove author'] = 'supprimer l\'auteur'; +$lang['remove creation date'] = 'supprimer la date de création'; +$lang['Remove from caddie'] = 'Retirer du panier'; +$lang['remove this filter'] = 'supprimer ce filtre'; +$lang['remove title'] = 'supprimer le titre'; +$lang['Selection'] = 'Sélection'; +$lang['Set author'] = 'Définir l\'auteur'; +$lang['Set creation date'] = 'Définir la date de création'; +$lang['Set title'] = 'Définir le titre'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Le poids du fichier transféré dépasse la valeur de MAX_FILE_SIZE définie dans le formulaire HTML'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Le poids du fichier transféré dépasse la valeur de upload_max_filesize définie dans votre fichier php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Le fichier n\'a été que partiellement transféré'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Le poids total des fichiers transférés dépasse la valeur de post_max_size dans votre fichier php.ini: %sB'; +$lang['The whole page'] = 'Toute la page'; +$lang['The whole set'] = 'Tout le lot'; +$lang['Type here the author name'] = 'Entrez ici le nom de l\'auteur'; +$lang['Type here the title'] = 'Entrez ici le titre'; +$lang['Unknown upload error'] = 'Erreur inconnue survenue lors du transfert'; +$lang['Week starts on'] = 'La semaine commence le'; +$lang['You have %d orphan tags: %s.'] = 'Vous avez %d mots clés orphelins: %s.'; +$lang['Themes which need upgrade'] = 'Thèmes à mettre à jour'; +$lang['Languages which need upgrade'] = 'Langues à mettre à jour'; +$lang['All themes are up to date.'] = 'Tous les thèmes sont à jour.'; +$lang['All plugins are up to date.'] = 'Tous les greffons sont à jour.'; +$lang['All languages are up to date.'] = 'Toutes les langues sont à jour.'; +$lang['Visit theme site'] = 'Visitez le site du thème'; +$lang['Visit language site'] = 'Visitez le site de la langue'; +$lang['New Version'] = 'Nouvelle version'; +$lang['Obsolete Plugins'] = 'Greffons périmés'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATTENTION! Ce greffon n\'a pas l\'air d\'être compatible avec votre version de Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Voulez-vous l\'activer quand même?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'CE GREFFON FAIT DÉSORMAIS PARTIE DU CŒUR DE PIWIGO! SUPPRIMEZ-LE.'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERREUR: CE GREFFON EST MANQUANT MAIS TOUJOURS INSTALLÉ! DÉSINSTALLEZ-LE.'; +$lang['display'] = 'Afficher'; +$lang['Restore'] = "Restaurer"; +$lang['Restore default configuration. You will lose your plugin settings!'] = "Restaurer la configuration par défaut? Vous perdrez vos réglages personnels !"; +$lang['Show menubar'] = "Afficher le menu"; +$lang['Learn more'] = 'En savoir plus'; +$lang['Rate'] = 'Note'; +$lang['Average rate'] = 'Note moyenne'; +$lang['Activate icon "new" next to albums and pictures'] = 'Afficher l\'icône "nouveau" à côté des albums et des photos'; +$lang['Add a criteria'] = 'Ajouter un critère'; +$lang['Deactivate all'] = 'Désactiver tout'; +$lang['Default photos order'] = 'Ordre par défaut des photos'; +$lang['new'] = 'nouveau'; +$lang['No results'] = 'Pas de résultat'; +$lang['Searching...'] = 'Recherche...'; +$lang['Type in a search term'] = 'Entrez un terme de recherche'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Vous ne pouvez définir l\'ordre par défaut des photos car vous avez un paramètre personnalisé dans votre configuration locale.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Vous avez spécifié $conf[\'order_by\'] dans votre fichier de configuration, ce paramètre est obsolète, veuillez le supprimer ou le renommer en $conf[\'order_by_custom\'] !'; +$lang['Thumbnails generation in progress...'] = 'Génération des miniatures en cours...'; +$lang['Photos generation in progress...'] = 'Génération des photos en cours...'; +$lang['%s photos have been regenerated'] = '%s photos ont été régénérées'; +$lang['%s photos can not be regenerated'] = '%s photos ne peuvent pas être régénérées'; +$lang['Updates'] = 'Mises à jour'; +$lang['Update in progress... Please wait.'] = 'Mise à jour en cours... Veuillez patienter.'; +$lang['Ignore this update'] = 'Ignorer cette mise à jour'; +$lang['Reset ignored updates'] = 'Réinitialiser les mises à jour ignorées'; +$lang['Update All'] = 'Tout mettre à jour'; +$lang['ERROR'] = 'ERREUR'; +$lang['Update Complete'] = 'Mise à jour effectuée'; +$lang['Piwigo Update'] = 'Mise à jour de Piwigo'; +$lang['Extensions Update'] = 'Mise à jour des extensions'; +$lang['All extensions are up to date.'] = 'Toutes les extensions sont à jour.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Les greffons suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Les thèmes suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:'; +$lang['I decide to update anyway'] = 'Je décide de migrer quand même'; +$lang['Update to Piwigo %s'] = 'Mettre à jour vers Piwigo %s'; +$lang['Two updates are available'] = 'Deux mises à jour sont disponibles'; +$lang['This is a minor update, with only bug corrections.'] = 'Ceci est une mise à jour mineure, avec uniquement des corrections de bugs.'; +$lang['This is a major update, with new exciting features.'] = 'Ceci est une mise à jour majeure, qui contient un tas de nouveautés.'; +$lang['Some themes and plugins may be not available yet.'] = 'Certains thèmes ou greffons ne sont peut-être pas encore disponibles.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Vous pouvez mettre à jour vers Piwigo %s directement, sans passer par Piwigo %s (recommandé).'; +$lang['Save Template Directory'] = 'Sauvegarder le dossier template'; +$lang['Dump Database'] = 'Sauvegarder la base de données'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclure les données de l\'historique (Attention: risque de dépassement de la limite mémoire du serveur)'; +$lang['Unable to dump database.'] = 'Impossible de sauvegarder la base de données.'; +$lang['Some upgrades are available for extensions.'] = 'Des mises à jour sont disponibles pour les extensions.'; +$lang['Ignore All'] = 'Tout ignorer'; +$lang['Crop'] = 'Retailler'; +$lang['Width'] = 'Largeur'; +$lang['Height'] = 'Hauteur'; +$lang['Follow Orientation'] = 'Respecter l\'orientation'; +$lang['Graphics Library'] = 'Bibliothèque graphique'; +$lang['... or '] = '... ou bien '; +$lang['Create'] = 'Créer'; +$lang['Start Upload'] = 'Démarrer le transfert'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Vous utilisez le formulaire Flash. Des problèmes ? Essayez le formulaire HTML à la place.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Vous utilisez le formulaire HTML. Essayez le formulaire Flash à la place.'; +$lang['Maximum file size: %sB.'] = 'Poids maximum des fichiers : %sB.'; +$lang['Allowed file types: %s.'] = 'Types de fichiers autorisés : %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Résolution maximum approximative : %dM pixels (soit %dx%d pixels).'; +$lang['Manage Permissions'] = 'Gérer les permissions'; +$lang['Photo %s of %s'] = 'Photo %s sur %s'; +$lang['show details'] = 'montrer les détails'; +$lang['hide details'] = 'cacher les détails'; +$lang['Merge tags'] = 'Fusionner les mots clés'; +$lang['Select the destination tag'] = 'Sélectionnez le mot clé de destination'; +$lang['(this tag will be deleted)'] = '(ce mot clé sera supprimé)'; +$lang['Confirm merge'] = 'Confirmez la fusion'; +$lang['Merge selected tags'] = 'Fusionner les mots clés sélectionnés'; +$lang['No destination tag selected'] = 'Vous n\'avez pas sélectionné de mot clé de destination'; +$lang['Tags %s merged into tag %s'] = 'Les mots clés %s ont été fusionnés dans le mot clé %s'; +$lang['Select at least two tags for merging'] = 'Sélectionnez au moins deux mots clés pour la fusion'; +$lang['Select an album'] = 'Selectionnez un album'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Par défaut, Piwigo créera la nouvelle taille web à partir de la HD (haute définition).'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si la HD n\'est pas disponible et que la version actuelle de la taille web est plus grande que les dimensions ci-dessous, alors Piwigo la considérera comme HD et créera la nouvelle taille web à partir de celle-ci.'; +$lang['An error has occured during upgrade.'] = 'Une erreur est survenue pendant la mise à jour.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Impossible d\'extraire les fichiers. Veuillez vérifier les permissions des fichiers de votre installation.
                  Cliquez ici pour voir le rapport d\'erreur.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne peut pas récupérer le fichier de mise à jour depuis le serveur'; +$lang['Send connection settings by email'] = 'Envoyer les identifiants par email'; +$lang['Activate comments'] = 'Activer les commentaires'; +$lang['Default comments order'] = 'Ordre par défaut des commentaires'; +$lang['%s has been successfully updated.'] = '%s a été mis à jour avec succès.'; +$lang['Add tags'] = 'Ajouter les mots clés'; +$lang['Add to caddie'] = 'Ajouter au panier'; +$lang['Last import'] = 'Dernière importation'; +$lang['Photo name'] = 'Nom de la photo'; +$lang['Predefined filter'] = 'Filtre prédéfini'; +$lang['The original image quality must be a number between %d and %d'] = 'La qualité d\'image pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'La hauteur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'La largeur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d'; +$lang['With no album'] = 'Sans album'; +$lang['With no tag'] = 'Sans mot clé'; +$lang['With no virtual album'] = 'Sans album virtuel'; +$lang['Zoom'] = 'Zoom'; +$lang['Resize after upload'] = 'Redimensionner après transfert'; +$lang['Original Size'] = 'Taille originale'; +$lang['A locked gallery is only visible to administrators'] = 'Une galerie verrouillée n\'est visible que par les administrateurs'; +$lang['Unlock gallery'] = 'Déverouiller la galerie'; +$lang['Gallery unlocked'] = 'Galerie déverouillée'; +$lang['Notify administrators when a comment is'] = 'Notifier les administrateurs lorsqu\'un commentaire est'; +$lang['modified'] = 'modifié'; +$lang['pending validation'] = 'en attente de validation'; +$lang['Save visits in history for'] = 'Sauvegarder les visites dans l\'historique '; +$lang['simple visitors'] = 'simple visiteurs'; +$lang['registered users'] = 'utilisateurs enregistrés'; +$lang['administrators'] = 'administrateurs'; +$lang['This album contains %d photos, added on %s.'] = 'Cet album contient %d photos, ajoutées le %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Cet album contient %d photos, ajoutées entre le %s et le %s.'; +$lang['This album contains no photo.'] = 'Cet album ne contient pas de photo.'; +$lang['Not cropped correctly?'] = 'La photo n\'est pas recadrée correctement ?'; +$lang['Center of interest'] = 'Centre d\'interêt'; +$lang['Move to album'] = 'Déplacer vers l\'album'; +$lang['You can activate only one mobile theme.'] = 'Vous ne pouvez activer qu\'un seul thème mobile.'; +$lang['Automatic sort order'] = 'Ordre de tri automatique'; +$lang['apply automatic sort order'] = 'appliquer un ordre de tri automatique'; +$lang['Save manual order'] = 'Sauvegarder l\'ordre manuel'; +$lang['cancel manual order'] = 'annuler l\'ordre manuel'; +$lang['Cancel'] = 'Annuler'; +$lang['List'] = 'Liste'; +$lang['Web Form'] = 'Formulaire web'; +$lang['Applications'] = 'Applications'; +$lang['Available versions for'] = 'Versions disponibles pour'; +$lang['Available on'] = 'Disponible sur'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pour iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'L\'application Piwigo pour iOS vous permet de connecter votre iPhone, iPad ou iPod Touch à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.'; +$lang['Piwigo for Android'] = 'Piwigo pour Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'L\'application Piwigo pour Android vous permet de connecter votre smartphone ou votre tablette Android à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de publication Piwigo pour Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom est un logiciel de photographie conçu pour gérer d\'importantes collections de photos numériques et les post-traiter.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Le plugin de publication Piwigo pour Lightroom vous permet d\'exporter et synchroniser vos photos de Lightroom vers votre galerie Piwigo.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Greffon de publication Piwigo pour Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell est un gestionnaire de photos opensource pour Linux. Il a été sélectionné comme gestionnaire par défaut sur Ubuntu et Fedora.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Sur votre Linux, installez simplement Shotwell avec votre gestionnaire de paquet et activez l\'option de publication Piwigo.'; +$lang['Piwigo publish plugin for digiKam'] = 'Greffon de publication Piwigo pour digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam est un logiciel libre de gestion avancée de photos numériques pour Linux, Windows et MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam est conçu pour les photographes qui souhaitent visualiser, gérer, éditer, améliorer, organiser, tagger et partager leurs photos.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pour exporter vos photos de digiKam vers Piwigo, installez simplement digiKam et les kipi-plugins.'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin d\'export Piwigo export pour iPhoto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto est le gestionnaire de photos disponible par défaut sur MacOSX. Le plugin d\'export Piwigo se connecter à votre galerie Piwigo et vous permet de créer des albums et d\'y ajouter vos photos.'; +$lang['Piwigo export plugin for Aperture'] = 'Greffon d\'exportation Piwigo pour Aperture'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture est un outil puissant pour post-traiter vos photos et gérer votre photothèque sur Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture est conçu pour les photographes professionnels avec la simplicité d\'iPhoto.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Le greffon d\'exportation Piwigo vous permet de créer des albums et d\'y ajouter vos photos.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery Android) est un client libre (GPL v3) pour Piwigo sur Android.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Ses fonctionnalités incluent la navigation sur la galerie, la création d\'albums et l\'ajout de photos.'; +$lang['Generate multiple size images'] = 'Générer les tailles multiples des photos'; +$lang['Delete multiple size images'] = 'Supprimer les tailles multiples des photos'; +$lang['any visitor can see this album'] = 'n\'importe quel visiteur peut voir cet album'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'les visiteurs doivent se connecter et avoir les permissions nécessaires pour voir cet album'; +$lang['Groups and users'] = 'Groupes et utilisateurs'; +$lang['Permission granted for groups'] = 'Permission accordée pour les groupes'; +$lang['Select groups...'] = 'Sélectionnez les groupes...'; +$lang['There is no group in this gallery.'] = 'Il n\'y a pas de groupe dans cette galerie.'; +$lang['Permission granted for users'] = 'Permission accordée pour les utilisateurs'; +$lang['Select users...'] = 'Sélectionnez les utilisateurs...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utilisateurs ont automatiquement la permission car ils appartiennent à un groupe autorisé.'; +$lang['include photos with lower privacy level'] = 'inclure les photos d\'un niveau de confidentialité inférieur'; +$lang['custom'] = 'Personnalisé'; +$lang['No group is permitted to see this private album'] = 'Aucun groupe n\'est autorisé à voir cet album privé'; +$lang['Permission management'] = 'Gestion des permissions'; +$lang['Photo sizes with crop'] = 'Tailles de photo avec retaillage'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Le centre d\'intérêt est la zone la plus représentative de la photo.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pour les tailles de photo avec retaillage, comme la taille "Carré", Piwigo essaiera d\'inclure au mieux ce centre d\'intérêt.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Par défaut, le centre d\'intérêt est placé au milieu de la photo.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Sélectionnez une zone avec votre souris pour définir un nouveau centre d\'intérêt.'; +$lang['X Position'] = 'Position X'; +$lang['Y Position'] = 'Position Y'; +$lang['X Repeat'] = 'Répétition X'; +$lang['Opacity'] = 'Opacité'; +$lang['top left corner'] = 'coin supérieur gauche'; +$lang['top right corner'] = 'coin supérieur droit'; +$lang['middle'] = 'milieu'; +$lang['bottom left corner'] = 'coin inférieur gauche'; +$lang['bottom right corner'] = 'coin inférieur droit'; +$lang['Select a file'] = 'Sélectionnez un fichier'; +$lang['add a new watermark'] = 'Ajouter un nouveau filigrane'; +$lang['Apply watermark if width is bigger than'] = 'Appliquer le filigrane si la largeur est supérieure à'; +$lang['Apply watermark if height is bigger than'] = 'Appliquer le filigrane si la hauteur est supérieure à'; +$lang['Multiple Size'] = 'Tailles multiples'; +$lang['Watermark'] = 'Filigrane'; +$lang['Original file : %s'] = 'Fichier original : %s'; +$lang['Posted %s on %s'] = 'Inscrite %s le %s'; +$lang['Added by %s'] = 'Ajouté par %s'; +$lang['Visited %d times'] = 'Visitée %d fois'; +$lang['Numeric identifier : %d'] = 'Identifiant numérique : %d'; +$lang['%s ago'] = 'il y a %s'; +$lang['%s in the future'] = '%s dans le futur'; +$lang['Rated %d times, score : %.2f'] = 'Notée %d fois, score : %.2f'; +$lang['%d year'] = '%d an'; +$lang['%d years'] = '%d ans'; +$lang['%d month'] = '%d mois'; +$lang['%d months'] = '%d mois'; +$lang['%d day'] = '%d jour'; +$lang['%d days'] = '%d jours'; +$lang['%d hour'] = '%d heure'; +$lang['%d hours'] = '%d heures'; +$lang['%d minute'] = '%d minute'; +$lang['%d minutes'] = '%d minutes'; +$lang['%d second'] = '%d seconde'; +$lang['%d seconds'] = '%d secondes'; +$lang['Sharpen'] = 'Renforcer la netteté'; +$lang['%d week'] = '%d semaine'; +$lang['%d weeks'] = '%d semaines'; +$lang['Edit photo'] = 'Éditer la photo'; +$lang['create a new site'] = 'créer un nouveau site'; +$lang['No order field selected'] = 'Aucun critère de tri sélectionné'; +$lang['Duplicate selected tags'] = 'Dupliquer les mots clés sélectionnés'; +$lang['Name of the duplicate'] = 'Nom du duplicata'; +$lang['Source tag'] = 'Source du mot clé'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Le mot clé "%s" est désormais une copie de "%s"'; +$lang['Manage the members'] = 'Gérer les membres'; +$lang['Type here the name of the new group'] = 'Inscrivez ici le nom du nouveau groupe'; +$lang['No group selected, no action possible.'] = 'Pas de groupes sélectionnés, pas d\'actions possibles.'; +$lang['Please select at least two groups'] = 'Merci de sélectionner au moins deux groupes'; +$lang['Duplicate'] = 'Dupliquer'; +$lang['Merge selected groups'] = 'Fusionner les groupes sélectionnés'; +$lang['This group will be set to default'] = "Ce groupe deviendra par défaut"; +$lang['This group will be unset to default'] = "Ce groupe ne sera plus par défaut"; +$lang['No members to manage'] = "Aucun membre à gérer"; +$lang['Rename'] = 'Renommer'; +$lang['Landscape'] = 'Paysage'; +$lang['Manage photos'] = 'Gérer les photos'; +$lang['Minimum width'] = 'Largeur minimale'; +$lang['Minimum height'] = 'Hauteur minimale'; +$lang['Number of albums per page'] = 'Nombre d\'albums par page'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Portrait'; +$lang['Ratio'] = 'Ratio'; +$lang['View in gallery'] = 'Voir dans la galerie'; +$lang['between %d and %d pixels'] = 'entre %d et %d pixels'; +$lang['between %.2f and %.2f'] = 'entre %.2f et %.2f'; +$lang['Purge user cache'] = 'Purger le cache utilisateur'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'La tailles des images sera réduite à %dx%d pixels.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionnement après transfert désactivé car GD est la librairie graphique utilisée actuellement'; +$lang['Select at least one tag'] = 'Sélectionnez au moins un mot clé'; +$lang['Basic settings'] = 'Paramètres de base'; +$lang['General'] = 'Général'; +$lang['Mail theme'] = 'Thème des courriels'; +$lang['%d of %d users selected'] = '%d des %d utilisateurs sélectionnés'; +$lang['(filtered from %s total users)'] = '(filtré de %s utilisateurs au total)'; +$lang['All %d users are selected'] = 'Tous les %d utilisateurs sont sélectionnés'; +$lang['Change password'] = 'Changer le mot de passe'; +$lang['Change username'] = 'Changer le nom d\'utilisateur'; +$lang['Last visit on %s, %s.'] = 'Dernière visite le %s, %s.'; +$lang['Loading...'] = 'Chargement...'; +$lang['No matching user found'] = 'Aucun utilisateur à afficher'; +$lang['No user selected of %d users'] = 'Aucun utilisateur sélectionné sur les %d'; +$lang['No user selected, no action possible.'] = 'Aucun utilisateur sélectionné, aucune action possible.'; +$lang['Password updated'] = 'Mot de passe mis à jour'; +$lang['Registered on %s, %s.'] = 'Enregistré depuis le %s, %s.'; +$lang['Show %s users'] = 'Afficher %s utilisateurs'; +$lang['Showing %s to %s of %s users'] = 'Affichage des utilisateurs %s à %s sur %s'; +$lang['Update user'] = 'Mettre à jour l\'utilisateur'; +$lang['User %s added'] = 'Utilisateur %s ajouté'; +$lang['User %s updated'] = 'Utilisateur %s mis à jour'; +$lang['Users modified'] = 'Utilisateurs modifiés'; +$lang['on the %d selected users'] = 'sur les %d utilisateurs sélectionnés'; +$lang['Close user details'] = 'Fermer les détails de l\'utilisateur'; +$lang['Open user details'] = 'Ouvrir les détails de l\'utilisateur'; +$lang['close'] = 'Fermer'; +?> \ No newline at end of file diff --git a/sources/language/fr_CA/common.lang.php b/sources/language/fr_CA/common.lang.php new file mode 100644 index 0000000..6dbbb6d --- /dev/null +++ b/sources/language/fr_CA/common.lang.php @@ -0,0 +1,426 @@ + \ No newline at end of file diff --git a/sources/language/fr_CA/fr_CA.jpg b/sources/language/fr_CA/fr_CA.jpg new file mode 100644 index 0000000..6ffc958 Binary files /dev/null and b/sources/language/fr_CA/fr_CA.jpg differ diff --git a/sources/language/fr_CA/help/cat_modify.html b/sources/language/fr_CA/help/cat_modify.html new file mode 100644 index 0000000..17f3328 --- /dev/null +++ b/sources/language/fr_CA/help/cat_modify.html @@ -0,0 +1,147 @@ +

                  Modifier une catégorie

                  + +

                  Informations

                  + +
                    + +
                  • nom: renommer la catégorie (virtuellement pour + une catégorie physique).
                  • + +
                  • description: un texte bref donnant une idée du contenu de la catégorie, + cette indication figurera en bas de la page des miniatures.
                  • + +
                  + +

                  Déplacer

                  + +

                  Si la catégorie est virtuelle, vous pouvez la déplacer. Déplacer une +catégorie signifie changer sa catégorie parente.

                  + +

                  Options

                  + +
                    + +
                  • Type d'accès: gestion des permissions. Si vous rendez +une catégorie privée, toutes ses catégories filles deviennent privées. Si +vous rendez une catégorie publique, toutes ses catégories mères deviennent +publiques.
                  • + +
                  • Verrouiller: la catégorie et toutes ses catégories +filles deviennent temporairement inaccessibles pour maintenance.
                  • + +
                  • Commentaires: autorise les utilisateurs à commenter +les éléments de cette catégorie.
                  • + +
                  • Autoriser l'ajout d'images: autorise les utilisateurs +à télécharger des fichiers. Cette option n'est disponible que si la +catégorie est physique (et non virtuelle).
                  • + +
                  + +

                  Vous pouvez aussi gérer ces options par la gestion des "Propriétés" +(écrans Ajout, Commentaires, Verrouiller, Publique/Privée, Représentant disponibles à partir d' Administration, Catégories, Propriétés).

                  + +

                  Ordre de tri

                  + +

                  Utiliser l'ordre de tri des images par défaut.

                  + +

                  Indiquer si le tri s'applique également aux sous-catégories.

                  + +

                  Sélectionner les critères de tri à utiliser pour cette catégorie.

                  +
                    +
                  • Date de création: Date de prise de vue
                  • +
                  • Date d'ajout: Date de la synchronisation
                  • +
                  • Note moyenne (*): cette moyenne peut être modifiée par la notation du visiteur
                  • +
                  • Plus vues (*): La visite en cours peut changer l'ordre des plus vues
                  • +
                  • Nom du fichier: Nom du fichier donné dans les champs d'informations ci-dessus
                  • +
                  • Id: Id interne (les catégories récentes ont un "Id" plus grand que les précédentes).
                  • + +
                  +

                  (*)Attention: testez-vous même ces tris qui peuvent donner des résultats imprévus.

                  + + +

                  Représentant

                  + +

                  Le représentant d'une catégorie est la miniature affichée sur la page principale (category.php) pour +représenter la catégorie lorsque celle-ci ne contient +que des sous-catégories et aucun élément direct (comme à la +racine)

                  + +

                  Il existe 4 moyens différents de choisir le représentant d'une catégorie:

                  + +
                    + +
                  • Page d'affichage des images: un des boutons d'action permet de choisir l'élément courant comme représentant +de la catégorie affichée. Ce bouton d'action n'est disponible que pour les +administrateurs.
                  • + +
                  • Modifier les informations d'une image +dans l'administration. Cet écran peut être atteint depuis picture.php ou Gestion par +lot dans le mode unitaire. Voir l'aide de cet écran pour les +détails.
                  • + +
                  • Administration, Catégories, Propriétés, +Représentant. Voir l'aide de cet écran pour les détails.
                  • + +
                  • Modifier une catégorie (le présent +écran).
                  • + +
                  + +

                  Le choix d'un représentant dépend du paramètre de configuration +allow_random_representative (voir include/config_default.inc.php).

                  + +

                  Par défaut (allow_random_representative à false), chaque +catégorie contenant au moins un élément est représenté par un élément +fixe. Une fois fixé (à la création de la catégorie), le représentant change +uniquement lorsque l'administrateur le demande. Si le représentant ne +convient pas, vous pouvez demander à Trouver un nouveau représentant +au hasard.

                  + +

                  Si le paramètre de configuration allow_random_representative +est à true, une catégorie contenant des éléments peut ne pas avoir de +représentant fixe. Utiliser simplement le bouton Supprimer le +représentant.

                  + +

                  Si la catégorie ne contient que des sous-catégories et aucun élément, elle peut cependant être représentée par n'importe quel +élément grâce à l'écran Modifier les informations +d'une image. La seule option disponible sur le présent écran est le bouton +Supprimer le représentant.

                  + +

                  Associer tous les éléments de la catégorie à une nouvelle catégorie

                  + +
                    + +
                  • Nom de la catégorie virtuelle: Nom de la nouvelle catégorie à créer, +toutes les images de la catégorie en cours seront liées à la nouvelle.
                  • + +
                  • Catégorie parente: À quel endroit la nouvelle catégorie doit être placée, +laisser vide pour la créer sur la page d'accueil.
                  • + +
                  + +

                  Associer tous les éléments de la catégorie à des catégories existantes

                  + +
                    + +
                  • Catégories: Choisir la catégorie de destination.
                  • + +
                  + +

                  Envoyer un courriel d'informations aux membres d'un groupe

                  + +
                    + +
                  • Groupe: Groupe de destinataires
                  • + +
                  • Contenu du courriel: Texte libre à leur envoyer.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/fr_CA/help/cat_move.html b/sources/language/fr_CA/help/cat_move.html new file mode 100644 index 0000000..834be31 --- /dev/null +++ b/sources/language/fr_CA/help/cat_move.html @@ -0,0 +1,15 @@ +

                  Déplacement de catégories virtuelles

                  + +

                  Vous pouvez changer le parent d'une catégorie virtuelle.

                  + +

                  Catégories virtuelles à déplacer

                  + +

                  Sélectionnez une ou plusieurs catégories virtuelle à déplacer. +Si la liste est vide, c'est que vous n'en avez pas encore créé.

                  + +

                  Nouvelle catégorie parente

                  + +

                  Sélectionnez la nouvelle catégorie parente (virtuelle ou physique). +Si vous n'en sélectionnez aucune, +les catégories à déplacer seront remontées à la racine des catégories. +Vous ne pouvez déplacer une catégorie dans elle-même ou ses enfants.

                  diff --git a/sources/language/fr_CA/help/cat_options.html b/sources/language/fr_CA/help/cat_options.html new file mode 100644 index 0000000..e0f454f --- /dev/null +++ b/sources/language/fr_CA/help/cat_options.html @@ -0,0 +1,39 @@ +

                  Options des catégories

                  + +

                  Gestion des options pour plusieurs catégories à la fois.

                  + +
                  + +
                  Autorisation à l'ajout
                  + +
                  Rendre les catégories autorisées à l'ajout par les visiteurs. Cette +option n'est disponible que pour les catégories physiques locales.
                  + +
                  Commentaires utilisateurs
                  + +
                  Autoriser les utilisateurs à ajouter des commentaires dans les catégories sélectionnées. +Une image sera commentable si elle appartient à au moins une catégorie commentable.
                  + +
                  Verrouiller
                  + +
                  Les catégories sélectionnées deviennent temporairement inactives pour +maintenance. Lorsqu'une catégorie est verrouillée, toutes les catégories +enfant sont verrouillées. Lorsqu'une catégorie est déverrouillée, toutes les +catégories parentes sont déverrouillées.
                  + +
                  Publique / Privée
                  + +
                  Les permissions n'existent que pour les catégories privées. Une fois qu'une catégorie est privée, il vous faut +explicitement autoriser les utilisateurs ou les groupes à y +accéder. Lorsqu'une catégorie devient privée, toutes les catégories enfants +deviennent privées. Lorsqu'une catégorie devient publique, toutes les +catégories parentes deviennent publiques.
                  + +
                  Représentant
                  + +
                  Cette option est disponible uniquement si le paramètre de +configuration allow_random_representative (voir include/config_default.inc.php) vaut +true. Chaque catégorie peut-être représentée par une image prise au hasard ou par une seule miniature fixe.
                  + +
                  diff --git a/sources/language/fr_CA/help/cat_perm.html b/sources/language/fr_CA/help/cat_perm.html new file mode 100644 index 0000000..5b0f700 --- /dev/null +++ b/sources/language/fr_CA/help/cat_perm.html @@ -0,0 +1,14 @@ +

                  Gérer les permissions pour une catégorie

                  + +

                  Cet écran n'est disponible que pour les catégories privées. Ici vous +pourrez sélectionner les utilisateurs et les groupes autorisés pour une +catégorie.

                  + +

                  Groupes

                  + +

                  Vous pouvez autoriser ou interdire l'accès des groupes à la catégorie courante. Les utilisateurs appartenant à ces groupes se verront autoriser ou interdire l'accès à la catégorie.

                  + +

                  Utilisateurs

                  + +

                  Vous pouvez autoriser ou interdire l'accès aux utilisateurs +individuellement. Les utilisateurs autorisés par ailleurs grâce à leur appartenance à un groupe peuvent se voir supprimer l'accès par exception.

                  diff --git a/sources/language/fr_CA/help/configuration.html b/sources/language/fr_CA/help/configuration.html new file mode 100644 index 0000000..d98a248 --- /dev/null +++ b/sources/language/fr_CA/help/configuration.html @@ -0,0 +1,138 @@ +

                  Configuration

                  + +

                  Cet écran permet de gérer la configuration basique. En effet, seuls sont +montrés les paramètres de configuration qui doivent suffire à la majorité +des administrateurs. Si vous souhaitez voir la liste des nombreux (et +avancés) paramètres, lire le fichier include/config_default.inc.php

                  + +

                  Cet écran est divisié en plusieurs sections, regroupant les paramètres +par thème.

                  + +

                  Principale

                  +
                    + +
                  • Titre de la galerie: utilisé pour le flux RSS et +la notification par email.
                  • + +
                  • Bannière des pages: code html affiché en haut des +pages.
                  • + +
                  • URL de la galerie: utilisé pour le flux RSS.
                  • + +
                  • Verrouiller la galerie: Verrouiller l'ensemble de la +galerie pour maintenance. Seul les administrateurs pourront accéder à la +galerie.
                  • + +
                  • Notation: La notation des photos est possible.
                  • + +
                  • Notation par les visiteurs: Même les utilisateurs non enregistrés peuvent noter les images.
                  • + +
                  • Permettre l'enregistrement des utilisateurs: L'inscription est libre pour tous.
                  • + +
                  • L'adresse de courriel est obligatoire pour tous les utilisateurs: L'adresse de courriel sera vérifiée lors des inscriptions ou de la mise à jour des profils sauf si l'action est effectuée dans la partie administration.
                  • + +
                  • Notifier les administrateurs lors de l'inscription d'un utilisateur: Les administrateurs recevront un courriel à chaque inscription.
                  • + +
                  + +

                  Historique

                  + +

                  les visites des pages index.php et picture.php sont +enregistrées dans la table history.

                  + +

                  Les visites sont affichées dans l'écran Administration, Spéciales, Historique.

                  + +
                    +
                  • Enregistrer les pages visitées par les invités: les visites des pages par les invités sont enregistrées.
                  • + +
                  • Enregistrer les pages visitées par les utilisateurs: les visites des pagespar les utilisateurs enregistrés sont enregistrées.
                  • + +
                  • Enregistrer les pages visitées par les administrateurs: les visites des pages par les administrateurs sont enregistrées.
                  • + +
                  + +

                  Commentaires

                  +
                    + +
                  • Commentaires utilisateur pour tous: même les +utilisateurs non enregistrés peuvent enregistrer des commentaires.
                  • + +
                  • Nombre de commentaires utilisateur par page.
                  • + +
                  • Validation: un administrateur doit valider les +commentaires utilisateurs avant qu'ils puissent devenir visibles dans la +partie publique. La validation des commentaires utilisateurs a lieu dans +l'écran Administration, Images, +Commentaires.
                  • + +
                  • Notifier les administrateurs quand un commentaire est enregistré: +Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui est validé.
                  • + +
                  • Notifier les administrateurs quand un commentaire requiert sa validation : +Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui demande une validation de la part des administrateurs. +La validation des commentaires utilisateurs a lieu dans l'écran Administration, Images, Commentaires.
                  • + +
                  + +

                  Ajout de photos

                  +
                    +
                  • Afficher le lien d'ajout de photo tout le temps: S'il existe des catégories permettant l'ajout de photo, le lien correspondant sera affiché quelque soit la catégorie.
                  • +
                  • Niveau d'accès utilisateur pour ajouter des photos: Permet de restreindre l'ajout à certains utilisateurs
                  • +
                  • Notifier les administrateurs quand une image est ajoutée: Les administrateurs recevront un courriel à chaque image ajoutée par un utilisateur.
                  • +
                  + +

                  Affichage par défaut

                  +

                  Modifier les options d'affichage par défaut: pour les visiteurs non +connectés. Une fois connecté, ces options sont surchargées par celles de +l'utilisateur, qu'il peut modifier dans l'écran profile.

                  + +

                  Il est possible de changer ces options pour les utilisateurs existants, +mais il s'agit d'un autre écran : Administration, +Identification, Utilisateurs, dans lequel vous pouvez modifier ces +options pour une liste d'utilisateurs sélectionnés.

                  + +
                    + +
                  • Langue: ne concerne que les libellés de +Piwigo. Les noms de catégories, d'image et les descriptions ne sont +pas localisés (ie multilingue).
                  • + +
                  • Nombre de miniatures par ligne
                  • + +
                  • Nombre de lignes par page
                  • + +
                  • Thème de l'interface
                  • + +
                  • Période récente: en jours. Période pendant laquelle +une image est considérée comment nouvelle. Cette période doit être +supérieure à 1 jour.
                  • + +
                  • Développer toutes les catégories: développer toutes +les catégories dans le menu? Attention: cette option est +susceptible de consommer inutilement des ressources si votre arbre de +catégories contient de nombreux éléments.
                  • + +
                  • Montrer le nombre de commentaires: montrer les nombre +de commentaires utilisateur en dessous de chaque miniature. Consomme des +ressources.
                  • + +
                  • Montrer le nombre de visualisations : affiche les + « hits » relevés sur une image sous sa miniature dans la page de miniatures. + Uniquement valable si le paramètre de configuration avancée est :
                    + $conf['show_nb_hits'] = true;
                    + N.B.: par defaut il est à false.
                  • + +
                  • Largeur maximum des images: à l'affichage. Si l'image +est plus large que ce paramètre, alors elle sera redimensionnée à +l'affichage. Si vous pensez nécessaire de modifier ce paramétrage (donc pour +un affichage par défaut), il serait pertinent de redimensionner directement +vos images stockées.
                  • + +
                  • Hauteur maximum des images: même remarque que pour la +largeur.
                  • + +
                  diff --git a/sources/language/fr_CA/help/extend_for_templates.html b/sources/language/fr_CA/help/extend_for_templates.html new file mode 100644 index 0000000..0e81d83 --- /dev/null +++ b/sources/language/fr_CA/help/extend_for_templates.html @@ -0,0 +1,101 @@ +

                  Configuration pour "étendre" les templates

                  + +

                  Objectif

                  +

                  Définir les conditions de remplacement de chaque template (modèle) à partir de template-extension +(template appelé "replacer" (remplaçant)).

                  + +

                  Les "Templates d'origine" provenant de ./template/yoga (ou de tout autre dossier que "yoga") + sont remplacés par un remplaçant si celui-ci est lié à son template d'origine + (et de façon facultative, quand l'adresse (URL) demandée contient un URL contains un "Paramètre facultatif de l'URL").

                  + +

                  Les "Paramètres facultatif de l'URL" sont ceux que vous pouvez trouver après le nom du module dans l'adresse (URL).

                  + +

                  Ainsi un "Paramètre facultatif de l'URL" peut être un "permalink" (lien permanent) actif +(voir les permalinks dans notre documentation pour plus d'information).

                  + +

                  Lire les `mises en garde` sur les conditions d'utilisation.

                  + +

                  Qu'est-ce que les extensions des modèles?

                  + +

                  Cet outil de configuration est à la fois puissant pour les débutants et pour les utilisateurs avancés. +Par FTP, dans le dossier template-extension, le Webmaster pourra dupliquer une bonne partie des fichiers + .tpl distribués ("Templates d'origine") avec un nom différent + ("replacer" (remplaçant)). + + "Templates d'origine", actuellement les modèles d'origine supportés sont:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl and/or thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl and/or footer.tpl
                  • +
                  • picture_content.tpl and/or picture.tpl
                  • + +
                  • profile.tpl and/or profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl and/or search_rules.tpl
                  • +
                  • nbm.tpl and/or notification.tpl
                  • +
                  • identification.tpl and/or register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  Où puis-je trouver les "Templates d'origine"?

                  + +

                  Les modèles distribués d'origine sont dans template/yoga/ +(ne pas les modifier directement à cet endroit pour des raisons d'évolution). Ainsi à partir des "templates d'origine", +tout webmaster pourra créer ses "replacers (modèles personalisés)".

                  + +

                  Où dois-je enregistrer les "remplaçants"?

                  + +

                  Les Replacers (templates modifiés) peuvent être placés dans le dossier +template-extension (ou ses sous-dossiers). +Les remplaçants peuvent avoir n'importe quel nom de fichier avec l'extension .tpl. Par exemple: template-extension/my-extension/video.tpl.

                  + + +

                  Comment puis-je activer mes "remplaçants"?

                  +

                  Un template d'origine devrait être associé à chaque + replacer (modèle modifié) à fin d'activer les remplacements correspondants. + Activer les remplaçants est la fonction de "Etendre les templates" dans les menus de Configuration de l'Administration.

                  + +

                  Si vous sélectionnez un Paramètre facultatif de l'URL alors les remplacements +ne seront réalisés que sur les pages utilisant ce mot clé. Par exemple: index.php?/most_visited

                  + +

                  Les utilisateurs avancés utiliseront les permalinks (permaliens, liens permanents) en tant que +paramètre facultatif de l'URL.

                  + +

                  Si vous sélectionnez un Template rattaché alors les remplacements ne seront réalisés que sur ce template.

                  + +

                  Comment puis-je désactiver mes "replacers"?

                  +
                    +
                  • Déselectionner le "template d'origine".
                  • +
                  • Par FTP supprimer le "remplaçant".
                  • +
                  + +

                  Mises en garde

                  +
                    + +
                  • Le template d'origine doit être le véritable template "d'origine" + autrement vous pourriez avoir des résultats imprévisibles!
                  • + +
                  • Si plusieurs remplaçants (templates modifiés) ont le même + template d'origine et le même paramètre facultatif + de l'URL alors seulement le dernier remplaçant sera actif.
                  • + +
                  • Ne pas sélectionner de paramètre facultatif de l'URL + activera le template de remplacement à chaque utilisation du template. + Comme mentionné ci-dessus, l'ordre peut inhiber les remplaçants précédents.
                  • + +
                  • Sous-dossiers: + Les sous-dossiers sont ignorés mais ils sont utiles pour modifier l'ordre des remplaçants.
                    +distributed-samples: pour vos tests sont distributés! +Ne pas les modifier, créez les votres! +
                  • + +
                  • A la suppression d'un remplaçant le template d'origine sera + immédiatement réactivé.
                  • + +
                  diff --git a/sources/language/fr_CA/help/group_list.html b/sources/language/fr_CA/help/group_list.html new file mode 100644 index 0000000..105c8a0 --- /dev/null +++ b/sources/language/fr_CA/help/group_list.html @@ -0,0 +1,21 @@ +

                  Liste des groupes

                  + +

                  Administration des propriétés des groupes.

                  + +

                  Ajouter un groupe

                  + +

                  L'administrateur peut ajouter des groupes.

                  + +

                  Liste des groupes

                  + +

                  La liste permet pour chaque groupe:

                  + +
                    +
                  • d'accéder à la liste des membres
                  • +
                  • d'accéder aux permissions
                  • +
                  • de supprimer le groupe (nécessite une confirmation)
                  • +
                  • d'inverser le statut "par défaut" (nécessite une confirmation)
                  • +
                  + +

                  Groupes par défaut

                  +

                  Les groupes par défaut sont des groupes associés automatiquement à chaque nouvel utilisateur lors de son enregistrement ou de sa création par un administrateur.

                  \ No newline at end of file diff --git a/sources/language/fr_CA/help/help_add_photos.html b/sources/language/fr_CA/help/help_add_photos.html new file mode 100644 index 0000000..dc20945 --- /dev/null +++ b/sources/language/fr_CA/help/help_add_photos.html @@ -0,0 +1,31 @@ +

                  Il existe plusieurs méthodes pour ajouter des photos dans votre +galerie :

                  + +
                    + +
                  • L'ajout direct dans votre navigateur web est la + méthode la plus simple et la plus immédiate. Elle dépend des capacités de + votre navigateur et de votre serveur. Pour des gros volumes ou en cas de + problèmes, les méthodes alternatives vous attendent !
                  • +
                  + + + +
                    +
                  • pLoader est un logiciel à installer sur votre + ordinateur. Glissez vos photos dans la fenêtre de pLoader, cliquez + sur "Transférer vers Piwigo" et pLoader s'occupe du reste. D'autres logiciels clients existent, comme WinToPiwigo ou le module + d'export Piwigo de Digikam.
                  • +
                  + + + +
                    +
                  • Le transfert FTP + est la méthode idéale pour ajouter une collection importante en un minimum + d'opérations. Suivez le guide pour préparer vos photos. Cette méthode vous + permet de contrôler avec précision l'organisation physique de vos photos + sur votre serveur.
                  • +
                  + + diff --git a/sources/language/fr_CA/help/help_groups.html b/sources/language/fr_CA/help/help_groups.html new file mode 100644 index 0000000..4291a67 --- /dev/null +++ b/sources/language/fr_CA/help/help_groups.html @@ -0,0 +1,8 @@ +

                  Les groupes d'utilisateurs permettent d'assigner des permissions à une liste d'utilisateurs.

                  + +

                  Vous pouvez créer des groupes et y ajouter des utilisateurs dans +Administration » Utilisateurs » Groupes.

                  + +

                  Un utilisateur peut appartenir à plusieurs groupes. L'autorisation l'emporte sur l'interdiction : si l'utilisateur "pierre" appartient aux +groupes "famille" et "amis", et que seul le groupe "famille" peut visiter la +catégorie "Noël 2003", alors "pierre" peut visiter cette catégorie.

                  diff --git a/sources/language/fr_CA/help/help_misc.html b/sources/language/fr_CA/help/help_misc.html new file mode 100644 index 0000000..ec1bc52 --- /dev/null +++ b/sources/language/fr_CA/help/help_misc.html @@ -0,0 +1,5 @@ +

                  Une fois votre galerie créée, configurez l'affichage par +défaut tel que désiré dans Administation » Configuration » Affichage par défaut. Chaque nouvel +utilisateur héritera de ces propriétés d'affichage dès son enregistrement.

                  + +

                  Pour toute question, la communauté francophone Piwigo est à l'écoute sur le forum.

                  diff --git a/sources/language/fr_CA/help/help_permissions.html b/sources/language/fr_CA/help/help_permissions.html new file mode 100644 index 0000000..5378d8d --- /dev/null +++ b/sources/language/fr_CA/help/help_permissions.html @@ -0,0 +1,48 @@ +
                  +Permissions par photo + +

                  Chaque photo a un niveau de confidentialité (un verrou). Chaque utilisateur a également un niveau de confidentialité (une clef). Il y a 5 niveaux de confidentialité : +

                    +
                  1. Aucun
                  2. +
                  3. Contacts
                  4. +
                  5. Amis (qui est davantage qu'un contact)
                  6. +
                  7. Famille (qui est davantage qu'un ami)
                  8. +
                  9. Admins (qui recouvre tous les autres niveaux)
                  10. +
                  + +

                  Les niveaux supérieurs disposent des droits pour accéder aux niveaux inférieurs. Pour un utilisateur donné, plus haut est son niveau de confidentialité, plus il peut voir de photos.

                  + +

                  Par exemple, si la photo "mariage_pierre-0024.jpg" a le niveau de confidentialité "Famille", alors :

                  +
                    +
                  • Pierre (qui est un Admin) peut la voir car "Admins" donne tous les droits
                  • +
                  • Vanessa (qui est une membre de la Famille) peut la voir également
                  • +
                  • Marie (qui n'est qu'une Amie) elle ne peut pas la voir
                  • +
                  + +

                  Un utilisateur qui ne dispose pas des permissions pour voir le contenu d’une catégorie ne verra pas du tout la catégorie, pas même son titre. Même principe pour un tag.

                  + +

                  Vous pouvez assigner le niveau de confidentialité d'un utilisateur sur l'écran Administration » Utilisateurs » Gérer.

                  + +
                  + +
                  +Permissions par catégorie + +

                  Si les niveaux de confidentialité ne correspondent pas exactement à vos besoins, vous pouvez également gérer les permissions par catégorie et pour un utilisateur ou un groupe donné. Vous pouvez gérer les permissions par photo et par catégorie en même temps, sans conflit.

                  + +

                  Vous pouvez interdire l'accès aux catégories. Passez le type d'accès de la catégorie à "privée" si vous souhaitez gérer les permissions.

                  + +

                  Vous pouvez rendre une catégorie privée en l'éditant (Administration » Catégories » Gérer » Éditer) ou en +gérant les options pour votre arbre complet des catégories (Administration » Catégories » Propriétés » Publique/Privée).

                  + +

                  Lorsqu'une catégorie est privée, vous pouvez gérer les permissions par groupes et utilisateurs avec 3 écrans :

                  + +
                    +
                  • Administration » Utilisateurs » Gérer » action Permissions (1 lien par utilisateur)
                  • +
                  • Administration » Utilisateurs » Groupes » action Permissions (1 lien par groupe)
                  • +
                  • Administration » Catégories » Gérer » Modifier les permissions (1 lien par catégorie)
                  • +
                  + +
                  diff --git a/sources/language/fr_CA/help/help_virtual_links.html b/sources/language/fr_CA/help/help_virtual_links.html new file mode 100644 index 0000000..0eb083c --- /dev/null +++ b/sources/language/fr_CA/help/help_virtual_links.html @@ -0,0 +1,5 @@ +

                  Les photos sont affichées dans les catégories correspondant aux répertoires dans lesquels elles sont stockées.

                  + +

                  Vous pouvez également afficher une photo dans plusieurs catégories, sans dupliquer le fichier sur votre serveur web. Associez la photo à n'importe quelle autre catégorie depuis l'écran d'édition de la photo (auquel vous accéder depuis la page de visualisation de la photo côté galerie, lorsque vous êtes connecté en tant qu'administrateur)

                  + +

                  Les catégories virtuelles sont basées sur ce principe : elles n'ont pas de répertoire associé. Créez des catégories virtuelles depuis Administration » Catégories » Gérer.

                  diff --git a/sources/language/fr_CA/help/history.html b/sources/language/fr_CA/help/history.html new file mode 100644 index 0000000..f991af9 --- /dev/null +++ b/sources/language/fr_CA/help/history.html @@ -0,0 +1,46 @@ +

                  Historique

                  + +

                  Ces écrans permettent de suivre l'historique de navigation dans Piwigo + suivant les options que vous avez déterminées dans - Administration - Générale + - Onglet "Historique".

                  + +

                  Statistiques

                  +
                    +

                    Si vous avez choisi que les visites des pages index.php et picture.php soient +enregistrées dans la table history, +cet onglet permet de suivre le nombre de pages visitées

                    + +
                  • Statistiques totales : visites par année
                  • + +
                  • Statistiques d'une année : visites par mois de l’année sélectionnée.
                  • + +
                  • Statistiques d'un mois : visites par jour du mois sélectionné.
                  • + +
                  • Statistiques d'une journée : visites par heures de la journée sélectionnée.
                  • + +
                  + +

                  Rechercher

                  +
                    +

                    Si vous avez choisi que les visites des pages index.php et picture.php soient +enregistrées dans la table history, cet onglet permet de suivre plus en détail les pages visitées avec l'aide de différents filtres.

                    + +
                  • Filtrer par date : sélectionner la plage +de dates dont vous souhaitez observer l’activité.
                  • + +
                  • Filtrer par type d'élément : sélectionner le +type d'élément dont vous souhaitez observer l’activité.
                  • + +
                  • Filtrer par utilisateur : sélectionner l'utilisateur dont vous + souhaitez observer l’activité.
                  • + +
                  • Filtrer par nom du fichier : sélectionner le nom du fichier dont vous + souhaitez observer l’activité.
                  • + +
                  • Filtrer par identifiant image : sélectionner l'identifiant de l'image dont vous + souhaitez observer l’activité.
                  • +
                  \ No newline at end of file diff --git a/sources/language/fr_CA/help/index.php b/sources/language/fr_CA/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/fr_CA/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/fr_CA/help/maintenance.html b/sources/language/fr_CA/help/maintenance.html new file mode 100644 index 0000000..34f7f24 --- /dev/null +++ b/sources/language/fr_CA/help/maintenance.html @@ -0,0 +1,64 @@ +

                  Maintenance

                  + +

                  Pour optimiser le temps de génération des pages, Piwigo utilise des informations en cache. + Par exemple, au lieu de compter le nombre d'éléments contenus dans chaque catégorie à + chaque rechargement de page, cette information est stockée dans la base de données. + En théorie, cette information doit toujours être correcte, mais parfois une erreur peut + survenir et l'information en cache devient fausse.

                  + +

                  Certaines informations deviennent inutiles avec le temps. +Les supprimer de la base de données libère de l'espace disque.

                  + +
                    + +
                  • + Eléments non liés: + Affiche les images qui ne sont associées à aucune catégorie virtuelle +
                  • +
                  • + Fichiers portant le même nom dans plusieurs catégories physiques : + Affiche les images ou les éventuels fichiers qui pourraient être trouvés dans plusieurs catégories. +
                  • + +
                  + +
                    + +
                  • Mettre à jour les informations des catégories : + Pour chaque catégorie, les informations suivantes sont contrôlées, et mises à jour le cas échéant : + liste des catégories mères, nombre d'éléments, date du dernier élément, position parmi les + catégories soeurs, position dans l'arbre complet des catégories. Cette action vérifie + également la cohérence des représentants.
                  • + +
                  • Mettre à jour les informations des images : +Pour chaque image, les informations mises àjour sont : chemin complet vers le +fichier et note moyenne. Attention, ne pas confondre : les méta-données sont +synchronisées sur l'écran Administration, Catégories, Synchroniser +ou sur l'écran Modifier les informations d'une image (accessible depuis la page de visualisation d'une image picture.php).
                  • + +
                  • Réparer et optimiser la base de données : +Effectue des opérations de ré-ordonnancement, réparation et optimisation sur chaque table de la base de données. +
                  • + +
                  + +
                    +
                  • Purger le détail de l'historique : +Supprime toutes les lignes de la table history. L'écran +Administration, Spéciales, Historique ne montre alors plus aucune information sur le passé. +Attention : toutes les données seront perdues, sans aucun possibilité de récupération. +
                  • + +
                  • Purger la synthèse de l'historique : +Supprime toutes les informations récapitulatives (obtenues à partir du détail de l'historique). +
                  • + +
                  • Purger les sessions : Supprimer les sessions expirées.
                  • + +
                  • Purger les flux de notification jamais utilisés
                  • + +
                  • Purger l'historique des recherches
                  • + +
                  • Purger les templates compilés
                  • + +
                  diff --git a/sources/language/fr_CA/help/notification_by_mail.html b/sources/language/fr_CA/help/notification_by_mail.html new file mode 100644 index 0000000..132d2a6 --- /dev/null +++ b/sources/language/fr_CA/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                  Notification par courriel

                  + +

                  Cet écran permet de configurer et de gérer les envois de courriels aux utilisateurs, pour les aviser de changements intervenus sur votre site.

                  + +

                  Cet écran est composé de 3 onglets:

                  + +

                  Paramétrage

                  +

                  Accessible uniquement aux webmestres, cet onglet permet de positionner les paramètres de la notification par courriel.

                  + +

                  Inscription

                  +

                  Accessible uniquement aux webmestres, cet onglet permet de gérer les inscriptions/désinscriptions à la notification par courriel.

                  + +

                  Envoi

                  +

                  Accessible aux webmestres et aux administrateurs, cet onglet permet d'effectuer les envois de courriels pour notifier les changements.

                  diff --git a/sources/language/fr_CA/help/permalinks.html b/sources/language/fr_CA/help/permalinks.html new file mode 100644 index 0000000..a401d2f --- /dev/null +++ b/sources/language/fr_CA/help/permalinks.html @@ -0,0 +1,7 @@ +

                  Liens permanents

                  + +

                  Les liens permanents sont utilisés pour rendre plus jolis les urls des catégories. Lorsqu'une catégorie dispose d'un lien permanent associée, son identifiant n'est plus nécessaire dans l'url.

                  + +

                  Quand un lien permanent est effacé, vous pouvez le sauvegarder dans l'historique des liens permanents, de sorte que les liens externes à Piwigo puissent continuer à fonctionner. Dans l'historique des liens permanents vous pouvez voir la date d'effacement du lien, ainsi que la date de la dernière utilisation et le nombre d'utilisations de ce lien.

                  + +

                  Veuillez noter que les liens permanents doivent être uniques. Ils doivent aussi être uniques dans l'historique des liens permanents.

                  diff --git a/sources/language/fr_CA/help/photos_add_ftp.html b/sources/language/fr_CA/help/photos_add_ftp.html new file mode 100644 index 0000000..e3bfad1 --- /dev/null +++ b/sources/language/fr_CA/help/photos_add_ftp.html @@ -0,0 +1,122 @@ +
                  + Démarrage rapide + +
                    +
                  1. Créez un répertoire sur votre ordinateur.
                  2. + +
                  3. Copiez des photos à l'intérieur de ce répertoire, puis redimensionnez-les pour un affichage sur le web. Attention : le nom des répertoires et des fichiers ne doit contenir que des lettres, des chiffres et les caractères "-", "_" ou ".". Pas d'espace ou de caractères accentués.
                  4. + +
                  5. Avec un client FTP, copiez le répertoire dans le répertoire "galleries" de votre installation de Piwigo.
                  6. + +
                  7. Connectez-vous à votre galerie Piwigo et rendez-vous sur Administration » Images » Miniatures pour créer les miniatures manquantes.
                  8. + +
                  9. Rendez-vous sur Administration et cliquez sur le gros bouton de synchronisation.
                  10. +
                  + +

                  Bravo ! Vous avez créé avec succès la première catégorie de votre galerie.

                  + +
                  + +
                  + Organisation des répertoires et des fichiers + +
                    + +
                  • + +

                    Les répertoires représentant les albums se trouvent dans le répertoire "galleries". Ci-dessous l'arbre des répertoires d'une très petite galerie (mais utilisant de nombreuses fonctionnalités) :

                    + +
                    +galleries
                    +|-- mariage
                    +|   |-- ceremonie
                    +|   |   |-- entree
                    +|   |   |   |-- arrivee-de-paul.jpg
                    +|   |   |   +-- arrivee-de-virginie.jpg
                    +|   |   +-- sortie
                    +|   |       |-- sortie-enfants-honneur.jpg
                    +|   |       +-- sortie-de-paul-et-virginie.jpg
                    +|   +-- cocktail
                    +|       |-- discours001.jpg
                    +|       |-- discours002.jpg
                    +|       +-- discours003.jpg
                    ++-- voyage-de-noces
                    +    |-- hotel.png
                    +    |-- video-decollage-avion.avi
                    +    +-- pwg_representative
                    +        +-- video-decollage-avion.jpg
                    +
                    + +
                  • + +
                  • A l'exception de celui appelé "pwg_representative", chaque répertoire dans "galleries" génère un album. Le nombre de niveaux (profondeur) n'est pas limité.
                  • + +
                  • Fondamentalement, un élément est représenté par un fichier. Pour Piwigo, un fichier peut être un élément si son extension figure dans la liste du paramètre de configuration file_ext (voir +fichier include/config.inc.php). Un fichier +peut être une image si son extension figure dans la liste du paramètre de configuration +picture_ext.
                  • + +
                  • Les éléments de type image doivent avoir une miniature associée (voir la +section suivante à propos des miniatures).
                  • + +
                  • Les éléments de type image peuvent avoir un image en grand format +associé. Comme pour le fichier mariage.jpg +dans l'exemple ci-dessus. Aucun préfixe n'est nécessaire sur le nom du +fichier.
                  • + +
                  • Les éléments autres que les images (vidéos, sons, fichiers texte, tout ce que vous +voulez...) sont représentés par défaut par une icône correspondant à +l'extension du nom du fichier. Optionnellement, une miniature et un +représentant peuvent être associés (voir le fichier video.avi dans l'exemple).
                  • + +
                  • Attention : le nom d'un répertoire ou d'un fichier ne doit +être composé que de lettres, de chiffres, de "-", "_" ou ".". Pas d'espace +ou de caractères accentués.
                  • + +
                  • Conseil : une catégorie peut contenir des éléments et des +sous-catégories à la fois. Néanmoins, il est fortement conseillé pour chaque +catégorie de choisir entre contenir des éléments ou bien +des sous-catégories.
                  • + +
                  • Une fois que les fichiers, les miniatures et les représentants sont +correctement placés dans les répertoires, se rendre sur l'écran Administration » Catégories » Synchroniser.
                  • + +
                  + +
                  + +
                  + Miniatures + +
                    + +
                  • Comme mentionné précédemment, chaque élément de type image doit être +associé à une miniature.
                  • + +
                  • Les miniatures sont stockées dans le sous-répertoire "thumbnail" de +chaque répertoire représentant une catégorie. Une miniature est un fichier +de type image (même extension du nom du fichier) dont le nom de fichier est +préfixé par le paramètre de configuration prefix_thumbnail +(voir include/config.inc.php).
                  • + +
                  • Les miniatures n'ont pas besoin d'avoir la même extension que leur +image associée (une image avec ".jpg" comme extension peut avoir une +miniature en ".GIF" par exemple).
                  • + +
                  • Il est conseillé d'utiliser un outil externe pour la création des +miniatures.
                  • + +
                  • Vous pouvez également utiliser l'outil de création de miniatures +intégré à Piwigo mais cela est déconseillé car la qualité risque +d'être décevante et cela utilise inutilement les ressources du serveur (ce +qui peut être un grave problème sur un serveur mutualisé).
                  • + +
                  • Si vous choisissez d'utiliser le serveur web pour générer les +miniatures, vous devez donner les droits en écriture sur les +répertoires.
                  • + +
                  + +
                  diff --git a/sources/language/fr_CA/help/search.html b/sources/language/fr_CA/help/search.html new file mode 100644 index 0000000..af9af3a --- /dev/null +++ b/sources/language/fr_CA/help/search.html @@ -0,0 +1,26 @@ +

                  Recherche

                  + +

                  Recherche d'images dans l'ensemble de la galerie.

                  + +
                  + +
                  Rechercher un mot
                  + +
                  Recherche un ou plusieurs mots dans tous les attributs des images de la galerie +images. Utiliser * comme passe-partout pour les recherches partielles.
                  + +
                  Recherche d'un auteur
                  + +
                  Utiliser * comme passe-partout pour les recherches partielles.
                  + +
                  Recherche par date
                  + +
                  Sélectionner une date et/ou une date de fin. Laisser la date vide si +vous souhaitez faire une recherche "avant". Dans le dernier champ, l'année doit être saisie avec 4 chiffres (2005 par exemple).
                  + +
                  Recherche dans les catégories
                  + +
                  Sélectionner les catégories sur lesquelles restreindre la +recherche. Il est possible de chercher dans toutes les catégories en sélectionnant la catégorie parente, et en autorisant la recherche dans les sous-catégories.
                  + +
                  diff --git a/sources/language/fr_CA/help/synchronize.html b/sources/language/fr_CA/help/synchronize.html new file mode 100644 index 0000000..a5daaa2 --- /dev/null +++ b/sources/language/fr_CA/help/synchronize.html @@ -0,0 +1,19 @@ +

                  Synchroniser

                  + +
                    + +
                  • Il existe 2 types de synchronisations : structure (répertoires/fichiers) et +meta-données. Synchroniser la structure consiste à synchroniser l'arborescence +de vos répertoires et fichiers avec leur représentation dans la +base de données. La synchronisation des méta-données assure la mise à jour des +informations telles que le poids du fichier, les dimensions, les données EXIF ou +IPTC.
                  • + +
                  • La première synchronisation à effectuer doit être celle sur la +structure.
                  • + +
                  • Le processus de synchronisation peut prendre du temps (en fonction de +la charge du serveur et de la quantité de fichiers à gérer), il est donc +possible de procéder catégorie par catégorie.
                  • + +
                  diff --git a/sources/language/fr_CA/help/user_list.html b/sources/language/fr_CA/help/user_list.html new file mode 100644 index 0000000..843bac6 --- /dev/null +++ b/sources/language/fr_CA/help/user_list.html @@ -0,0 +1,27 @@ +

                  Liste des utilisateurs

                  + +

                  Permet la gestion des propriétés des utilisateurs enregistrés, à l'exception des permissions, qui sont gérées via d'autres écrans.

                  + +

                  Ajouter un utilisateur

                  + +

                  L'administrateur peut ajouter manuellement des utilisateurs.

                  + +

                  Liste des utilisateurs

                  + +

                  La liste peut être filtrée avec le nom d'utilisateur (* = passe-partout), avec le +groupe ou encore le statut. La liste peut être triée par date +d'enregistrement ou nom d'utilisateur, en ordre croissant ou +décroissant.

                  + +

                  Cet écran permet la modification simultanée de plusieurs utilisateurs +avec les actions suivantes :

                  + +
                    +
                  • supprimer des utilisateurs (nécessite une confirmation)
                  • +
                  • changer le statut
                  • +
                  • associer ou dissocier des groupes
                  • +
                  • modifier les propriétés d'affichage
                  • +
                  • modifier les propriétés annexes
                  • +
                  + +

                  Les utilisateurs modifiés sont ceux sélectionnés (comportement par défaut) ou l'ensemble des utilisateurs de la liste filtrée.

                  diff --git a/sources/language/fr_CA/index.php b/sources/language/fr_CA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/fr_CA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/fr_CA/install.lang.php b/sources/language/fr_CA/install.lang.php new file mode 100644 index 0000000..452322e --- /dev/null +++ b/sources/language/fr_CA/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = "Besoin d'aide ? Posez votre question sur le forum de Piwigo."; +$lang['Visitors will be able to contact site administrator with this mail'] = "Les visiteurs pourront contacter l'administrateur du site par ce courriel"; +$lang['PHP 5 is required'] = "PHP 5 est requis"; +$lang['It appears your webhost is currently running PHP %s.'] = "Apparemment, la version PHP de votre hébergeur est PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo va essayer de passer en PHP 5 en créant ou modifiant le fichier .htaccess."; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Notez que vous pouvez modifier vous-même la configuration PHP et re-lancer Piwigo ensuite."; +$lang['Try to configure PHP 5'] = "Essayer de configurer PHP 5"; +$lang['Sorry!'] = "Désolé!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo n'a pas pu configurer PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Il vous faut contacter le support de votre hébergeur pour savoir comment configurer vous-même PHP 5."; +$lang['Hope to see you back soon.'] = "En espérant vous revoir très prochainement."; +$lang['Congratulations, Piwigo installation is completed'] = 'Félicitations, l\'installation de Piwigo est terminée'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Une solution alternative est de copier le texte dans la zone ci-dessous et de le coller dans le fichier "local/config/database.inc.php" (Attention: database.inc.php ne doit contenir que ce qui se trouve dans la zone, pas de retour à la ligne, pas d\'espace)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'La création du fichier de configuration local/config/database.inc.php a échoué.'; +$lang['Download the config file'] = 'Télécharger le fichier de configuration'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Vous pouvez télécharger le fichier de configuration et le transférer dans le répertoire local/config de votre installation Piwigo.'; +$lang['Just another Piwigo gallery'] = 'Une galerie Piwigo de plus'; +$lang['Welcome to my photo gallery'] = 'Bienvenue sur ma galerie photo'; +$lang['Welcome to your new installation of Piwigo!'] = 'Bienvenue sur votre nouvelle installtion de Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'N\'hésitez pas à consulter bos forums si vous avez le moindre problème : %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost ou autre, communiqué par votre hébergeur'; +?> \ No newline at end of file diff --git a/sources/language/fr_CA/iso.txt b/sources/language/fr_CA/iso.txt new file mode 100644 index 0000000..7956405 --- /dev/null +++ b/sources/language/fr_CA/iso.txt @@ -0,0 +1 @@ +Québecois [QC] \ No newline at end of file diff --git a/sources/language/fr_CA/upgrade.lang.php b/sources/language/fr_CA/upgrade.lang.php new file mode 100644 index 0000000..00b613a --- /dev/null +++ b/sources/language/fr_CA/upgrade.lang.php @@ -0,0 +1,45 @@ +release %s
                  (or equivalent).'] = "Cette page vous propose de mettre à jour la base de données de votre ancienne version de piwigo vers la nouvelle version. +L'assistant de mise à jour pense que vous disposez actuellement de la version %s (ou équivalente)."; +$lang['Upgrade from version %s to %s'] = "Mise à jour de la version %s à %s"; +$lang['Statistics'] = "Statistiques"; +$lang['total upgrade time'] = "temps total de la mise à jour"; +$lang['total SQL time'] = "temps total des requêtes SQL"; +$lang['SQL queries'] = "nombre de requêtes SQL"; +$lang['Upgrade informations'] = "Informations sur la mise à jour"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Veuillez effectuer une maintenance dans [Administration>Outils>Maintenance] si vous rencontrez des problèmes."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Par précaution, les plugins suivants ont été désactivés. Vérifiez s'il existe des mises à jour avant de les réactiver:"; +$lang['Only administrator can run upgrade: please sign in below.'] = "Seul un administrateur peut lancer la mise à jour: veuillez vous identifier ci-dessous."; +$lang['You do not have access rights to run upgrade'] = "Vous n'avez pas les droits nécessaires pour lancer la mise à jour."; +$lang['All sub-albums of private albums become private'] = "Toutes les sous-catégories de catégories privées deviennent privées"; +$lang['User permissions and group permissions have been erased'] = "Les permissions des utilisateurs et des groupes ont été effacées"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Seuls le préfixe des miniatures et l'adresse de courriel du webmestre ont étés conservés de la précédente configuration"; +$lang['In %s, before ?>, insert:'] = 'Dans le fichier %s, avant ?>, insérez:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Par précaution, les thèmes suivants ont été désactivés. Vérifiez s\'il existe des mises à jour avant de les réactiver:'; + +?> \ No newline at end of file diff --git a/sources/language/fr_FR/about.html b/sources/language/fr_FR/about.html new file mode 100644 index 0000000..487beee --- /dev/null +++ b/sources/language/fr_FR/about.html @@ -0,0 +1,8 @@ +

                  Cette galerie photo est basée sur Piwigo.

                  + +

                  Piwigo est un logiciel de galerie photo pour le web, bâti par une +communauté active d'utilisateurs et de développeurs. Les extensions rendent +Piwigo facilement personnalisable. Cerise sur le gâteau, Piwigo est libre et +gratuit.

                  + +

                  Visiter le site web de Piwigo

                  diff --git a/sources/language/fr_FR/admin.lang.php b/sources/language/fr_FR/admin.lang.php new file mode 100644 index 0000000..3a49ebc --- /dev/null +++ b/sources/language/fr_FR/admin.lang.php @@ -0,0 +1,979 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader signifie Piwigo Uploader. Depuis votre ordinateur, pLoader prépare vos photos et les transfère vers votre galerie photo Piwigo.'; +$lang['Languages'] = 'Langues'; +$lang['Installed Languages'] = 'Langues installées'; +$lang['Add New Language'] = 'Ajouter une langue'; +$lang['Language has been successfully installed'] = 'La langue a été installée avec succès'; +$lang['Allow user customization'] = "Permettre la personnalisation de l'affichage"; +$lang['Select:'] = 'Sélectionner :'; +$lang['None'] = 'Rien'; +$lang['Invert'] = 'Inverser'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossible de désactiver ce thème, il doit rester au moins un thème activé.'; +$lang['Webmaster status is required.'] = 'Vous devez avoir le status de "webmaster".'; +$lang['Bound Theme'] = 'Thème rattaché'; +$lang['Allow rating'] = "Permettre les notations"; +$lang['Select at least one comment'] = 'Sélectionnez au moins un commentaire'; +$lang['Active Plugins'] = 'Plugins activés'; +$lang['Inactive Plugins'] = 'Plugins désactivés'; +$lang['Missing Plugins'] = 'Plugins manquants'; +$lang['Uninstalled Plugins'] = 'Plugins non installés'; +$lang['By %s'] = 'Par %s'; +$lang['Visit plugin site'] = 'Visitez le site du plugin'; +$lang['Active Languages'] = 'Langues activées'; +$lang['Delete this language'] = 'Supprimer cette langue'; +$lang['Forbid this language to users'] = 'Interdire cette langue aux utilisateurs'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossible de désactiver cette langue, commencez par définir une autre langue par défaut.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossible de désactiver cette langue, il doit rester au moins une langue.'; +$lang['Inactive Languages'] = 'Langues désactivées'; +$lang['Make this language available to users'] = 'Rendre cette langue disponible aux utilisateurs'; +$lang['Set as default language for unregistered and new users'] = 'Langue par défaut pour les invités et les nouveaux utilisateurs'; +$lang['Add Photos'] = 'Ajouter des photos'; +$lang['Miscellaneous'] = 'Divers'; +$lang['The following tag was deleted'] = 'Le tag suivant a été supprimé'; +$lang['Virtual Links'] = 'Liens virtuels'; +$lang['There is no other language available.'] = 'Il n\'y a pas d\'autre langue disponible.'; +$lang['There is no other plugin available.'] = 'Il n\'y a pas d\'autre plugin disponible.'; +$lang['There is no other theme available.'] = 'Il n\'y a pas d\'autre thème disponible.'; +$lang['delete'] = 'effacer'; +$lang['Add another set of photos'] = 'Ajouter d\'autres photos'; +$lang['Order of menubar items has been updated successfully.'] = 'L\'ordre des éléments du menu a été mis à jour avec succès.'; +$lang['This theme was not designed to be directly activated'] = 'Ce thème n\'est pas conçu pour être activé directement'; +$lang['Pending Comments'] = 'Commentaires en attente'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Dans votre fichier php.ini, la variable upload_max_filesize (%sB) est plus grande que post_max_size (%sB), vous devriez modifier ce paramétrage'; +$lang['Exif extension not available, admin should disable exif use'] = 'L\'extension Exif n\'est pas disponible, un administrateur devrait désactiver l\'utilisation des métadonnées Exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Le poids du fichier transféré dépasse la valeur de upload_max_filesize définie dans votre fichier php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Le poids total des fichiers transférés dépasse la valeur de post_max_size dans votre fichier php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Le poids du fichier transféré dépasse la valeur de MAX_FILE_SIZE définie dans le formulaire HTML'; +$lang['The uploaded file was only partially uploaded'] = 'Le fichier n\'a été que partiellement transféré'; +$lang['No file was uploaded'] = 'Aucun fichier n\'a été transféré'; +$lang['Missing a temporary folder'] = 'Impossible de trouver le répertoire temporaire'; +$lang['Failed to write file to disk'] = 'Échec à l\'écriture du fichier sur le serveur'; +$lang['File upload stopped by extension'] = 'Le transfert du fichier a été arrêté par une extension'; +$lang['Unknown upload error'] = 'Erreur inconnue survenue lors du transfert'; +$lang['Error on file "%s" : %s'] = 'Erreur sur le fichier "%s" : %s'; +$lang['Menu Management'] = 'Menus'; +$lang['automatic order'] = 'ordre automatique'; +$lang['manual order'] = 'ordre manuel'; +$lang['Albums automatically sorted'] = 'Les albums ont été triés automatiquement'; +$lang['The original maximum width must be a number between %d and %d'] = 'La largeur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'La hauteur maximum pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d'; +$lang['The original image quality must be a number between %d and %d'] = 'La qualité d\'image pour le redimensionnement de la photo originale doit être un chiffre compris entre %d et %d'; +$lang['Batch Manager'] = 'Gestion par lot'; +$lang['include child albums'] = 'inclure les sous-albums'; +$lang['Selection'] = 'Sélection'; +$lang['Action'] = 'Action'; +$lang['Set author'] = 'Définir l\'auteur'; +$lang['Set title'] = 'Définir le titre'; +$lang['Set creation date'] = 'Définir la date de création'; +$lang['Apply action'] = 'Appliquer l\'action'; +$lang['on the %d selected photos'] = 'sur les %d photos sélectionnées'; +$lang['%d of %d photos selected'] = '%d photos sur %d sont sélectionnées'; +$lang['No photo selected, %d photos in current set'] = 'Aucune photo sélectionnée parmi les %d photos du lot'; +$lang['All %d photos are selected'] = 'Toutes les %d photos du lot sont sélectionnées'; +$lang['remove this filter'] = 'supprimer ce filtre'; +$lang['Duplicates'] = 'Doublons'; +$lang['Add a filter'] = 'Ajouter un filtre'; +$lang['Remove all filters'] = 'Supprimer tous les filtres'; +$lang['Refresh photo set'] = 'Rafraîchir le lot de photos'; +$lang['The whole page'] = 'Toute la page'; +$lang['The whole set'] = 'Tout le lot'; +$lang['No photo in the current set.'] = 'Aucune photo dans le lot.'; +$lang['No photo selected, no action possible.'] = 'Aucune photo sélectionnée, aucune action possible.'; +$lang['Choose an action'] = 'Choisir une action'; +$lang['remove author'] = 'supprimer l\'auteur'; +$lang['Type here the author name'] = 'Entrez ici le nom de l\'auteur'; +$lang['remove title'] = 'supprimer le titre'; +$lang['Type here the title'] = 'Entrez ici le titre'; +$lang['remove creation date'] = 'supprimer la date de création'; +$lang['Week starts on'] = 'La semaine commence le'; +$lang['You have %d orphan tags: %s.'] = 'Vous avez %d tags orphelins: %s.'; +$lang['Delete orphan tags'] = 'Supprimer les tags orphelins'; +$lang['delete photo'] = 'supprimer la photo'; +$lang['Remove from caddie'] = 'Retirer du panier'; +$lang['Themes which need upgrade'] = 'Thèmes à mettre à jour'; +$lang['Languages which need upgrade'] = 'Langues à mettre à jour'; +$lang['All themes are up to date.'] = 'Tous les thèmes sont à jour.'; +$lang['All plugins are up to date.'] = 'Tous les plugins sont à jour.'; +$lang['All languages are up to date.'] = 'Toutes les langues sont à jour.'; +$lang['Visit theme site'] = 'Visitez le site du thème'; +$lang['Visit language site'] = 'Visitez le site de la langue'; +$lang['New Version'] = 'Nouvelle version'; +$lang['Obsolete Plugins'] = 'Plugins obsolètes'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATTENTION! Ce plugin n\'a pas l\'air d\'être compatible avec votre version de Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Voulez-vous l\'activer quand même?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'CE PLUGIN FAIT DÉSORMAIS PARTIE DU CORE DE PIWIGO! SUPPRIMEZ-LE.'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERREUR: CE PLUGIN EST MANQUANT MAIS TOUJOURS INSTALLÉ! DÉSINSTALLEZ-LE.'; +$lang['display'] = 'Afficher'; +$lang['Restore'] = "Restaurer"; +$lang['Restore default configuration. You will lose your plugin settings!'] = "Restaurer la configuration par défaut? Vous perdrez vos réglages personnels !"; +$lang['Thumbnails generation in progress...'] = 'Génération des miniatures en cours...'; +$lang['Photos generation in progress...'] = 'Génération des photos en cours...'; +$lang['%s photos have been regenerated'] = '%s photos ont été régénérées'; +$lang['%s photos can not be regenerated'] = '%s photos ne peuvent pas être régénérées'; +$lang['Updates'] = 'Mises à jour'; +$lang['Update in progress... Please wait.'] = 'Mise à jour en cours... Veuillez patienter.'; +$lang['Ignore this update'] = 'Ignorer cette mise à jour'; +$lang['Reset ignored updates'] = 'Réinitialiser les mises à jour ignorées'; +$lang['Update All'] = 'Tout mettre à jour'; +$lang['ERROR'] = 'ERREUR'; +$lang['Update Complete'] = 'Mise à jour effectuée'; +$lang['Piwigo Update'] = 'Mise à jour de Piwigo'; +$lang['Extensions Update'] = 'Mise à jour des extensions'; +$lang['All extensions are up to date.'] = 'Toutes les extensions sont à jour.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Les plugins suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Les thèmes suivants ne seront peut-être pas compatibles avec la nouvelle version de Piwigo:'; +$lang['I decide to update anyway'] = 'Je décide de migrer quand même'; +$lang['Update to Piwigo %s'] = 'Mettre à jour vers Piwigo %s'; +$lang['Two updates are available'] = 'Deux mises à jour sont disponibles'; +$lang['This is a minor update, with only bug corrections.'] = 'Ceci est une mise à jour mineure, avec uniquement des corrections de bugs.'; +$lang['This is a major update, with new exciting features.'] = 'Ceci est une mise à jour majeure, qui contient un tas de nouveautés.'; +$lang['Some themes and plugins may be not available yet.'] = 'Certains thèmes ou plugins ne sont peut-être pas encore disponibles.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Vous pouvez mettre à jour vers Piwigo %s directement, sans passer par Piwigo %s (recommandé).'; +$lang['Save Template Directory'] = 'Sauvegarder le dossier template'; +$lang['Dump Database'] = 'Sauvegarder la base de données'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclure les données de l\'historique (Attention: risque de dépassement de la limite mémoire du serveur)'; +$lang['Unable to dump database.'] = 'Impossible de sauvegarder la base de données.'; +$lang['Some upgrades are available for extensions.'] = 'Des mises à jour sont disponibles pour les extensions.'; +$lang['Please wait...'] = 'Veuillez patienter...'; +$lang['Ignore All'] = 'Tout ignorer'; +$lang['Crop'] = 'Retailler'; +$lang['Width'] = 'Largeur'; +$lang['Height'] = 'Hauteur'; +$lang['Follow Orientation'] = "Respecter l'orientation"; +$lang['Graphics Library'] = 'Bibliothèque graphique'; +$lang['Show menubar'] = 'Afficher le menu'; +$lang['No results'] = 'Pas de résultat'; +$lang['Type in a search term'] = 'Entrez un terme de recherche'; +$lang['Searching...'] = 'Recherche...'; +$lang['new'] = 'nouveau'; +$lang['Default photos order'] = "Ordre par défaut des photos"; +$lang['Activate icon "new" next to albums and pictures'] = 'Afficher l\'icône "nouveau" à côté des albums et des photos'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Vous ne pouvez définir l\'ordre par défaut des photos car vous avez un paramètre personnalisé dans votre configuration locale.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Vous avez spécifié $conf[\'order_by\'] dans votre fichier de configuration, ce paramètre est obsolète, veuillez le supprimer ou le renommer en $conf[\'order_by_custom\'] !'; +$lang['Add a criteria'] = 'Ajouter un critère'; +$lang['... or '] = '... ou bien '; +$lang['Create'] = 'Créer'; +$lang['Start Upload'] = 'Démarrer le transfert'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Vous utilisez le formulaire Flash. Des problèmes ? Essayez le formulaire HTML à la place.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Vous utilisez le formulaire HTML. Essayez le formulaire Flash à la place.'; +$lang['Maximum file size: %sB.'] = 'Poids maximum des fichiers : %sB.'; +$lang['Allowed file types: %s.'] = 'Types de fichiers autorisés : %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Résolution maximum approximative : %dM pixels (soit %dx%d pixels).'; +$lang['Manage Permissions'] = 'Gérer les permissions'; +$lang['Photo %s of %s'] = 'Photo %s sur %s'; +$lang['show details'] = 'montrer les détails'; +$lang['hide details'] = 'cacher les détails'; +$lang['Merge tags'] = 'Fusionner les tags'; +$lang['Select the destination tag'] = 'Sélectionnez le tag de destination'; +$lang['(this tag will be deleted)'] = '(ce tag sera supprimé)'; +$lang['Confirm merge'] = 'Confirmez la fusion'; +$lang['Merge selected tags'] = 'Fusionner les tags sélectionnés'; +$lang['No destination tag selected'] = 'Vous n\'avez pas sélectionné de tag de destination'; +$lang['Tags %s merged into tag %s'] = 'Les tags %s ont été fusionnés dans le tag %s'; +$lang['Select at least two tags for merging'] = 'Sélectionnez au moins deux tags pour la fusion'; +$lang['Average rate'] = 'Note moyenne'; +$lang['Rate'] = 'Note'; +$lang['Learn more'] = 'En savoir plus'; +$lang['Select an album'] = 'Selectionnez un album'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Par défaut, Piwigo créera la nouvelle taille web à partir de la HD (haute définition).'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Si la HD n\'est pas disponible et que la version actuelle de la taille web est plus grande que les dimensions ci-dessous, alors Piwigo la considérera comme HD et créera la nouvelle taille web à partir de celle-ci.'; +$lang['An error has occured during upgrade.'] = 'Une erreur est survenue pendant la mise à jour.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Impossible d\'extraire les fichiers. Veuillez vérifier les permissions des fichiers de votre installation.
                  Cliquez ici pour voir le rapport d\'erreur.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne peut pas récupérer le fichier de mise à jour depuis le serveur'; +$lang['Last import'] = 'Dernier import'; +$lang['With no album'] = 'Sans album'; +$lang['With no tag'] = 'Sans tag'; +$lang['With no virtual album'] = 'Sans album virtuel'; +$lang['Predefined filter'] = 'Filtre prédéfini'; +$lang['Add tags'] = "Ajouter les tags"; +$lang['Synchronize metadata'] = "Synchroniser les méta-données"; +$lang['Add to caddie'] = 'Ajouter au panier'; +$lang['Zoom'] = 'Zoom'; +$lang['Resize after upload'] = 'Redimensionner après transfert'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionnement après transfert désactivé car GD est la librairie graphique utilisée actuellement'; +$lang['Original Size'] = 'Taille originale'; +$lang['Send connection settings by email'] = 'Envoyer les identifiants par email'; +$lang['Activate comments'] = 'Activer les commentaires'; +$lang['Default comments order'] = 'Ordre par défaut des commentaires'; +$lang['A locked gallery is only visible to administrators'] = 'Une galerie verrouillée n\'est visible que des administrateurs'; +$lang['Unlock gallery'] = 'Déverouiller la galerie'; +$lang['Gallery unlocked'] = 'Galerie déverouillée'; +$lang['Notify administrators when a comment is'] = 'Notifier les administrateurs lorsqu\'un commentaire est'; +$lang['modified'] = 'modifié'; +$lang['deleted'] = 'supprimé'; +$lang['pending validation'] = 'en attente de validation'; +$lang['Save visits in history for'] = 'Historiser les visites des '; +$lang['simple visitors'] = 'simple visiteurs'; +$lang['registered users'] = 'utilisateurs enregistrés'; +$lang['administrators'] = 'administrateurs'; +$lang['This album contains %d photos, added on %s.'] = 'Cet album contient %d photos, ajoutées le %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Cet album contient %d photos, ajoutées entre le %s et le %s.'; +$lang['This album contains no photo.'] = 'Cet album ne contient pas de photo.'; +$lang['%s has been successfully updated.'] = '%s a été mis à jour avec succès.'; +$lang['Move to album'] = 'Déplacer vers l\'album'; +$lang['You can activate only one mobile theme.'] = 'Vous ne pouvez activer qu\'un seul thème mobile.'; +$lang['Center of interest'] = 'Centre d\'interêt'; +$lang['Not cropped correctly?'] = 'La photo n\'est pas recadrée correctement ?'; +$lang['Photo name'] = 'Nom de la photo'; +$lang['Automatic sort order'] = 'Ordre de tri automatique'; +$lang['apply automatic sort order'] = 'appliquer un ordre de tri automatique'; +$lang['Save manual order'] = 'Sauvegarder l\'ordre manuel'; +$lang['cancel manual order'] = 'annuler l\'ordre manuel'; +$lang['Cancel'] = 'Annuler'; +$lang['List'] = 'Liste'; +$lang['Web Form'] = 'Formulaire web'; +$lang['Applications'] = 'Applications'; +$lang['Available versions for'] = 'Versions disponibles pour'; +$lang['Available on'] = 'Disponible sur'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pour iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'L\'application Piwigo pour iOS vous permet de connecter votre iPhone, iPad ou iPod Touch à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.'; +$lang['Piwigo for Android'] = 'Piwigo pour Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'L\'application Piwigo pour Android vous permet de connecter votre smartphone ou votre tablette Android à votre galerie Piwigo pour y créer des albums et envoyer plusieurs photos à la fois.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de publication Piwigo pour Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom est un logiciel de photographie conçu pour gérer d\'importantes collections de photos numériques et les post-traiter.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Le plugin de publication Piwigo pour Lightroom vous permet d\'exporter et synchroniser vos photos de Lightroom vers votre galerie Piwigo.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Plugin de publication Piwigo pour Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell est un gestionnaire de photos opensource pour Linux. Il a été sélectionné comme gestionnaire par défaut sur Ubuntu et Fedora.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Sur votre Linux, installez simplement Shotwell avec votre gestionnaire de paquet et activez l\'option de publication Piwigo.'; +$lang['Piwigo publish plugin for digiKam'] = 'Plugin de publication Piwigo pour digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam est un logiciel libre de gestion avancée de photos numériques pour Linux, Windows et MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam est conçu pour les photographes qui souhaitent visualiser, gérer, éditer, améliorer, organiser, tagger et partager leurs photos.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pour exporter vos photos de digiKam vers Piwigo, installez simplement digiKam et les kipi-plugins.'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin d\'export Piwigo export pour iPhoto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto est le gestionnaire de photos disponible par défaut sur MacOSX. Le plugin d\'export Piwigo se connecter à votre galerie Piwigo et vous permet de créer des albums et d\'y ajouter vos photos.'; +$lang['Piwigo export plugin for Aperture'] = 'Plugin d\'export Piwigo pour Aperture'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture est un outil puissant pour post-traiter vos photos et gérer votre photothèque sur Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture est conçu pour les photographes professionnels avec la simplicité d\'iPhoto.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Le plugin d\'export Piwigo vous permet de créer des albums et d\'y ajouter vos photos.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery Android) est un client libre (GPL v3) pour Piwigo sur Android.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Ses fonctionnalités incluent la navigation sur la galerie, la création d\'albums et l\'ajout de photos.'; +$lang['any visitor can see this album'] = 'n\'importe quel visiteur peut voir cet album'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'les visiteurs doivent se connecter et avoir les permissions nécessaires pour voir cet album'; +$lang['Groups and users'] = 'Groupes et utilisateurs'; +$lang['Permission granted for groups'] = 'Permission accordée pour les groupes'; +$lang['Select groups...'] = 'Sélectionnez les groupes...'; +$lang['There is no group in this gallery.'] = 'Il n\'y a pas de groupe dans cette galerie.'; +$lang['Permission granted for users'] = 'Permission accordée pour les utilisateurs'; +$lang['Select users...'] = 'Sélectionnez les utilisateurs...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utilisateurs ont automatiquement la permission car ils appartiennent à un groupe autorisé.'; +$lang['include photos with lower privacy level'] = 'inclure les photos d\'un niveau de confidentialité inférieur'; +$lang['No group is permitted to see this private album'] = 'Aucun groupe n\'est autorisé à voir cet album privé'; +$lang['Permission management'] = 'Gestion des permissions'; +$lang['Photo sizes with crop'] = 'Tailles de photo avec retaillage'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Le centre d\'intérêt est la zone la plus représentative de la photo.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pour les tailles de photo avec retaillage, comme la taille "Carré", Piwigo essaiera d\'inclure au mieux ce centre d\'intérêt.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Par défaut, le centre d\'intérêt est placé au milieu de la photo.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Sélectionnez une zone avec votre souris pour définir un nouveau centre d\'intérêt.'; +$lang['custom'] = 'Personnalisé'; +$lang['Delete multiple size images'] = 'Supprimer les tailles multiples des photos'; +$lang['Generate multiple size images'] = 'Générer les tailles multiples des photos'; +$lang['add a new watermark'] = 'Ajouter un nouveau filigrane'; +$lang['Apply watermark if height is bigger than'] = 'Appliquer le filigrane si la hauteur est supérieure à'; +$lang['Apply watermark if width is bigger than'] = 'Appliquer le filigrane si la largeur est supérieure à'; +$lang['bottom left corner'] = 'coin inférieur gauche'; +$lang['bottom right corner'] = 'coin inférieur droit'; +$lang['middle'] = 'milieu'; +$lang['Opacity'] = 'Opacité'; +$lang['Select a file'] = 'Sélectionnez un fichier'; +$lang['top left corner'] = 'coin supérieur gauche'; +$lang['top right corner'] = 'coin supérieur droit'; +$lang['X Position'] = 'Position X'; +$lang['X Repeat'] = 'Répétition X'; +$lang['Y Position'] = 'Position Y'; +$lang['Multiple Size'] = 'Tailles multiples'; +$lang['Watermark'] = 'Filigrane'; +$lang['Original file : %s'] = 'Fichier original : %s'; +$lang['Posted %s on %s'] = 'Postée %s le %s'; +$lang['Added by %s'] = 'Ajouté par %s'; +$lang['Visited %d times'] = 'Visitée %d fois'; +$lang['Numeric identifier : %d'] = 'Identifiant numérique : %d'; +$lang['%s ago'] = 'il y a %s'; +$lang['%s in the future'] = '%s dans le futur'; +$lang['Rated %d times, score : %.2f'] = 'Notée %d fois, score : %.2f'; +$lang['%d year'] = '%d an'; +$lang['%d years'] = '%d ans'; +$lang['%d month'] = '%d mois'; +$lang['%d months'] = '%d mois'; +$lang['%d week'] = '%d semaine'; +$lang['%d weeks'] = '%d semaines'; +$lang['%d day'] = '%d jour'; +$lang['%d days'] = '%d jours'; +$lang['%d hour'] = '%d heure'; +$lang['%d hours'] = '%d heures'; +$lang['%d minute'] = '%d minute'; +$lang['%d minutes'] = '%d minutes'; +$lang['%d second'] = '%d seconde'; +$lang['%d seconds'] = '%d secondes'; +$lang['Sharpen'] = 'Renforcer la netteté'; +$lang['Edit photo'] = 'Éditer la photo'; +$lang['create a new site'] = 'créer un nouveau site'; +$lang['No order field selected'] = 'Aucun critère de tri sélectionné'; +$lang['Name of the duplicate'] = "Nom du duplicata"; +$lang['Source tag'] = 'Tag source'; +$lang['Tag "%s" is now a duplicate of "%s"'] = "Le tag \"%s\" est désormais une copie de \"%s\""; +$lang['Duplicate selected tags'] = 'Dupliquer les tags sélectionnés'; +$lang['Invalid dimension'] = 'Dimension invalide'; +$lang['Minimum width'] = 'Largeur minimale'; +$lang['Minimum height'] = 'Hauteur minimale'; +$lang['Portrait'] = 'Portrait'; +$lang['Landscape'] = 'Paysage'; +$lang['Panorama'] = 'Panorama'; +$lang['Manage photos'] = 'Gérer les photos'; +$lang['View in gallery'] = 'Voir dans la galerie'; +$lang['Number of albums per page'] = 'Nombre d\'albums par page'; +$lang['Ratio'] = 'Ratio'; +$lang['between %d and %d pixels'] = 'entre %d et %d pixels'; +$lang['between %.2f and %.2f'] = 'entre %.2f et %.2f'; +$lang['Manage the members'] = 'Gérer les membres'; +$lang['Type here the name of the new group'] = 'Inscrivez ici le nom du nouveau groupe'; +$lang['No group selected, no action possible.'] = 'Pas de groupes sélectionnés, pas d\'actions possibles.'; +$lang['Please select at least two groups'] = 'Merci de sélectionner au moins deux groupes'; +$lang['Duplicate'] = 'Dupliquer'; +$lang['Merge selected groups'] = 'Fusionner les groupes sélectionnés'; +$lang['This group will be set to default'] = "Ce groupe deviendra par défaut"; +$lang['This group will be unset to default'] = "Ce groupe ne sera plus par défaut"; +$lang['No members to manage'] = "Aucun membre à gérer"; +$lang['Rename'] = 'Renommer'; +$lang['Purge user cache'] = 'Purger le cache utilisateur'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'La tailles des images sera réduite à %dx%d pixels.'; +$lang['Mail theme'] = 'Thème des mails'; +$lang['Select at least one tag'] = 'Sélectionnez au moins un tag'; +$lang['Basic settings'] = 'Paramètres de base'; +$lang['Loading...'] = 'Chargement...'; +$lang['Show %s users'] = 'Afficher %s utilisateurs'; +$lang['No matching user found'] = 'Aucun utilisateur à afficher'; +$lang['Showing %s to %s of %s users'] = 'Affichage des utilisateurs %s à %s sur %s'; +$lang['(filtered from %s total users)'] = '(filtré de %s utilisateurs au total)'; +$lang['No user selected, no action possible.'] = 'Aucun utilisateur sélectionné, aucune action possible.'; +$lang['%d of %d users selected'] = '%d des %d utilisateurs sélectionnés'; +$lang['No user selected of %d users'] = 'Aucun utilisateur sélectionné sur les %d'; +$lang['All %d users are selected'] = 'Tous les %d utilisateurs sont sélectionnés'; +$lang['on the %d selected users'] = 'sur les %d utilisateurs sélectionnés'; +$lang['User %s added'] = 'Utilisateur %s ajouté'; +$lang['Registered on %s, %s.'] = 'Enregistré depuis le %s, %s.'; +$lang['Last visit on %s, %s.'] = 'Dernière visite le %s, %s.'; +$lang['Change password'] = 'Changer le mot de passe'; +$lang['Password updated'] = 'Mot de passe mis à jour'; +$lang['Change username'] = 'Changer le nom d\'utilisateur'; +$lang['Update user'] = 'Mettre à jour l\'utilisateur'; +$lang['User %s updated'] = 'Utilisateur %s mis à jour'; +$lang['Users modified'] = 'Utilisateurs modifiés'; +$lang['Open user details'] = 'Ouvrir les détails de l\'utilisateur'; +$lang['Close user details'] = 'Fermer les détails de l\'utilisateur'; +$lang['close'] = 'fermer'; +?> \ No newline at end of file diff --git a/sources/language/fr_FR/common.lang.php b/sources/language/fr_FR/common.lang.php new file mode 100644 index 0000000..2430aea --- /dev/null +++ b/sources/language/fr_FR/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/fr_FR/fr_FR.jpg b/sources/language/fr_FR/fr_FR.jpg new file mode 100644 index 0000000..c93b5e6 Binary files /dev/null and b/sources/language/fr_FR/fr_FR.jpg differ diff --git a/sources/language/fr_FR/help/cat_modify.html b/sources/language/fr_FR/help/cat_modify.html new file mode 100644 index 0000000..75f3c12 --- /dev/null +++ b/sources/language/fr_FR/help/cat_modify.html @@ -0,0 +1,141 @@ +

                  Modifier un album

                  + +

                  Informations

                  + +
                    + +
                  • nom: renommer l'album (virtuellement pour + un album physique).
                  • + +
                  • description: un texte bref donnant une idée du contenu de l'album, + cette indication figurera en bas de la page des miniatures.
                  • + +
                  + +

                  Déplacer

                  + +

                  Si l'album est virtuel, vous pouvez le déplacer. Déplacer un +album signifie changer son album parent.

                  + +

                  Options

                  + +
                    + +
                  • Type d'accès: gestion des permissions. Si vous rendez +un album privé, tous ses albums fils deviennent privés. Si +vous rendez un album publique, tous ses albums parents deviennent +publiques.
                  • + +
                  • Verrouiller: l'album et tous ses sous-album deviennent temporairement inaccessibles pour maintenance.
                  • + +
                  • Commentaires: autorise les utilisateurs à commenter +les photos de cet album.
                  • + +
                  + +

                  Vous pouvez aussi gérer ces options par la gestion des "Propriétés" +(écrans Commentaires, Verrouiller, Publique/Privée, Représentant disponibles à partir d' Administration » Albums » Propriétés).

                  + +

                  Ordre de tri

                  + +

                  Utiliser l'ordre de tri des photos par défaut.

                  + +

                  Indiquer si le tri s'applique également aux sous-albums.

                  + +

                  Sélectionner les critères de tri à utiliser pour cet album.

                  +
                    +
                  • Date de création: Date de prise de vue
                  • +
                  • Date d'ajout: Date de la synchronisation
                  • +
                  • Note moyenne (*): cette moyenne peut être modifiée par la notation du visiteur
                  • +
                  • Plus vues (*): La visite en cours peut changer l'ordre des plus vues
                  • +
                  • Nom du fichier: Nom du fichier donné dans les champs d'informations ci-dessus
                  • +
                  • Id: Id interne (les albums récents ont un "Id" plus grand que les précédentes).
                  • + +
                  +

                  (*)Attention: testez-vous même ces tris qui peuvent donner des résultats imprévus.

                  + + +

                  Représentant

                  + +

                  Le représentant d'un album est la miniature affichée sur la page principale (category.php) pour +représenter l'album lorsque celui-ci ne contient +que des sous-albums et aucune photo direct (comme à la +racine)

                  + +

                  Il existe 4 moyens différents de choisir le représentant d'un album:

                  + +
                    + +
                  • Page d'affichage des photos: un des boutons d'action permet de choisir la photo courante comme représentant +de l'album affiché. Ce bouton d'action n'est disponible que pour les +administrateurs.
                  • + +
                  • Modifier les informations d'une photo +dans l'administration. Cet écran peut être atteint depuis picture.php ou Gestion par +lot dans le mode unitaire. Voir l'aide de cet écran pour les +détails.
                  • + +
                  • Administration » Albums » Propriétés » +Représentant. Voir l'aide de cet écran pour les détails.
                  • + +
                  • Modifier un album (le présent +écran).
                  • + +
                  + +

                  Le choix d'un représentant dépend du paramètre de configuration +allow_random_representative (voir include/config_default.inc.php).

                  + +

                  Par défaut (allow_random_representative à false), chaque +album contenant au moins une photo est représenté par un élément +fixe. Une fois fixé (à la création de l'album), le représentant change +uniquement lorsque l'administrateur le demande. Si le représentant ne +convient pas, vous pouvez demander à Trouver un nouveau représentant +au hasard.

                  + +

                  Si le paramètre de configuration allow_random_representative +est à true, l'album contenant des photos peut ne pas avoir de +représentant fixe. Utiliser simplement le bouton Supprimer le +représentant.

                  + +

                  Si l'album ne contient que des sous-albums et aucune photo, il peut cependant être représentée par n'importe quel +photo grâce à l'écran Modifier les informations +d'une photo. La seule option disponible sur le présent écran est le bouton +Supprimer le représentant.

                  + +

                  Associer toutes les photos de l'album à un nouvel album

                  + +
                    + +
                  • Nom de l'album virtuel: Nom du nouvel album à créer, +toutes les photos de l'album en cours seront liées à celui-ci.
                  • + +
                  • Album parent: A quel endroit le nouvel album doit être placé, +laisser vide pour le créer sur la page d'accueil.
                  • + +
                  + +

                  Associer toutes les photos de l'album à des albums existants

                  + +
                    + +
                  • Albums: Choisir l'album de destination.
                  • + +
                  + +

                  Envoyer un mail d'informations aux membres d'un groupe

                  + +
                    + +
                  • Groupe: Groupe de destinataires
                  • + +
                  • Contenu du mail: Texte libre à leur envoyer.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/fr_FR/help/cat_move.html b/sources/language/fr_FR/help/cat_move.html new file mode 100644 index 0000000..1fa244e --- /dev/null +++ b/sources/language/fr_FR/help/cat_move.html @@ -0,0 +1,15 @@ +

                  Déplacement d'albums virtuels

                  + +

                  Vous pouvez changer le parent d'un album virtuel.

                  + +

                  Albums virtuels à déplacer

                  + +

                  Sélectionnez un ou plusieurs album virtuels à déplacer. +Si la liste est vide, c'est que vous n'en avez pas encore créé.

                  + +

                  Nouvel album parent

                  + +

                  Sélectionnez le nouvel album parent (virtuel ou physique). +Si vous n'en sélectionnez aucun, +les albums à déplacer seront remontés à la racine des albums. +Vous ne pouvez déplacer un album dans lui-même ou ses fils.

                  diff --git a/sources/language/fr_FR/help/cat_options.html b/sources/language/fr_FR/help/cat_options.html new file mode 100644 index 0000000..3e38957 --- /dev/null +++ b/sources/language/fr_FR/help/cat_options.html @@ -0,0 +1,32 @@ +

                  Options des albums

                  + +

                  Gestion des options pour plusieurs albums à la fois.

                  + +
                  + +
                  Commentaires utilisateurs
                  + +
                  Autoriser les utilisateurs à ajouter des commentaires dans les albums sélectionnés. +Une photo sera commentable si elle appartient à au moins un album commentable.
                  + +
                  Verrouiller
                  + +
                  Les albums sélectionnés deviennent temporairement inactifs pour +maintenance. Lorsqu'un album est verrouillé, tous les sous-albums sont verrouillés. +Lorsqu'un album est déverrouillé, toutes les albums parents sont déverrouillés.
                  + +
                  Publique / Privé
                  + +
                  Les permissions n'existent que pour les albums privés. Une fois qu'un album est privé, il vous faut +explicitement autoriser les utilisateurs ou les groupes à y +accéder. Lorsqu'un album devient privé, tous les sous-Album deviennent privés. +Lorsqu'un album devient publique, tous les albums parents deviennent publiques.
                  + +
                  Représentant
                  + +
                  Cette option est disponible uniquement si le paramètre de +configuration allow_random_representative (voir include/config_default.inc.php) vaut +true. Chaque album peut-être représenté par une photo prise au hasard ou par une seule miniature fixe.
                  + +
                  \ No newline at end of file diff --git a/sources/language/fr_FR/help/cat_perm.html b/sources/language/fr_FR/help/cat_perm.html new file mode 100644 index 0000000..6e6250d --- /dev/null +++ b/sources/language/fr_FR/help/cat_perm.html @@ -0,0 +1,13 @@ +

                  Gérer les permissions pour un album

                  + +

                  Cet écran n'est disponible que pour les albums privés. Ici vous +pourrez sélectionner les utilisateurs et les groupes autorisés pour un album

                  + +

                  Groupes

                  + +

                  Vous pouvez autoriser ou interdire l'accès des groupes à l'album courant. Les utilisateurs +appartenant à ces groupes se verront autoriser ou interdire l'accès à l'album.

                  + +

                  Utilisateurs

                  + +

                  Vous pouvez autoriser ou interdire l'accès aux utilisateurs individuellement. Les utilisateurs autorisés par ailleurs grâce à leur appartenance à un groupe peuvent se voir supprimer l'accès par exception.

                  diff --git a/sources/language/fr_FR/help/configuration.html b/sources/language/fr_FR/help/configuration.html new file mode 100644 index 0000000..bc06629 --- /dev/null +++ b/sources/language/fr_FR/help/configuration.html @@ -0,0 +1,132 @@ +

                  Configuration

                  + +

                  Cet écran permet de gérer la configuration basique. En effet, seuls sont +montrés les paramètres de configuration qui doivent suffire à la majorité +des administrateurs. Si vous souhaitez voir la liste des nombreux (et +avancés) paramètres, lire le fichier include/config_default.inc.php

                  + +

                  Cet écran est divisié en plusieurs sections, regroupant les paramètres +par thème.

                  + +

                  Principale

                  +
                    + +
                  • Titre de la galerie: utilisé pour le flux RSS et +la notification par email.
                  • + +
                  • Bannière des pages: code html affiché en haut des +pages.
                  • + +
                  • URL de la galerie: utilisé pour le flux RSS.
                  • + +
                  • Verrouiller la galerie: Verrouiller l'ensemble de la +galerie pour maintenance. Seul les administrateurs pourront accéder à la +galerie.
                  • + +
                  • Notation: La notation des photos est possible.
                  • + +
                  • Notation par les visiteurs: Même les utilisateurs non enregistrés peuvent noter les photos
                  • + +
                  • Permettre l'enregistrement des utilisateurs: L'inscription est libre pour tous.
                  • + +
                  • L'adresse mail est obligatoire pour tous les utilisateurs: L'adresse mail sera vérifié lors des inscriptions ou de la mise à jour des profils sauf si l'action est effectuée dans la partie administration.
                  • + +
                  • Notifier les administrateurs lors de l'inscription d'un utilisateur: Les administrateurs recevront un courriel à chaque inscription.
                  • + +
                  • Ordre par défaut des photos: vous pouvez définir un ordre personnalisé grace à ces menus déroulants.
                  • + +
                  + +

                  Historique

                  + +

                  les visites des pages index.php et picture.php sont +enregistrées dans la table history.

                  + +

                  Les visites sont affichées dans l'écran Administration » Outils » Historique.

                  + +
                    +
                  • Enregistrer les pages visitées par les invités: les visites des pages par les invités sont enregistrées.
                  • + +
                  • Enregistrer les pages visitées par les utilisateurs: les visites des pagespar les utilisateurs enregistrés sont enregistrées.
                  • + +
                  • Enregistrer les pages visitées par les administrateurs: les visites des pages par les administrateurs sont enregistrées.
                  • + +
                  + +

                  Commentaires

                  +
                    + +
                  • Commentaires utilisateur pour tous: même les +utilisateurs non enregistrés peuvent enregistrer des commentaires.
                  • + +
                  • Nombre de commentaires utilisateur par page.
                  • + +
                  • Validation: un administrateur doit valider les +commentaires utilisateurs avant qu'ils puissent devenir visibles dans la +partie publique. La validation des commentaires utilisateurs a lieu dans +l'écran Administration » Outils » Commentaires en attente.
                  • + +
                  • Notifier les administrateurs quand un commentaire est enregistré: +Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui est validé.
                  • + +
                  • Notifier les administrateurs quand un commentaire requiert sa validation : +Envoi un courriel aux administrateurs lorsqu'un utilisateur enregistre un commentaire qui demande une validation de la part des administrateurs. +La validation des commentaires utilisateurs a lieu dans l'écran Administration » Outils » Commentaires en attente.
                  • + +
                  + +

                  Affichage par défaut

                  +

                  Modifier les options d'affichage par défaut: pour les visiteurs non +connectés. Une fois connecté, ces options sont surchargées par celles de +l'utilisateur, qu'il peut modifier dans l'écran profile.

                  + +

                  Il est possible de changer ces options pour les utilisateurs existants, +mais il s'agit d'un autre écran : Administration » +Utilisateurs » Gérer, dans lequel vous pouvez modifier ces +options pour une liste d'utilisateurs sélectionnés.

                  + +
                    + +
                  • Langue: ne concerne que les libellés de +Piwigo. Les noms d'albums, de photo et les descriptions ne sont +pas localisés (ie multilingue).
                  • + +
                  • Nombre de miniatures par ligne
                  • + +
                  • Nombre de lignes par page
                  • + +
                  • Thème de l'interface
                  • + +
                  • Période récente: en jours. Période pendant laquelle +une photo est considérée comment nouvelle. Cette période doit être +supérieure à 1 jour.
                  • + +
                  • Développer tous les albums: développer tous +les albums dans le menu? Attention: cette option est +susceptible de consommer inutilement des ressources si votre arbre d'album + contient de nombreux éléments.
                  • + +
                  • Montrer le nombre de commentaires: montrer les nombre +de commentaires utilisateur en dessous de chaque miniature. Consomme des +ressources.
                  • + +
                  • Montrer le nombre de visualisations : affiche les + « hits » relevés sur une photo sous sa miniature dans la page de miniatures. + Uniquement valable si le paramètre de configuration avancée est :
                    + $conf['show_nb_hits'] = true;
                    + N.B.: par defaut il est à false.
                  • + +
                  • Largeur maximum des photos: à l'affichage. Si la photo +est plus large que ce paramètre, alors elle sera redimensionnée à +l'affichage. Si vous pensez nécessaire de modifier ce paramétrage (donc pour +un affichage par défaut), il serait pertinent de redimensionner directement +vos photos stockées.
                  • + +
                  • Hauteur maximum des photos: même remarque que pour la +largeur.
                  • + +
                  diff --git a/sources/language/fr_FR/help/extend_for_templates.html b/sources/language/fr_FR/help/extend_for_templates.html new file mode 100644 index 0000000..46b0933 --- /dev/null +++ b/sources/language/fr_FR/help/extend_for_templates.html @@ -0,0 +1,101 @@ +

                  Configuration pour "étendre" les templates

                  + +

                  Objectif

                  +

                  Définir les conditions de remplacement de chaque template (modèle) à partir de template-extension +(template appelé "replacer" (remplaçant)).

                  + +

                  Les "Templates d'origine" provenant de ./themes/default/template (ou de tout autre thème) + sont remplacés par un remplaçant si celui-ci est lié à son template d'origine + (et de façon facultative, quand l'adresse (URL) demandée contient un URL contains un "Paramètre facultatif de l'URL").

                  + +

                  Les "Paramètres facultatif de l'URL" sont ceux que vous pouvez trouver après le nom du module dans l'adresse (URL).

                  + +

                  Ainsi un "Paramètre facultatif de l'URL" peut être un "permalink" (lien permanent) actif +(voir les permalinks dans notre documentation pour plus d'information).

                  + +

                  Lire les `mises en garde` sur les conditions d'utilisation.

                  + +

                  Qu'est-ce que les extensions des modèles?

                  + +

                  Cet outil de configuration est à la fois puissant pour les débutants et pour les utilisateurs avancés. +Par FTP, dans le dossier template-extension, le Webmaster pourra dupliquer une bonne partie des fichiers + .tpl distribués ("Templates d'origine") avec un nom différent + ("replacer" (remplaçant)). + + "Templates d'origine", actuellement les modèles d'origine supportés sont:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl and/or thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl and/or footer.tpl
                  • +
                  • picture_content.tpl and/or picture.tpl
                  • + +
                  • profile.tpl and/or profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl and/or search_rules.tpl
                  • +
                  • nbm.tpl and/or notification.tpl
                  • +
                  • identification.tpl and/or register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  Où puis-je trouver les "Templates d'origine"?

                  + +

                  Les modèles distribués d'origine sont dans /themes/default/template/ +(ne pas les modifier directement à cet endroit pour des raisons d'évolution). Ainsi à partir des "templates d'origine", +tout webmaster pourra créer ses "replacers (modèles personalisés)".

                  + +

                  Où dois-je enregistrer les "remplaçants"?

                  + +

                  Les Replacers (templates modifiés) peuvent être placés dans le dossier +template-extension (ou ses sous-dossiers). +Les remplaçants peuvent avoir n'importe quel nom de fichier avec l'extension .tpl. Par exemple: template-extension/my-extension/video.tpl.

                  + + +

                  Comment puis-je activer mes "remplaçants"?

                  +

                  Un template d'origine devrait être associé à chaque + replacer (modèle modifié) à fin d'activer les remplacements correspondants. + Activer les remplaçants est la fonction de "Etendre les templates" dans les menus de Configuration de l'Administration.

                  + +

                  Si vous sélectionnez un Paramètre facultatif de l'URL alors les remplacements +ne seront réalisés que sur les pages utilisant ce mot clé. Par exemple: index.php?/most_visited

                  + +

                  Les utilisateurs avancés utiliseront les permalinks (permaliens, liens permanents) en tant que +paramètre facultatif de l'URL.

                  + +

                  Si vous sélectionnez un Template rattaché alors les remplacements ne seront réalisés que sur ce template.

                  + +

                  Comment puis-je désactiver mes "replacers"?

                  +
                    +
                  • Déselectionner le "template d'origine".
                  • +
                  • Par FTP supprimer le "remplaçant".
                  • +
                  + +

                  Mises en garde

                  +
                    + +
                  • Le template d'origine doit être le véritable template "d'origine" + autrement vous pourriez avoir des résultats imprévisibles!
                  • + +
                  • Si plusieurs remplaçants (templates modifiés) ont le même + template d'origine et le même paramètre facultatif + de l'URL alors seulement le dernier remplaçant sera actif.
                  • + +
                  • Ne pas sélectionner de paramètre facultatif de l'URL + activera le template de remplacement à chaque utilisation du template. + Comme mentionné ci-dessus, l'ordre peut inhiber les remplaçants précédents.
                  • + +
                  • Sous-dossiers: + Les sous-dossiers sont ignorés mais ils sont utiles pour modifier l'ordre des remplaçants.
                    +distributed-samples: pour vos tests sont distributés! +Ne pas les modifier, créez les votres! +
                  • + +
                  • A la suppression d'un remplaçant le template d'origine sera + immédiatement réactivé.
                  • + +
                  diff --git a/sources/language/fr_FR/help/group_list.html b/sources/language/fr_FR/help/group_list.html new file mode 100644 index 0000000..105c8a0 --- /dev/null +++ b/sources/language/fr_FR/help/group_list.html @@ -0,0 +1,21 @@ +

                  Liste des groupes

                  + +

                  Administration des propriétés des groupes.

                  + +

                  Ajouter un groupe

                  + +

                  L'administrateur peut ajouter des groupes.

                  + +

                  Liste des groupes

                  + +

                  La liste permet pour chaque groupe:

                  + +
                    +
                  • d'accéder à la liste des membres
                  • +
                  • d'accéder aux permissions
                  • +
                  • de supprimer le groupe (nécessite une confirmation)
                  • +
                  • d'inverser le statut "par défaut" (nécessite une confirmation)
                  • +
                  + +

                  Groupes par défaut

                  +

                  Les groupes par défaut sont des groupes associés automatiquement à chaque nouvel utilisateur lors de son enregistrement ou de sa création par un administrateur.

                  \ No newline at end of file diff --git a/sources/language/fr_FR/help/help_add_photos.html b/sources/language/fr_FR/help/help_add_photos.html new file mode 100644 index 0000000..99fcc34 --- /dev/null +++ b/sources/language/fr_FR/help/help_add_photos.html @@ -0,0 +1,33 @@ +

                  Il existe plusieurs méthodes pour ajouter des photos dans votre +galerie :

                  + +
                    + +
                  • L'ajout direct dans votre navigateur web est la + méthode la plus simple et la plus immédiate. Elle dépend des capacités de + votre navigateur et de votre serveur. Pour des gros volumes ou en cas de + problèmes, les méthodes alternatives vous attendent !
                  • +
                  + + + +
                    +
                  • pLoader est un logiciel à installer sur votre + ordinateur. Glissez vos photos dans la fenêtre de pLoader, cliquez + sur "Transférer vers Piwigo" et pLoader s'occupe du reste. D'autres logiciels clients existent, comme WinToPiwigo ou le module + d'export Piwigo de Digikam.
                  • +
                  + + + +
                  +
                    +
                  • Le transfert FTP + est la méthode idéale pour ajouter une collection importante en un minimum + d'opérations. Suivez le guide pour préparer vos photos. Cette méthode vous + permet de contrôler avec précision l'organisation physique de vos photos + sur votre serveur.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/fr_FR/help/help_groups.html b/sources/language/fr_FR/help/help_groups.html new file mode 100644 index 0000000..8e5d22b --- /dev/null +++ b/sources/language/fr_FR/help/help_groups.html @@ -0,0 +1,7 @@ +

                  Les groupes d'utilisateurs permettent d'assigner des permissions à une liste d'utilisateurs.

                  + +

                  Vous pouvez créer des groupes et y ajouter des utilisateurs dans +Administration » Utilisateurs » Groupes.

                  + +

                  Un utilisateur peut appartenir à plusieurs groupes. L'autorisation l'emporte sur l'interdiction : si l'utilisateur "pierre" appartient aux +groupes "famille" et "amis", et que seul le groupe "famille" peut visiter l'album "Noël 2010", alors "pierre" peut visiter cet album.

                  diff --git a/sources/language/fr_FR/help/help_misc.html b/sources/language/fr_FR/help/help_misc.html new file mode 100644 index 0000000..9e4cb84 --- /dev/null +++ b/sources/language/fr_FR/help/help_misc.html @@ -0,0 +1,9 @@ +

                  Une fois votre galerie créée vous pouvez configurer pour vos visiteur +

                    +
                  • L'affichage par défaut tel que désiré dans menu Administation » Configuration » Options onglet Paramètres invité
                  • +
                  • Le thème par défaut dans Administation » Configuration » Thèmes
                  • +
                  • La langue par défaut dans Administation » Configuration » Langues
                  • +
                  + Par défaut, chaque nouvel utilisateur héritera de ces propriétés dès son enregistrement. +

                  +

                  Pour toute question, la communauté francophone Piwigo est à l'écoute sur le forum.

                  diff --git a/sources/language/fr_FR/help/help_permissions.html b/sources/language/fr_FR/help/help_permissions.html new file mode 100644 index 0000000..9bf2eaa --- /dev/null +++ b/sources/language/fr_FR/help/help_permissions.html @@ -0,0 +1,48 @@ +
                  +Permissions par photo + +

                  Chaque photo a un niveau de confidentialité (un verrou). Chaque utilisateur a également un niveau de confidentialité (une clef). Il y a 5 niveaux de confidentialité : +

                    +
                  1. Aucun
                  2. +
                  3. Contacts
                  4. +
                  5. Amis (qui est davantage qu'un contact)
                  6. +
                  7. Famille (qui est davantage qu'un ami)
                  8. +
                  9. Admins (qui recouvre tous les autres niveaux)
                  10. +
                  + +

                  Les niveaux supérieurs disposent des droits pour accéder aux niveaux inférieurs. Pour un utilisateur donné, plus haut est son niveau de confidentialité, plus il peut voir de photos.

                  + +

                  Par exemple, si la photo "mariage_pierre-0024.jpg" a le niveau de confidentialité "Famille", alors :

                  +
                    +
                  • Pierre (qui est un Admin) peut la voir car "Admins" donne tous les droits
                  • +
                  • Vanessa (qui est une membre de la Famille) peut la voir également
                  • +
                  • Marie (qui n'est qu'une Amie) elle ne peut pas la voir
                  • +
                  + +

                  Un utilisateur qui ne dispose pas des permissions pour voir le contenu d’un album ne verra pas du tout l'album, pas même son titre. Même principe pour un tag.

                  + +

                  Vous pouvez assigner le niveau de confidentialité d'un utilisateur sur l'écran Administration » Utilisateurs » Gérer.

                  + +
                  + +
                  +Permissions par album + +

                  Si les niveaux de confidentialité ne correspondent pas exactement à vos besoins, vous pouvez également gérer les permissions par album et pour un utilisateur ou un groupe donné. Vous pouvez gérer les permissions par photo et par album en même temps, sans conflit.

                  + +

                  Vous pouvez interdire l'accès aux albums. Passez le type d'accès de l'album à "privé" si vous souhaitez gérer les permissions.

                  + +

                  Vous pouvez rendre un album privé en l'éditant (Administration » Albums » Gérer » Editer) ou en +gérant les options pour votre arbre complet d'albums (Administration » Albums » Propriétés » Publique/Privé).

                  + +

                  Lorsqu'un album est privé, vous pouvez gérer les permissions par groupes et utilisateurs avec 3 écrans :

                  + +
                    +
                  • Administration » Utilisateurs » Gérer » action Permissions (1 lien par utilisateur)
                  • +
                  • Administration » Utilisateurs » Groupes » action Permissions (1 lien par groupe)
                  • +
                  • Administration » Albums » Gérer » Modifier les permissions (1 lien par album)
                  • +
                  + +
                  diff --git a/sources/language/fr_FR/help/help_virtual_links.html b/sources/language/fr_FR/help/help_virtual_links.html new file mode 100644 index 0000000..51a77fe --- /dev/null +++ b/sources/language/fr_FR/help/help_virtual_links.html @@ -0,0 +1,5 @@ +

                  Les photos sont affichées dans les albums correspondant aux répertoires dans lesquels elles sont stockées.

                  + +

                  Vous pouvez également afficher une photo dans plusieurs albums, sans dupliquer le fichier sur votre serveur web. Associez la photo à n'importe quelle autre album depuis l'écran d'édition de la photo (auquel vous accéder depuis la page de visualisation de la photo côté galerie, lorsque vous êtes connecté en tant qu'administrateur)

                  + +

                  Les albums virtuels sont basés sur ce principe : ils n'ont pas de répertoire associé. Créez des albums virtuels depuis Administration » Albums » Gérer.

                  diff --git a/sources/language/fr_FR/help/history.html b/sources/language/fr_FR/help/history.html new file mode 100644 index 0000000..60ceed4 --- /dev/null +++ b/sources/language/fr_FR/help/history.html @@ -0,0 +1,44 @@ +

                  Historique

                  + +

                  Ces écrans permettent de suivre l'historique de navigation dans Piwigo suivant les options que vous avez déterminées dans - Administration » Configuration » Options » Onglet "Historique".

                  + +

                  Statistiques

                  +
                    +

                    Si vous avez choisi que les visites des pages index.php et picture.php soient +enregistrées dans la table history, +cet onglet permet de suivre le nombre de pages visitées

                    + +
                  • Statistiques totales : visites par année
                  • + +
                  • Statistiques d'une année : visites par mois de l’année sélectionnée.
                  • + +
                  • Statistiques d'un mois : visites par jour du mois sélectionné.
                  • + +
                  • Statistiques d'une journée : visites par heures de la journée sélectionnée.
                  • + +
                  + +

                  Rechercher

                  +
                    +

                    Si vous avez choisi que les visites des pages index.php et picture.php soient +enregistrées dans la table history, cet onglet permet de suivre plus en détail les pages visitées avec l'aide de différents filtres.

                    + +
                  • Filtrer par date : sélectionner la plage +de dates dont vous souhaitez observer l’activité.
                  • + +
                  • Filtrer par type d'élément : sélectionner le +type d'élément dont vous souhaitez observer l’activité.
                  • + +
                  • Filtrer par utilisateur : sélectionner l'utilisateur dont vous + souhaitez observer l’activité.
                  • + +
                  • Filtrer par nom du fichier : sélectionner le nom du fichier dont vous + souhaitez observer l’activité.
                  • + +
                  • Filtrer par identifiant image : sélectionner l'identifiant de l'image dont vous + souhaitez observer l’activité.
                  • +
                  \ No newline at end of file diff --git a/sources/language/fr_FR/help/index.php b/sources/language/fr_FR/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/fr_FR/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/fr_FR/help/maintenance.html b/sources/language/fr_FR/help/maintenance.html new file mode 100644 index 0000000..db10222 --- /dev/null +++ b/sources/language/fr_FR/help/maintenance.html @@ -0,0 +1,64 @@ +

                  Maintenance

                  + +

                  Pour optimiser le temps de génération des pages, Piwigo utilise des informations en cache. + Par exemple, au lieu de compter le nombre de photos contenus dans chaque album à + chaque rechargement de page, cette information est stockée dans la base de données. + En théorie, cette information doit toujours être correcte, mais parfois une erreur peut + survenir et l'information en cache devient fausse.

                  + +

                  Certaines informations deviennent inutiles avec le temps. +Les supprimer de la base de données libère de l'espace disque.

                  + +
                    + +
                  • + Eléments non liés: + Affiche les photos qui ne sont associées à aucun album virtuel +
                  • +
                  • + Fichiers portant le même nom dans plusieurs albums physiques : + Affiche les photos ou les éventuels fichiers qui pourraient être trouvés dans plusieurs albums. +
                  • + +
                  + +
                    + +
                  • Mettre à jour les informations des albums : + Pour chaque album, les informations suivantes sont contrôlées, et mises à jour le cas échéant : + liste des albums parents, nombre d'éléments, date de la dernière photo, position parmi les + albums frères, position dans l'arbre complet des albums. Cette action vérifie + également la cohérence des représentants.
                  • + +
                  • Mettre à jour les informations des photos : +Pour chaque photo, les informations mises àjour sont : chemin complet vers le +fichier et note moyenne. Attention, ne pas confondre : les méta-données sont +synchronisées sur l'écran Administration » Albums » Synchroniser +ou sur l'écran Modifier les informations d'une photo (accessible depuis la page de visualisation d'une photo picture.php).
                  • + +
                  • Réparer et optimiser la base de données : +Effectue des opérations de ré-ordonnancement, réparation et optimisation sur chaque table de la base de données. +
                  • + +
                  + +
                    +
                  • Purger le détail de l'historique : +Supprime toutes les lignes de la table history. L'écran +Administration » Outils » Historique ne montre alors plus aucune information sur le passé. +Attention : toutes les données seront perdues, sans aucun possibilité de récupération. +
                  • + +
                  • Purger la synthèse de l'historique : +Supprime toutes les informations récapitulatives (obtenues à partir du détail de l'historique). +
                  • + +
                  • Purger les sessions : Supprimer les sessions expirées.
                  • + +
                  • Purger les flux de notification jamais utilisés
                  • + +
                  • Purger l'historique des recherches
                  • + +
                  • Purger les templates compilés
                  • + +
                  diff --git a/sources/language/fr_FR/help/notification_by_mail.html b/sources/language/fr_FR/help/notification_by_mail.html new file mode 100644 index 0000000..1602934 --- /dev/null +++ b/sources/language/fr_FR/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                  Notification par mail

                  + +

                  Cet écran permet de configurer et de gérer les envois de mails aux utilisateurs, pour les notifier de changements intervenus sur votre site.

                  + +

                  Cet écran est composé de 3 onglets:

                  + +

                  Paramétrage

                  +

                  Accessible uniquement aux webmestres, cet onglet permet de positionner les paramètres de la notification par mail.

                  + +

                  Inscription

                  +

                  Accessible uniquement aux webmestres, cet onglet permet de gérer les inscriptions/désinscriptions à la notification par mail.

                  + +

                  Envoi

                  +

                  Accessible aux webmestres et aux administrateurs, cet onglet permet d'effectuer les envois des mails pour notifier les changements.

                  diff --git a/sources/language/fr_FR/help/permalinks.html b/sources/language/fr_FR/help/permalinks.html new file mode 100644 index 0000000..f08da1b --- /dev/null +++ b/sources/language/fr_FR/help/permalinks.html @@ -0,0 +1,7 @@ +

                  Liens permanents

                  + +

                  Les liens permanents sont utilisés pour rendre plus jolis les urls des albums. Lorsqu'un album dispose d'un lien permanent associé, son identifiant n'est plus nécessaire dans l'url.

                  + +

                  Quand un lien permanent est effacé, vous pouvez le sauvegarder dans l'historique des liens permanents, de sorte que les liens externes à Piwigo puissent continuer à fonctionner. Dans l'historique des liens permanents vous pouvez voir la date d'effacement du lien, ainsi que la date de la dernière utilisation et le nombre d'utilisations de ce lien.

                  + +

                  Veuillez noter que les liens permanents doivent être uniques. Ils doivent aussi être uniques dans l'historique des liens permanents.

                  diff --git a/sources/language/fr_FR/help/photos_add_ftp.html b/sources/language/fr_FR/help/photos_add_ftp.html new file mode 100644 index 0000000..7ab8e19 --- /dev/null +++ b/sources/language/fr_FR/help/photos_add_ftp.html @@ -0,0 +1,78 @@ +
                  + Démarrage rapide + +
                    +
                  1. Créez un répertoire sur votre ordinateur.
                  2. + +
                  3. Copiez des photos à l'intérieur de ce répertoire. Attention : le nom des répertoires et des fichiers ne doit contenir que des lettres, des chiffres et les caractères "-", "_" ou ".". Pas d'espace ou de caractères accentués.
                  4. + +
                  5. Avec un client FTP, copiez le répertoire dans le répertoire "galleries" de votre installation de Piwigo.
                  6. + +
                  7. Connectez-vous à votre galerie Piwigo, rendez-vous sur Administration et cliquez sur le gros bouton de synchronisation.
                  8. +
                  + +

                  Bravo ! Vous avez créé avec succès le premier album de votre galerie.

                  + +
                  + +
                  + Organisation des répertoires et des fichiers + +
                    + +
                  • + +

                    Les répertoires représentant les albums se trouvent dans le répertoire "galleries". Ci-dessous l'arbre des répertoires d'une très petite galerie (mais utilisant de nombreuses fonctionnalités) :

                    + +
                    +galleries
                    +|-- mariage
                    +|   |-- ceremonie
                    +|   |   |-- entree
                    +|   |   |   |-- arrivee-de-paul.jpg
                    +|   |   |   +-- arrivee-de-virginie.jpg
                    +|   |   +-- sortie
                    +|   |       |-- sortie-enfants-honneur.jpg
                    +|   |       +-- sortie-de-paul-et-virginie.jpg
                    +|   +-- cocktail
                    +|       |-- discours001.jpg
                    +|       |-- discours002.jpg
                    +|       +-- discours003.jpg
                    ++-- voyage-de-noces
                    +    |-- hotel.png
                    +    |-- video-decollage-avion.avi
                    +    +-- pwg_representative
                    +        +-- video-decollage-avion.jpg
                    +
                    + +
                  • + +
                  • A l'exception de celui appelé "pwg_representative", chaque répertoire dans "galleries" génère un album. Le nombre de niveaux (profondeur) n'est pas limité.
                  • + +
                  • Fondamentalement, une photo est représentée par un fichier. Pour Piwigo, un fichier peut être une photo si son extension figure dans la liste du paramètre de configuration file_ext (voir +fichier include/config.inc.php). Un fichier +peut être une photo si son extension figure dans la liste du paramètre de configuration +picture_ext.
                  • + +
                  • Les éléments autres que les photos (vidéos, sons, fichiers texte, tout ce que vous +voulez...) sont représentés par défaut par une icône correspondant à +l'extension du nom du fichier. Optionnellement, un +représentant peut être associé (voir le fichier video-decollage-avion.avi dans l'exemple).
                  • + +
                  • Attention : le nom d'un répertoire ou d'un fichier ne doit +être composé que de lettres, de chiffres, de "-", "_" ou ".". Pas d'espace +ou de caractères accentués.
                  • + +
                  • Conseil : un album peut contenir des photos et des +sous-album à la fois. Néanmoins, il est fortement conseillé pour chaque +album de choisir entre contenir des photos ou bien +des sous-album.
                  • + +
                  • Une fois que les fichiers sont +correctement placés dans les répertoires, se rendre sur l'écran Administration » Outils » Synchroniser.
                  • + +
                  + +
                  diff --git a/sources/language/fr_FR/help/search.html b/sources/language/fr_FR/help/search.html new file mode 100644 index 0000000..e355052 --- /dev/null +++ b/sources/language/fr_FR/help/search.html @@ -0,0 +1,25 @@ +

                  Recherche

                  + +

                  Recherche de photos dans l'ensemble de la galerie.

                  + +
                  + +
                  Rechercher un mot
                  + +
                  Recherche un ou plusieurs mots dans tous les attributs des photos de la galerie. Utiliser * comme joker pour les recherches partielles.
                  + +
                  Recherche d'un auteur
                  + +
                  Utiliser * comme joker pour les recherches partielles.
                  + +
                  Recherche par date
                  + +
                  Sélectionner une date et/ou une date de fin. Laisser la date vide si +vous souhaitez faire une recherche "avant". Dans le dernier champ, l'année doit être saisie avec 4 chiffres (2011 par exemple).
                  + +
                  Recherche dans les albums
                  + +
                  Sélectionner les albums sur lesquels restreindre la +recherche. Il est possible de chercher dans tous les albums en sélectionnant l'album parent, et en autorisant la recherche dans les sous-albums.
                  + +
                  diff --git a/sources/language/fr_FR/help/synchronize.html b/sources/language/fr_FR/help/synchronize.html new file mode 100644 index 0000000..c44ba82 --- /dev/null +++ b/sources/language/fr_FR/help/synchronize.html @@ -0,0 +1,19 @@ +

                  Synchroniser

                  + +
                    + +
                  • Il existe 2 types de synchronisations : structure (répertoires/fichiers) et +meta-données. Synchroniser la structure consiste à synchroniser l'arborescence +de vos répertoires et fichiers avec leur représentation dans la +base de données. La synchronisation des méta-données assure la mise à jour des +informations telles que le poids du fichier, les dimensions, les données EXIF ou +IPTC.
                  • + +
                  • La première synchronisation à effectuer doit être celle sur la +structure.
                  • + +
                  • Le processus de synchronisation peut prendre du temps (en fonction de +la charge du serveur et de la quantité de fichiers à gérer), il est donc +possible de procéder album par album.
                  • + +
                  diff --git a/sources/language/fr_FR/help/user_list.html b/sources/language/fr_FR/help/user_list.html new file mode 100644 index 0000000..722777a --- /dev/null +++ b/sources/language/fr_FR/help/user_list.html @@ -0,0 +1,27 @@ +

                  Liste des utilisateurs

                  + +

                  Permet la gestion des propriétés des utilisateurs enregistrés, à l'exception des permissions, qui sont gérées via d'autres écrans.

                  + +

                  Ajouter un utilisateur

                  + +

                  L'administrateur peut ajouter manuellement des utilisateurs.

                  + +

                  Liste des utilisateurs

                  + +

                  La liste peut être filtrée avec le nom d'utilisateur (* = joker), avec le +groupe ou encore le statut. La liste peut être triée par date +d'enregistrement ou nom d'utilisateur, en ordre croissant ou +décroissant.

                  + +

                  Cet écran permet la modification simultanée de plusieurs utilisateurs +avec les actions suivantes :

                  + +
                    +
                  • supprimer des utilisateurs (nécessite une confirmation)
                  • +
                  • changer le statut
                  • +
                  • associer ou dissocier des groupes
                  • +
                  • modifier les propriétés d'affichage
                  • +
                  • modifier les propriétés annexes
                  • +
                  + +

                  Les utilisateurs modifiés sont ceux sélectionnés (comportement par défaut) ou l'ensemble des utilisateurs de la liste filtrée.

                  diff --git a/sources/language/fr_FR/index.php b/sources/language/fr_FR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/fr_FR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/fr_FR/install.lang.php b/sources/language/fr_FR/install.lang.php new file mode 100644 index 0000000..8143cf8 --- /dev/null +++ b/sources/language/fr_FR/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = "Besoin d'aide ? Posez votre question sur le forum de Piwigo."; +$lang['Visitors will be able to contact site administrator with this mail'] = "Les visiteurs pourront contacter l'administrateur du site par ce mail"; +$lang['PHP 5 is required'] = "PHP 5 est requis"; +$lang['It appears your webhost is currently running PHP %s.'] = "Apparemment, la version PHP de votre hébergeur est PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo va essayer de passer en PHP 5 en créant ou modifiant le fichier .htaccess."; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Notez que vous pouvez modifier vous-même la configuration PHP et re-lancer Piwigo ensuite."; +$lang['Try to configure PHP 5'] = "Essayer de configurer PHP 5"; +$lang['Sorry!'] = "Désolé!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo n'a pas pu configurer PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Il vous faut contacter le support de votre hébergeur pour savoir comment configurer vous-même PHP 5."; +$lang['Hope to see you back soon.'] = "En espérant vous revoir très prochainement."; +$lang['Congratulations, Piwigo installation is completed'] = 'Félicitations, l\'installation de Piwigo est terminée'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Une solution alternative est de copier le texte dans la zone ci-dessous et de le coller dans le fichier "local/config/database.inc.php" (Attention: database.inc.php ne doit contenir que ce qui se trouve dans la zone, pas de retour à la ligne, pas d\'espace)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'La création du fichier de configuration local/config/database.inc.php a échoué.'; +$lang['Download the config file'] = 'Télécharger le fichier de configuration'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Vous pouvez télécharger le fichier de configuration et le transférer dans le répertoire local/config de votre installation Piwigo.'; +$lang['Just another Piwigo gallery'] = 'Une galerie Piwigo de plus'; +$lang['Welcome to my photo gallery'] = 'Bienvenue sur ma galerie photo'; +$lang['Welcome to your new installation of Piwigo!'] = 'Bienvenue sur votre nouvelle installation de Piwigo !'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'N\'hésitez pas à consulter nos forums si vous avez le moindre problème : %s'; +?> diff --git a/sources/language/fr_FR/iso.txt b/sources/language/fr_FR/iso.txt new file mode 100644 index 0000000..636577e --- /dev/null +++ b/sources/language/fr_FR/iso.txt @@ -0,0 +1 @@ +Français [FR] \ No newline at end of file diff --git a/sources/language/fr_FR/upgrade.lang.php b/sources/language/fr_FR/upgrade.lang.php new file mode 100644 index 0000000..a99f797 --- /dev/null +++ b/sources/language/fr_FR/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s (or equivalent).'] = "Cette page vous propose de mettre à jour la base de données de votre ancienne version de piwigo vers la nouvelle version. +L'assistant de mise à jour pense que vous disposez actuellement de la version %s (ou équivalente)."; +$lang['Upgrade from version %s to %s'] = "Mise à jour de la version %s à %s"; +$lang['Statistics'] = "Statistiques"; +$lang['total upgrade time'] = "temps total de la mise à jour"; +$lang['total SQL time'] = "temps total des requêtes SQL"; +$lang['SQL queries'] = "nombre de requêtes SQL"; +$lang['Upgrade informations'] = "Informations sur la mise à jour"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Veuillez effectuer une maintenance dans [Administration>Outils>Maintenance] si vous rencontrez des problèmes."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Par précaution, les plugins suivants ont été désactivés. Vérifiez s'il existe des mises à jour avant de les réactiver:"; +$lang['Only administrator can run upgrade: please sign in below.'] = "Seul un administrateur peut lancer la mise à jour: veuillez vous identifier ci-dessous."; +$lang['You do not have access rights to run upgrade'] = "Vous n'avez pas les droits nécessaires pour lancer la mise à jour."; +$lang['All sub-albums of private albums become private'] = 'Tous les sous-albums des albums privés deviennent privés'; +$lang['User permissions and group permissions have been erased'] = "Les permissions des utilisateurs et des groupes ont été effacées"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Seuls le préfixe des miniatures et l'adresse email du webmestre ont étés conservés de la précédente configuration"; +$lang['In %s, before ?>, insert:'] = 'Dans le fichier %s, avant ?>, insérez:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Par précaution, les thèmes suivants ont été désactivés. Vérifiez s\'il existe des mises à jour avant de les réactiver:'; +?> \ No newline at end of file diff --git a/sources/language/ga_IE/common.lang.php b/sources/language/ga_IE/common.lang.php new file mode 100644 index 0000000..f0bd62e --- /dev/null +++ b/sources/language/ga_IE/common.lang.php @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/sources/language/ga_IE/ga_IE.jpg b/sources/language/ga_IE/ga_IE.jpg new file mode 100644 index 0000000..6689b03 Binary files /dev/null and b/sources/language/ga_IE/ga_IE.jpg differ diff --git a/sources/language/ga_IE/iso.txt b/sources/language/ga_IE/iso.txt new file mode 100644 index 0000000..a53e0f1 --- /dev/null +++ b/sources/language/ga_IE/iso.txt @@ -0,0 +1 @@ +Gaeilge [IE] \ No newline at end of file diff --git a/sources/language/gl_ES/about.html b/sources/language/gl_ES/about.html new file mode 100644 index 0000000..9e6ee49 --- /dev/null +++ b/sources/language/gl_ES/about.html @@ -0,0 +1,15 @@ +

                  Esta galería de fotos está baseada en Piwigo.

                  + +

                  Piwigo é un aplicativo de galería de fotos para a web, construído por unha +comunidade activa de usuarios e desenvolvedores. As extensións fan que Piwigo +sexa doado de personalizar. E o mellor ca mellor, Piwigo é gratis e de código +aberto.

                  + +

                  Visita o sitio web Piwigo

                  + +

                  A tradución ó galego é mantida por (nomes en orde alfabética): + +

                  + Moitas grazas ós tradutores!

                  \ No newline at end of file diff --git a/sources/language/gl_ES/admin.lang.php b/sources/language/gl_ES/admin.lang.php new file mode 100755 index 0000000..fa1558b --- /dev/null +++ b/sources/language/gl_ES/admin.lang.php @@ -0,0 +1,972 @@ +Piwigo for Android
                  application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'O aplicativo Piwigo para Android permíteche conectar o teu móbil ou tableta Android á túa galería Piwigo, creando álbums e enviando fotos ó mesmo tempo.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'O aplicativo Piwigo para iOS permíteche conectar o teu iPhone, iPad ou iPod Touch á túa galería Piwigo, creando álbums e enviando fotos ó mesmo tempo.'; +$lang['A locked gallery is only visible to administrators'] = 'Unha galería bloqueada só pode ser vista polos administradores'; +$lang['... or '] = '... ou'; +$lang['+ Add an upload box'] = '+ Engadir outra caixa de transferencia '; +$lang[', click on'] = ', prema sobre'; +$lang['(this tag will be deleted)'] = '(esa etiqueta será eliminada)'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u usuarios teñen permiso automático porque pertencen a un grupo que posúe ese permiso'; +$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s ten que ser establecido a falso no seu ficheiro local/config/config.inc.php'; +$lang['%s photos can not be regenerated'] = '%s fotos non puideron ser rexeradas'; +$lang['%s photos have been regenerated'] = '%s fotos que foron rexeradas'; +$lang['%s value is not correct file because exif are not supported'] = '%s valor é incorrecto porque exif non é compatible'; +$lang['Dump Database'] = 'Limpar a base de datos'; +$lang['Duplicates'] = 'Duplicados'; +$lang['Does not represent'] = 'Non hai miniatura para'; +$lang['Download,'] = 'Descarga,'; +$lang['Downloads'] = 'Descargas'; +$lang['Drag to re-order'] = 'Prema-e-arrastre para reordenar'; +$lang['Drop into album'] = 'Seleccione un álbum'; +$lang['Duplicate'] = 'Duplicar'; +$lang['Duplicate selected tags'] = 'Duplicar as etiquetas seleccionadas'; +$lang['ERROR'] = 'ERRO'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRO: ESTE ENGADIDO NON SE ATOPA PERO ESTÁ INSTALADO! DESINSTALAO AGORA.'; +$lang['Edit album'] = 'Modificar álbum'; +$lang['Edit album permissions'] = 'Modificar os permisos do álbum'; +$lang['Edit photo'] = 'Modificar foto'; +$lang['Edit photo information'] = 'Modificar a información da foto'; +$lang['Edit ranks'] = 'Modificar valoracións'; +$lang['Edit selected tags'] = 'Modificar as etiquetas seleccionadas'; +$lang['Edit tags'] = 'Modificar as etiquetas'; +$lang['Element'] = 'Elemento'; +$lang['Element type'] = 'Tipo de elemento'; +$lang['Display options'] = 'Amosar Opcións'; +$lang['Deleted on'] = 'Eliminada o'; +$lang['Deny selected groups'] = 'Denegar o acceso ós grupos seleccionados '; +$lang['Deny selected users'] = 'Denegar o acceso ós usuarios seleccionados'; +$lang['Detailed informations'] = 'Información detallada'; +$lang['Discover album:'] = 'Descubrir o álbum:'; +$lang['Deletions'] = 'Eliminacións'; +$lang['Description'] = 'Descrición'; +$lang['Directory'] = 'Cartafol'; +$lang['Directory does not exist'] = 'O cartafol non existe'; +$lang['Dissociate from album'] = 'Desasociar do álbum'; +$lang['Dissociated'] = 'Desasociado'; +$lang['Do you want to activate anyway?'] = 'Queres activalo igualmente?'; +$lang['Documentation'] = 'Documentación'; +$lang['Delete selected users'] = 'Eliminar os usuarios seleccionados'; +$lang['Delete this language'] = 'Eliminar este idioma'; +$lang['Delete this theme'] = 'Eliminar este tema'; +$lang['Delete orphan tags'] = 'Eliminar as etiquetas orfas'; +$lang['Delete selected photos'] = 'Eliminar as fotos seleccionadas'; +$lang['Delete selected tags'] = 'Eliminar as etiquetas seleccionadas'; +$lang['Crop'] = 'Redimensionar'; +$lang['Default user does not exist'] = 'O usuario predeterminado non existe'; +$lang['Delete multiple size images'] = 'Eliminar imaxes con múltiples tamaños'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'A anomalía ha de ser corrixida e non pode ser ignorada'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Crear o cartafol "%s" na raíz da instalación do teu sitio Piwigo'; +$lang['Create this site'] = 'Crear este sitio'; +$lang['Current name'] = 'Nome actual'; +$lang['Database'] = 'Base de datos'; +$lang['Database synchronization with files'] = 'Sincronizar a base de datos cos ficheiros'; +$lang['Date'] = 'Data'; +$lang['Day'] = 'Día'; +$lang['Deactivate'] = 'Desactivar'; +$lang['Deactivate all'] = 'Desactivar todo'; +$lang['Default comments order'] = 'Orde predeterminada dos comentarios'; +$lang['Default display'] = 'Vista predeterminada'; +$lang['Default photos order'] = 'Orde predeterminada das fotos'; +$lang['Default user cannot be deleted'] = 'O usuario predeterminado non pode ser eliminado'; +$lang['Delete Representant'] = 'Eliminar miniatura do álbum'; +$lang['Correction applied with success'] = 'A corrección aplicouse con éxito'; +$lang['Create'] = 'Crear'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Por causas descoñecidas non se puido comprobar se existe unha nova versión.'; +$lang['Choose an action'] = 'Escoller unha acción'; +$lang['Classic display'] = 'Vista clásica'; +$lang['Confirm merge'] = 'Confirmar mestura'; +$lang['Check for upgrade'] = 'Comprobar se hai novas versións'; +$lang['Check integrity'] = 'Comprobar integridade'; +$lang['Choose an option'] = 'Escoller unha opción'; +$lang['Comments for all'] = 'Comentarios para todos'; +$lang['Complementary mail content'] = 'Contido complementario de correo electrónico'; +$lang['Configuration'] = 'Configuración'; +$lang['Continue processing treatment'] = 'Continuar o procesamento'; +$lang['Correction'] = 'Corrección'; +$lang['Correction applied with error'] = 'Corrección aplicada con erros'; +$lang['Cancel'] = 'Cancelar'; +$lang['Cannot delete the old permalink !'] = 'A vella ligazón permanente non pode ser eliminada!'; +$lang['Center of interest'] = 'Centro de interese'; +$lang['Change Admin Colors'] = 'Mudar as cores da administración'; +$lang['Check all'] = 'Comprobar todo'; +$lang['Check automatic corrections'] = 'Comprobar correccións automáticas'; +$lang['Check for updates'] = 'Comprobar actualizacións'; +$lang['Bound Theme'] = 'Tema personalizado'; +$lang['By %s'] = 'Desenvolvido por %s'; +$lang['Average rate'] = 'Media de valoración'; +$lang['Batch Manager'] = 'Xestor de lotes'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'De xeito predeterminado, Piwigo crea un novo sitio web desde a versión da túa foto en HD (alta definición).'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'De xeito predeterminado, o centro de interese está localizado no centro da foto.'; +$lang['By rank'] = 'Por valoración'; +$lang['Caddie'] = 'Cesta'; +$lang['Caddie management'] = 'Xestión da cesta'; +$lang['Can\'t connect to server.'] = 'Non está dispoñible a conexión co servidor.'; +$lang['Can\'t create temporary file.'] = 'Non se pode crear o ficheiro temporal.'; +$lang['Can\'t download archive.'] = 'O arquivo non se pode descargar.'; +$lang['Can\'t read or extract archive.'] = 'O arquivo non se pode ler ou extraer.'; +$lang['Available versions for'] = 'Versión dispoñible para'; +$lang['Authorize users to add comments on selected albums'] = 'Autorizar ós usuarios a engadir comentarios nos álbums seleccionados'; +$lang['Authorized'] = 'Autorizado'; +$lang['Automatic correction'] = 'Corrección automática'; +$lang['Automatic sort order'] = 'Ordenación automática'; +$lang['Available on'] = 'Dispoñible en'; +$lang['Available only with HTML format'] = 'Dispoñible só co formato HTML'; +$lang['Apply watermark if height is bigger than'] = 'Aplicar a marca de auga se a altura é maior que'; +$lang['Apply watermark if width is bigger than'] = 'Aplicar a marca de auga se a largura é maior que'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Estás seguro que queres instalar esta actualización? Asegúrate de comprobar que esta versión non precisa dunha desinstalación.'; +$lang['Associate to album'] = 'Asociar ó álbum'; +$lang['Associated'] = 'Asociado'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'En todo caso, só os administradores web poden ver esta lapela e nunca administradores.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture é unha poderosa ferramenta para refinar imaxes e xestionar grandes bibliotecas no Mac'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture foi desenvolvido para fotógrafos profesionais coa simplicidade do iPhoto.'; +$lang['Applications'] = 'Aplicacións'; +$lang['Apply action'] = 'Aplicar acción'; +$lang['Apply selected corrections'] = 'Aplicar as correccións seleccionadas'; +$lang['Apply to sub-albums'] = 'Aplicar ós sub-álbums'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolución máxima aproximada: %dM píxeles (que é de %dx%d píxeles).'; +$lang['Are you sure you want to delete this plugin?'] = 'Estás seguro de que queres eliminar este engadido?'; +$lang['Are you sure you want to install this plugin?'] = 'Estás seguro de que queres instalar este engadido?'; +$lang['An information email was sent to group "%s"'] = 'Enviouse un correo electrónico informativo ó grupo "%s"'; +$lang['Anomaly'] = 'Anomalía'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Produciuse un erro durante a extracción. Comproba os permisos dos ficheiros da túa instalación Piwigo.
                  Preme aquí para amosar o rexistro do erro.'; +$lang['An error has occured during upgrade.'] = 'Produciuse un erro durante a actualización.'; +$lang['An error occured during extraction (%s).'] = 'Produciuse un erro durante a extracción dos ficheiros (%s).'; +$lang['Allow users to delete their own comments'] = 'Permitir ós usuarios eliminar seus propios comentarios'; +$lang['Allow users to edit their own comments'] = 'Permitir ós usuarios modificar seus propios comentarios'; +$lang['Allowed file types: %s.'] = 'Permitir os tipos de ficheiro: %s.'; +$lang['Allow rating'] = 'Permitir valoracións'; +$lang['All %d photos are selected'] = 'Tódalas %d fotos están seleccionadas'; +$lang['Allow user registration'] = 'Permitir ó usuario rexistrarse'; +$lang['Allow user customization'] = 'Permitir ó usuario a personalización'; +$lang['Album list management'] = 'Xestión da lista de álbums'; +$lang['Album manual order was saved'] = 'Gardouse a ordenación manual dos álbums'; +$lang['Album name'] = 'Nome do álbum'; +$lang['Album photos associated to the following albums: %s'] = 'Álbum de fotos asociado ós seguintes álbums: %s'; +$lang['Album updated successfully'] = 'O álbum actualizouse con éxito'; +$lang['Albums authorized thanks to group associations'] = 'O álbum autorizouse grazas ás asociacións do grupo'; +$lang['Albums automatically sorted'] = 'Os álbums ordenáronse automaticamente'; +$lang['All extensions are up to date.'] = 'Tódolos engadidos están actualizad0s.'; +$lang['All languages are up to date.'] = 'Tódolos idiomas están actualizados.'; +$lang['All optimizations have been successfully completed.'] = 'Tódalas optimizacións foron completadas con éxito.'; +$lang['All plugins are up to date.'] = 'Tódolos engadidos están actualizados.'; +$lang['All themes are up to date.'] = 'Tódolos temas están actualizados.'; +$lang['Album "%s" now contains %d photos'] = 'O álbum "%s" agora contén %d fotos'; +$lang['Purge never used notification feeds'] = 'Purgar as sementes de notificación nunca usadas'; +$lang['Purge history detail'] = 'Purgar detalles do histórico'; +$lang['Purge history summary'] = 'Purgar o sumario do histórico'; +$lang['Privacy level set to "%s"'] = 'Nivel de privacidade establecido a "%s"'; +$lang['Private'] = 'Privado'; +$lang['Properties'] = 'Propiedades'; +$lang['Public'] = 'Público'; +$lang['Public / Private'] = 'Público / Privado'; +$lang['Purge compiled templates'] = 'Purgar modelos compilados'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'O tempo para preparar a lista de usuarios ós cales se lles enviará o correo é limitado. Non se puideron procesar tódolos usuarios.'; +$lang['Privacy level'] = 'Nivel de privacidade'; +$lang['Predefined filter'] = 'Filtro predefinido'; +$lang['Preferences'] = 'Preferencias'; +$lang['Posted %s on %s'] = 'Enviado %s en %s'; +$lang['Please wait...'] = 'Agarda por favor...'; +$lang['Plugin has been successfully copied'] = 'O engadido copiouse con éxito'; +$lang['Plugin list'] = 'Lista de engadidos'; +$lang['Plugins'] = ' Engadidos'; +$lang['Plugins which need upgrade'] = 'Engadidos a ser actualizados'; +$lang['Portrait'] = 'Vertical'; +$lang['Position'] = 'Posición'; +$lang['Piwigo Uploader'] = 'Piwigo Uploader'; +$lang['Piwigo Announcements Newsletter'] = 'Boletín informativo de anunciamentos Piwigo'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Engadido de publicación Piwigo para Lightroom'; +$lang['Piwigo Update'] = 'Actualización de Piwigo'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo non pode recuperar o ficheiro coa actualización do servidor'; +$lang['Piwigo configuration'] = 'Configuración de Piwigo'; +$lang['Piwigo export plugin for Aperture'] = 'Engadido de exportación Piwigo para Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Engadido de exportación Piwigo para iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo para Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Engadido de publicación Piwigo para Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Engadido de publicación Piwigo para digiKam'; +$lang['Piwigo version'] = 'Versión de Piwigo'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Comproba os permisos do cartafol "plugins" e subcartafoles (CHMOD).'; +$lang['Please select at least two groups'] = 'Selecciona polo menos dous grupos'; +$lang['Piwigo Administration'] = 'Administración Piwigo'; +$lang['Photo sizes with crop'] = 'Tamaños da foto recortada'; +$lang['Photo unreachable or no support'] = 'Foto inaccesible ou formato incompatible'; +$lang['Photos'] = 'Fotos'; +$lang['Photos generation in progress...'] = 'Xeración de fotos en progreso...'; +$lang['Photo informations updated'] = 'Información da foto actualizada '; +$lang['Password is missing. Please enter the password.'] = 'Falta a clave. Insire unha clave.'; +$lang['Path'] = 'Ruta'; +$lang['Pending Comments'] = 'Comentarios pendentes'; +$lang['Permalink'] = 'Ligazón permanente'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'A ligazón permanente %s foi usada anteriormente no álbum %s. Bórraa primeiro do histórico de ligazóns permanentes '; +$lang['Permalink %s is already used by album %s'] = 'A ligazón permanente %s xa está en uso no álbum %s'; +$lang['Permalink history'] = 'Histórico de ligazóns permanentes'; +$lang['Permalinks'] = 'Ligazóns permanentes'; +$lang['Permission denied'] = 'Permiso denegado'; +$lang['Permission granted'] = 'Permiso concedido'; +$lang['Permission granted for groups'] = 'Permiso concedido para grupos'; +$lang['Permission granted for users'] = 'Permiso concedido para usuarios'; +$lang['Permission granted thanks to a group'] = 'Permiso concedido grazas ó grupo'; +$lang['Permission management'] = 'Xestión de permisos'; +$lang['Permissions'] = 'Permisos'; +$lang['Photo %s of %s'] = 'Foto %s de %s'; +$lang['Photo Page'] = 'Páxina da foto'; +$lang['Photo Properties'] = 'Propiedades da foto'; +$lang['Photo name'] = 'Nome da foto'; +$lang['Optional URL keyword'] = 'Palabra clave opcional ó URL'; +$lang['Operation in progress'] = 'Operación en progreso.'; +$lang['Optimizations have been completed with some errors.'] = 'As optimizacións completáronse con algúns erros.'; +$lang['Options'] = 'Opcións'; +$lang['Order of menubar items has been updated successfully.'] = 'A orde dos elementos da barra de menú actualizouse con éxito.'; +$lang['Original Size'] = 'Tamaño orixinal'; +$lang['Original file : %s'] = 'Ficheiro orixinal: %s'; +$lang['Original templates'] = 'Modelo orixinal'; +$lang['Orphan tags deleted'] = 'Detectáronse etiquetas orfas '; +$lang['Other plugins'] = 'Outros engadidos dispoñibles'; +$lang['Other private albums'] = 'Outros álbums privados'; +$lang['Overall'] = 'Vista previa'; +$lang['Page banner'] = 'Cartel da páxina'; +$lang['Page end'] = 'Fin da páxina'; +$lang['Pages seen'] = 'Páxinas vistas'; +$lang['Panorama'] = 'Panorama'; +$lang['Parameter'] = 'Opcións'; +$lang['Parameters'] = 'Parámetros'; +$lang['Parent album'] = 'Álbum pai'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Falta a confirmación da clave. Confirma a clave escollida.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'No teu Linux, simplemente instala Shotwell co teu xestor de paquetes e activa a opción de publicación en Piwigo.'; +$lang['Notify administrators when a comment is'] = 'Notificar ós administradores cando un comentario sexa'; +$lang['Number of albums per page'] = 'Número de álbums por páxina'; +$lang['Number of comments per page'] = 'Número de comentarios por páxina'; +$lang['Number of downloads'] = 'Número de descargas'; +$lang['Number of rates'] = 'Número de valoracións'; +$lang['Number of thumbnails to create'] = 'Número de miniaturas a crear'; +$lang['Numeric identifier : %d'] = 'Identificador numérico: %d'; +$lang['Obsolete Plugins'] = 'Engadidos obsoletos'; +$lang['Only private albums are listed'] = 'Só se amosan os álbums privados'; +$lang['Opacity'] = 'Opacidade'; +$lang['Operating system'] = 'Sistema operativo'; +$lang['None'] = 'Nungún'; +$lang['Not cropped correctly?'] = 'Non se recortou correctamente?'; +$lang['Notification'] = 'Notificación'; +$lang['No results'] = 'Non hai resultados'; +$lang['No user to send notifications by mail.'] = 'Non hai usuario para ser notificado por correo.'; +$lang['No photo in this album'] = 'Non hai fotos neste álbum'; +$lang['No photo selected, %d photos in current set'] = 'Non hai fotos seleccionadas, hai %d fotos no actual conxunto'; +$lang['No photo selected, no action possible.'] = 'Non hai fotos seleccionadas, non hai acción posible.'; +$lang['No mail to send.'] = 'Non hai ningún correo para ser enviado.'; +$lang['No members to manage'] = 'Non hai ningún membro para ser xestionado'; +$lang['No order field selected'] = 'Non hai seleccionado ningún campo a ordenar'; +$lang['No photo can be deleted'] = 'Non pode ser borrada ningunha foto'; +$lang['No photo in the current set.'] = 'Non hai ningunha foto no actual conxunto.'; +$lang['New photos were added'] = 'Foron engadidas novas fotos'; +$lang['No file was uploaded'] = 'Non se enviou ningún ficheiro'; +$lang['No group selected, no action possible.'] = 'Non hai ningún grupo seleccionado. Non hai acción posible.'; +$lang['No group is permitted to see this private album'] = 'Ningún grupo ten permiso para ver este álbum privado'; +$lang['New photos added'] = 'Novas fotos engadidas'; +$lang['Move to album'] = 'Mover ó álbum'; +$lang['Multiple Size'] = 'Tamaño múltiple'; +$lang['Name'] = 'Nome'; +$lang['Name of the duplicate'] = 'Nome do duplicado'; +$lang['New Version'] = 'Nova versión'; +$lang['New name'] = 'Novo nome'; +$lang['New parent album'] = 'Novo álbum pai'; +$lang['New tag'] = 'Nova etiqueta'; +$lang['No destination tag selected'] = 'Non hai seleccionado ningún destino para a etiqueta'; +$lang['No display'] = 'Non amosar'; +$lang['Month'] = 'Mes'; +$lang['Move'] = 'Mover'; +$lang['Move albums'] = 'Mover álbums'; +$lang['Missing Plugins'] = 'Non se atopan engadidos '; +$lang['Missing a temporary folder'] = 'Non se atopa o cartafol temporal'; +$lang['Miscellaneous'] = 'Outras informacións'; +$lang['Modify information'] = 'Modificar información'; +$lang['Minimum height'] = 'Altura mínima'; +$lang['Minimum privacy level'] = 'Nivel de privacidade mínimo'; +$lang['Minimum width'] = 'Largura mínima'; +$lang['Metadata synchronized from file'] = 'Metadatos sincronizados desde o ficheiro'; +$lang['Maximum file size: %sB.'] = 'Tamaño máximo de ficheiro: %sB.'; +$lang['Maximum height'] = 'Altura máxima'; +$lang['Maximum width'] = 'Largura máxima'; +$lang['Members'] = 'Membros'; +$lang['Menu Management'] = 'Menús'; +$lang['Merge selected groups'] = 'Combinar os grupos seleccionados'; +$lang['Merge selected tags'] = 'Combinar as etiquetas seleccionadas'; +$lang['Merge tags'] = 'Combinar etiquetas'; +$lang['Metadata synchronization results'] = 'Resultados da sincronización dos metadatos'; +$lang['Main "guest" user does not exist'] = 'O usuario principal "invitado" non existe'; +$lang['Main "guest" user status is incorrect'] = 'O usuario principal "invitado" ten un estado incorrecto'; +$lang['Main "webmaster" user does not exist'] = 'O usuario principal "administrador web" non existe'; +$lang['Main "webmaster" user status is incorrect'] = 'O usuario principal "administrador web" ten un estado incorrecto'; +$lang['Main Page'] = 'Páxina principal'; +$lang['Maintenance'] = 'Mantemento'; +$lang['Make this language available to users'] = 'Facer este idioma dispoñible para os usuarios'; +$lang['Make this theme available to users'] = 'Facer este tema dispoñible para os usuarios'; +$lang['Manage'] = 'Xestión'; +$lang['Manage Permissions'] = 'Xestionar permisos'; +$lang['Manage authorizations for selected albums'] = 'Xestionar permisos para os álbums seleccionados'; +$lang['Manage permissions for group "%s"'] = 'Xestionar permisos para o grupo "%s"'; +$lang['Manage permissions for user "%s"'] = 'Xestionar permisos para o usuario "%s"'; +$lang['Manage photo ranks'] = 'Xestionar as valoracións das fotos'; +$lang['Manage photos'] = 'Xestionar fotos'; +$lang['Manage tags'] = 'Xestionar etiquetas'; +$lang['Manage the members'] = 'Xestionar os membros'; +$lang['Manage this set of %d photos'] = 'Xestionar este conxunto de %d fotos'; +$lang['Manual order'] = 'Orde manual'; +$lang['Link all album photos to some existing albums'] = 'Ligar todas as fotos do álbum a un álbum xa existente'; +$lang['Locked'] = 'Bloqueado'; +$lang['Last import'] = 'Última importación'; +$lang['Last revisions'] = 'Última revisión'; +$lang['Last send'] = 'Último envío'; +$lang['Learn more'] = 'Aprender máis'; +$lang['Level 0'] = '---'; +$lang['Level 1'] = 'Contactos'; +$lang['Level 2'] = 'Amigos'; +$lang['Level 4'] = 'Familia'; +$lang['Level 8'] = 'Administradores'; +$lang['Link all album photos to a new album'] = 'Ligar todas as fotos do álbum a un novo álbum'; +$lang['Linked albums'] = 'Álbumes ligados'; +$lang['List'] = 'Listaxe'; +$lang['Local'] = 'Local'; +$lang['Lock'] = 'Bloquear'; +$lang['Lock albums'] = 'Bloquear álbums'; +$lang['Lock gallery'] = 'Bloquear galería'; +$lang['Mail address is obligatory for all users'] = 'O enderezo de correo é obrigatorio para tódolos usuarios'; +$lang['Mail content'] = 'Contido do correo'; +$lang['Mail sent to %s [%s].'] = 'Enviar correo a %s [%s].'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Fica actualizado co proxecto Piwigo, subscríbete ó boletín dos anuncios do Piwigo. Recibirás correos electrónicos cando estea dispoñible unha nova versión (ás veces inclúen a corrección dun erro de seguranza, é importante coñecer isto e actualizar) e cando se producen actividades importantes no proxecto. Só se enviarán uns poucos correos ó longo do ano.'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incluír os datos do historial (Aviso: o límite de memoria do servidor pode superarse)'; +$lang['Information data registered in database'] = 'Información rexistrada na base de datos'; +$lang['Inactive Languages'] = 'Idiomas inactivos'; +$lang['Inactive Plugins'] = 'Engadidos inactivos'; +$lang['Inactive Themes'] = 'Temas inactivos'; +$lang['Include display of recent photos grouped by dates'] = 'Incluír pantalla de fotos recentes agrupadas por data'; +$lang['Informations'] = 'Información'; +$lang['Install'] = 'Instalar'; +$lang['Install on your computer,'] = 'Instalar no teu computador,'; +$lang['Installed Languages'] = 'Idiomas instalados'; +$lang['Installed Themes'] = 'Temas instalados'; +$lang['Instructions to use Piwigo'] = 'Instrucións para usar Piwigo'; +$lang['Invert'] = 'Inverter'; +$lang['Landscape'] = 'Apaisado'; +$lang['Language has been successfully installed'] = 'O idioma instalouse correctamente'; +$lang['Languages'] = 'Idiomas'; +$lang['Languages which need upgrade'] = 'Idiomas que precisan actualización'; +$lang['Last hit'] = 'Último acceso'; +$lang['If you encounter problems or have any question, please send a message to'] = 'se atopas problemas ou tes algunha cuestión, envía unha mensaxe a'; +$lang['Ignore selected anomalies'] = 'Ignorar as anomalías seleccionadas'; +$lang['Ignore this update'] = 'Ignorar esta actualización'; +$lang['Image Quality'] = 'Calidade da imaxe'; +$lang['Image id'] = 'Identificador da imaxe'; +$lang['Images manual order was saved'] = 'Gardouse a orde manual das imaxes'; +$lang['Impossible automatic correction'] = 'É imposible a corrección automática'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Este tema non pode ser activado, porque falta o tema pai: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Non se pode desactivar este idioma, primeiro establece outro como predeterminado.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Non se pode desactivar este idioma, tes que ter polo menos un idioma.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Non se pode desactivar este tema, tes que ter polo menos un tema.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Este tema non pode ser eliminado porque outros temas dependen del: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'No teu ficheiro php.ini, a opción upload_max_filesize (%sB) é maior que post_max_size (%sB), tes que mudar esta opción'; +$lang['Ignore All'] = 'Ignorar todo'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se non estás dispoñibles fotos en alta definición e se o actual sitio web é maior que o tamaño da redimensión, Piwigo moveraas como se foran de alta definición e creará unha foto de menor resolución para ser amosada. '; +$lang['IP'] = 'IP'; +$lang['Hoverbox display'] = 'Amosar en caixa emerxente'; +$lang['Hit'] = 'Acceso'; +$lang['Hour'] = 'Hora'; +$lang['I decide to update anyway'] = 'Decido actualizar igualmente'; +$lang['Grant selected groups'] = 'Dar acceso ós grupos seleccionados'; +$lang['Grant selected users'] = 'Dar acceso ós usuarios seleccionados'; +$lang['Graphics Library'] = 'Biblioteca de gráficos'; +$lang['Group'] = 'Grupo'; +$lang['Group management'] = 'Xestión de grupos'; +$lang['Group name'] = 'Nome do grupo'; +$lang['Groups'] = 'Grupos'; +$lang['Groups and users'] = 'Grupos e usuarios'; +$lang['Guest Settings'] = 'Opcións dos invitados'; +$lang['Guest cannot be deleted'] = 'O usuario Invitado non pode ser eliminado'; +$lang['Guests'] = 'Invitados'; +$lang['Height'] = 'Altura'; +$lang['Hello'] = 'Ola'; +$lang['Hello,'] = 'Ola,'; +$lang['Help Me'] = 'Axúdame'; +$lang['Hide'] = 'Agochar'; +$lang['High definition'] = 'Alta definición'; +$lang['High definition enabled'] = 'Activar alta definición'; +$lang['History'] = 'Historia'; +$lang['Go to %s or %s for more informations'] = 'Ir a %s ou a %s para máis información'; +$lang['Forbid this language to users'] = 'Prohibir este idioma ós usuarios'; +$lang['Forbid this theme to users'] = 'Prohibir este tema ós usuarios'; +$lang['Forbidden'] = 'Prohibido'; +$lang['Form'] = 'Formulario'; +$lang['GD library is missing'] = 'Non se atopa a biblioteca GD'; +$lang['GD version'] = 'Versión da biblioteca GD'; +$lang['Gallery title'] = 'Título da galería'; +$lang['Gallery unlocked'] = 'Galería desbloqueada'; +$lang['General statistics'] = 'Estatísticas xerais'; +$lang['Generate multiple size images'] = 'Xerar múltiples tamaños para as imaxes'; +$lang['Get Support on Piwigo Forum'] = 'Obter asistencia no foro de Piwigo'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dar permiso de escritura (chmod 777) ó cartafol "%s" na raíz da instalación do teu sitio Piwigo'; +$lang['Go to'] = 'Ir a'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para tamaños de fotos recortadas, como "Cadrado", Piwigo fará o posible para incluír o centro de interese.'; +$lang['Follow Orientation'] = 'Sigue a orientación'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Pode que os seguintes engadidos non sexan compatibles coa nova versión de Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Pode que os seguintes temas non sexan compatibles coa nova versión de Piwigo:'; +$lang['File upload stopped by extension'] = 'O envío do ficheiro parou por unha extensión'; +$lang['File/directory read error'] = 'Produciuse un erro ó ler o ficheiro/cartafol'; +$lang['Find a new representant by random'] = 'Atopar unha nova miniatura para o álbum ó chou'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'A galería inclúe funcións de navegación, creación de álbums e subida de fotos.'; +$lang['Extend for templates'] = 'Extensión de modelos'; +$lang['Extensions Update'] = 'Actualizar extensións'; +$lang['FTP + Synchronization'] = 'FTP + Sincronización'; +$lang['Failed to write file to disk'] = 'Fallo ó escribir o ficheiro no disco'; +$lang['File'] = 'Ficheiro'; +$lang['Exif extension not available, admin should disable exif use'] = 'A extensión Exif non está dispoñible. Un administrador debería desactivar o uso de metadatos Exif'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Excedeuse o tempo de execución, o tratamento debe continuar [Tempo estimado: %d segundo].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Excedeuse o tempo de execución, o tratamento debe continuar [Tempo estimado: %d segundos].'; +$lang['Email administrators when a comment is deleted'] = 'Enviar un correo electrónico ós administradores cando se borre un comentario'; +$lang['Email administrators when a comment is modified'] = 'Enviar un correo electrónico ós administradores cando se modifique un comentario'; +$lang['Email admins when a comment requires validation'] = 'Enviar un correo electrónico ós administradores cando un comentario requira validación'; +$lang['Email admins when a new user registers'] = 'Enviar un correo electrónico ós administradores cando se rexistre un novo usuario'; +$lang['Email admins when a valid comment is entered'] = 'Enviar un correo electrónico ós administradores cando se insira un comentario válido'; +$lang['Error list'] = 'Lista de erros'; +$lang['Error on file "%s" : %s'] = 'Produciuse un erro no ficheiro "%s": %s'; +$lang['Error when sending email to %s [%s].'] = 'Produciuse un erro cando se envíe un correo electrónico a %s [%s].'; +$lang['Errors caption'] = 'Lendas dos erros'; +$lang['Everybody'] = 'Todos'; +$lang['Set creation date'] = 'SAección data'; +$lang['Set title'] = 'Establecer o título'; +$lang['Settings'] = 'Opcións'; +$lang['Set as default theme for unregistered and new users'] = 'Establecer como tema predeterminado para visitantes e non rexistrados e para novos usuarios'; +$lang['Set author'] = 'Establecer autor'; +$lang['Select the destination tag'] = 'Escoller a etiqueta dun destino'; +$lang['Selection'] = 'Escolla'; +$lang['Send'] = 'Enviar'; +$lang['Send an information email to group members'] = 'Enviar unha notificación por emalis ós membros dun grupo'; +$lang['Send connection settings by email'] = 'Enviar credenciais por correo electrónico'; +$lang['Send mail as'] = 'Enviar correo como'; +$lang['Send mail on HTML format'] = 'Enviar email en formato HTML'; +$lang['Send mail to users'] = 'Norificacións'; +$lang['Set as default language for unregistered and new users'] = 'Idioma predeterminado para os invitados e os noves usuarios'; +$lang['Save visits in history for'] = 'Gardar visitas no histórico a'; +$lang['Search for new images in the directories'] = 'Buscar novas imaxes nos directorios'; +$lang['Searching...'] = 'Buscando...'; +$lang['Section'] = 'Sección'; +$lang['See you soon,'] = 'Vémonos pronto,'; +$lang['See you soon.'] = 'Vémonos pronto.'; +$lang['Select a file'] = 'Escolle un ficheiro'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Escolle unha zona co teu rato para definir un novo centro de interese.'; +$lang['Select an album'] = 'Escoller un álbum'; +$lang['Select at least one album'] = 'Escoller polo menos un álbum'; +$lang['Select at least one comment'] = 'Escoller polo menos un comentario'; +$lang['Select at least one photo'] = 'Escoller polo menos unha foto'; +$lang['Select at least one user'] = 'Escoller polo menos un usuario'; +$lang['Select at least two tags for merging'] = 'Escoller polo menos dúas etiquetas para combinar'; +$lang['Select files'] = 'Escoller ficheiros'; +$lang['Select groups...'] = 'Escoller grupos...'; +$lang['Select recipients'] = 'Escoller receptores'; +$lang['Select users...'] = 'Escoller usuarios...'; +$lang['Select:'] = 'Escoller'; +$lang['Save to permalink history'] = 'Gardar no histórico de ligazóns permanentes'; +$lang['Save manual order'] = 'Gardar a orde manual'; +$lang['Save order'] = 'Gardar a orde'; +$lang['Save Template Directory'] = 'Gardar o cartafol de modelos'; +$lang['Represents'] = 'É a miniatura para'; +$lang['Reset ignored updates'] = 'Reiniciar as actualizacións ignoradas'; +$lang['Resize'] = 'Redimensionar'; +$lang['Resize after upload'] = 'Redimensionar despois de enviar'; +$lang['Restore'] = 'Restaurar'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaurar a configuración predeterminada. Perderás a configuración dos engadidos!'; +$lang['Save Settings'] = 'Gardar opcións'; +$lang['Representant'] = 'Miniatura do álbum'; +$lang['Representation of albums'] = 'Miniatura do álbum'; +$lang['Representative'] = 'Miniatura do álbum'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Substitución dos modelos orixinais polos modelos personalizados do subcartafol template-extension'; +$lang['Replacers (customized templates)'] = 'Subtítulos (modelos personalizados)'; +$lang['Remove all filters'] = 'Eliminar tódolos filtros'; +$lang['Remove from caddie'] = 'Eliminar da cesta'; +$lang['Rename'] = 'Renomear'; +$lang['Repair and optimize database'] = 'Reparar e optimizar a base de datos'; +$lang['Released on'] = 'Lanzado en'; +$lang['Reinitialize check integrity'] = 'Reiniciar a comprobación da integridade'; +$lang['Reject'] = 'Rexeitar'; +$lang['Remote'] = 'Remoto'; +$lang['Ratio'] = 'Proporción'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (cliente RemoteGallery para Android) é un software de código aberto (GPL v3) cliente de Piwigo para teu dispositivo Android.'; +$lang['Read Piwigo Documentation'] = 'Ler a documentación Piwigo'; +$lang['Refresh'] = 'Actualizar'; +$lang['Refresh photo set'] = 'Actualizar o lote de fotos'; +$lang['Purge search history'] = 'Purgar o histórico da procura'; +$lang['Purge sessions'] = 'Purgar as sesións'; +$lang['Purge user cache'] = 'Purgar a caché de usuario'; +$lang['Quick Local Synchronization'] = 'Sincronización local rápida'; +$lang['Random photo'] = 'Foto ó chou'; +$lang['Rate'] = 'Valorar'; +$lang['Rate date'] = 'Data da valoración'; +$lang['Rated %d times, score : %.2f'] = 'Valorada %d veces, valoración: %.2f'; +$lang['Rating'] = 'Valoración'; +$lang['Rating by guests'] = 'Valoración por usuarios'; +$lang['global mode'] = 'modo global'; +$lang['for the file format'] = 'para o formato de ficheiro'; +$lang['for this file format'] = 'para este formato de ficheiro'; +$lang['errors during synchronization'] = 'erros durante a sincronización'; +$lang['even already synchronized photos'] = 'mesmas fotos xa sincronizadas'; +$lang['existing album'] = 'álbum existente'; +$lang['first photo added on %s'] = 'primeira foto engadida o %s'; +$lang['dissociate from group'] = 'desasociar do grupo'; +$lang['deleted'] = 'eliminado'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'O digiKam é un xestor de fotos avanzado de software libre para Linux, Windows e MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'O digiKam está deseñado para fotógrafos que queren ver, xestionar, modificar, mellorar, organizar, etiquetar e compartir fotografías.'; +$lang['directories + files'] = 'cartafoles + ficheiros'; +$lang['display'] = 'pantalla'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'amosar a información máxima (álbums e fotos engadidas, álbums e fotos eliminadas)'; +$lang['delete this site and all its attached elements'] = 'eliminar este sitio e toda a información asociada'; +$lang['created'] = 'creado'; +$lang['custom'] = 'Personalizar'; +$lang['default'] = 'predeterminado'; +$lang['default values'] = 'valores predeterminados'; +$lang['delete'] = 'eliminar'; +$lang['delete album'] = 'eliminar álbum'; +$lang['delete photo'] = 'eliminar foto'; +$lang['confirm'] = 'confirmar'; +$lang['create a new album'] = 'crear un novo álbum'; +$lang['create a new site'] = 'crear un novo sitio'; +$lang['clean'] = 'limpar'; +$lang['between %d and %d pixels'] = 'entre %d e %d píxeis'; +$lang['bottom left corner'] = 'esquina esquerda de abaixo'; +$lang['bottom right corner'] = 'esquina dereita de abaixo'; +$lang['cancel manual order'] = 'cancelar orde manual'; +$lang['average time'] = 'tempo de medio'; +$lang['between'] = 'entre o'; +$lang['apply automatic sort order'] = 'ordenar automaticamente'; +$lang['associate to group'] = 'asociar ó grupo'; +$lang['automatic order'] = 'Orde automática'; +$lang['between %.2f and %.2f'] = 'entre %.2f e %.2f'; +$lang['albums added in the database'] = 'álbums engadidos na base de datos'; +$lang['albums deleted in the database'] = 'álbums eliminados na base de datos'; +$lang['all'] = 'todos'; +$lang['an error happened'] = 'produciuse un erro'; +$lang['and'] = 'e'; +$lang['any visitor can see this album'] = 'calquera visitante pode ver este álbum'; +$lang['added'] = 'engadido'; +$lang['administrators'] = 'administradores'; +$lang['[NBM] Problems or questions'] = '[NBM] Problemas ou cuestións'; +$lang['Your configuration settings are saved'] = 'As opcións de configuración foron gardadas'; +$lang['Zoom'] = 'Zúm'; +$lang['[%s] Visit album %s'] = '[%s] visitar álbum %s'; +$lang['add a new watermark'] = 'engadir unha nova marca de auga'; +$lang['add new photos to caddie'] = 'engadir unha nova cesta de fotos'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Precisas actualizar o sistema para aproveitar ó máximo o aplicativo, do contrario o aplicativo non funcionará completo ou correctamente.'; +$lang['You might go to plugin list to install and activate it.'] = 'Tes que ir á lista de engadidos e activalo.'; +$lang['You need to confirm deletion'] = 'Tes que confirmar a eliminación'; +$lang['You cannot delete your account'] = 'Non podes eliminar túa conta'; +$lang['You cannot move an album in its own sub album'] = 'Non podes mover un álbum dentro dun subálbum propio.'; +$lang['You have %d orphan tags: %s.'] = 'Tes %d etiquetas orfas: %s'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Tes especificado $conf[\'order_by\'] no teu ficheiro de configuración local, este parámetro está obsoleto, elimínao ou renoméao a $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Fostes subscrito para recibir notificacións por correo.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Fostes dessubscrito para recibir notificacións por correo.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Non se pode definir unha orde predeterminada para as fotos porque está establecida unha configuración personalizada na configuración local do aplicativo.'; +$lang['You can activate only one mobile theme.'] = 'Só se pode activar un tema para dispositivos móbiles.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Podes actualizar a Piwigo %s directamente, sen actualizar a Piwigo %s (recomendado).'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Estar a usar o formulario FLASH para enviar. Proba o formulario HTML para enviar fotos ó servidor.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Estar a usar o formulario HTML para enviar. Proba o formulario FLASH para enviar fotos ó servidor.'; +$lang['You are running the latest version of Piwigo.'] = 'Estás executando a última versión.'; +$lang['You are running on development sources, no check possible.'] = 'Estar a empregar unha fonte de desenvolvemento. Non se pode comprobar a última versión.'; +$lang['With no album'] = 'Sen álbum'; +$lang['With no tag'] = 'Sen etiqueta'; +$lang['With no virtual album'] = 'Sen álbum virtual'; +$lang['X Position'] = 'Posición X'; +$lang['X Repeat'] = 'Repetir X'; +$lang['Y Position'] = 'Posición Y'; +$lang['Year'] = 'Ano'; +$lang['Watermark'] = 'Marca de auga'; +$lang['Web Form'] = 'Formulario web'; +$lang['Webmaster cannot be deleted'] = 'Non se pode eliminar o administrador web'; +$lang['Webmaster status is required.'] = 'O estado do administrador web é obrigatorio.'; +$lang['Week starts on'] = 'A semana comeza o'; +$lang['Who can see these photos?'] = 'Quen pode ver estas fotos?'; +$lang['Who can see this photo?'] = 'Quen pode ver esta foto?'; +$lang['Width'] = 'Largura'; +$lang['With blank value, gallery title will be used'] = 'Se se deixa en branco, empregarase o título da galería'; +$lang['Users'] = 'Usuarios'; +$lang['Validate'] = 'Validar'; +$lang['Validation'] = 'Validación'; +$lang['Version'] = 'Versión'; +$lang['View in gallery'] = 'Ver na galería'; +$lang['Virtual Links'] = 'Ligazóns virtuais'; +$lang['Virtual album'] = 'Álbum virtual'; +$lang['Virtual album added'] = 'Engadiuse o álbum virtual'; +$lang['Virtual album deleted'] = 'Eliminouse o álbum virtual'; +$lang['Virtual album name'] = 'Nome do álbum virtual'; +$lang['Virtual albums to move'] = 'Mover álbums virtuais'; +$lang['Visit Gallery'] = 'Visitar a galería'; +$lang['Visit Piwigo project website'] = 'Visitar o sitio web do proxecto Piwigo'; +$lang['Visit language site'] = 'Visitar o sitio do idioma'; +$lang['Visit plugin site'] = 'Visitar o sitio do engadido'; +$lang['Visit theme site'] = 'Visitar o sitio do tema'; +$lang['Visited %d times'] = 'Visitado %d veces'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'Aviso! Este engadido parece non ser compatible con esta versión de Piwigo.'; +$lang['Waiting'] = 'Pendente'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Aviso! subscribir e dessubscribir enviará un correo ós usuarios'; +$lang['User %s [%s] was added to the subscription list.'] = 'O usuario %s [%s] engadiuse á lista de subscrición.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'O usuario %s [%s] non se engadiu á lista de subscrición.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'O usuario %s [%s] non se eliminou da lista de subscrición.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'O usuario %s [%s] eliminouse da lista de subscrición.'; +$lang['User comments validation'] = 'Validación dos comentarios do usuario'; +$lang['User list'] = 'Lista de usuarios'; +$lang['User status'] = 'Estado do usuario'; +$lang['User %s [%s] added.'] = 'Engadiuse o usuario %s [%s]'; +$lang['Used metadata'] = 'Metadatos usados'; +$lang['User'] = 'Usuario'; +$lang['User "%s" created with "%s" like password'] = 'Creouse o usuario "%s" coa clave "%s"'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Usar a orde de selección das fotos predeterminada (definida no ficheiro de configuración)'; +$lang['Update albums informations'] = 'Actualizar información dos álbums'; +$lang['Update in progress... Please wait.'] = 'Actualización en progreso... Agarda.'; +$lang['Update photos information'] = 'Actualizada a información das fotos'; +$lang['Update to Piwigo %s'] = 'Actualizar a Piwigo %s'; +$lang['Updates'] = 'Actualizacións'; +$lang['Upload'] = 'Enviar'; +$lang['Upload Photos'] = 'Enviar fotos'; +$lang['Uploaded Photos'] = 'Fotos enviadas'; +$lang['Uncheck all'] = 'Desbloquear todo'; +$lang['Uninstall'] = 'Desinstalar'; +$lang['Uninstalled Plugins'] = 'Engadidos desinstalados'; +$lang['Unknown upload error'] = 'Erro descoñecido ó enviar'; +$lang['Unlock gallery'] = 'Desbloquear alería'; +$lang['Unlocked'] = 'Desbloqueada'; +$lang['Unsubscribe from notification by mail'] = 'Dessubscribir desde a notificación por correo electrónico'; +$lang['Unsubscribed'] = 'Dessubscrito'; +$lang['Update All'] = 'Actualizar todo'; +$lang['Update Complete'] = 'Actualización completa'; +$lang['Tools'] = 'Ferramentas'; +$lang['Two updates are available'] = 'Están dispoñibles dúas actualizacións'; +$lang['Type here the author name'] = 'Escribe aquí o nome do autor'; +$lang['Type here the name of the new group'] = 'Escribe aquí o nome do novo grupo'; +$lang['Type here the title'] = 'Escribe aquí o título'; +$lang['Type in a search term'] = 'Escribe un termo de busca'; +$lang['Unable to check for upgrade.'] = 'Non se puido comprobar as actualizacións'; +$lang['Unable to dump database.'] = 'Non se puido limpar a base de datos.'; +$lang['Toggle \'default group\' property'] = 'Inverter a propiedade \'grupo predeterminado\''; +$lang['To unsubscribe'] = 'Dessubscribir'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'O tempo para enviar correos é limitado. Algúns correos non se enviarán.'; +$lang['Title'] = 'Título'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para exportar túas fotos de digiKam a Piwigo, simplemente instala digiKam e os engadidos Kipi.'; +$lang['To send ?'] = 'Enviar?'; +$lang['To subscribe'] = 'Subscribir'; +$lang['This is a major update, with new exciting features.'] = 'Esta é unha actualización importante, con novas e excitantes características.'; +$lang['This is a minor update, with only bug corrections.'] = 'Esta é unha actualización menor, só con correccións de erros.'; +$lang['This name is already used by another group.'] = 'Este nome xa está en uso por outro grupo.'; +$lang['This site already exists'] = 'Este sitio xa existe'; +$lang['This theme was not designed to be directly activated'] = 'Este tema non foi deseñado para ser activado de xeito directo'; +$lang['Thumbnail'] = 'Miniatura'; +$lang['Thumbnails generation in progress...'] = 'Xeración de miniaturas en progreso...'; +$lang['Time'] = 'Tempo'; +$lang['There is no other plugin available.'] = 'Non hai outro engadido dispoñible.'; +$lang['There is no other theme available.'] = 'Non hai outro tema dispoñible.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Este álbum contén %d fotos, engadidas entre %s e %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Este álbum contén %d fotos, engadidas o %s.'; +$lang['This album contains no photo.'] = 'Este álbum non contén fotos.'; +$lang['This group will be set to default'] = 'Este grupo será usado como predeterminado'; +$lang['This group will be unset to default'] = 'Este grupo xa non será usado como predeterminado'; +$lang['Theme has been successfully installed'] = 'O tema instalouse con éxito'; +$lang['Themes'] = 'Temas'; +$lang['Themes which need upgrade'] = 'Temas que precisan de actualización'; +$lang['There is no available subscribers to mail.'] = 'Non hai subscritores para ser notificados por correo electrónico.'; +$lang['There is no group in this gallery.'] = 'Non hai grupo nesta galería.'; +$lang['There is no other language available.'] = 'Non hai outros idiomas dispoñibles.'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'O ficheiro enviado excede a regra MAX_FILE_SIZE que foi especificada no formulario HTML'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'O ficheiro enviado excede a regra upload_max_filesize que foi especificada no php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'O ficheiro enviado foi parcialmente enviado'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Os ficheiros enviados exceden a regra upload_max_filesize que foi especificada no php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'A versión instalada de %s [%s] non é compatible coa versión requirida [%s]'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'O administrador web subscribiute para ser notificado por correo electrónico.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'O administrador web subscribiute para recibir notificacións por correo electrónico.'; +$lang['The whole page'] = 'A páxina completa'; +$lang['The whole set'] = 'Todo o conxunto'; +$lang['The original image quality must be a number between %d and %d'] = 'A calidade da foto orixinal ha de ser un número entre %d e %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'A altura máxima do orixinal debe ser un número entre %d e %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'A largura máxima do orixinal debe ser un número entre %d e %d'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'O nome da ligazón permanente debe ser un nome composto por a-z, A-Z, 0-9, "-", "_" ou "/". Non pode ser un número ou comezar por un número seguido por "-"'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Ó número de comentarios de usuarios por páxina debe estar entre 5 e 50.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'O centro de interese é a zona máis significativa da foto.'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Non se pode acceder ó ficheiro ou cartafol (pode non existir ou ter o acceso denegado)'; +$lang['The following tag was deleted'] = 'A seguinte etiqueta foi eliminada'; +$lang['The gallery URL is not valid.'] = 'O URL da galería non é válido.'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'O nome do grupo non pode conter " (vírgulas dobre) ou \' (vírgulas simples) ou estar baleiro.'; +$lang['The name of an album must not be empty'] = 'O nome dun álbum non pode estar baleiro'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'O nome de cartafoles e ficheiros debe conter só letras, números, "-", "_" ou "." '; +$lang['Tag "%s" was added'] = 'A etiqueta "%s" foi engadida'; +$lang['Tag selection'] = 'Selección de etiquetas'; +$lang['Tags %s merged into tag %s'] = 'Etiquetas %s combinadas dentro da etiqueta %s'; +$lang['Templates'] = 'Modelos'; +$lang['Templates configuration has been recorded.'] = 'A configuración dos modelos foi gardada.'; +$lang['The %d following tags were deleted'] = 'As seguintes %d etiquetas foron eliminadas'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'O engadido de exportación Piwigo permite crear álbums e exportar fotos.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'O engadido de publicación Piwigo permite exportar e sincronizar directamente fotos desde Lightroom á galería de fotos Piwigo. '; +$lang['The anomaly will be ignored until next application version'] = 'A anomalía será ignorada ata a próxima versión do aplicativo'; +$lang['Synchronize metadata'] = 'Sincronizar metadatos'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESTE ENGADIDO AGORA É PARTE DO NÚCLEO PIWIGO! DESINSTÁLAO AGORA!'; +$lang['Tag "%s" already exists'] = 'A etiqueta "%s" xa existe'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'A etiqueta "%s" agora é un duplicado de "%s"'; +$lang['Sum of rates'] = 'Suma das valoracións'; +$lang['Summary'] = 'Sumario'; +$lang['Support'] = 'Asistencia'; +$lang['Switch to clear or dark colors for administration'] = 'Mudar as cores entre claros e escuros na administración '; +$lang['Synchronize'] = 'Sincronizar'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Os subscritores só poden ser listados (se a opción está activada) cando hai novos elementos que notificar.'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Subscribir %s ó boletín informativo de anunciamentos Piwigo'; +$lang['Subscribe/unsubscribe users'] = 'Subscribir/Dessubscribir usuarios'; +$lang['Subscribed'] = 'Subscrito'; +$lang['Storage album'] = 'Álbum de almacenamento'; +$lang['Subscribe'] = 'Subscribirse'; +$lang['Subscribe %s'] = 'Subscribir %s'; +$lang['Subscribe to notification by mail'] = 'Subscribirse ás notificacións por correo electrónico'; +$lang['Start Upload'] = 'Comezar o envío'; +$lang['Start pLoader and add your photos.'] = 'Comezar pLoader e engadir túas fotos.'; +$lang['Statistics'] = 'Estatísticas'; +$lang['Status'] = 'Estado'; +$lang['Status of user "%s" updated'] = 'Actualizado o estado do usuario "%s"'; +$lang['Some upgrades are available for extensions.'] = 'Hai actualizacións dispoñibles para algunhas extensións.'; +$lang['Source tag'] = 'Orixe das etiquetas'; +$lang['Sharpen'] = 'Enfoque'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell é un organizador de fotos dixitais de código aberto que funciona en Linux. Este é o xestor de fotos predeterminado en Ubuntu e Fedora.'; +$lang['Show info'] = 'Amosar información'; +$lang['Show menubar'] = 'Amosar a barra de menú'; +$lang['Simulation'] = 'Simulación'; +$lang['Site manager'] = 'Xestión de sitios'; +$lang['Some themes and plugins may be not available yet.'] = 'Algúns temas e engadidos poden non estar dispoñibles aínda.'; +$lang['Environment'] = 'Ambiente'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'os visitantes precisan identificarse e ter os permisos apropiados para ver este álbum'; +$lang['width must be a number superior to'] = 'a largura ha de ser un número maior que'; +$lang['wrong filename'] = 'nome de ficheiro incorrecto'; +$lang['user_status_admin'] = 'Administrador'; +$lang['user_status_generic'] = 'Xenérico'; +$lang['user_status_guest'] = 'Invitado'; +$lang['user_status_normal'] = 'Usuario'; +$lang['user_status_webmaster'] = 'Administrador web'; +$lang['user "%s" added'] = 'engadido o usuario "%s"'; +$lang['update the database from files'] = 'actualizar a base de datos a partir dos ficheiros'; +$lang['synchronize files metadata with database photos informations'] = 'sincronizar as fotos da base de datos cos ficheiros de metadatos'; +$lang['synchronize files structure with database'] = 'sincronizar a estrutura de ficheiros coa base de datos'; +$lang['target'] = 'destino'; +$lang['test'] = 'proba'; +$lang['test this remote site'] = 'probar este sitio remoto'; +$lang['the forum'] = 'o foro'; +$lang['the wiki'] = 'a wiki'; +$lang['top left corner'] = 'esquina superior esquerda'; +$lang['top right corner'] = 'esquina superior dereita'; +$lang['total time'] = 'tempo total'; +$lang['unit mode'] = 'modo simple'; +$lang['unknown'] = 'descoñecido'; +$lang['unset'] = 'sen determinar'; +$lang['sub-albums'] = 'subálbums'; +$lang['singly represented'] = 'miniatura do álbum fixa'; +$lang['status'] = 'estado'; +$lang['simple visitors'] = 'visitantes únicos'; +$lang['show details'] = 'amosar detalles'; +$lang['ranks'] = 'filas'; +$lang['reduce to single existing albums'] = 'tratar só un álbum'; +$lang['set to'] = 'mudalo'; +$lang['pixels'] = 'píxeis'; +$lang['private'] = 'privado'; +$lang['public'] = 'público'; +$lang['randomly represented'] = 'miniatura do álbum ó chou'; +$lang['registered users'] = 'usuarios rexistrados'; +$lang['registration date'] = 'data de rexistro'; +$lang['remove author'] = 'eliminar autor'; +$lang['remove creation date'] = 'eliminar data de creación'; +$lang['remove tags'] = 'eliminar etiquetas'; +$lang['remove this filter'] = 'eliminar este filtro'; +$lang['remove title'] = 'eliminar título'; +$lang['selection'] = 'selección'; +$lang['photos deleted from the database'] = 'fotos eliminadas da base de datos'; +$lang['photos informations synchronized with files metadata'] = 'información de fotos sincronizada cos ficheiros de metadatos'; +$lang['photos per page'] = 'fotos por páxina'; +$lang['photos updated in the database'] = 'fotos actualizadas na base de datos'; +$lang['photos candidates for metadata synchronization'] = 'fotos candidatas para a sincronización de metadatos'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader significa Piwigo Uploader. No teu computador, pLoader prepara túas fotos e transfíreas a túa galería de fotos Piwigo.'; +$lang['pending validation'] = 'pendente de validación'; +$lang['photos added in the database'] = 'fotos engadidas na base de datos'; +$lang['other'] = 'outro'; +$lang['only perform a simulation (no change in database will be made)'] = 'So realizar unha simulación (non fará ningún cambio na base de datos)'; +$lang['overrides existing values with empty ones'] = 'sobrescribe os valores existentes por outros baleiros'; +$lang['on'] = 'en'; +$lang['modified'] = 'modificado'; +$lang['new'] = 'novo'; +$lang['no write access'] = 'sen permiso de escritura'; +$lang['none'] = 'ningún'; +$lang['nothing'] = 'nada'; +$lang['number of miniaturized photos'] = 'número de miniaturas creadas'; +$lang['on the %d selected photos'] = 'nas %d fotos seleccionadas'; +$lang['only directories'] = 'só cartafoles'; +$lang['middle'] = 'medio'; +$lang['manage album photos'] = 'xestionar álbum de fotos'; +$lang['manage sub-albums'] = 'xestionar subálbums'; +$lang['manual order'] = 'orde manual'; +$lang['leave'] = 'deixar'; +$lang['jump to album'] = 'saltar ó álbum'; +$lang['jump to photo'] = 'saltar á foto'; +$lang['include child albums'] = 'incluír os subálbums'; +$lang['include photos with lower privacy level'] = 'incluír fotos cun nivel de privacidade máis baixo'; +$lang['group "%s" added'] = 'engadiuse o grupo %s'; +$lang['group "%s" deleted'] = 'eliminouse o grupo %s'; +$lang['group "%s" updated'] = 'actualizouse o grupo %s'; +$lang['guest'] = 'invitado'; +$lang['height must be a number superior to'] = 'a altura debe ser un número maior que'; +$lang['hide details'] = 'agochar detalles'; +$lang['high'] = 'alto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto é o xestor de fotos predeterminado de MacOSX. O engadido de exportación Piwigo crea novos ábums e exporta túas fotos directamente de iPhoto á túa galería de fotos Piwigo.'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'As dimensións da imaxe reduciranse a %dx%d pixeis.'; +$lang['(filtered from %s total users)'] = '(filtrado dun total de %s usuarios)'; +$lang['All %d users are selected'] = 'Seleccionados %d usuarios (todos)'; +$lang['No matching user found'] = 'Non se atopou ningún usuario que coincida'; +$lang['No user selected of %d users'] = 'Non está seleccinado nugún dos %d usuarios'; +$lang['Showing %s to %s of %s users'] = 'Amosando de %s a %s de %s usuarios'; +$lang['No user selected, no action possible.'] = 'Sen usuario seleccionado non hai acción posible.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Mudar tamaño despois de enviar está desactivado debido ó uso da biblioteca gráfica GD.'; +$lang['Show %s users'] = 'Amosar %s usuarios'; +$lang['Last visit on %s, %s.'] = 'Última visita o %s, %s.'; +$lang['Registered on %s, %s.'] = 'Rexistrado o %s, %s.'; +$lang['User %s added'] = 'Engadiuse o usuario %s'; +$lang['User %s updated'] = 'Actualizouse o usuario %s'; +$lang['Users modified'] = 'Usuarios modificados'; +$lang['on the %d selected users'] = 'dos %d usuarios seleccionados'; +$lang['%d of %d users selected'] = '%d de %d usuarios seleccionados'; +$lang['Basic settings'] = 'Opcións básicas'; +$lang['Change password'] = 'Cambiar contrasinal'; +$lang['Change username'] = 'Cambiar nome de usuario'; +$lang['General'] = 'Xeral'; +$lang['Loading...'] = 'Cargando...'; +$lang['Mail theme'] = 'Tema do correo'; +$lang['Password updated'] = 'Contrasinal actualizado'; +$lang['Select at least one tag'] = 'Selecciona polo menos unha etiqueta'; +$lang['Update user'] = 'Actualizar usuario'; +$lang['Close user details'] = 'Pechar detalles de usuario'; +$lang['Open user details'] = 'Abrir detalles de usuario'; +$lang['close'] = 'pechar'; +?> \ No newline at end of file diff --git a/sources/language/gl_ES/common.lang.php b/sources/language/gl_ES/common.lang.php new file mode 100644 index 0000000..ec52d0a --- /dev/null +++ b/sources/language/gl_ES/common.lang.php @@ -0,0 +1,420 @@ + \ No newline at end of file diff --git a/sources/language/gl_ES/gl_ES.jpg b/sources/language/gl_ES/gl_ES.jpg new file mode 100644 index 0000000..d7a4ab8 Binary files /dev/null and b/sources/language/gl_ES/gl_ES.jpg differ diff --git a/sources/language/gl_ES/help/cat_modify.html b/sources/language/gl_ES/help/cat_modify.html new file mode 100755 index 0000000..d8f25ae --- /dev/null +++ b/sources/language/gl_ES/help/cat_modify.html @@ -0,0 +1,124 @@ +

                  Modificar álbum

                  + +

                  Información

                  + +
                    + +
                  • nome: renomear o álbum (un renomeado virtutal no caso de álbum físico).
                  • + +
                  • descrición: texto curto que da unha idea xeral do contido, +este texto amosarase na parte de abaixo da páxina das miniaturas.
                  • + +
                  + +

                  Mover

                  + +

                  Se o ábum é virtual, podes movelo. Mover un álbum significa mudar o álbum pai.

                  + +

                  Opcións

                  + +
                    + +
                  • Tipo de acceso: xestión de permisos. Se fas un álbum privado +tódolos álbums fillos convertense en privados. Se fas un álbum público, +tódolos álbums fillos convertense en públicos.
                  • + +
                  • Bloquear: o álbum e seus subálbums desactivaranse de xeito +temporal para o mantemento.
                  • + +
                  • Comentarios: autoriza ós usuarios a comentar fotos de este álbum.
                  • + +
                  + +

                  Tamén podes xestionar esta opción nas "Propiedades" + (pantallas Comentarios, Bloquear, +Público/Privado, Representante available from Administración » Álbums » Propiedades).

                  + +

                  Orde de selección

                  + +

                  Empregar a orde de selección das imaxes de xeito predeterminado.

                  + +

                  Indicar se tamén se aplicará a orde de selección ós subálbums.

                  + +

                  Seleccionar un criterio de ordenación a empregar neste álbum.

                  +
                    +
                  • Data de creacón: data na que se fixo a foto
                  • +
                  • Data de envío: data da sincronización
                  • +
                  • Valoración média (*): media da valoración podendo ser mudada pola valoración dos visitantes
                  • +
                  • Máis vista (*): as actuais visitas poden mudar a orde da máis visitada
                  • +
                  • Nome do ficheiro: Identificador interno (álbums mais recentes poden ter un identificador máis alto que os anteriores.
                  • + +
                  +

                  (*)Aviso: asegúrate de probar estas ordes de selección por ti mesmo xa que poden dar resultados inesperados.

                  + + +

                  Representante

                  + +

                  O representante dun álbum é a miniatura amosada na páxina principal (category.php) para representar o álbum cando este contén só subálbums e non ten ningunha foto de xeito directo (igual que o álbum raíz).

                  + +

                  Hai 4 xeitos de escoller o representante dun álbum:

                  + +
                    + +
                  • Páxina da foto: unha das accións dos botóns é a de poder establecer a actual foto como a representante do álbum amosado. Este botón só esta dispoñible para os administradores.
                  • + +
                  • Modificar a información da imaxe na administración. +Pode accederse a esta pantalla desde picture.php ou xestión por lotes no modo unitario. Para máis detalles ver a axuda desta pantalla.
                  • + +
                  • Administración » Álbums » Propiedades, + Representante. Para máis detalles ver a axuda desta pantalla.
                  • + +
                  • Modificar álbum (a presente pantalla).
                  • + +
                  + +

                  A elección do representante depende do parámetro de configuración +allow_random_representative (ver include/config_default.inc.php).

                  + +

                  De xeito predeterminado (allow_random_representative está como falso), +cada categoría que contén polo menos un elemento é representada por un elemento fixo. +Unha vez fixado (na creación do álbum), o representante só muda cando un administrador o pide. +Se o representante non é axeitado pode solicitarse atopar un novo representante ó chou.

                  + +

                  Se o parámetro de configuración allow_random_representative está establecido +como true, as fotos do álbum poden non ter un representante fixo. +Simplemente usa o botón Eliminar o representante.

                  + +

                  Se o álbum contén só subálbums e ningunha foto, pode ser representado a pesar de todo +por calquera elemento grazas á pantalla Modificar información sobre a foto. +A única opción na actual pantalla é o botón Eliminar o representante.

                  + +

                  Ligar tódolos elementos do álbum a un novo álbum

                  + +
                    + +
                  • Nome do álbum virtual: nome do novo álbum a crear, +tódalas fotos do actual álbum serán ligadas ó novo álbum.
                  • + +
                  • Álbum pai: onde ten que estar o novo álbum, +deixar baleiro para crear na raíz.
                  • + +
                  + +

                  Ligar tódolos elementos do álbum a álbums existentes

                  + +
                    + +
                  • Álbums: escolle o álbum de destino.
                  • + +
                  + +

                  Enviar un correo informativo ós membros do grupo

                  + +
                    + +
                  • Grupo: grupo de destinatarios
                  • + +
                  • Contido do correo: texto libre para enviarlles.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/cat_move.html b/sources/language/gl_ES/help/cat_move.html new file mode 100755 index 0000000..7ce984c --- /dev/null +++ b/sources/language/gl_ES/help/cat_move.html @@ -0,0 +1,14 @@ +

                  Movendo álbums virtuais

                  + +

                  Só os álbums virtuais poden ter un novo álbum pai.

                  + +

                  Álbums virtuais a mover

                  + +

                  Selecciona un ou varios álbums virtuais que queiras mover. +Se a lista está baleira, significa que aínda non creaches ningún.

                  + +

                  Novo álbum pai

                  + +

                  Selecciona o novo álbum pai (virtual ou físico). +Se non seleccionas ningún álbum pai, o álbum virtual seleccionado moverase á raíz. +Un álbum non pode ser movido dentro de si mesmo ou a outro que sexa seu fillo.

                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/cat_options.html b/sources/language/gl_ES/help/cat_options.html new file mode 100755 index 0000000..3f298ea --- /dev/null +++ b/sources/language/gl_ES/help/cat_options.html @@ -0,0 +1,26 @@ +

                  Opcións de álbum

                  + +

                  Opcións de xestión para varios álbums á vez.

                  + +
                  + +
                  Comentarios
                  +
                  Unha foto pode recibir comentarios dos seus visitantes se +pertence a un álbum cos comentarios activados.
                  + +
                  Bloquear
                  +
                  Os álbums bloqueados son desactivados para mantemento. +Só os administradores poden velos.
                  + +
                  Público/Privado
                  +
                  Unha vez que se converte un álbum en privado, +hai que darlle dereitos de acceso a usuarios e grupos
                  + +
                  Representante
                  +
                  Esta opción está dispoñible cando se establece a opción de configuración +allow_random_representative (ver include/config_defaults.inc.php) para +true. Cada álbum pode ser representado por unha foto aleatoria ou +por unha foto escollida como único representante.
                  + +
                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/cat_perm.html b/sources/language/gl_ES/help/cat_perm.html new file mode 100755 index 0000000..9c18fa4 --- /dev/null +++ b/sources/language/gl_ES/help/cat_perm.html @@ -0,0 +1,15 @@ +

                  Modificar permisos do álbum

                  + +

                  Esta pantalla só está dispoñible para os álbums privados. +Aquí pode seleccionar usuarios e grupos autorizados para un álbum.

                  + +

                  Grupos

                  + +

                  Podes denegar ou conceder o acceso a grupos para o actual álbum. +Ó modificar autorizacións a grupos, os usuarios incluídos neses +grupos terán denegado ou concedido o acceso para o álbum.

                  + +

                  Usuarios

                  + +

                  Podes denegar ou conceder o acceso a usuarios individuais. +Os usuarios que teñen acceso a traveso do grupo pode denegárselle o acceso por excepción.

                  diff --git a/sources/language/gl_ES/help/configuration.html b/sources/language/gl_ES/help/configuration.html new file mode 100755 index 0000000..886832d --- /dev/null +++ b/sources/language/gl_ES/help/configuration.html @@ -0,0 +1,96 @@ +

                  Configuración

                  + +

                  Esta pantalla permite ó administrador realizar unha configuración básica da galería. De feito, só se amosan as opcións básicas da configuración as cales deben ser suficientes para a gran maioría dos administradores. Se queres ver os outros numerosos (e avanzados) parámetros de configuración, lee o ficheiro de configuración predeterminado include/config_default.inc.php.

                  + +

                  Este pantalla está dividida en diferentes seccións, agrupando os parámetros de configuración por tema.

                  + + +

                  Principal

                  +
                    +
                  • Título da galería: usado no alimentador RSS e por notificacións de correo electrónico.
                  • + +
                  • Cartel da páxina: amosado na parte de arriba de cada unha das páxinas públicas.
                  • + +
                  • URL da galería: usado para as semente RSS.
                  • + +
                  • Bloqueo da galería: bloquea a galería por completo para o mantemento. Só poderán acceder á galería para o mantemento os usuarios administradores.
                  • + +
                  • Valoración: activase a funcionalidade de valoración.
                  • + +
                  • Valoración por invitados: os usuarios aínda non rexistrados poden valorar as imaxes.
                  • + +
                  • Permitir o rexistro ós usuarios: calquera pode rexistrarse.
                  • + +
                  • Enderezo de correo obrigatorio para tódolos usuarios: o enderezo de correo electrónico será comprobado no rexistro ou actualización do perfil, exceptuase cando a acción é realizada por un administrador.
                  • + +
                  • Notificar mediante correo ós administradores cando se rexistra un novo usuario: notificarase ós administradores cada vez que produza un rexistro.
                  • + +
                  • Orde predeterminado das fotos: podes establecer unha orde predeterminada cos menús despregables.
                  • + +
                  + +

                  Histórico

                  + +

                  Visitas nas páxinas category.php e picture.php hase gardar na táboa history.

                  + +

                  Amosaranse as visitas en Administration » Tools » History.

                  + +
                    +
                  • Gardar as páxinas visitadas polos invitados: lembraranse as páxinas visitadas polos usuarios sen identificar.
                  • + +
                  • Gardar as páxinas visitadas polos usuarios: lembraranse as páxinas visitadas polos usuarios rexistrados.
                  • + +
                  • Gardar páxinas visitadas polos administradores: lembraranse as páxinas visitadas polos administradores.
                  • + +
                  + +

                  Comentarios

                  +
                    + +
                  • Comentarios para todos: mesmo os invitados poden enviar comentarios.
                  • + +
                  • Número de comentarios por páxina.
                  • + +
                  • Validación: un administrador debe validar os comentarios dos usuarios antes de que poidan ser visibles no sitio. A validación dos comentarios dos usuarios faise na pantalla Administración » Ferramentas » Comentarios pendentes.
                  • + +
                  • Correo electrónico ós administradores cando se insire un comentario válido: envía un correo electrónico ós administradores cando un usuario insire un comentario e este comentario é validado.
                  • + +
                  • Correo electrónico ós administradores cando un comentario require de validación: envía un correo electrónico ós administradores cando un usuario insire un comentario que require a validación dun administrador. +A validación dos comentarios dos usuarios faise na pantalla Administración » Ferramentas » Comentarios pendentes.
                  • + +
                  + +

                  Vista predeterminada

                  + +

                  Aquí podes mudar as opcións da vista usada polos invitados, usuario predeterminado que non se conectou. Unha vez que se conecte, estas opcións serán substituídas polas propias opcións do usuario (modificable no perfil).

                  + +

                  É posible mudar as opcións da vista para todos os usuarios existentes na pantalla Administración » +Usuarios » Xestión onde podes seleccionar unha lista de usuarios.

                  + +
                    + +
                  • Idioma: só se aplica as etiquetas de Piwigo. Non se localizan os nomes dos álbums nin os campos das descricións.
                  • + +
                  • Número de fotos por liña
                  • + +
                  • Número de fotos por páxina
                  • + +
                  • Tema da interface
                  • + +
                  • Período recente: En dias. Período durante o cal unha foto é amosada como nova. Debe ser superior a un día.
                  • + +
                  • Expande tódolos álbums: de xeito predeterminado expande tódolos álbums no menú Aviso: esta opción pode consumir os recursos de xeito intensivo e xerar un enorme menú se a árbore ten moitos álbums.
                  • + +
                  • Amosar o número de comentarios: amosa o número de comentarios de cada foto na páxina de miniaturas. Isto produce un uso intensivo de recursos.
                  • + +
                  • Amosar a conta de accesos: amosa o número de veces que se ollou unha foto como miniatura na páxina de miniaturas. Só cando o parámetro de configuración avanzada é:
                    + $conf['show_nb_hits'] = true;
                    + Nota: por defecto é false.
                  • + +
                  • Largura máxima das fotos: máxima largura a amosar. As fotos con máis largura que o establecido serán redimensionadas na pantalla. Mellor que escoller esta opción, podes considerar a modificación da largura das fotos, o que sería unha mellor práctica.
                  • + +
                  • Altura máxima das fotos: o mesmo que para a configuración da largura máxima.
                  • + +
                  diff --git a/sources/language/gl_ES/help/extend_for_templates.html b/sources/language/gl_ES/help/extend_for_templates.html new file mode 100755 index 0000000..3c310b9 --- /dev/null +++ b/sources/language/gl_ES/help/extend_for_templates.html @@ -0,0 +1,51 @@ +

                  Configuración para estender o modelo

                  + +

                  Sobre

                  +

                  A galería Piwigo pódese personalizar substituíndo os ficheiros do modelo con versións personalizadas. Por exemplo, a cabeceira predeterminada do modelo(header.tpl) pódese substituír por un modelo de cabeceira personalizado (my-header.tpl). Despois de enviar os cambios á base de datos a galería amosará a cabedeira personalizada no canto da orixinal.
                  +As extensións dos modelos son un xeito poderoso de crear temas personalizados tanto para usuarios noveis como os avanzados. Empregado xunto co editor de ficheiros locais podes crear teus propios temas fillo.

                  + +

                  Modeloo orixinal

                  +

                  O modelo contén un número de ficheiros modelo que compoñen as páxinas da galería. Estes son os modelos orixinais.

                  + +

                  Palabra clave de URL opcional

                  +

                  Estas son palabras atopadas no URL da galería despois do módulo nome. Esta poden ser ligazóns permanentes activas (Ver a documentación das ligazóns permanentes para máis información). Aviso: se o mesmo modelo orixinal e mesma palabra clave son empregados en máis dun modelo personalizado, só estará activo o último.

                  + +

                  Tema ligado

                  +

                  O tema ligado é o tema a partir do cal os ficheiros de modelo están sendo substituídos.

                  + + +

                  Os modelos orixinais son os ficheiros de modelo fornecidos con cada tema. Estes están gardados en /themes/default/template (ou themes//template). Estes ficheiros de modelo non deberían ser modificados xa que as alteracións perderánse cando se actualice o tema.
                  +A compatibilidade de modelos orixinais inclúe:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl e thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl e footer.tpl
                  • +
                  • picture_content.tpl e picture.tpl
                  • + +
                  • profile.tpl e profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl e search_rules.tpl
                  • +
                  • nbm.tpl e notification.tpl
                  • +
                  • identification.tpl e register.tpl
                  • +
                  • redirect.tpl
                  • +
                  +

                  Activando modelos personalizados

                  +

                  Os modelos personalizados deben gardarse no cartafol ou subcartafoles en template-extension. Por exemplo, /template-extension/my-default/header.tpl (ou /template-extension//header.tpl) os ficheiros de modelo poden ter ter calquera nome con unha extenxión .tpl. Os ficheiros de modelo nos subcartafoles aparecen na pantalla de configuración do tema como temas dispoñibles.

                  +

                  Activando modelos personalizados

                  +

                  Seleccionar o modelo orixinal a ssubtituír. Opcionalmente escollese unha palabra clave de URL para asegurarse que só se amosa o tema personalizado nas páxinas coa palabra clave. Escoller un tema ligado e os cambios serán efectivos sobre ese tema. Enviar os cambios á base de datos.

                  +

                  Desactivando modelos personalizados

                  +

                  Desmarcar o modelo orixinal e enviar os cambios á base de dartos.
                  +Borrar os ficheiros do tema personalizado do cartafol template-extension.

                  + + +

                  Avisos

                  +
                    +
                  • O modelo orixinal debe ser o orixinal de non selo pode ter resultados impredecibles.
                  • +
                  • Se o mesmo modelo orixinal e a mesma palabra clave de URL é usada en máis dun modelo personalizado, só último será o activo.
                  • +
                  • As mostras de ficheiros de modelo son distribuidas co único propósito de server para probas. Non modificarlos. Crea teus própios modelos ou copia modelos de tema existentes dentro de /template-extension//
                  • +
                  • Cando se borra o modelo personalizado, é reactivado inmediatamente o ficheiro do modelo orixinal.
                  • +
                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/group_list.html b/sources/language/gl_ES/help/group_list.html new file mode 100644 index 0000000..f3c2899 --- /dev/null +++ b/sources/language/gl_ES/help/group_list.html @@ -0,0 +1,22 @@ +

                  Lista de grupos

                  + +

                  Este é o lugar onde xestionas os grupos.

                  + +

                  Engadir un grupo

                  + +

                  O administrador pode engadir grupos.

                  + +

                  Lista de grupos

                  + +

                  Para cada grupo poden aplicarse as seguintes accións:

                  + + +
                    +
                  • ir á xestión de usuarios (Administración » Usuarios » Xestión).
                  • +
                  • ir á pantalla de xestión de permisos para conceder ou denegar acceso a albumes privados.
                  • +
                  • borrar o grupo (require confirmación).
                  • +
                  • alternar o estado "predeterminado" (require confirmación).
                  • +
                  + +

                  Grupos predeterminados

                  +

                  Os grupos predeterminados son grupos que se asocian automaticamente a cada novo usuario no momento do rexistro ou creación por parte dun administrador.

                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/help_add_photos.html b/sources/language/gl_ES/help/help_add_photos.html new file mode 100644 index 0000000..7d9f19e --- /dev/null +++ b/sources/language/gl_ES/help/help_add_photos.html @@ -0,0 +1,29 @@ +

                  Varios xeitos de engadir túas fotos á túa galería:

                  + +
                    +
                  • Envío directo dentro so teu navegador é o xeito + máis simple e inmediato. Depende dos recursos do teu navegador + e do teu servidor web. Para grandes cantidades de fotos ou no caso de atopar problemas, + agardanpor ti outros métodos!
                  • +
                  + + + +
                    +
                  • pLoader é unha aplicación de escritorio, para ser instalada no teu + computador. Arrastra & solta fotos dentro da xanela do pLoader, preme en + "Enviar para o Piwigo" e deixa ó pLoader facer o traballo. Podes atopar outros + aplicativos de escritorio como WinToPiwigo ou o engadido de exportación a Piwigo do Digikam.
                  • +
                  + + + +
                  +
                    +
                  • Transferencia FTP este é o camiño máis recomendado + para engadir unha gran colección de fotos con un número mínimo de operacións. Sigue a guía para preparar as fotos. + O método FTP permite un controlar con precisión a organización física das fotos no teu servidor.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/help_groups.html b/sources/language/gl_ES/help/help_groups.html new file mode 100644 index 0000000..0992d53 --- /dev/null +++ b/sources/language/gl_ES/help/help_groups.html @@ -0,0 +1,10 @@ +

                  Os grupos de usuarios son un xeito cómodo de establecer permisos para unha lista de usuarios.

                  + +

                  Crea grupos en Administración » Usuarios +» Grupos e asocia usuarios a estes grupos +en Administración » Usuarios » +Xestión.

                  + +

                  Un usuario pode pertencer a varios grupos. A autorización ten preferencia sobre +a prohibición: se o usuario "Xan" está nos grupos "familia" e "amigos", e se só o +grupo "familia" pode ver o "Álbum de nadal" daquela "Xan" tamén poderá ver o "Álbum de nadal".

                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/help_misc.html b/sources/language/gl_ES/help/help_misc.html new file mode 100644 index 0000000..bfa5e8f --- /dev/null +++ b/sources/language/gl_ES/help/help_misc.html @@ -0,0 +1,11 @@ +

                  Así que teñas creada a túa galería podes configurala para teus visitantes +

                    +
                  • A vista predeterminada desexada en + Administración » Configuración » Opcións lapela + Opcións dos invitados.
                  • +
                  • O tema predeterminado en Administración » Configuración » Temas.
                  • +
                  • O idioma predeterminado en Administración » Configuración » Idiomas.
                  • +
                  + De xeito predeterminado, cada novo usuario herdará esas propiedades tralo rexistro. +

                  +

                  Se tes algunha cuestión, a comunidade Piwigo darache a benvida no seu foro.

                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/help_permissions.html b/sources/language/gl_ES/help/help_permissions.html new file mode 100644 index 0000000..f4a630e --- /dev/null +++ b/sources/language/gl_ES/help/help_permissions.html @@ -0,0 +1,59 @@ + +
                  +Permisos das fotos + +

                  Cada foto permite establecerlle un nivel de privacidade (un bloqueo). Cada usuario tamén ten seu nivel de privacidade (unha chave). Hai 5 niveis de privacidade:

                  +
                    +
                  1. Ningunha
                  2. +
                  3. Contactos
                  4. +
                  5. Amigos(a cal é maior que a dun contacto)
                  6. +
                  7. Familia(a cal é maior que a dun amigo)
                  8. +
                  9. Administradores(a cal é maior que calquera outro nivel)
                  10. +
                  + +

                  Os niveis altos teñen permisos sobre os niveis máis baixos. Para un determinado usuario, a maior nivel de privacidade, máis fotos poderá ver.

                  + +

                  Por exemplo, se a foto "boda_pedro-0024.jpg" ten o nivel de privacidade "Familia", entón:

                  +
                    +
                  • Pedro(que é un "Administrador") verá a foto porque os "Administradores" poden ver tódalas fotos.
                  • +
                  • Xulia(que é membro de "Familia") tamén verá a foto.
                  • +
                  • Maruxa(que só é membro de "Amigos") non poderá ver a foto.
                  • +
                  + +

                  Un usuario que non ten permiso para ver o contido dun álbum non poderá velom nin sequera o seu título. Ás etiquetas aplícaselles o mesmo principio.

                  + +

                  Podes establecer o nivel de privacidade dun usuario na pantalla Administración » Usuarios » Xestión.

                  + +
                  + +
                  +Permisos dos álbums + +

                  Se o nivel de privacidade non se axusta ás túas necesidades, podes xestionar os permisos nos álbums para +un usuario ou grupo. Podes xestionar permisos en fotos e álbums á vez sen problema.

                  + +

                  Podes prohibir o acceso ós álbums. Para elo tes que mudar o tipo de acceso ó álbum a "privado" desde a xestión dos permisos.

                  + +

                  Podes establecer un álbum como privado modificando un único álbum +(Administración » Álbums » Xestión +» modificar) ou establecendo as opcións para toda a árbore de álbums +(Administración » Álbums » +Propiedades » Público / Privado).

                  + +

                  unha vez que o álbum é privado, podes xestionar os permisos para grupos e +usuarios desde 3 pantallas:

                  + +
                    + +
                  • Administración » Usuarios » Xestión » + Modificar » Nivel de privacidade
                  • + +
                  • Administración » Usuarios » Grupos » + Modificar » Grupos
                  • + +
                  • Administración » Álbums » Xestión » + Modificar » Permisos
                  • + +
                  +
                  + diff --git a/sources/language/gl_ES/help/help_virtual_links.html b/sources/language/gl_ES/help/help_virtual_links.html new file mode 100644 index 0000000..3bd110f --- /dev/null +++ b/sources/language/gl_ES/help/help_virtual_links.html @@ -0,0 +1,7 @@ +

                  As fotos sitúanse no álbum correspondente ó cartafol que as conteñen.

                  + +

                  Tamén podes amosar unha foto en varios álbums, sen duplicar o ficheiro no teu servidor. + Asocia a foto con calquera outro álbum desde a pantalla de edición da foto (que calquera administrador pode acceder a partir da páxina da foto ó lado da galería).

                  + +

                  Os álbums virtuais baséanse neste concepto: non teñen un correspondente cartafol. Crea álbums virtuais desde Administración » Álbums » +Xestión.

                  \ No newline at end of file diff --git a/sources/language/gl_ES/help/history.html b/sources/language/gl_ES/help/history.html new file mode 100644 index 0000000..63a67e8 --- /dev/null +++ b/sources/language/gl_ES/help/history.html @@ -0,0 +1,24 @@ +

                  Histórico

                  + +

                  Nestas pantallas, podes supervisar o histórico de visitas á túa galería segundo as opcións escollidas en: Administración » Configuración » Opcións » Xeral

                  + +

                  Estatísticas

                  +
                    +

                    Se escolliches rexistrar as páxinas visitadas (index.php e picture.php), +podes supervisalas desde esta lapela.

                    +
                  • Estatísticas globais: visitas por ano.
                  • +
                  • Estatísticas anuais: visitas por mes do ano seleccionado.
                  • +
                  • Estatísticas mensuais: visitas or día do mes seleccionado.
                  • +
                  • Estatísticas diarias: visitas por hora do día seleccionado.
                  • +
                  + +

                  Buscar

                  +
                    +

                    Se escolliches rexistrar as páxinas visitadas (index.php e +picture.php), podes examinar os detalles desde esta lapela coa axuda de diferentes filtros.

                    +
                  • Filtrar por data: escolle o rango de datas a buscar seleccionando as datas de comezo e fin.
                  • +
                  • Filtrar por tipo de elemento: selecciona o tipo de elemento para as estatísticas sobre ese elemento.
                  • +
                  • Filtrar por usuario: selecciona o usuario para as estatísticas sobre ese usuario.
                  • +
                  • Filtrar por identificador de imaxe: selecciona o identificador da imaxe para as estatísticas sobre esa imaxe.
                  • +
                  • Filtrar por nome do título: selecciona o nome do ficheiro para as estatísticas sobre ese ficheiro.
                  • +
                  \ No newline at end of file diff --git a/sources/language/gl_ES/install.lang.php b/sources/language/gl_ES/install.lang.php new file mode 100755 index 0000000..1179cad --- /dev/null +++ b/sources/language/gl_ES/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Precisas axuda? Pregunta as túas dúbidas no panel de mensaxes Piwigo. '; +$lang['Keep it confidential, it enables you to access administration panel'] = 'Mantéñaa ben gardada, é ela a que lle permite acceder ó panel da administración'; +$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Será amosado ós visitantes. É preciso para a administración do sito web'; +$lang['Just another Piwigo gallery'] = 'Só outra galería Piwigo'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Parece que o teu servidor web ten a versión PHP %s.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Non dubides en escribir nos nosos foros para calquera dúbida: %s'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Unha solución alternativa será copiar o texto da caixa de abaixo e pegalo no ficheiro "local/config/database.inc.php" (Atención: database.inc.php só deberá conter o texto que está na caixa, non insiras ningunha liña nova ou espazo en branco)'; +$lang['Basic configuration'] = 'Configuración básica'; +$lang['Can\'t connect to server'] = 'Non foi posible conectar co servidor'; +$lang['Congratulations, Piwigo installation is completed'] = 'Grazas, a instalación de Piwigo completouse'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'A conexión co servidor foi satisfactoria mentres que a conexión coa base de datos non foi posible.'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'A creación do ficheiro de configuración local/config/database.inc.php fallou.'; +$lang['Database configuration'] = 'Configuración da base de datos'; +$lang['Database name'] = 'Nome da base de datos'; +$lang['Database table prefix'] = 'Prefixo das táboas na base de datos'; +$lang['Default gallery language'] = 'Idioma predeterminado da galería'; +$lang['Download the config file'] = 'Descargar o ficheiro de configuración'; +$lang['Hope to see you back soon.'] = 'Esperamos verte de volta en breve.'; +$lang['Host'] = 'Servidor'; +$lang['Installation'] = 'Instalación'; +$lang['Admin configuration'] = 'Configuración da adminstración'; +$lang['localhost or other, supplied by your host provider'] = 'aloxamento local ou outro, fornecido polo seu aloxador'; +?> \ No newline at end of file diff --git a/sources/language/gl_ES/iso.txt b/sources/language/gl_ES/iso.txt new file mode 100644 index 0000000..701048f --- /dev/null +++ b/sources/language/gl_ES/iso.txt @@ -0,0 +1 @@ +Galego [ES] \ No newline at end of file diff --git a/sources/language/gl_ES/upgrade.lang.php b/sources/language/gl_ES/upgrade.lang.php new file mode 100755 index 0000000..5e59031 --- /dev/null +++ b/sources/language/gl_ES/upgrade.lang.php @@ -0,0 +1,40 @@ +release %s (or equivalent).'] = 'Esta páxina proponche pór ó día a base de datos da túa antiga versión de Piwigo cara a nova versión. O asistente de actualización detectou a túa versión como a %s (ou equivalente).'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Executa unha comprobación de mantemento en [Administración>Ferramentas>Mantemento] se atopas algún problema.'; +$lang['SQL queries'] = 'Consultas SQL'; +$lang['Statistics'] = 'Estatísticas'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Da anterior configuración só se salvaron os prefixos das miniaturas e o correo do administrador web'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Só o administrador pode efectuar actualizacións: inicia sesión no formulario de abaixo.'; +$lang['In %s, before ?>, insert:'] = 'En %s, antes de ?>, insira:'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaución, os seguintes engadidos foron desactivados. Tes que comprobar se teñen actualización antes de reactivalos:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Por precaución, os seguintes temas foron desactivados. Tes que comprobar se teñen actualización antes de reactivalos:'; +$lang['All sub-albums of private albums become private'] = 'Tódolos sub-álbums de álbums privados tórnanse privados'; +?> \ No newline at end of file diff --git a/sources/language/he_IL/about.html b/sources/language/he_IL/about.html new file mode 100644 index 0000000..2f250b4 --- /dev/null +++ b/sources/language/he_IL/about.html @@ -0,0 +1,13 @@ +

                  גלריית תמונות זו מבוססת על Piwigo.

                  + +

                  Piwigo זה מערכת גלריית תמונות מוכנה לאתרים, נבנתה על ידי קהילת מפתחים ומשתמשים פעילה. ניתן להתאים אישית את piwigo בקלות, והדובדבן שבקצפת piwigo בחינם בקוד פתוח.

                  + +

                  בקר באתר של Piwigo

                  + +

                  תורגם לעברית על ידי (לפי סדר הא"ב): + +

                  + ....תודו להם

                  \ No newline at end of file diff --git a/sources/language/he_IL/admin.lang.php b/sources/language/he_IL/admin.lang.php new file mode 100644 index 0000000..7000a67 --- /dev/null +++ b/sources/language/he_IL/admin.lang.php @@ -0,0 +1,978 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'PLoader יטען Piwigo Uploader . מהמחשב שלך, pLoader יכין את התמונות שלך ןיעביר אותם אל גלרית ה Piwigo שלך'; +$lang['Guest Settings'] = 'הגדרות אורחים'; +$lang['Main Page'] = 'דף ראשי'; +$lang['Photo Page'] = 'מקור תמונה'; +$lang['Activate Navigation Bar'] = 'להפעיל את סרגל הניווט'; +$lang['Activate Navigation Thumbnails'] = 'הפעל ממוזערות ניווט'; +$lang['Activate icon "%s"'] = 'להפעיל את סמל"%s "'; +$lang['Photo Properties'] = 'מאפייני תמונה'; +$lang['Allow user customization'] = 'לאפשר התאמה אישית למשתמש'; +$lang['Languages'] = 'שפות'; +$lang['Installed Languages'] = 'מהשפות המותקנות'; +$lang['Add New Language'] = 'הוספת שפה חדשה'; +$lang['Language has been successfully installed'] = 'שפה הותקן בהצלחה'; +$lang['Select:'] = 'בחר:'; +$lang['None'] = 'אף אחד'; +$lang['Invert'] = 'מרחב'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'אי אפשר לנטרל את הנושא הזה, אתה צריך לפחות נושא אחד.'; +$lang['Webmaster status is required.'] = 'מצב Webmaster נדרשת.'; +$lang['Bound Theme'] = 'נושאים Bound'; +$lang['Allow rating'] = 'אפשר דירוג'; +$lang['Select at least one comment'] = 'בחר אחת לפחות להגיב'; +$lang['Active Plugins'] = 'תוספים פעילים'; +$lang['Inactive Plugins'] = 'תוספים פעילים'; +$lang['Missing Plugins'] = 'תוספים חסרים'; +$lang['Uninstalled Plugins'] = 'תוספים הוסר'; +$lang['By %s'] = 'הועלה ע"י "%s"'; +$lang['Visit plugin site'] = 'בקר תוסף האתר'; +$lang['Active Languages'] = 'שפות פעילים'; +$lang['Delete this language'] = 'מחק את השפה הזאת'; +$lang['Forbid this language to users'] = 'לאסור על השפה הזו למשתמשים'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'אי אפשר לבטל את השפה הזו, הראשון להגדיר שפה אחרת כברירת המחדל.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'אי אפשר לבטל את השפה הזאת, אתה צריך לפחות שפה אחת.'; +$lang['Inactive Languages'] = 'שפות לא פעילה'; +$lang['Make this language available to users'] = 'הפוך את השפה הזו זמינה למשתמשים'; +$lang['Set as default language for unregistered and new users'] = 'הפוך שפת ברירת מחדל עבור משתמשים רשומים ו החדש'; +$lang['Add Photos'] = 'הוספת תמונות'; +$lang['The following tag was deleted'] = 'התווית הבאה נמחקה'; +$lang['Miscellaneous'] = 'שונות'; +$lang['Virtual Links'] = 'קישורים וירטואלית'; +$lang['There is no other language available.'] = 'אין שפה אחרת זמינה.'; +$lang['There is no other plugin available.'] = 'אין שום תוספים אחרים זמינים.'; +$lang['There is no other theme available.'] = 'אין שום נושא אחר זמין.'; +$lang['Add another set of photos'] = 'הוספת קבוצה נוספת של אוהדים'; +$lang['Order of menubar items has been updated successfully.'] = 'סדר הפריטים Menubar עודכנו בהצלחה.'; +$lang['This theme was not designed to be directly activated'] = 'הנושא הזה לא נועד להיות מופעל באופן ישיר'; +$lang['Pending Comments'] = 'תגובות בהמתנה'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'בקובץ php.ini שלך, upload_max_filesize (SB%) הוא גדול יותר post_max_size (SB%), עליך לשנות הגדרה זו'; +$lang['Exif extension not available, admin should disable exif use'] = 'סיומת Exif לא נתמכת, פנה למנהל על מנת שיאשר שימוש בסיומת Exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini: "%s "B'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'The uploaded files exceed the post_max_size directive in php.ini: "%s "B'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'הקובץ שבועלה חורג מה MAX_FILE_SIZE האפשרי שצויין בקובץ html'; +$lang['The uploaded file was only partially uploaded'] = 'הקובץ הועלה חלקית'; +$lang['No file was uploaded'] = 'לא הועלה קובץ'; +$lang['Missing a temporary folder'] = 'חסר תיקיה זמנית'; +$lang['Failed to write file to disk'] = 'נכשל בכתיבת הקובץ בדיסק'; +$lang['File upload stopped by extension'] = 'העלאת קובץ נכשלה ובמשתמע'; +$lang['Unknown upload error'] = 'שגיאה בהעלאה לא ידועה'; +$lang['Error on file "%s" : %s'] = 'שגיאה בקובץ "%s" : %s'; +$lang['Menu Management'] = 'נהל תפריטים'; +$lang['automatic order'] = 'סדר אוטומטי'; +$lang['manual order'] = 'סדר ידני'; +$lang['Albums automatically sorted'] = 'מיון אלבומים אוטומטי'; +$lang['Batch Manager'] = 'מנהל קבוצה'; +$lang['include child albums'] = 'כולל אלבום ילד'; +$lang['Selection'] = 'מבחר'; +$lang['Action'] = 'פעולה'; +$lang['Set author'] = 'הגדר מחבר'; +$lang['Set title'] = 'הגדר כותרת'; +$lang['Set creation date'] = 'הגדר תאריך יצירה'; +$lang['Apply action'] = 'החל'; +$lang['on the %d selected photos'] = 'ב %d תמונות נבחרות'; +$lang['%d of %d photos selected'] = '%d מ %d תמונות נבחרו'; +$lang['No photo selected, %d photos in current set'] = 'לא נבחרו תמונות, %d תמונות בסט הנוכחי'; +$lang['All %d photos are selected'] = 'כל %d התמונות נבחרו'; +$lang['remove this filter'] = 'הסר מסנן זה'; +$lang['Duplicates'] = 'כפילויות'; +$lang['Add a filter'] = 'הוסף מסנן'; +$lang['Remove all filters'] = 'מחק את כל המסננים'; +$lang['Refresh photo set'] = 'רענן את סט התמונות'; +$lang['The whole page'] = 'העמוד המלא'; +$lang['The whole set'] = 'הסט המלא'; +$lang['No photo in the current set.'] = 'אין תמונות בסט הנוכחי.'; +$lang['No photo selected, no action possible.'] = 'לא נבחרו תמונות, אין פעולות אפשריות.'; +$lang['Choose an action'] = 'בחר פעולה'; +$lang['remove author'] = 'הסר מחבר'; +$lang['Type here the author name'] = 'כתוב כאן את שם המחבר'; +$lang['remove title'] = 'הסר כותרת'; +$lang['Type here the title'] = 'כתוב כאן את הכותרת'; +$lang['remove creation date'] = 'הסר את תאריך היצירה'; +$lang['Album photos associated to the following albums: %s'] = 'אלבום תמונות משוייך לאלבום הבא: %s'; +$lang['Delete orphan tags'] = 'מחק תגים יתומים'; +$lang['delete photo'] = 'מחק תמונה'; +$lang['new'] = 'חדש'; +$lang['No results'] = 'אין תוצאות'; +$lang['Orphan tags deleted'] = 'תגים יתומים נמחקו'; +$lang['Remove from caddie'] = 'הוסר מהנושא'; +$lang['Searching...'] = 'מחפש...'; +$lang['Type in a search term'] = 'הקלד את ערך החיפוש'; +$lang['Week starts on'] = 'שבוע מתחיל'; +$lang['You have %d orphan tags: %s.'] = 'יש לך %d תגים יתומים: %s.'; +$lang['Themes which need upgrade'] = 'ערכות נושא שצריכות שידרוג'; +$lang['Languages which need upgrade'] = 'שפות שצריכות שידרוג'; +$lang['All themes are up to date.'] = 'כל ערכות הנושא מעודכנות'; +$lang['All plugins are up to date.'] = 'כל התוספים מעודכנים.'; +$lang['All languages are up to date.'] = 'כל השפות מעודכנות.'; +$lang['Visit theme site'] = 'בקר באתר ערכת הנושא'; +$lang['Visit language site'] = 'בקר באתר השפה'; +$lang['New Version'] = 'גרסה חדשה'; +$lang['Obsolete Plugins'] = 'תוסף מיושן'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'אזהרה! נראה כי תוסף זה לא מתאים ל Piwigo.'; +$lang['Do you want to activate anyway?'] = 'אתה רוצה להפעיל בכל מיקרה?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'תוסף זה הוא לא חלק מליבת PIWIGO ! הסר אותו מייד!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'שגיאה: תוסף זה נראה חסר אבל מותקן! הסר אותו מייד.'; +$lang['display'] = 'הצג'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'אתה יכול לעדכן ל Piwigo %s ישירות, מבלי לשדרג ל Piwigo %s (מומלץ).'; +$lang['Save Template Directory'] = 'שמור בספרייה תבנית'; +$lang['Dump Database'] = 'זרוק מסד נתונים'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'כלול נתוני היסטוריה אזהרה:עלולה להיות חריגת זיכרון השרת'; +$lang['Unable to dump database.'] = 'אין אפשרות לזרות מסד נתונים.'; +$lang['Some upgrades are available for extensions.'] = 'כמה שידרוגים זמינים להרחבות.'; +$lang['Ignore All'] = 'התעלם מהכל'; +$lang['Crop'] = 'להניב'; +$lang['Width'] = 'רוחב'; +$lang['Height'] = 'גובה'; +$lang['Follow Orientation'] = 'עקוב אחר ההדרכה'; +$lang['Graphics Library'] = 'ספריית גרפיקה'; +$lang['Activate icon "new" next to albums and pictures'] = 'הפעל כפתו "חדש" ליד אלבומים'; +$lang['Deactivate all'] = 'בטל פעולה להכל'; +$lang['Default photos order'] = 'סדר ברירת מחדל לתמונות'; +$lang['Restore'] = 'שחזר'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'שחזר להגדרות ברירת מחדל. הגדרות ההתקן יאבדו!'; +$lang['Show menubar'] = 'הצג תפריט'; +$lang['Thumbnails generation in progress...'] = 'חידוש תמונות ממוזערות בתהליך...'; +$lang['Photos generation in progress...'] = 'חידוש תמונות בתהליך...'; +$lang['%s photos have been regenerated'] = '%s תמונות חודשו'; +$lang['%s photos can not be regenerated'] = '%s תמונות לא יכלו להתחדש'; +$lang['Updates'] = 'עדכונים'; +$lang['Update in progress... Please wait.'] = 'עדכון בתהליך... המתן.'; +$lang['Ignore this update'] = 'התעלם מעידכון זה'; +$lang['Reset ignored updates'] = 'אפס התעלמות מעידכונים'; +$lang['Update All'] = 'עדכן הכל'; +$lang['ERROR'] = 'שגיאה'; +$lang['Update Complete'] = 'עידכון הושלם'; +$lang['Piwigo Update'] = 'Piwigo עדכון'; +$lang['Extensions Update'] = 'עדכון הרחבה'; +$lang['All extensions are up to date.'] = 'כל ההרחבות מעודכנות.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'יכול להיות שההתקן לא תואם לגירסה החדשה של Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'יכול להיות שהערכת הנושא לא תואמת לגירסה החדשה של Piwigo:'; +$lang['I decide to update anyway'] = 'החלתי לעדכן בכל מיקרה'; +$lang['Update to Piwigo %s'] = 'עדכן ל Piwigo %s'; +$lang['Two updates are available'] = 'שני עידכונים זמינים'; +$lang['This is a minor update, with only bug corrections.'] = 'זהו עידכון שולי, תיקון באגים שנמצאו.'; +$lang['This is a major update, with new exciting features.'] = 'עדכון חשוב, עם מאפיינים חדשים ומלהיבים.'; +$lang['Some themes and plugins may be not available yet.'] = 'יכול להיות שחלק מההתקנים וערכות הנושא לא זמינים עדיין .'; +$lang['Learn more'] = 'למד עוד'; +$lang['Rate'] = "דרג"; +$lang['Average rate'] = "דירוג ממוצע"; +$lang['(this tag will be deleted)'] = ')התג הזה ימחק('; +$lang['... or '] = 'או ...'; +$lang['Add a criteria'] = 'הוסף קריטריון'; +$lang['Allowed file types: %s.'] = 'סוגי קבצים מותרים:%s'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'רזולוציה מקסימלית: %dM פקסלים(שזה %dx%d פקסלים).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'כברירת מחדל, Piwigo יצור גודל חדש לתמונות ה HD שלך.'; +$lang['Confirm merge'] = 'אשר איחוד'; +$lang['Create'] = 'צור'; +$lang['hide details'] = 'הסתר פרטים'; +$lang['Manage Permissions'] = 'ניהול הרשאות'; +$lang['Maximum file size: %sB.'] = 'גודל קובץ מקסימאלי: %sB.'; +$lang['Merge selected tags'] = 'אחד תגים מסומנים'; +$lang['Merge tags'] = 'איחוד תגים'; +$lang['No destination tag selected'] = 'לא ניבחרו תגי יעד'; +$lang['Photo %s of %s'] = 'תמונה %s מ %s'; +$lang['Select an album'] = 'בחר אלבום'; +$lang['Select at least two tags for merging'] = 'בחר לפחות שני תגים לאיחוד'; +$lang['Select the destination tag'] = 'בחר תגים ביעד'; +$lang['show details'] = 'הצג פרטים'; +$lang['Start Upload'] = 'התחל העלאה'; +$lang['Tags %s merged into tag %s'] = 'התג %s אוחד כעם תג %s'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'אתה משתמש בהעלאה מהדפדפן. נסה העלאת פלאש במקום.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'אתה משתמש בהעלאת פלאש. ישנה בעיה? נסה העלאה מהדפדפן במקום.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'אין באפשרותך לקבוע סדר תמונות ברירת מחדל מכיוון שאתה משתמש בהגדרות מותאמות אישית'; +$lang['Add to caddie'] = 'הוסף לסל'; +$lang['Permalink'] = 'קישורית'; +$lang[' and %d virtuals'] = 'ו %d וירטואלים'; +$lang['%d day'] = '%d יום'; +$lang['%d days'] = '%d ימיםחודשים'; +$lang['%d hour'] = '%d שעה'; +$lang['%d hours'] = '%d שעות'; +$lang['%d minute'] = '%d דקה'; +$lang['%d minutes'] = '%d דקות'; +$lang['%d month'] = '%d חודש'; +$lang['%d months'] = '%d חודשים'; +$lang['%d second'] = '%d שניה'; +$lang['%d seconds'] = '%d שניות'; +$lang['%d week'] = '%d שבוע'; +$lang['%d weeks'] = '%d שבועות'; +$lang['%d year'] = '%d שנה'; +$lang['%d years'] = '%d שנים'; +$lang['%s has been successfully updated.'] = '%s הועלובהצלחה'; +$lang['%s in the future'] = '%s בעתיד'; +$lang['A locked gallery is only visible to administrators'] = 'גלריות נעולות זמינות רק למנהלים'; +$lang['Activate comments'] = 'הפעל תגובה'; +$lang['Add tags'] = 'הוסף תיוג'; +$lang['Added by %s'] = 'הוסף על ידי %s'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'ארעה שגיאה במהלך היצוא. בדוק את הרשאות קבצי התקנת piwigo.
                  לחץ כאן לראות את יומן השגיאות.'; +$lang['An error has occured during upgrade.'] = 'ארעה שגיאה במהלך העלאה'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture הוא כלי רב עוצמה לחדד תמונות ולנהל סיפריות ענק ב-mac'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture עוצב עבור גרפיקאים מקצועיים עם הפשטות של iphoto'; +$lang['Applications'] = 'אפליקציות'; +$lang['Apply watermark if height is bigger than'] = 'החל חותמת מים(watermark) אם הגובה גדול מ'; +$lang['Apply watermark if width is bigger than'] = 'החל חותמת מים(watermark) אם הרוחב גדול מ'; +$lang['Automatic sort order'] = 'סדר אוטומטי'; +$lang['Available on'] = 'זמין ב'; +$lang['Available versions for'] = 'גרסאות זמינות ל'; +$lang['%d physicals'] = ' %d פיזית'; +$lang['Piwigo for Android'] = 'piwigo לאנדרואיד'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'piwigo לios (איפון, איפד, איפוד ואיפוד טאצ)'; +$lang['Posted %s on %s'] = 'פורסם %s ב %s'; +$lang['Resize after upload'] = 'שנה גודל אחרי העלאה'; +$lang['Save manual order'] = 'שמור סדר ידני'; +$lang['Save visits in history for'] = 'שמור מבקרים בהיסטוריה ל'; +$lang['Select a file'] = 'בחר קובץ'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'בחר איזור עם העכבר כדי להגדיר את מרכז העניין בתמונה'; +$lang['Select groups...'] = 'בחר קבוצות...'; +$lang['Select users...'] = 'בחר משתמשים...'; +$lang['Send connection settings by email'] = 'שלח פרטי התחברות באימייל'; +$lang['Source tag'] = 'מקור תג'; +$lang['There is no group in this gallery.'] = 'אין קבוצות בגלריה הזו'; +$lang['This album contains %d photos, added between %s and %s.'] = 'האלבום הזה מכיל %s תמונות, שנוספו בין ה %s ל %s'; +$lang['This album contains %d photos, added on %s.'] = 'האלבום הזה מכיל %s תמונות, נוספו ב %s'; +$lang['This album contains no photo.'] = 'האלבום הזה לא מכיל תמונות'; +$lang['Unlock gallery'] = 'גלריה פתוחה'; +$lang['Visited %d times'] = 'בוקר %d פעמים'; +$lang['Watermark'] = 'סימן מים'; +$lang['With no album'] = 'ללא אלבום'; +$lang['middle'] = 'באמצע'; +$lang['modified'] = 'שינוי'; +$lang['registered users'] = 'משתמשים רשומים'; +$lang['top left corner'] = 'בפינה השמאלית העליונה'; +$lang['top right corner'] = 'בפינה הימנית העליונה'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'מבקרים צריכים להתחבר ולהיות בעלי הרשאות מסויימות כדי לראות את האלבום הזה'; +$lang['With no tag'] = 'ללא תגים'; +$lang['With no virtual album'] = 'ללא אלבום ורטואלי'; +$lang['X Position'] = 'x מיקום'; +$lang['X Repeat'] = 'x חזרות'; +$lang['Y Position'] = 'y מיקום'; +$lang['Zoom'] = 'זום'; +$lang['add a new watermark'] = 'הוסף קו מים חדש'; +$lang['administrators'] = 'מנהל ראשי'; +$lang['any visitor can see this album'] = 'כל מבקר יכול לראות את אלבום זה'; +$lang['apply automatic sort order'] = 'החל סדר אוטומטי'; +$lang['bottom left corner'] = 'בפינה השמאלית התחתונה'; +$lang['bottom right corner'] = 'בפינה הימנית התחתונה'; +$lang['cancel manual order'] = 'ביטול סדר ידני'; +$lang['create a new site'] = 'צור אתר חדש'; +$lang['custom'] = 'מותאם אישית'; +$lang['Photo name'] = 'שם התמונה'; +$lang['Move to album'] = 'העבר לאלבום'; +$lang['Multiple Size'] = 'מספר גדלים'; +$lang['Name of the duplicate'] = 'שם של שכפול'; +$lang['No group is permitted to see this private album'] = 'לאף קבוצה אין הרשאה לראות את האלבום הפרטי הזה'; +$lang['Original Size'] = 'גודל מקורי'; +$lang['Cancel'] = 'ביטול'; +$lang['Center of interest'] = 'מרכז העניין'; +$lang['Default comments order'] = 'סדר תגובות ברירת מחדל'; +$lang['Duplicate selected tags'] = 'שכפל תגים מסומנים'; +$lang['Edit photo'] = 'ערוך תמונה'; +$lang['Gallery unlocked'] = 'גלריה פתוחה'; +$lang['Groups and users'] = 'קבוצות ומשתמשים'; +$lang['Last import'] = 'יבוא אחרון'; +$lang['List'] = 'רשימה'; +$lang['%s ago'] = '%s לפני'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u משתמשים יש הרשאות אוטומטית בגלל שהם שייכים לקבוצה מאושרת'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = ' +digiKam מיועד לצלמים שרוצים להציג, לנהל, לערוך, לשפר, לארגן, לתייג, ולשתף תצלומים.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto הוא מנהל התמונת הברירת המחדל בMacOSX.תוסף יצוא Piwigo מאפשר לך ליצור אלבומים חדשים ולייצא את תמונות ישירות מ-iPhoto לגלריית תמונות Piwigo.'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam היא תוכנה מתקדמת לניהול תמונות דיגיטלית חופשיה עבור לינוקס, Windows ו MacOSX.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = ' +כדי לייצא את התמונות שלך מ-digiKam ל-Piwigo, פשוט התקן digiKam ו-kipi-plugins'; +$lang['Web Form'] = 'טופס אינטרנט'; +$lang['Piwigo Publish plugin for Lightroom'] = 'תוסף פירסום Piwigo עבור Lightroom'; +$lang['Piwigo export plugin for Aperture'] = 'תוסף יצוא Piwigo עבור Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'תוסף יצוא Piwigo עבור iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'תוסף פירסום Piwigo עבור Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'תוסף פירסום Piwigo עבור digiKam'; +$lang['Predefined filter'] = 'מסנן מוגדר מראש'; +$lang['Sharpen'] = 'חידוד'; +$lang['Portrait'] = 'דיוקן'; +$lang['Rated %d times, score : %.2f'] = 'דורג %d פעמים, ציון : %.2f'; +$lang['Ratio'] = 'דירוג'; +$lang['View in gallery'] = 'צפה בגלריה'; +$lang['You can activate only one mobile theme.'] = 'אתה יכול להפעיל רק ערכת נושא אחת לסלולרי'; +$lang['between %.2f and %.2f'] = 'בין %.2f ו %.2f'; +$lang['between %d and %d pixels'] = 'בין %d ו %d פיקסלים'; +$lang['include photos with lower privacy level'] = 'כולל תמונות עם רמת פרטיות נמוכה'; +$lang['pending validation'] = 'ממתין לאימות'; +$lang['simple visitors'] = 'מבקרים פשוטים'; +$lang['Photo sizes with crop'] = 'גדלי תמונות עם חיתוך'; +$lang['Landscape'] = 'תמונת נוף'; +$lang['Not cropped correctly?'] = 'לא נחתך בצורה נכונה?'; +$lang['Original file : %s'] = 'קובץ מקורי : %'; +$lang['Panorama'] = 'פנורמה'; +$lang['Permission granted for groups'] = 'ליצור הרשאות לקבוצות'; +$lang['Permission granted for users'] = 'ליצור הרשאות למשתמשים'; +$lang['Permission management'] = 'ניהול הרשאות'; +$lang['Delete multiple size images'] = 'מחק גדלים מרובים של תמונות'; +$lang['Generate multiple size images'] = 'צור גדלים מרובים לתמונות'; +$lang['No order field selected'] = 'לא נבחר סדר'; +$lang['Manage photos'] = 'ניהול תמונות'; +$lang['Minimum height'] = 'גובה מינימלי'; +$lang['Minimum width'] = 'רוחב מינימלי'; +$lang['Number of albums per page'] = 'מספר אלבומים בעמוד'; +$lang['Opacity'] = 'אטימות'; +$lang['Rename'] = 'שנה שם'; +$lang['Duplicate'] = 'כפילות'; +$lang['Manage the members'] = 'נהל את החברים'; +$lang['Merge selected groups'] = 'מזג את הקבוצות שנבחרו'; +$lang['No group selected, no action possible.'] = 'אף קבוצה לא נבחרה,אף שינוי לא בוצע.'; +$lang['No members to manage'] = 'אין חברים לנהל'; +$lang['Notify administrators when a comment is'] = 'עדכן מנהלים כאשר נכתבת תגובה'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo לא יכולה להוציא את קבצי העדכון מהשרת'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'הגדרת $conf[\'order_by\'] בקובץ ההגדרות המקומי. הפרמטר הזה פגום. אנא הסר אותו או שנה את שמו ל- $conf[\'order_by_custom\'] !'; +$lang['This group will be set to default'] = 'יעשה שימוש בקבוצה זו כברירת מחדל'; +$lang['This group will be unset to default'] = 'קבוצה זו לא תשמש יותר כברירת מחדל'; +$lang['Type here the name of the new group'] = 'הקלד את שם הקבוצה החדשה כאן'; +$lang['Update user'] = 'עדכן משתמש'; +$lang['User %s added'] = 'משתמש %s נוסף'; +$lang['User %s updated'] = 'משתמש %s עודכן'; +$lang['on the %d selected users'] = 'על %d משתמשים נבחרו'; +$lang['The original maximum height must be a number between %d and %d'] = 'הגובה המקסימאלי המקורי צריך להיות מספר בין %d ו- %d '; +$lang['The original maximum width must be a number between %d and %d'] = 'הרוחב המקסימאלי המקורי צריך להיות מספר בין %d ו- %d '; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'מימדי התמונה יוקטנו ל- %dx%d פיקסלים'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'מרכז העניין הוא האזור המשמעותי ביותר של התמונה '; +$lang['The original image quality must be a number between %d and %d'] = 'האיכות המקורית של התמונה צריכה להיות מספר בין %d ו- %d '; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'פלאגין הפרסום של Piwigo מאפשר לייצא ולבצע סינכרון של תמונות מתוך אדובי לייטרום ישירות לגלריית התמונות של Piwigo'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'פלאגין היצוא של Piwigo מאפשר ליצור אלבומים ולייצא תמונות'; +$lang['Users modified'] = 'משתמשים עודכנו'; +$lang['close'] = 'סגור'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'התוית "%s" היא כעת שכפול של "%s"'; +$lang['Showing %s to %s of %s users'] = 'מציג %s עד %s מתוך %s משתמשים'; +$lang['Show %s users'] = 'הצג %s משתמשים'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell הוא מנהל תמונות קוד פתוח שרץ על לינוקס. הוא ברירת המחדל של מנהל התמונות ב- Ubuntu וב- Fedora'; +$lang['Select at least one tag'] = 'בחר לפחות תוית אחת'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'שינוי גודל אחרי העלאת תמונה נוטרל עקב שימוש ב- GD כספריית גרפיקה'; +$lang['Registered on %s, %s.'] = 'נרשם ב- %s, %s'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) זהו קליינט קוד פתוח (GPL v3) של Piwigo עבור פלטפורמת אנדרואיד'; +$lang['Purge user cache'] = 'נקה את ה- cache של המשתמש'; +$lang['Please select at least two groups'] = 'אנא בחר לפחות שתי קבוצות'; +$lang['Password updated'] = 'ססמה עודכנה'; +$lang['Open user details'] = 'פתח פרטי משתמש'; +$lang['Numeric identifier : %d'] = 'מזהה מספרי: %d'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'במערכת הלינוקס שלך, פשוט התקן Shotwell עם מנהל החבילות ואז את הפעל את אפשרות הפרסום של Piwigo.'; +$lang['No user selected of %d users'] = 'לא נבחר משתמש מתוך %d משתמשים'; +$lang['No user selected, no action possible.'] = 'לא נבחר משתמש, אין אפשרות לבצע פעולה.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = ' אפליקציית Piwigo עבור אנדרואיד מאפשרת לך להתחבר מטלפון האנדרואיד או הטאבלט שלך לגלריית Piwigo, ליצור אלבומים ולהעלות מספר תמונות בו זמנית '; +$lang['Last visit on %s, %s.'] = 'ביקור אחרון ב- %s, %s.'; +$lang['Mail theme'] = 'נושא מייל'; +$lang['No matching user found'] = 'לא נמצאו משתמשים מתאימים'; +$lang['Loading...'] = 'טוען...'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'אם אין גודל HD ואם הגודל הנוכחי גדול ממימדי השינוי, Piwigo יזיז זאת כ-HD ויצור תמונה מוקטנת '; +$lang['General'] = 'כללי'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'עבור גדלי תמונה עם חיתוך, כמו "ריבוע", Piwigo יעשה כמידת יכולתו לכלול את מרכז העניין'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'התכונות כוללות עיון בגלרייה, יצירת אלבום והעלאת תמונה'; +$lang['Close user details'] = 'סגור פרטי משתמש'; +$lang['Change username'] = 'שנה שם משתמש'; +$lang['Change password'] = 'שנה ססמה'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'כברירת מחדל, מרכז העניין ממוקם במרכז התמונה'; +$lang['Basic settings'] = 'הגדרות בסיסיות'; +$lang['All %d users are selected'] = 'כל %d המשתמשים נבחרו'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'אדובי פוטושופ לייטרום היא תכנת עיבוד צילום המתוכננת לנהל כמויות גדולות של צילומים ולבצע עבודת עיבוד '; +$lang['Activate it now'] = 'הפעל כעת'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = ' אפליקציית Piwigo עבור iOS מאפשרת לך להתחבר ממכשירי iPhone, iPad או Ipod Touch שלך לגלריית Piwigo, ליצור אלבומים ולהעלות מספר תמונות בו זמנית '; +$lang['(filtered from %s total users)'] = 'מסונן מתוך %s סך הכל משתמשים'; +$lang['%d of %d users selected'] = '%d מתוך %d מתשמשים נבחרו'; +?> \ No newline at end of file diff --git a/sources/language/he_IL/common.lang.php b/sources/language/he_IL/common.lang.php new file mode 100644 index 0000000..872e495 --- /dev/null +++ b/sources/language/he_IL/common.lang.php @@ -0,0 +1,422 @@ +הזזת אלבומים וירטואליים/h2> + +

                  Oרק לאלבומים וירטואליים יכולים לקבל אלבום הורה חדש.

                  + +

                  להזזת אלבומים וירטואליים

                  + +<>Sבחר אלבום וירטואלי אחד או יותר שברצונך להזיז +אם הרשימה ריקה המשמעות היא שעדיין לא יצרתיעדיין אלבום.

                  + +

                  אלבום הורה חדש

                  +

                  בחר את אלבום ההורה החדש (פיזי או וירטואלי). +אם לא תבחר תבנית, האלבומים הוירטואליים הנבחרים יועברו למקור. לא ניתן להזיז את האלבום לתוך עצמו או לאחד מילדיו. +

                  \ No newline at end of file diff --git a/sources/language/he_IL/help/help_add_photos.html b/sources/language/he_IL/help/help_add_photos.html new file mode 100644 index 0000000..87d4fe4 --- /dev/null +++ b/sources/language/he_IL/help/help_add_photos.html @@ -0,0 +1,22 @@ +

                  מספר דרכים להוסיף תמונות לגלריה שלך:

                  + +
                    +
                  • העלאה ישירה דרך דפדפן האינטרנט שלך היא הדרך המהירה והפשוטה ביותר. זה תלוי ביכולות הדפדפן והשרת שלך. אם אתה צריך להעלות כמות גדולה של תמונות, תמונות באיכות גבוהה או שאתה נתקל בבעיה כלשהי, הדרכים הבאות בידיוק בשבילך!
                  • +
                  + + + +
                    +
                  • pLoader זו תוכנה בשולחן העבודה שלך, להתקנה במחשבך האישי. גרור & ושחרר תמונות לתוך חלון הpLoader, הלחץ על "Upload to Piwigo" ותן לpLoader לעשות את העבודה. אתה יכול למצוא תוכנות אחרות כמו WinToPiwigo או Digikam לייצא לגלרית Piwigo שלך.
                  • +
                  + + + +
                  +
                    +
                  • העברה דרך FTP זו הדרך המומלצת ביותר להעלות כמות גדולה של תמונות עם מספר מינימלי של מהלכים. עבור על המדריך הכנת התמונות שלך. שיטת ה-FTP מאפשרות שליטה מדויקת + בארגון הפיזי של התמונות בשרת שלך.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/he_IL/install.lang.php b/sources/language/he_IL/install.lang.php new file mode 100644 index 0000000..3d7de40 --- /dev/null +++ b/sources/language/he_IL/install.lang.php @@ -0,0 +1,67 @@ +Piwigo message board.'] = "צריך עזרה? היעזר ב הפורום של Piwigo."; +$lang['Visitors will be able to contact site administrator with this mail'] = "אורחים יוכלו להשתמש בדואר האלקטרוני הזה כדי ליצור קשר עם מנהל האתר"; +$lang['PHP 5 is required'] = "נדרש גירסת PHP 5"; +$lang['It appears your webhost is currently running PHP %s.'] = "שרת המארח שלך רץ על גירסת PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo תנסה להחליף את התצורה שלך ל PHP 5 על ידי יצירת או שינוי קובץ .htaccess"; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "אתה יכול לשנות את התצורה שלך לבד ולהריץ את Piwigo לאחר מכן."; +$lang['Try to configure PHP 5'] = "נסה להגדיר PHP 5"; +$lang['Sorry!'] = "סליחה!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo לא יכולה להגדיר את PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "אתה צריך לפנות לתמיכת השרת המאחר שלך ולראות איך אתה יכול להחליף ל PHP 5 לבד."; +$lang['Hope to see you back soon.'] = "מקווה לראות אותך שוב בקרוב."; +$lang['Congratulations, Piwigo installation is completed'] = 'מזל טוב,התקנת Piwigo הושלמה'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'הפתרון החלופי הוא להעתיק את הטקסט בתיבה מעל ולהדביק אותו בקובץ "local/config/database.inc.php" (אזהרה : database.inc.php חייב להחיל רק את התווים שבתיבת טקסט, לא לחזור על שורות או לעשות רווח)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'יצירת קובץ config local/config/database.inc.php ניכשל.'; +$lang['Download the config file'] = 'הורד את קובץ config'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'אתה יכול להוריד את קובץ config ולהעלות אותו אל local/config בתיקיית ההתקנה שלך.'; +$lang['Just another Piwigo gallery'] = 'עוד גלריה מבית Piwigo'; +$lang['Welcome to my photo gallery'] = 'ברוכים הבאים לגלרית התמונות שלי'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'אל תהסס להתייעץ בפורומים שלנו בכל נושא: %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'ברוך הבא לגלרית piwigo החדשה שלך'; +$lang['localhost or other, supplied by your host provider'] = 'מקומי(localhost)או אחר, המסופק על ידי הספק המארח שלך'; \ No newline at end of file diff --git a/sources/language/he_IL/iso.txt b/sources/language/he_IL/iso.txt new file mode 100644 index 0000000..7639f9f --- /dev/null +++ b/sources/language/he_IL/iso.txt @@ -0,0 +1 @@ +עברית [IL] \ No newline at end of file diff --git a/sources/language/he_IL/upgrade.lang.php b/sources/language/he_IL/upgrade.lang.php new file mode 100644 index 0000000..d1777b9 --- /dev/null +++ b/sources/language/he_IL/upgrade.lang.php @@ -0,0 +1,41 @@ +release %s (or equivalent).'] = 'דף זה מציע לשדרג את מסד הנתונים מגרסת Piwigo הישנה לגרסה החדשה. עוזר השדרוג חושב שאתה מפעיל כרגע שחרור %s.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'רק תמונות ממוזערות, ודואר אלקטרוני של מנהל האתר נשמרו מהגירסה הקודמת'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'בצע בדיקת תחזוקה ב[ ניהול> כלים> תחזוקה] אם נתקלת בעיה כלשהי.'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'כאמצעי זהירות הערכות הבאות בוטלו, בדוק עדכונם לפני הפעלתם המחודשת:'; +$lang['In %s, before ?>, insert:'] = 'בתוך %s, לפני ?>, הכנס:'; +$lang['All sub-albums of private albums become private'] = 'כל אלבומי משנה של אלבומים פרטיים יהפכו לפרטים'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'התוספים הבאים בוטלו כאמצעי זהירות, בדוק אפשרות לעדכונם טרם הפעלתם המחודשת:'; +?> \ No newline at end of file diff --git a/sources/language/hr_HR/about.html b/sources/language/hr_HR/about.html new file mode 100644 index 0000000..6387436 --- /dev/null +++ b/sources/language/hr_HR/about.html @@ -0,0 +1,13 @@ +

                  Ova galerija slika koristi Piwigo.

                  + +

                  Piwigo je sustav za izradu web galerija slika, stvaran aktivnom zajednicom +korisnika i programera. Proširenja čine Piwigo lako prilagodljivim. Piwigo je besplatan i opensource.

                  + +

                  Posjetite Piwigo web mjesto

                  + +Hrvatski prijevod Piwigo-a održavaju (abecedno složeni): + + nantic + + + .... zahvaljujemo \ No newline at end of file diff --git a/sources/language/hr_HR/admin.lang.php b/sources/language/hr_HR/admin.lang.php new file mode 100644 index 0000000..951982f --- /dev/null +++ b/sources/language/hr_HR/admin.lang.php @@ -0,0 +1,796 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader znači Piwigo Uploader. Sa vašeg računala, pLoader priprema vaše slike i prebacuje ih u vašu Piwigo galeriju.'; +$lang['Guest Settings'] = 'Postavke Gost računa'; +$lang['Main Page'] = 'Glavna stranica'; +$lang['Photo Page'] = 'Stranica Slika'; +$lang['Activate Navigation Bar'] = 'Uključiti navigacijsku traku'; +$lang['Activate Navigation Thumbnails'] = 'Uključiti navigacijske povezne sličice'; +$lang['Activate icon "%s"'] = 'Uključiti ikonu "%s"'; +$lang['Activate field "%s"'] = 'Uključiti polje "%s"'; +$lang['Photo Properties'] = 'Svojstva slika'; +$lang['Allow user customization'] = 'Dozvoliti korisničku prilagodbu'; +$lang['Languages'] = 'Jezici'; +$lang['Installed Languages'] = 'Ugrađeni Jezici'; +$lang['Add New Language'] = 'Dodaj Novi Jezik'; +$lang['Language has been successfully installed'] = 'Jezik uspješno ugrađen'; +$lang['Select:'] = 'Odaberi:'; +$lang['None'] = 'Nijedan'; +$lang['Invert'] = 'Obrnuto'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nemoguće je isključiti ovu temu, potrebna je najmanje jedna tema.'; +$lang['Webmaster status is required.'] = 'Potrebne su Webmaster ovlasti.'; +$lang['Bound Theme'] = 'Prikači Temu'; +$lang['Allow rating'] = 'Dozvoli ocjenjivanje'; +$lang['Select at least one comment'] = 'Odaberite najmanje jedan komentar'; +$lang['Active Plugins'] = 'Uključeni Dodaci'; +$lang['Inactive Plugins'] = 'Isključeni Dodaci'; +$lang['Missing Plugins'] = 'Nedostajući Dodaci'; +$lang['Uninstalled Plugins'] = 'Uklonjeni Dodaci'; +$lang['By %s'] = 'Po %s'; +$lang['Visit plugin site'] = 'Posjetite strancu dodataka'; +$lang['Active Languages'] = 'Uključeni Jezici'; +$lang['Delete this language'] = 'Izbrišite ovaj jezik'; +$lang['Forbid this language to users'] = 'Zabranite ovaj jezik korisnicima'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nemoguće je isključenje ovog jezika, prvo postavite neki drugi jezik kao pretpostavljen.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nemoguće je isključenje ovog jezika, trebate imati najmanje jedan jezik.'; +$lang['Inactive Languages'] = 'Isključeni Jezici'; +$lang['Make this language available to users'] = 'Učinite ovaj jezik dostupnim korisnicima'; +$lang['Set as default language for unregistered and new users'] = 'Postavi kao pretpostavljen jezik za nove i nepoznate korisnike'; +$lang['Add Photos'] = 'Dodaj Slike'; +$lang['The following tag was deleted'] = 'Slijedeći tag je izbrisan'; +$lang['Miscellaneous'] = 'Razno'; +$lang['Virtual Links'] = 'Prividne Poveznice'; +$lang['There is no other language available.'] = 'Neme dostupnih drugih jezika.'; +$lang['There is no other plugin available.'] = 'Nema dostupnih drugih dodataka.'; +$lang['There is no other theme available.'] = 'Nema dostupnih drugih tema.'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vrijeme izvršenja je isteklo, postupak se mora nastaviti [Procijenjeno vrijeme: %d sekunda].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vrijeme izvršenja je premašeno, postupak se mora nastaviti [Procijenjeno vrijeme: %d sekunda].'; +$lang['By rank'] = 'Po poretku'; +$lang['Manual order'] = 'Ručni poredak'; +$lang['Add another set of photos'] = 'Dodaj još jedan skup slika'; +$lang['Path'] = 'Putanja'; +$lang['Order of menubar items has been updated successfully.'] = 'Redoslijed stavki izborne trake je uspješno obnovljen.'; +$lang['This theme was not designed to be directly activated'] = 'Ova tema nije zamišljena za neposrednu postavu'; +$lang['Menu Management'] = 'Izbornik'; +$lang['Action'] = 'Akcija'; +$lang['Add a filter'] = 'Dodaj filter'; +$lang['Album photos associated to the following albums: %s'] = 'Fotografije vezane uz sljedeće albume: %s'; +$lang['Albums automatically sorted'] = 'Automatski poredak albuma'; +$lang['All %d photos are selected'] = 'Označeno %d fotografija'; +$lang['Apply action'] = 'Potvrdi akciju'; +$lang['automatic order'] = 'automatski poredak'; +$lang['Batch Manager'] = 'Skupno uređivanje'; +$lang['Choose an action'] = 'Odaberi akciju'; +$lang['Delete orphan tags'] = 'Briši nekorištene oznake'; +$lang['delete photo'] = 'briši fotografiju'; +$lang['Duplicates'] = 'duplići'; +$lang['Error on file "%s" : %s'] = 'Greška na datoteci "%s" : %s'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif ekstenzija nije dostupna, administrator bi trebao onemogućiti korištenje exif-a'; +$lang['Failed to write file to disk'] = 'Nije uspjelo zapisivanje na disk'; +$lang['File upload stopped by extension'] = 'Upload datoteke je zaustavljen od strane ekstenzije'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Vrijednost upload_max_filesize (%sB) u vašoj php.ini datoteci je veća od post_max_size (%sB), trebali biste podesiti te postavke'; +$lang['include child albums'] = 'uključi podalbume'; +$lang['manual order'] = 'ručni poredak'; +$lang['%d of %d photos selected'] = 'označeno %d od %d fotografija'; +$lang['Missing a temporary folder'] = 'Nedostaje privremena mapa'; +$lang['new'] = 'novo'; +$lang['No file was uploaded'] = 'Datoteka nije poslana'; +$lang['No photo in the current set.'] = 'U trenutnoj grupi nema fotografija.'; +$lang['No photo selected, %d photos in current set'] = 'Fotografije nisu označene, %d fotografija u trenutnoj grupi'; +$lang['No photo selected, no action possible.'] = 'Nijedna fotografija nije označena.'; +$lang['No results'] = 'Nema rezultata'; +$lang['on the %d selected photos'] = 'na %d označenih fotografija'; +$lang['Orphan tags deleted'] = 'Nekorištene oznake su izbrisane'; +$lang['Pending Comments'] = 'Neriješeni komentari'; +$lang['Refresh photo set'] = 'Osvježi grupu fotografija'; +$lang['Remove all filters'] = 'Ukloni sve filtre'; +$lang['remove author'] = 'ukloni autora'; +$lang['remove creation date'] = 'ukloni datum nastanka'; +$lang['Remove from caddie'] = 'Ukloni iz caddie'; +$lang['remove this filter'] = 'ukloni ovaj filter'; +$lang['remove title'] = 'ukloni naslov'; +$lang['Searching...'] = 'Tražim ...'; +$lang['Selection'] = 'Odabir'; +$lang['Set author'] = 'Postavi autora'; +$lang['Set creation date'] = 'Postavi datum nastanka'; +$lang['Set title'] = 'Postavi naslov'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Veličina poslane datoteke prelazi MAX_FILE_SIZE postavku definiranu unutar HTML obrasca'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Veličina poslane datoteke prelazi uload_max_filesize postavku u php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Poslana datoteka je djelomično upload-ana'; +$lang['Rate'] = 'Ocjena'; +$lang['Average rate'] = 'Prosječna ocjena'; +$lang['An error has occured during upgrade.'] = 'Došlo je do greške tijekon postupka nadogradnje.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Greška se dogodila tijekom izlučivanja. Molimo provjerite upisne dozvole vaše piwigo postave.
                  Kliknite za prikaz dnevnika greške.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne može dohvatiti zapis nadogradnje sa poslužitelja'; +$lang['Dump Database'] = 'Isprazni bazu podataka'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Uključi povijest posjeta (Pozor: memorijsko ograničenje poslužitelja može biti premašeno)'; +$lang['Unable to dump database.'] = 'Nemoguće pražnjenje baze podataka.'; +$lang['Save Template Directory'] = 'Sačuvaj mapu predložaka'; +$lang['Some themes and plugins may be not available yet.'] = 'Neke teme i dodaci možda nisu još dostupni.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Možete nadograditi Piwigo na inačicu %s neposredno, bez nadograđivanja na inačicu Piwigo %s (preporučeno).'; +$lang['Update to Piwigo %s'] = 'Nadogradnja na Piwigo inačicu %s'; +$lang['Two updates are available'] = 'Dvije su nadogradnje dostupne'; +$lang['This is a minor update, with only bug corrections.'] = 'Ovo je manja nadogradnja, samo popravke grešeaka.'; +$lang['This is a major update, with new exciting features.'] = 'Ovo je veća nadogradnja, sa novim uzbudljivim mogućnostima.'; +$lang['Update in progress... Please wait.'] = 'Nadogradnja u tijeku... Molimo sačekajte.'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivirajte sličicu "Novo" pored albuma i slika'; +$lang['Add a criteria'] = 'Dodaj uvjet'; +$lang['Deactivate all'] = 'Sve deaktiviraj'; +$lang['Default photos order'] = 'Zadani poredak fotografija'; +$lang['Restore'] = 'Vrati'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Vrati zadane postavke. Postojeće postve dodataka će se izgubiti!'; +$lang['Show menubar'] = 'Prikaži liniju izbornika'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Poslana datoteka prelazi post_max_size direktivu u php.ini: %sB'; +$lang['The whole page'] = 'Cijela stranica'; +$lang['The whole set'] = 'Cijeli set'; +$lang['Type here the author name'] = 'Unesi ime autora'; +$lang['Type here the title'] = 'Unesi naslov'; +$lang['Type in a search term'] = 'Traži ..'; +$lang['Unknown upload error'] = 'Nepoznata greška prilikom slanja datoteke'; +$lang['Add to caddie'] = 'dodaj u ladicu'; +$lang['%s has been successfully updated.'] = '%s je uspješno ažurirano.'; +$lang['%s photos can not be regenerated'] = '%s fotografija nije moguće regenerirati'; +$lang['%s photos have been regenerated'] = '%s fotografija regenerirano'; +$lang['%s thumbnails can not be regenerated'] = '%s malih sličica nije moguće regenerirati'; +$lang['%s thumbnails have been regenerated'] = '%s malih sličica je generirano'; +$lang['(this tag will be deleted)'] = '(ova oznaka je izbrisana)'; +$lang['... or '] = '... ili '; +$lang['Add tags'] = 'Dodaj oznake'; +$lang['All extensions are up to date.'] = 'Svi dodaci su "up-to-date".'; +$lang['All languages are up to date.'] = 'Svi jezici su "up-to-date".'; +$lang['All plugins are up to date.'] = 'Svi plugin-ovi su "up-to-date".'; +$lang['All themes are up to date.'] = 'Sve teme su "up-to-date".'; +$lang['Allowed file types: %s.'] = 'Dozvoljeni tipovi datoteka: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približna maksimalna rezolucija: %dM px (to je %dx%d px).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Prema zadanim vrijednostima, Piwino će kreirati nove veličine od vaših originalnih verzija fotografija..'; +$lang['Confirm merge'] = 'Potvrdi spajanje'; +$lang['Create'] = 'Kreiraj'; +$lang['Crop'] = 'Izreži'; +$lang['display'] = 'prikaz'; + +$lang['%d day'] = '%d dan'; +$lang['%d days'] = '%d dana'; +$lang['%d hour'] = '%d sat'; +$lang['%d hours'] = '%d sati'; +$lang['%d minute'] = '%d minuta'; +$lang['%d minutes'] = '%d minuta'; +$lang['%d month'] = '%d mjesec'; +$lang['%d months'] = '%d mjeseci'; +$lang['%d second'] = '%d sekunda'; +$lang['%d seconds'] = '%d sekundi'; +$lang['%d week'] = '%d tjedan'; +$lang['%d weeks'] = '%d tjedana'; +$lang['%d year'] = '%d godina'; +$lang['%d years'] = '%d godina'; +$lang['%s ago'] = '%s prije'; +$lang['%s in the future'] = '%s u budućnosti'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u korisnici su u grupi koja ima pristup'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo za Android je aplikacija koja vam omogućava spajanje vašeg tableta ili mobilnog telefona na vašu Piwigo galeriju. Kreirajte albume i postavite fotografije.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo za iOS je aplikacija koja vam omogućava spajanje vašeg iPhone-a, iPada-a ili iPod Touch-a na vašu Piwigo galeriju. Kreirajte albume i postavite fotografije.'; +?> \ No newline at end of file diff --git a/sources/language/hr_HR/common.lang.php b/sources/language/hr_HR/common.lang.php new file mode 100644 index 0000000..e010aa6 --- /dev/null +++ b/sources/language/hr_HR/common.lang.php @@ -0,0 +1,420 @@ + \ No newline at end of file diff --git a/sources/language/hr_HR/help/cat_modify.html b/sources/language/hr_HR/help/cat_modify.html new file mode 100644 index 0000000..f37e746 --- /dev/null +++ b/sources/language/hr_HR/help/cat_modify.html @@ -0,0 +1,121 @@ +

                  Uredi skupinu

                  + +

                  Obavijesti

                  + +
                    + +
                  • naziv: preimenuj skupinu (nestvarno preimenovanje u slučaju stvarne skupine).
                  • + +
                  • opis: prikažite uopćeni opis sadržaja, ovaj tekst će se prikazati ispod stranice poveznih sličica.
                  • + +
                  + +

                  Premjesti

                  + +

                  Ako je skupina nestvarna, možete je premjestiti. Premještanje skupine znači promjenu njene nadređene skupine.

                  + +

                  Mogućnosti

                  + +
                    + +
                  • Vrsta pristupa: Upravljanje dozvolama. Ako postavite skupinu kao osobnu, sve njoj podređene skupine postaju osobne. Ako postavite + skupinu kao javnu, sve njoj nadređene skupine postaju javne.
                  • + +
                  • Zaključavanje: Skupina i njene podskupine postaju nedostupne zbog poslova održavanja.
                  • + +
                  • Komentari: Dozvoli korisnicima da mogu komentirati stavke ove skupine.
                  • + +
                  • Dozvoli prebacivanje: Dozvoli korisnicima da mogu prebacivati zapise na poslužitelj. Ova mogućnost je dostupna samo za stvarne skupine (ne i za nestvarne skupine).
                  • + +
                  + +

                  Ovim mogućnostima možete upravljati i preko "Svojstva" upravnog prozora + (prozori Prebaci, Komentari, Zaključaj, +Javno/Osobno, Predstavnik dostupnih preko Uprava, Skupine, Svojstva).

                  + +

                  Redoslijed slaganja

                  + +

                  Odaberite ako će se koristiti pretpostavljeni redoslijed slaganja.

                  + +

                  Označite ako će se taj redoslijed primjeniti i na podskupine.

                  + +

                  Odaberite posebno slaganje po stupcima za korištenje kod ove skupine.

                  +
                    +
                  • Nadnevak izrade: Nadnevak stvaranja slike
                  • +
                  • Nadnevak postavljanja: Nadnevak usklađivanja
                  • +
                  • Prosječna ocjena (*): Prosječna ocjena se može mijenjati od strane posjetitelja
                  • +
                  • Najposjećenije (*): Trenutna posjeta mijenja redoslijed najposjećenijih
                  • +
                  • Naziv zapisa: Dano ime u obavijesnim poljima
                  • +
                  • Id: Unutarnja Id oznaka (novije skupine imaju veći id nego starije.
                  • + +
                  +

                  (*)Budite oprezni i prethodno isprobajte jer možete dobiti neočekivane ishode.

                  + + +

                  Predstavnik

                  + +

                  Predstavnik skupine je povezna sličica postavljena da predstavlja +skupinu na glavnoj stranici (category.php) kada skupina +sadrži samo podskupine (kao korijenska skupina).

                  + +

                  Postoje 4 načina za postavljanje slike predstavnika skupine :

                  + +
                    + +
                  • Stranica Slika: dugmad na traci postupaka, + jedan od njih omogućava postavljanje prikazane slike kao predstavnika skupine. ovo dugme je dostupno samo upravnicima.
                  • + +
                  • Izmjena podataka o slici u upravnom dijelu. Ovaj prozor dostupan preko picture.php ili Slijedna obrada u pojedinačnom načinu. Pogledajte sustav pomoći u ovom prozoru za pojedinosti.
                  • + +
                  • Uprava, Skupine, Svojstva, Predstavnik. Pogledajte sustav pomoći u ovom prozoru za pojedinosti.
                  • + +
                  • Uredi skupinu (ovaj prozor).
                  • + +
                  + +

                  Predstavljanje ovisi o postavkama stavke allow_random_representative (vidi include/config_default.inc.php).

                  + +

                  U pretpostavljenom načinu (allow_random_representative postavljen na false) +svaka skupina koja sadrži najmanje jednu stavku je predstavljena određenim predstavnikom. Jednom postavljen (pri stvaranju skupine), predstavnik se mijenja jedino +kada upravnik to zatraži. Ako predstavnik nije odgovarajući možete zatražiti Odabir novog predstavnika slučajnim pristupom.

                  + +

                  Ako je postavka allow_random_representative postavljena na true, skupina koja ima sadržaj ne može imati prepostavljenog prestavnika. +Jednostavno upotrijebite Izbriši predstavnika dugme.

                  + +

                  Ako skupina nema stavki (nego samo podskupine) može biti predstavljena bilo kojom +stavkom podskupina zahvaljujući prozoru Promijeni podatke o slici. Jedina mogućnost na trenutnom prozou je + Izbriši predstavnika dugme, a nakon birisanja, odabir predstavnika nije više dostupan.

                  + +

                  Poveži sve stavke skupine u novu skupinu

                  + +
                    + +
                  • Naziv nestvarne skupine: Novi naziv skupine će se odrediti, +sve slike trenutne skupine će se povezati sa novonastalom.
                  • + +
                  • Nadređena skupina: Gdje će se nova skupina nalaziti, ostavi prazno za postavu iz polazišta.
                  • + +
                  + +

                  Poveži sve stavke skupine sa nekim postojećim skupinama

                  + +
                    + +
                  • Skupine: Odaberite odredišnu skupinu.
                  • + +
                  + +

                  Pošalji e-mail obavijest članovima grupe

                  + +
                    + +
                  • Grupa: adrese grupe
                  • + +
                  • Sadržaj e-mail poruke: sadržaj po volji koji će se poslati.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/hr_HR/help/cat_move.html b/sources/language/hr_HR/help/cat_move.html new file mode 100644 index 0000000..3ef660b --- /dev/null +++ b/sources/language/hr_HR/help/cat_move.html @@ -0,0 +1,14 @@ +

                  Premještanje nestvarnih skupina

                  + +

                  Samo nestvarne skupine mogu imati novu nadređenu skupinu.

                  + +

                  Nestvarne skupine za premještaj

                  + +

                  Odaberite bilo koje nestvarne skupine koje želite premjestiti. +Ako je popis prazan, to znači da niste izradili ni jednu.

                  + +

                  Nova nadređena skupina

                  + +

                  Odaberite novu nadređenu skupinu (nestvarnu ili stvarnu). +Ukoliko ne odaberete, odabrane nestvarne skupine će se prebaciti u korijensku mapu. +Ne možete premještati skupinu u nju samu ili njoj podređenu skupinu.

                  \ No newline at end of file diff --git a/sources/language/hr_HR/help/cat_options.html b/sources/language/hr_HR/help/cat_options.html new file mode 100644 index 0000000..a0336e7 --- /dev/null +++ b/sources/language/hr_HR/help/cat_options.html @@ -0,0 +1,31 @@ +

                  Mogućnosti skupine

                  + +

                  Ovaj prozor omogućava upravniku upravljanje mogućnostima skupina za više njih odjednom.

                  + +
                  + +
                  Prebačaj
                  +
                  Postavi skupine otvorene za prebačaj slika posjetiteljima galerije. Prikazane su samo stvarne i mjesne skupine.
                  + +
                  Komentari
                  +
                  Ovlasti korisnicima za dodavanje komentara u odabranim skupinama. +Odabire skupine koje su otvorene za komentare. +Slika se može komentirati ako pripada najmanje jednoj skupini sa odobrenim komentiranjem.
                  + +
                  Zaključaj
                  +
                  Odabrane skupine će privremeno biti nedostupne zbog održavanja. Ako + zaključate skupinu, sve njoj podređene skupine se također zaključavaju. Ako otključavate + skupinu, sve njoj nadređene skupine se također otključavaju.
                  + +
                  Javno / osobno
                  +
                  Upravljanje ovlastima za odabrane skupine. Ako su odabrane skupine osobne + : trebate ovlastiti korisnike i/ili grupe za pristup. Ako postavite skupinu za osobnu, sve njoj nadređene skupine postaju osobne + . Ako postavite skupinu kao javnu, sve njene podređene skupine postaju javne.
                  + +
                  Prestavnik
                  +
                  Ovom mogučnošću se može upravljati samo ako je postavljena stavka + allow_random_representative (vidi include/config_defaults.inc.php) na + true. Svaka skupina se može predstaviti slikom slučajnog odabira ili baš određenom slikom.
                  + +
                  diff --git a/sources/language/hr_HR/help/cat_perm.html b/sources/language/hr_HR/help/cat_perm.html new file mode 100644 index 0000000..90e4b61 --- /dev/null +++ b/sources/language/hr_HR/help/cat_perm.html @@ -0,0 +1,14 @@ +

                  Upravljanje dozvolama (ovlastima) za skupinu

                  + +

                  Ovaj prozor je dostupan samo za osobne skupine. Ovdje možete odabrati korisnike +i grupe koji imaju dozvolu pristupa.

                  + +

                  Grupe

                  + +

                  Možete dati ili uskratiti dozvole grupama za trenutnu skupinu. Promjenom +grupnih ovlasti vjerojatno će te promijeniti popis odobrenih korisnika zahvaljujući grupnoj pripadnosti.

                  + +

                  Korisnici

                  + +

                  Možete dati ili uskratiti dozvole pojedinim korisnicima. Korisnici dozvoljeni grupnom pripadnošću mogu biti posebno +odobreni ili zabranjeni.

                  diff --git a/sources/language/hr_HR/help/configuration.html b/sources/language/hr_HR/help/configuration.html new file mode 100644 index 0000000..e3d7ab8 --- /dev/null +++ b/sources/language/hr_HR/help/configuration.html @@ -0,0 +1,111 @@ +

                  Podešavanje

                  + +

                  Ovaj prozor omogućava upravniku obavljanje osnovnih podešavanja. Zaista, ovaj +prozor prikazuje samo najosnovnije postavke podešavanja koje bi trebale biti dovoljne za +veliku većinu upravnika. Ako želite proučiti ostale brojne (i napredne) +postavke podešavanja, pregledajte zapis include/config_default.inc.php.

                  + +

                  Ovaj prozor je podijeljen u nekoliko odjeljaka, tematski preslaguje postavke podešavanja.

                  + + +

                  Glavo

                  +
                    +
                  • Naslov galerije: koristi se za RSS izvore i e-mail obavijesti.
                  • + +
                  • Baner stranice: prikazan na svakoj javnoj stranici.
                  • + +
                  • URL galerije: koristi se za RSS izvore.
                  • + +
                  • Zaključavanje galerije: Zaključavanje cjelokupne galerije zbog poslova održavanja. Jedino upravni korisnici mogu pristupiti galeriji.
                  • + +
                  • Ocjene: POcjenjivanje slika je omogućeno.
                  • + +
                  • Ocjenjivanje od gostiju: Čak i nepoznati posjetitelji mogu ocjenjivati slike.
                  • + +
                  • Dozvoli upis korisnika: Upis je odobren za sve.
                  • + +
                  • E-mail adresa je obvezna za sve korisnike: E-mail adresa će se provjeravati pri upisu ili izmjeni profila osim ako se postupak vrši preko upravnog dijela.
                  • + +
                  • E-mail poruka upravniku pri upisu novog korisnika: Upravnik će dobiti obavijesnu e-mail poruku pri svakom novom upisu.
                  • + +
                  + +

                  Povijest

                  + +

                  Posjete stranicama category.php i picture.php će biti pohranjene u + povijest tabeli.

                  + +

                  Posjete će biti vidljive u Uprava, Posebnosti, Povijest.

                  + +
                    +
                  • Pohrani posjete stranicama po gostima: posjete stranicama se vode po gostima.
                  • + +
                  • Pohrani posjete stranicama po korisnicima: posjete stranicama se vode po korisnicima.
                  • + +
                  • Pohrani posjete stranicama po upravnicima: posjete stranicama se vode po upravnicima.
                  • + +
                  + +

                  Komentari

                  +
                    + +
                  • Komentari za sve: Čak i obični posjetitelji mogu pisati komentare.
                  • + +
                  • Broj komentara po stranici.
                  • + +
                  • Ovjera: upravnik ovjerava komentare posjetitelja prije javne objave. Ovjera korisničkih kometara + se vrši u Uprava, Slike, Komentari.
                  • + +
                  • Pošalji e-mail obavijest po upisu kometara: +Šalje e-mail obavijesnu poruku upravnicima kada korisnici upišu komentare koji su već ovjereni.
                  • + +
                  • Pošalji e-mail obavijest kada komentar treba ovjeru: +Šalje e-mail obavijesnu poruku upravnicima kada korisnici upišu komentare koji trebaju biti ovjereni. +Ovjeri korisničkih komentara se pristupa preko Uprava, Slike, Komentari.
                  • + +
                  + +

                  Prebacivanje

                  +
                    +
                  • Prikaži poveznicu prebacivanja svaki put: Ako postoje skupine za prebacivanje, poveznica DODAJ će biti prikazana za svaku skupinu.
                  • +
                  • Korisnička razina pristupa za prebacivanje: Omogućava ograničavanje prebacivanja od korisnika
                  • +
                  • E-mail poruka upraviteljima po prebacivanju zapisa: Upravitelji će dobiti e-mail poruku za svaku prebačenu korisničku sliku.
                  • +
                  + +

                  Pretpostavljeni prikaz

                  + +

                  Ovdje možete mijenjati postavke prikaza korištene kao zadane, kada gost nije prijavljen. Jednom kada se prijavi, ove mogućnosti će biti promijenjene korisnički izabranima (izmjenjivo u profili).

                  + +

                  Moguće je promijeniti mogućnosti prikaza za sve korisnike, ali preko prozora is Uprava, Prijavnica, Korisnici, gdje prikaz možete odrediti za odabrani popis korisnika.

                  + +
                    + +
                  • Jezik: zahvaća samo sučelje Piwigo galerije. Nazivi skupina, slika i svi opisi nisu obuhvaćeno prijevodom.
                  • + +
                  • Broj slika po redu
                  • + +
                  • Broj redova po stranici
                  • + +
                  • Tema sučelja
                  • + +
                  • Nedavno razdoblje: Po danima. Razdoblje u kojem se prikazana slika smatra novom. Mora biti veće od 1 dan.
                  • + +
                  • Razgranaj sve skupine: Pretpostavljeno razgranati sve skupine u + izbornik? Pozor: ova mogućnost može opteretiti računalo poslužitelj i stvoriti ogromni izbornik ako vaše sustav sadrži mnogo skupina.
                  • + +
                  • Prikaži broj komentara: prikazuje broj komentara za svaku sliku na stranici poveznih sličica. Zahtjevno za poslužitelja.
                  • + +
                  • Prikaži broj posjeta: prikaži broj posjeta slici pravo ispod povezne sličice na stranici. + Samo kada je napredna postavka :
                    $conf['show_nb_hits'] = true;
                    + Obavijest: pretpostavljeno je false .
                  • + +
                  • Najveća širina slika: najveća dozvoljena širina. Ako je slika veča od ove postavke, biti će prilagođena pri prikazu. Ukoliko razmišljate o određivanju ove vrijednosti, možda bi bilo + bolje prilagoditi širinu vaših slika pri izradi umjesto ovog.
                  • + +
                  • Najveća visina slika: iste primjedbe kao ikod prethodne stavke.
                  • + +
                  + diff --git a/sources/language/hr_HR/help/extend_for_templates.html b/sources/language/hr_HR/help/extend_for_templates.html new file mode 100644 index 0000000..dfe1246 --- /dev/null +++ b/sources/language/hr_HR/help/extend_for_templates.html @@ -0,0 +1,100 @@ +

                  Extend for templates configuration

                  + +

                  Goal

                  +

                  Define replacement conditions for each template from template-extension +(template called "replacer").

                  + +

                  "original template" from ./template/yoga (or any other than yoga) + will be replaced by a "replacer" if the replacer is linked to this "original template" + (and optionally, when the requested URL contains an "optional URL keyword").

                  + +

                  "Optional URL keywords" are those you can find after the module name in URLs.

                  + +

                  Therefore "Optional URL keywords" can be an active "permalink" +(see permalinks in our documentation for further explanation).

                  + +

                  Read: `Warning` usage conditions.

                  + +

                  What are template extensions?

                  + +

                  This configuration tool is powerfull for beginners and advanced users. +By FTP, in the template-extension folder, the Webmaster can duplicate a lot of + the distributed .tpl files ("original template") with a different name + ("replacer"). + + "Original templates", current original supported templates are:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl and/or thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl and/or footer.tpl
                  • +
                  • picture_content.tpl and/or picture.tpl
                  • + +
                  • profile.tpl and/or profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl and/or search_rules.tpl
                  • +
                  • nbm.tpl and/or notification.tpl
                  • +
                  • identification.tpl and/or register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  Where can I find "original templates"?

                  + +

                  Distributed original templates are in template/yoga/ +(don't edit them in place for upgrade perspectives). So with "original templates", +any webmaster can create his "replacers (customized templates)".

                  + +

                  Where should I save "replacers"?

                  + +

                  Replacers (customized templates) must be placed in the +template-extension folder (or its subfolders). +Replacers can have any filename with the .tpl extension. For example: template-extension/my-extension/video.tpl.

                  + + +

                  How can I activate my "replacers"?

                  +

                  An original template should be assigned to each + replacer (customized templates) to activate the related replacements. + This is the goal of "Extend for templates" in the Configuration Administration menu.

                  + +

                  If you select an optional URL keyword then replacements +will be operate only on pages with this keyword. For example: index.php?/most_visited

                  + +

                  Advanced users will use permalinks as optional URL keyword.

                  + +

                  If you select a Bound template then replacements will be operate only on this template.

                  + +

                  How can I deactivate my "replacers"?

                  +
                    +
                  • Unselect related "Original templates".
                  • +
                  • By FTP delete of "replacers".
                  • +
                  + +

                  Warnings

                  +
                    + +
                  • Original template must be the "original" template + otherwise you could have unpredictable results!
                  • + +
                  • On several replacers (customized templates) with the + sameOriginal template and the same optional URL + keyword only the last replacer is active.
                  • + +
                  • Unselected optional URL keyword will active the replacer + on any template usage. As previous point, order can override previous + selected replacers.
                  • + +
                  • Subfolders: +Subfolders are ignored but they are usefull to change current order.
                    +distributed-samples: for test purpose are distributed! +Don't edit them create your own ones. +
                  • + +
                  • On delete of a replacer the Original template is + immediately reactivated.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/hr_HR/help/group_list.html b/sources/language/hr_HR/help/group_list.html new file mode 100644 index 0000000..aea35ab --- /dev/null +++ b/sources/language/hr_HR/help/group_list.html @@ -0,0 +1,22 @@ +

                  Popis grupa

                  + +

                  ovo je mjesto gdje možete upravljati postojećim grupama.

                  + +

                  Dodaj grupu

                  + +

                  Upravnik može dodavati grupe.

                  + +

                  Popis grupa

                  + +

                  Popis dozvoljava za svaku stavku da:

                  + + +
                    +
                  • idi na popis članova
                  • +
                  • idi na ovlasti
                  • +
                  • izbriši grupu (zahtijeva odabir potvrdne kućice)
                  • +
                  • promijeni "default" tj. pretpostavljeno stanje(zahtijeva odabir potvrdne kućice)
                  • +
                  + +

                  Pretpostavljene grupe

                  +

                  Pretpostavljene grupe su grupe koje se same povezuju sa novim korisnikom.

                  \ No newline at end of file diff --git a/sources/language/hr_HR/help/help_add_photos.html b/sources/language/hr_HR/help/help_add_photos.html new file mode 100644 index 0000000..956cd3c --- /dev/null +++ b/sources/language/hr_HR/help/help_add_photos.html @@ -0,0 +1,27 @@ +

                  Several ways to add your photos in your gallery:

                  + +
                    +
                  • Direct upload inside your web browser is the +simplest and most immediate way. It depends on your browser capabilities +and your web server. For a huge quantity of photos or in case you encounter some problem, +the other methods are just waiting for you!
                  • +
                  + + + +
                    +
                  • pLoader is a desktop application, to be installed on your computer. Drag & drop photos into pLoader window, click on "Upload to Piwigo" and let pLoader do the job. You can find other desktop applications such as WinToPiwigo or the Digikam export plugin to Piwigo.
                  • +
                  + + + +
                  +
                    +
                  • FTP transfer is the most recommended way to add a +very large collection of photos with a minimum number of clicks. Follow +the guide to prepare your photos. The FTP method let you control precisely +the physical organization of your photos on your server.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/hr_HR/help/history.html b/sources/language/hr_HR/help/history.html new file mode 100644 index 0000000..5ad9f5f --- /dev/null +++ b/sources/language/hr_HR/help/history.html @@ -0,0 +1,45 @@ +

                  History

                  + +

                  These screens allows you to follow the historical navigation en Piwigo +according to the options yo have chosen in - Administration - General - History index.

                  + +

                  Statistics

                  +
                    +

                    If you have chosen to keep the pages visited (index.php and picture.php) in the table history. +This index allow you to follow the pages visited.

                    + +
                  • Global statistics : you can visualize per year.
                  • + +
                  • Yearly statistics : you can visualize per month in the year selected.
                  • + +
                  • Monthly statistics : you can visualize per days in the month selected.
                  • + +
                  • Dayly statistics : you can visualize per hours in the day selected.
                  • + +
                  + +

                  Search

                  +
                    +

                    If you have chosen to keep the pages visited (index.php and picture.php) in the table history. +This index allow to follow en details the pages visited on the site with +the help of different filters.

                    + +
                  • Filter per date : chose interval of date you wisk + to observe the activity.
                  • + +
                  • Filter per type of element : chose the type + of element you wisk to observe the activity.
                  • + +
                  • Filter per user : chose user you wisk to + observe the activity.
                  • + +
                  • Filter per name of the file : chose name of the file + you wisk to observe the activity.
                  • + +
                  • Filter per identifying image : chose identifying image + you wisk to observe the activity.
                  • +
                  \ No newline at end of file diff --git a/sources/language/hr_HR/help/index.php b/sources/language/hr_HR/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/hr_HR/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/hr_HR/help/maintenance.html b/sources/language/hr_HR/help/maintenance.html new file mode 100644 index 0000000..e13630c --- /dev/null +++ b/sources/language/hr_HR/help/maintenance.html @@ -0,0 +1,62 @@ +

                  Maintenance

                  + +

                  To optimize page generation time, Piwigo uses cached +information. For example, instead of counting the number of pictures +contained in each category at each page reload, this information is stored +in the database. In theory, this information should always be correct, but +sometimes an error can occur and cached information becomes wrong.

                  + +

                  Some informations become useless with time. Deleting this useless +information from database make you save disk space.

                  + +
                    + +
                  • + Nepovezane stavke: + Prikaz slika koje nisu povezane ni s jednom nestvarnom skupinom. +
                  • +
                  • + Slike istog naziva u više od jednoj stvarnoj skupini: + Prikaz slika istog naziva koje se nalaze u više skupina. +
                  • + +
                  + +
                    + +
                  • Update categories informations: For each category, + informations to update or control are the following : list of parent + categories, number of pictures, date of the last picture, position among + brother categories, position among all categories. This action also checks + the coherence of representative picture.
                  • + +
                  • Update photos information: For each picture, + informations to update are : full path to file, average + rate. Warning: do not get confuse with metadata informations + which can be synchronized from Administration, + Categories, Synchronize or by reaching the modification screen of a + single picture (through Picture for + example).
                  • + +
                  • Repair and optimize database: + For each table, re-odrer, repair and optimize operations are done. +
                  • +
                  + +
                    +
                  • Purge history detail: Delete all lines from + history table. Screen Administration, + Specials, History shows no informations anymore on past + history. Warning: all data will be lost and there is no way to + get informations back.
                  • + +
                  • Purge history summary: Delete all the summary information about visit history. This summary is calculated from the history detail.
                  • + +
                  • Purge sessions: Delete expired user sessions.
                  • + +
                  • Purge never used notification feeds
                  • + +
                  • Purge search history
                  • + +
                  • Purge compiled templates
                  • +
                  diff --git a/sources/language/hr_HR/help/notification_by_mail.html b/sources/language/hr_HR/help/notification_by_mail.html new file mode 100644 index 0000000..60c2142 --- /dev/null +++ b/sources/language/hr_HR/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

                  Obavijesti e-mail porukama

                  + +

                  Ovaj prozor omogućaa postavu i upravljanje e-mail obavijestima korisnicima o novostima u vašoj galeriji.

                  + +

                  Sastoji se od 3 kartice:

                  + +

                  Parametri

                  +

                  Dostupno samo webmasterima, ova kartica postavlja parametre e-mail obavješćivanja.

                  + +

                  Pretplata

                  +

                  Dostupno samo webmasterima, ova kartica upravlja pretplatom/prekidom pretplate korisnika na e-mail obavijesti.

                  + +

                  Envoi

                  +

                  Dostupno samo webmasterima i upraviteljima, ova kartica omogućava slanje e-mail poruka za novosti.

                  + diff --git a/sources/language/hr_HR/help/permalinks.html b/sources/language/hr_HR/help/permalinks.html new file mode 100644 index 0000000..73b7b36 --- /dev/null +++ b/sources/language/hr_HR/help/permalinks.html @@ -0,0 +1,7 @@ +

                  Stalne poveznice

                  + +

                  Koriste se za ljepši prikaz URL-a skupine. Kada skupina ima određenu stalnu poveznicu, ID skupine nije više nužan u URL-u.

                  + +

                  Kada je stalna poveznica izbrisana, imate mogućnost pohraniti je u pismohrani poveznica, tako da vanjske poveznice na PWG stranice i dalje ispravno rade. U pismohrani stalnih poveznica možete vidjeti nadnevak kada je izbrisana, vrijeme posljednjeg korištenja i koliko puta.

                  + +

                  Zapamtite da stalna poveznica mora biti jedinstvena po skupini. Isto tako u pismohrani stalnih poveznica ne možete imati istu više puta.

                  diff --git a/sources/language/hr_HR/help/search.html b/sources/language/hr_HR/help/search.html new file mode 100644 index 0000000..f873797 --- /dev/null +++ b/sources/language/hr_HR/help/search.html @@ -0,0 +1,21 @@ +

                  Pretraživanje

                  + +

                  Ova stranica omogućava pretragu slika u cijeloj galeriji.

                  + +
                  + +
                  Pretraga po riječima
                  +
                  Pretažuje po upisanim riječima po svim obilježjima povezanim sa slikama prikazanim u galeriji. Koristite * kao zamijenu za djelomična poklapanja.
                  + +
                  Pretraga po autoru
                  +
                  Koristite * kao zamijenu za djelomična poklapanja.
                  + +
                  Pretaga po nadnevku
                  +
                  Odaberite nadnevak i/ili završni nadnevak za vašu pretragu. Ostavite nadnevak prazan + za pretragu "prethodnih" upita. Godina mora biti upisana u zadnje polje u slijedećem obliku : 0000 (i.e. 2009)
                  + +
                  Pretraga u skupinama
                  +
                  Odaberite skupinu ili skupine koje želite pretražiti. Za bržu pretragu sve podskupine + mogu biti pretraživane odabirom nadređene skupine i uključenjem mogućnosti pretrage podskupina ispod.
                  + +
                  diff --git a/sources/language/hr_HR/help/synchronize.html b/sources/language/hr_HR/help/synchronize.html new file mode 100644 index 0000000..98c82fb --- /dev/null +++ b/sources/language/hr_HR/help/synchronize.html @@ -0,0 +1,11 @@ +

                  Usklađivanje

                  + +

                  Dvije su mogućnosti usklađivanja: mape/zapisi i meta podatci +zapisa. mape/zapisi vrše usklađivanje stabla mapa sa skupinskim stablom u bazi podataka. +Meta podatci usklađuju obavijesne stavke kao što su veličina zapisa, veličina slika u pikselima, EXIF ili IPTC +podatke.

                  + +

                  Prvo usklađivanje mora biti ono od mape/zapisi vrste.

                  + +

                  Postupak usklađivanja može potrajati i malo duže (ovisno o opterećenju poslužitelja i količini +stavaka za obradu) pa je omogućeno da se napreduje korak po korak: skupinu po skupinu.

                  diff --git a/sources/language/hr_HR/help/user_list.html b/sources/language/hr_HR/help/user_list.html new file mode 100644 index 0000000..cc5eca3 --- /dev/null +++ b/sources/language/hr_HR/help/user_list.html @@ -0,0 +1,33 @@ +

                  Popis korisnika

                  + +

                  Ovo je mjesto gdje možete upravljati upisanim korisnicima. Jedino se ovlastima +upravlja u nekim drugim prozorima.

                  + +

                  Dodaj korisnika

                  + +

                  Upravnik može ručno dodavati korisnike.

                  + +

                  Popis korisnika

                  + +

                  Popis može biti pročišćen na korisničko ime (koristite * kao zamjenu), grupu ili +stanje. Popis može biti poredan po nadnevku upisa ili korisničkom imenu, uzlaznim +ili silaznim redoslijedom.

                  + +

                  Ovaj prozor omogućava upravljenje nekolicinom korisnika odjednom na različitim postupcima +:

                  + +
                    + +
                  • brisanje korisnika (zahtijeva potvrdnu kućicu)
                  • + +
                  • promjena stanja
                  • + +
                  • uklučenje ili isključenje u-iz grupa
                  • + +
                  • prilagodba svojstava prikaza
                  • + +
                  • promjena dodatnih svojstava
                  • + +
                  + +

                  Svrha je postaviti korisnike kao odabrane (pretpostavljeno) ili se svi korisnici pitaju.

                  diff --git a/sources/language/hr_HR/hr_HR.jpg b/sources/language/hr_HR/hr_HR.jpg new file mode 100644 index 0000000..9089cd6 Binary files /dev/null and b/sources/language/hr_HR/hr_HR.jpg differ diff --git a/sources/language/hr_HR/index.php b/sources/language/hr_HR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/hr_HR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/hr_HR/install.lang.php b/sources/language/hr_HR/install.lang.php new file mode 100644 index 0000000..e9f9436 --- /dev/null +++ b/sources/language/hr_HR/install.lang.php @@ -0,0 +1,67 @@ +Piwigo message board.'] = 'Trebate pomoć? Pitajte na Piwigo message board.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Posjetitelji će moći pisati upravitelju galerije preko ove adrese'; +$lang['PHP 5 is required'] = 'PHP 5 je obvezan'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Čini se da vaše web mjesto trenutno koristi PHP inačicu %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo će pokušati podesiti sustavne postavke na PHP 5 izradom ili prilagodbom .htaccess zapisa.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Ne zaboravite da možete i sami promijeniti postavke te potom ponovo pokrenuti Piwigo.'; +$lang['Try to configure PHP 5'] = 'Pokušaj podešavanja PHP 5'; +$lang['Sorry!'] = 'Nažalost!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nije u mogućnosti podesiti PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Trebate se obratiti vašem davatelju usluge smještaja za upute na koji se način možete prebaciti na PHP 5 samostalno.'; +$lang['Hope to see you back soon.'] = 'Do skorog viđenja.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Čestitamo, Piwigo ugradnja je dovršena'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Druga mogućnost je da kopirate tekst u prostoru poviše i prebacite ga u zapis "local/config/database.inc.php" (Pozor :u database.inc.php smije se prebaciti samo tekst iz kućice bez znakova novog reda ili praznog prostora)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Izrada local/config/database.inc.php nije uspjela.'; +$lang['Download the config file'] = 'Preuzmi zapis podešavanja'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Možete preuzeti zapis sustavnog podešavanja i prebaciti ga u local/config mapu vaše ugradnje.'; +$lang['Just another Piwigo gallery'] = 'Samo još jedna Piwigo galerija'; +$lang['Welcome to my photo gallery'] = 'Dobrodošli u moju fotogaleriju'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ukoliko trebate pomoć slobodno pitajte na forumu: %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'Dobrodošli na vašu novu Piwigo instalaciju!'; +?> \ No newline at end of file diff --git a/sources/language/hr_HR/iso.txt b/sources/language/hr_HR/iso.txt new file mode 100644 index 0000000..71a966e --- /dev/null +++ b/sources/language/hr_HR/iso.txt @@ -0,0 +1 @@ +Hrvatski [HR] \ No newline at end of file diff --git a/sources/language/hr_HR/upgrade.lang.php b/sources/language/hr_HR/upgrade.lang.php new file mode 100644 index 0000000..0f25b86 --- /dev/null +++ b/sources/language/hr_HR/upgrade.lang.php @@ -0,0 +1,42 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Izvršite radnu provjeru [Uprava>Alati>Održavanje] u slučaju bilo kakvih problema.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Samo upravnik može pokrenuti nadogradnju: molimo, prijavite se dolje.'; +$lang['You do not have access rights to run upgrade'] = 'Nemate pristupna prava za pokretanje nadogradnje'; +$lang['All sub-albums of private albums become private'] = 'Sve podskupine osobnih skupina postaju osobne'; +$lang['User permissions and group permissions have been erased'] = 'Korisničke i grupne dozvole su izbrisane'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Jedino su predznaci poveznih sličica i webmaster-ova e-mail adresa sačuvane iz prethodne postave'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Na ovoj stranici imate prijedlog nadogradnje baze podataka sa vaše starije inačice na novu. Pomoćnik nadogradnje smatra da trenutno koristite inačicu %s (ili sličnu).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Kao mjera predostrožnosti, slijedeći dodaci su isključeni. Provjerite dostupne nadogradnje dodataka prije njihovog ponovnog uključenja:'; +$lang['In %s, before ?>, insert:'] = 'U %s, prije ?>, ubaci:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Sljedeće teme su preventivno deaktivirane. Prije ponovnog aktiviranja morate provjeriti postoje li nadogradnje:'; + +?> \ No newline at end of file diff --git a/sources/language/hu_HU/README.txt b/sources/language/hu_HU/README.txt new file mode 100644 index 0000000..583b1e9 --- /dev/null +++ b/sources/language/hu_HU/README.txt @@ -0,0 +1,6 @@ +Piwigo Hungarian language files +author: Smli CMS Award .HU Team +website: http://cmsaward.hu +e-mail: info@cmsaward.hu + +update : 26/10/2009 \ No newline at end of file diff --git a/sources/language/hu_HU/about.html b/sources/language/hu_HU/about.html new file mode 100644 index 0000000..29d4f94 --- /dev/null +++ b/sources/language/hu_HU/about.html @@ -0,0 +1,15 @@ +

                  A képgaléria alapja a Piwigo galéria rendszer.

                  + +

                  A Piwigo egy aktív közösség (felhasználók és fejlesztők) által épülő webes képgaléria. + A Piwigo könnyű testreszabhatóságát extra bővítmények biztosítják. + A hab a tortán, hogy a Piwigo nyílt forráskódú és ingyenes.

                  + +

                  Látogasson el a Piwigo magyar nyelvű honlapjára

                  + +

                  A Piwigo magyar fordításának karbantartói (ABC sorrendben): + +

                  + .... köszönjük munkájukat

                  + diff --git a/sources/language/hu_HU/admin.lang.php b/sources/language/hu_HU/admin.lang.php new file mode 100644 index 0000000..e87f8ec --- /dev/null +++ b/sources/language/hu_HU/admin.lang.php @@ -0,0 +1,971 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'A pLoader a Piwigo Uploader rövidítése. A pLoader segítségével elvégezheti számítógépén a képek előkészítését, majd feltöltheti azokat a Piwigo galériájába.'; +$lang['Guest Settings'] = 'Vendég beállításai'; +$lang['Main Page'] = 'Főoldal'; +$lang['Photo Page'] = 'Kép oldal'; +$lang['Activate Navigation Bar'] = 'Navigációs sáv bekapcsolása'; +$lang['Activate Navigation Thumbnails'] = 'Navigációs bélyegképek bekapcsolása'; +$lang['Activate icon "%s"'] = 'Ikon bekapcsolása "%s"'; +$lang['Photo Properties'] = 'Kép tulajdonságok'; +$lang['Allow user customization'] = 'Testreszabás engedélyezése a felhasználóknak'; +$lang['Languages'] = 'Nyelvek'; +$lang['Installed Languages'] = 'Telepített nyelvek'; +$lang['Add New Language'] = 'Új nyelv hozzáadása'; +$lang['Language has been successfully installed'] = 'A nyelv telepítése sikeresen megtörtént'; +$lang['Select:'] = 'Kiválaszt:'; +$lang['None'] = 'Egyik sem'; +$lang['Invert'] = 'Felcserél'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nem lehet kikapcsolni ezt a témát, szükség van legalább még egy aktív témára.'; +$lang['Webmaster status is required.'] = 'Webmester jogosultság szükséges.'; +$lang['Bound Theme'] = 'Fix Téma'; +$lang['Allow rating'] = 'Értékelés engedélyezése'; +$lang['Select at least one comment'] = 'Legalább egy hozzászólást ki kell választani'; +$lang['Active Plugins'] = 'Bekapcsolt bővítmények'; +$lang['Inactive Plugins'] = 'Kikapcsolt Bővítmények'; +$lang['Missing Plugins'] = 'Hiányzó bővítmények'; +$lang['Uninstalled Plugins'] = 'Törölt bővítmények'; +$lang['By %s'] = 'Szerző: %s'; +$lang['Visit plugin site'] = 'Ugrás a bővítmények weboldalra'; +$lang['Active Languages'] = 'Bekapcsolt nyelvek'; +$lang['Delete this language'] = 'Nyelv törlése'; +$lang['Forbid this language to users'] = 'A nyelv tiltása'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Ezt a nyelvet jelenleg nem lehet kikapcsolni, előbb válasszon egy másik nyelvet alapértelmezettnek.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Ezt a nyelvet jelenleg nem lehet kikapcsolni, legalább egy nyelvre szükség van.'; +$lang['Inactive Languages'] = 'Kikapcsolt nyelvek'; +$lang['Make this language available to users'] = 'A nyelv engedélyezése'; +$lang['Set as default language for unregistered and new users'] = 'Nyelv beállítása alapértelmezettként nem regisztrált és új felhasználók részére'; +$lang['Add Photos'] = 'Képek hozzáadása'; +$lang['The following tag was deleted'] = 'Címke törlése sikeres'; +$lang['Miscellaneous'] = 'Egyéb'; +$lang['Virtual Links'] = 'Virtuális linkek'; +$lang['There is no other language available.'] = 'Egyéb nyelv nem áll rendelkezésre.'; +$lang['There is no other plugin available.'] = 'Egyéb bővítmény nem áll rendelkezésre.'; +$lang['There is no other theme available.'] = 'Egyéb téma nem áll rendelkezésre.'; +$lang['Add another set of photos'] = 'További kép hozzáadása'; +$lang['By rank'] = 'Értékelés szerint'; +$lang['Manual order'] = 'Kézi rendezés'; +$lang['Order of menubar items has been updated successfully.'] = 'A menüsor elemei sikeresen frissítve.'; +$lang['This theme was not designed to be directly activated'] = 'Ezt a témát úgy tervezték, hogy közvetlenül nem aktiválható'; +$lang['Pending Comments'] = 'Hozzászólások (függőben)'; +$lang['Who can see this photo?'] = 'Ki láthatja ezt a képet?'; +$lang['Menu Management'] = 'Menü'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'A php.ini fájlban az upload_max_filesize (%sB) nagyobb, mint a post_max_size (%sB), módosítania kell a beállítást'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif-kiterjesztés nem érhető el, az adminisztrátor tiltsa le az exif használatát'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'A feltöltendő fájl meghaladja a php.ini-ben megadott upload_max_filesize értéket: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'A feltöltendő fájlok meghaladják a php.ini-ben megadott post_max_size értéket: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'A feltöltendő fájl meghaladja a HTML formában megadott MAX_FILE_SIZE értéket'; +$lang['The uploaded file was only partially uploaded'] = 'A feltöltendő fájl csak részben töltődött fel'; +$lang['No file was uploaded'] = 'A feltöltés sikertelen'; +$lang['Missing a temporary folder'] = 'Hiányzik a temporary mappa'; +$lang['Failed to write file to disk'] = 'Nem sikerült a fájlt a lemezre írni'; +$lang['File upload stopped by extension'] = 'Fájlfeltöltést leállította a kiterjesztés'; +$lang['Unknown upload error'] = 'Ismeretlen feltöltési hiba'; +$lang['Error on file "%s" : %s'] = 'Hibás a fájl "%s" : %s'; +$lang['automatic order'] = 'Automatikus rendezés'; +$lang['manual order'] = 'Kézi rendezés'; +$lang['Albums automatically sorted'] = 'Automatikusan rendezett albumok'; +$lang['Batch Manager'] = 'Kötegelt kezelés'; +$lang['include child albums'] = 'belső albumok is'; +$lang['Selection'] = 'Kiválasztás'; +$lang['Action'] = 'Művelet'; +$lang['Set author'] = 'Szerző hozzáadása'; +$lang['Set title'] = 'Cím hozzáadása'; +$lang['Set creation date'] = 'Készítés dátumának hozzáadása'; +$lang['Apply action'] = 'Művelet végrehajtása'; +$lang['on the %d selected photos'] = 'a kiválasztott %d képen'; +$lang['%d of %d photos selected'] = '%d kép kiválasztva, összes kép %d'; +$lang['No photo selected, %d photos in current set'] = 'Nincs kép kiválasztva, összes kép %d'; +$lang['All %d photos are selected'] = 'Összes, %d kép kiválasztva'; +$lang['remove this filter'] = 'a szűrő eltávolítása'; +$lang['Duplicates'] = 'Duplikált'; +$lang['Add a filter'] = 'Szűrő hozzáadása'; +$lang['Remove all filters'] = 'Összes szűrő törlése'; +$lang['Refresh photo set'] = 'Képek frissítése'; +$lang['The whole page'] = 'Összes kép az oldalon'; +$lang['The whole set'] = 'A teljes képkészlet'; +$lang['No photo in the current set.'] = 'Nem található a feltételnek megfelelő kép.'; +$lang['No photo selected, no action possible.'] = 'Nincs kép kiválasztva, nem lehet műveletet végezni.'; +$lang['Choose an action'] = 'Művelet kiválasztása'; +$lang['remove author'] = 'szerző törlése'; +$lang['Type here the author name'] = 'Írja be a szerző nevét'; +$lang['remove title'] = 'cím törlése'; +$lang['Type here the title'] = 'Írja be a kép címét'; +$lang['remove creation date'] = 'készítés időpontjának törlése'; +$lang['Album photos associated to the following albums: %s'] = 'Az albumban lévő képek hozzárendelve a következő albumokhoz: %s'; +$lang['Delete orphan tags'] = 'Árva címkék törlése'; +$lang['delete photo'] = 'Kép törlése'; +$lang['Orphan tags deleted'] = 'Árva címkék törölve'; +$lang['Week starts on'] = 'A hét első napja'; +$lang['You have %d orphan tags: %s.'] = '%d árva címke található: %s.'; +$lang['Remove from caddie'] = 'Eltávolítás a kosárból'; +$lang['Themes which need upgrade'] = 'Frissítést igénylő témák'; +$lang['Languages which need upgrade'] = 'Frissítést igénylő nyelvek'; +$lang['All themes are up to date.'] = 'Minden téma naprakész.'; +$lang['All plugins are up to date.'] = 'Minden bővítmény naprakész.'; +$lang['All languages are up to date.'] = 'Minden nyelv naprakész.'; +$lang['Visit theme site'] = 'Téma oldal meglátogatása'; +$lang['Visit language site'] = 'Nyelv oldal meglátogatása'; +$lang['New Version'] = 'Új verzió'; +$lang['Obsolete Plugins'] = 'Elavult bővítmények'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'FIGYELEM! Ez a bővítmény nem kompatibilis a Piwigo jelenleg futó verziójával.'; +$lang['Do you want to activate anyway?'] = 'Aktiváljuk mindenképp?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'EZ A BŐVÍTMÉNY MÁR BE VAN ÉPÍTVE A PIWIGO RENDSZERBE! ELTÁVOLÍTANDÓ!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'HIBA: EZ A BŐVÍTMÉNY NEM ELÉRHETŐ, DE TELEPÍTVE VAN! ELTÁVOLÍTANDÓ!'; +$lang['display'] = 'kijelző'; +$lang['Thumbnails generation in progress...'] = 'Bélyegképek generálása folyamatban...'; +$lang['new'] = 'új'; +$lang['No results'] = 'Nincs találat'; +$lang['Searching...'] = 'Keresés...'; +$lang['Type in a search term'] = 'Írja be a keresett kifejezést'; +// missing translations +$lang['Deactivate all'] = 'Összes kikapcsolása'; +$lang['Restore'] = 'Visszaállítás'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Alapértelmezett beállítások visszaállítása. Figyelem, a bővítmény módosításai elvesznek!'; +$lang['Show menubar'] = 'Menüsáv megjelenítése'; +$lang['Photos generation in progress...'] = 'Képek újragenerálása folyamatban...'; +$lang['%s photos have been regenerated'] = '%s kép újragenerálva'; +$lang['%s photos can not be regenerated'] = '%s képet nem lehet újragenerálni'; +$lang['Updates'] = 'Frissítések'; +$lang['Update in progress... Please wait.'] = 'Frissítés folyamatban... Kérem várjon.'; +$lang['Ignore this update'] = 'Hagyja figyelmen kívül'; +$lang['Reset ignored updates'] = 'Mellőzés törlése'; +$lang['Update All'] = 'Összes frissítése'; +$lang['ERROR'] = 'HIBA'; +$lang['Update Complete'] = 'Frissítés kész'; +$lang['Piwigo Update'] = 'Piwigo frissítés'; +$lang['Extensions Update'] = 'Bővítmény frissítés'; +$lang['All extensions are up to date.'] = 'Az összes bővítmény naprakész.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'A következő bővítmények nem kompatibilisek az új Piwigo verzióval:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'A következő témák nem kompatibilisek az új Piwigo verzióval:'; +$lang['I decide to update anyway'] = 'Határozhat úgy, hogy frissít mindenképp'; +$lang['Update to Piwigo %s'] = 'Frissítés a Piwigo %s verziójára'; +$lang['Two updates are available'] = 'Kétféle frissítés érhető el'; +$lang['This is a minor update, with only bug corrections.'] = 'Egy kisebb frissítés, kizárólag hibajavítás.'; +$lang['This is a major update, with new exciting features.'] = 'Egy jelentős frissítés, új, kibővített funkciókkal.'; +$lang['Some themes and plugins may be not available yet.'] = 'Lehet, hogy néhány téma és bővítmény még nem áll rendelkezésre.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Lehetőség van közvetlenül frissíteni a Piwigo %s verziójára, kihagyva a Piwigo %s verzióját (ajánlott).'; +$lang['Save Template Directory'] = 'Template könyvtár mentése'; +$lang['Dump Database'] = 'Adatbázis mentése'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Előzmények mentése (Figyelem: lehet, hogy a szerver beállított memória limitjét túllépi)'; +$lang['Unable to dump database.'] = 'Nem lehet biztonsági másolatot készíteni az adatbázisról.'; +$lang['Some upgrades are available for extensions.'] = 'Frissítéseket találtam egyes kiterjesztésekhez.'; +$lang['Ignore All'] = 'Összes mellőzése'; +$lang['Crop'] = 'Körbevágás'; +$lang['Width'] = 'Szélesség'; +$lang['Height'] = 'Magasság'; +$lang['Follow Orientation'] = 'Elforgatható'; +$lang['Graphics Library'] = 'Grafikus könyvtár'; +$lang['Activate icon "new" next to albums and pictures'] = '"új" ikon aktiválása az albumok és képek mellett'; +$lang['Default photos order'] = 'Alapértelmezett kép sorrend'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Az alapértelmezett kép sorrend nem határozható meg a helyi konfigurációban található egyéni beállítás miatt.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'A helyi konfigurációs fájlban lévő $conf[\'order_by\'] paraméter elavult, távolítsa el, vagy nevezze át $conf[\'order_by_custom\']-ra !'; +$lang['Add a criteria'] = 'Feltétel hozzáadása'; +$lang['Average rate'] = 'Átlagos pontszám'; +$lang['Rate'] = 'Érték'; +$lang['... or '] = '... vagy'; +$lang['Create'] = 'Létrehoz'; +$lang['Start Upload'] = 'Feltöltés indítása'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Jelenleg a Flash alapú feltöltőt használja. Ha problémát észlel váltson át a Böngésző alapú feltöltésre.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Jelenleg a Böngésző alapú feltöltőt használja. Próbálja ki a Flash alapú feltöltőt.'; +$lang['Maximum file size: %sB.'] = 'Maximális fájlméret: %sB.'; +$lang['Allowed file types: %s.'] = 'Engedélyezett fájltípusok: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Becsült maximális felbontás: %dMpixel (%dx%d pixel).'; +$lang['Manage Permissions'] = 'Jogosultságok kezelése'; +$lang['Photo %s of %s'] = '%s kép feltöltése, összes kép %s'; +$lang['show details'] = 'részletek megjelenítése'; +$lang['hide details'] = 'részletek elrejtése'; +$lang['Merge tags'] = 'Címkék összevonása'; +$lang['Select the destination tag'] = 'Válassza ki a kívánt címkét'; +$lang['(this tag will be deleted)'] = '(ez a címke törlésre kerül)'; +$lang['Confirm merge'] = 'Összevonás megerősítése'; +$lang['Merge selected tags'] = 'Kiválasztott címkék összevonása'; +$lang['No destination tag selected'] = 'Nincs kijelölt címke'; +$lang['Tags %s merged into tag %s'] = '%s címke (címkék) összevonva a(z) %s címkével'; +$lang['Select at least two tags for merging'] = 'Válasszon ki legalább két címkét'; +$lang['Learn more'] = 'Bővebben'; +$lang['Select an album'] = 'Válasszon ki egy albumot'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Alapértelmezésben a Piwigo a HD (high definition) képből létrehoz egy web méretű képet.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Amennyiben nincs HD kép és a rendelkezésre álló web méretű kép nagyobb mint az aktuális átméretezett kép méretek, a jelenlegi képet a rendszer átmozgatja HD képnek és létrehoz egy új web méretű képet.'; +$lang['An error has occured during upgrade.'] = 'Hiba történt frissítés közben.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Hibajelentés (Információ). Kérjük ellenőrizze a telepített fájlok jogosultságait.
                  További információkért kattintson ide.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Nem tudom letölteni a frissítést a Piwigo fájl szerverről'; +$lang['Zoom'] = 'Zoom'; +$lang['Downloads'] = 'Letöltés'; +$lang['Photo name'] = 'Képnév'; +$lang['Download,'] = 'Letöltés,'; +$lang['Activate comments'] = 'Hozzászólások aktiválása'; +$lang['Original Size'] = 'Eredeti méret'; +$lang['Resize after upload'] = 'Feltöltés után átméretezés'; +$lang['Send connection settings by email'] = 'Kapcsolat beállításainak küldése e-mailben'; +$lang['The original image quality must be a number between %d and %d'] = 'Az eredeti kép minősége %d és %d között lehet'; +$lang['The original maximum height must be a number between %d and %d'] = 'Az eredeti magasság %d és %d között lehet'; +$lang['The original maximum width must be a number between %d and %d'] = 'Az eredeti szélesség %d és %d között lehet'; +$lang['Default comments order'] = 'Alapértelmezett hozzászólás-rend'; +$lang['administrators'] = 'adminisztrátorok'; +$lang['registered users'] = 'regisztrált felhasználók'; +$lang['Save visits in history for'] = 'Látogatások előzményeinek mentése'; +$lang['simple visitors'] = 'egyszerű látogatók'; +$lang['A locked gallery is only visible to administrators'] = 'A lezárt galériát csak az adminisztrátorok láthatják'; +$lang['Gallery unlocked'] = 'Galéria feloldva'; +$lang['Notify administrators when a comment is'] = 'Adminisztrátor értesítése hozzászólás érkezésekor'; +$lang['Unlock gallery'] = 'Galéria lezárásának feloldása'; +$lang['modified'] = 'módosítva'; +$lang['pending validation'] = 'jóváhagyásra váró'; +$lang['This album contains no photo.'] = 'Ez az album nem tartalmaz képeket.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Az albumban %d kép található. Feltöltés időpontja: %s és %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Az albumban %d kép található. Feltöltés időpontja: %s.'; +$lang['%s has been successfully updated.'] = '%s frissítése sikeres'; +$lang['Applications'] = 'Alkalmazások'; +$lang['apply automatic sort order'] = 'automatikus rendezés alkalmazása'; +$lang['Automatic sort order'] = 'Automatikus rendezés'; +$lang['Cancel'] = 'Mégse'; +$lang['List'] = 'Lista'; +$lang['Move to album'] = 'Áthelyezés másik albumba'; +$lang['Web Form'] = 'Webes űrlap'; +$lang['Add tags'] = 'Címkék hozzáadása'; +$lang['Add to caddie'] = 'Kosárba tesz'; +$lang['Last import'] = 'Utolsó import'; +$lang['Predefined filter'] = 'Előre definiált szűrők'; +$lang['With no album'] = 'Nem albumban'; +$lang['With no tag'] = 'Nem címkézett'; +$lang['With no virtual album'] = 'Nem virtuális albumban'; +$lang['Center of interest'] = 'Fókuszban'; +$lang['custom'] = 'Egyéni'; +$lang['Delete multiple size images'] = 'Eltérő méretű képek törlése'; +$lang['Generate multiple size images'] = 'Eltérő méretű képek létrehozása'; +$lang['any visitor can see this album'] = 'mindenki láthatja az albumot'; +$lang['Groups and users'] = 'Csoportok és felhasználók'; +$lang['Permission granted for groups'] = 'Engedéllyel rendelkező csoportok'; +$lang['Permission granted for users'] = 'Engedéllyel rendelkező felhasználók'; +$lang['Select groups...'] = 'Csoportok kiválasztása...'; +$lang['Select users...'] = 'Felhasználók kiválasztása...'; +$lang['There is no group in this gallery.'] = 'Nincs csoport ebben a galériában.'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'a látogatóknak be kell jelentkezniük és megfelelő engedéllyel kell rendelkezniük az album megtekintéséhez'; +$lang['Apply watermark if height is bigger than'] = 'Vízjel alkalmazása, ha a magasság nagyobb mint'; +$lang['Apply watermark if width is bigger than'] = 'Vízjel alkalmazása, ha a szélesség nagyobb mint'; +$lang['bottom left corner'] = 'bal alsó sarokban'; +$lang['bottom right corner'] = 'jobb alsó sarokban'; +$lang['middle'] = 'középen'; +$lang['Opacity'] = 'Áttetszőség'; +$lang['Permission management'] = 'Engedélyek kezelése'; +$lang['Select a file'] = 'Válasszon ki egy fájlt'; +$lang['top left corner'] = 'bal felső sarokban'; +$lang['top right corner'] = 'jobb felső sarokban'; +$lang['X Position'] = 'X pozíció'; +$lang['X Repeat'] = 'X ismétlődés'; +$lang['Y Position'] = 'Y pozíció'; +$lang['Available on'] = 'Elérhető'; +$lang['Available versions for'] = 'Elérhető verziók'; +$lang['add a new watermark'] = 'új vízjel hozzáadása'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'A Piwigo for Android alkalmazás segítségével csatlakozhat Piwigo galériájához telefonjával vagy táblagépével, létrehozhat új albumokat, feltölthet képeket (egyszerre akár többet is) képgalériájába.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'A Piwigo for iOS alkalmazás segítségével csatlakozhat Piwigo galériájához iPhone, iPad vagy iPod Touch eszközével, létrehozhat új albumokat, feltölthet képeket (egyszerre akár többet is) képgalériájába.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Az Adobe Photoshop Lightroom egy képkezelő program, melyet nagy mennyiségű digitális kép utómunkálataihoz és kezeléséhez terveztek.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Jellemzői: galéria böngészés, album létrehozás, képek feltöltése.'; +$lang['Multiple Size'] = 'Kép méretek'; +$lang['No group is permitted to see this private album'] = 'Nincs engedélyezett csoport a privát albumhoz'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Egyszerűen telepítheti a Linux csomagkezelője segítségével, majd könnyedén beállíthatja Piwigo galériájának eléréséhez.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Lightroom feltöltő'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo iPhoto feltöltő'; +$lang['Piwigo for Android'] = 'Piwigo Androidon'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS-en (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Shotwell feltöltő'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo digiKam feltöltő'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'A ReGalAndroid (RemoteGallery kliens Androidra) egy nyílt forráskódú (GPL v3) Piwigo kliens Android platformra.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'A Shotwell egy nyílt forráskódú képszerkesztő, melyet Linux alapú rendszerekhez terveztek. Alapértelmezett szerkesztő Ubuntuban és Fedoraban.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'A Piwigo export bővítmény lehetővé teszi albumok, képek feltöltését.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'A Piwigo publish Plug-in lehetőséget biztosít arra, hogy a Lightroom program segítségével töltsön fel képeket, szinkronizálja képeit Piwigo galériájába.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Ahhoz, hogy Piwigo rendszerébe exportálhassa fotóit a digiKam segítségével, telepítenie kell a KIPI-plugins csomagot.'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'A digiKam egy fejlett, ingyenes képkezelő program Linux, Windows és MacOSX alá.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'A digiKam programot fotósoknak tervezték, megtekintheti, kezelheti, szerkesztheti, javíthatja, rendszerezheti, címkézheti és megoszthatja képeit.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'Az iPhoto a MacOSX rendszer alapértelmezett képszerkesztője. A Piwigo feltöltő modul segítségével létrehozhat új albumokat és feltöltheti képeit a Piwigo galériába.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Alapértelmezésben a kivágás középpontja az adott kép középpontja.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Az egérrel kijelölhető az a rész, amellyel a számunkra fontos részt állítjuk a középpontba.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Az érdeklődés középpontjában leggyakrabban a kép egyik részlete áll.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u felhasználónak van automatikus engedélye, mert egy megadott csoporthoz tartoznak.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Az Aperture egy Mac rendszerre fejlesztett professzionális eszköz képek szerkesztéséhez, nagy méretű könyvtárak kezeléséhez.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Az Aperture az Iphoto logikus felépítését biztosítja profi fotósoknak.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Egy kép kivágásakor, mint pl. a "Négyzet" alakú kivágásnál, a Piwigo lehetőséget biztosít a megfelelő rész kiemeléséhez.'; +$lang['Not cropped correctly?'] = 'Nem vágott helyesen?'; +$lang['Photo sizes with crop'] = 'Kép méretek körbevágáshoz'; +$lang['Piwigo export plugin for Aperture'] = 'Aperture Piwigo export bővítmény'; +$lang['Save manual order'] = 'Egyéni beállítások mentése'; +$lang['You can activate only one mobile theme.'] = 'Aktiválhatja csak a mobil témát.'; +$lang['cancel manual order'] = 'Egyéni beállítások elvetése'; +$lang['include photos with lower privacy level'] = 'alacsonyabb adatvédelmi szinttel rendelkező képeket tartalmaz'; +$lang['%d day'] = '%d nappal'; +$lang['%d days'] = '%d nappal'; +$lang['%d hour'] = '%d órával'; +$lang['%d hours'] = '%d órával'; +$lang['%d minute'] = '%d perccel'; +$lang['%d minutes'] = '%d perccel'; +$lang['%d month'] = '%d hónappal'; +$lang['%d months'] = '%d hónappal'; +$lang['%d second'] = '%d másodperccel'; +$lang['%d seconds'] = '%d másodperccel'; +$lang['%d year'] = '%d évvel'; +$lang['%d years'] = '%d évvel'; +$lang['%s ago'] = '%s ezelőtt,'; +$lang['%s in the future'] = '%s a jövőben'; +$lang['Added by %s'] = 'Feltöltötte: %s'; +$lang['Numeric identifier : %d'] = 'Azonosító szám(ID) : %d'; +$lang['Original file : %s'] = 'Eredeti fájl : %s'; +$lang['Posted %s on %s'] = 'Közzétéve %s ekkor: %s'; +$lang['Rated %d times, score : %.2f'] = 'Értékelve %d alkalommal, pontszám : %.2f'; +$lang['Sharpen'] = 'Élesítés'; +$lang['Visited %d times'] = 'Megtekintve %d alkalommal'; +$lang['Watermark'] = 'Vízjel'; +$lang[' and %d virtuals'] = ' és %d virtuális'; +$lang['%d physicals'] = ' %d fizikai'; +$lang['%d week'] = '%d hét'; +$lang['%d weeks'] = '%d hét'; +$lang['Edit photo'] = 'Kép szerkesztése'; +$lang['create a new site'] = 'új honlap létrehozása'; +$lang['No order field selected'] = 'Nincs rendezési mező kiválasztva'; +$lang['Duplicate selected tags'] = 'Kiválasztott címkék kettőzése'; +$lang['Name of the duplicate'] = 'A kettőzött címke neve'; +$lang['Source tag'] = 'Forrás címke'; +$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" címke kettőzve "%s" néven'; +$lang['Landscape'] = 'Tájkép'; +$lang['Minimum height'] = 'Legkisebb magasság'; +$lang['Minimum width'] = 'Legkisebb szélesség'; +$lang['Panorama'] = 'Panoráma'; +$lang['Portrait'] = 'Portré'; +$lang['Manage photos'] = 'Képek kezelése'; +$lang['View in gallery'] = 'Megtekintés a galériában'; +$lang['Number of albums per page'] = 'Albumok száma oldalanként'; +$lang['Ratio'] = 'Arány'; +$lang['between %.2f and %.2f'] = '%.2f és %.2f között'; +$lang['between %d and %d pixels'] = '%d és %d pixel között'; +$lang['Duplicate'] = 'Másolat'; +$lang['Manage the members'] = 'Tagok kezelése'; +$lang['Merge selected groups'] = 'Kiválasztott csoportok egyesítése'; +$lang['No group selected, no action possible.'] = 'Nincs kiválasztott csoport, művelet nem lehetséges.'; +$lang['No members to manage'] = 'Nem tagok kezelése'; +$lang['Please select at least two groups'] = 'Jelöljön ki legalább két csoport'; +$lang['Rename'] = 'Átnevezés'; +$lang['This group will be set to default'] = 'Ez a csoport lesz az alapértelmezett'; +$lang['This group will be unset to default'] = 'Ez a csoport nem lesz az alapértelmezett'; +$lang['Type here the name of the new group'] = 'Ide írja be az új csoport nevét'; +$lang['Purge user cache'] = 'Felhasználói gyorsítótár ürítése'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'A kép mérete csökken %dx%d pixel-re.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'A feltöltés utáni átméretezés kikapcsolva, oka: a GD, mint grafikuskönyvtár használata'; +$lang['Select at least one tag'] = 'Válassz ki legalább egy cimkét'; +$lang['Basic settings'] = 'Alapbeállítások'; +$lang['General'] = 'Általános'; +$lang['Mail theme'] = 'Levelező-sablon'; +$lang['Show %s users'] = '%s felhasználó megjelenítése'; +$lang['All %d users are selected'] = 'Összes, %d felhasználó kiválasztva + +'; +$lang['Change password'] = 'Jelszó módosítása'; +$lang['Change username'] = 'Felhasználónév módosítása'; +$lang['Loading...'] = 'Töltés...'; +$lang['No matching user found'] = 'Felhasználó nem található'; +$lang['No user selected, no action possible.'] = 'Választott felhasználó nem található, művelet nem lehetséges'; +$lang['Password updated'] = 'Jelszó frissítve'; +$lang['Update user'] = 'Felhasználó frissítése'; +$lang['User %s added'] = '%s felhasználó hozzáadva'; +$lang['User %s updated'] = '%s felhasználó frissítve'; +$lang['Users modified'] = 'Felhasználók módosítva'; +?> \ No newline at end of file diff --git a/sources/language/hu_HU/common.lang.php b/sources/language/hu_HU/common.lang.php new file mode 100644 index 0000000..5eb4d71 --- /dev/null +++ b/sources/language/hu_HU/common.lang.php @@ -0,0 +1,426 @@ + \ No newline at end of file diff --git a/sources/language/hu_HU/help/cat_move.html b/sources/language/hu_HU/help/cat_move.html new file mode 100644 index 0000000..799a568 --- /dev/null +++ b/sources/language/hu_HU/help/cat_move.html @@ -0,0 +1,14 @@ +

                  Virtuális albumok áthelyezése

                  + +

                  Megváltoztatható egy virtuális album szülő albuma.

                  + +

                  Virtuális albumok mozgatása

                  + +

                  Válasszon ki egy vagy több virtuális albumot áthelyezésre. +Ha a lista üres, nem hozott létre egyetlen albumot sem.

                  + +

                  Új szülő album

                  + +

                  Válassza ki az új szülő albumot (virtuális vagy fizikai). +Ha nem választ ki szülő albumot, akkor az albumot a gyökérbe mozgatja. +Nem mozgathatja az albumot önmagára, vagy valamelyik gyermek albumra.

                  diff --git a/sources/language/hu_HU/help/cat_options.html b/sources/language/hu_HU/help/cat_options.html new file mode 100644 index 0000000..db29435 --- /dev/null +++ b/sources/language/hu_HU/help/cat_options.html @@ -0,0 +1,33 @@ +

                  Album tulajdonságok

                  + +

                  Ezen az oldalon lehetősége van az adminisztrátoroknak az albumok kezelésére. +Számos lehetőség áll rendelkezésére, kezelhet akár több albumot is egyszerre.

                  + +
                  + +
                  Feltöltés
                  +
                  Kezelheti mely albumokba engedélyezi látogatóinak a feltöltést. Csak nem virtuális és nem távoli albumok esetén. + +
                  Hozzászólások
                  +
                  Eldöntheti mely albumokhoz engedélyez hozzászólásokat. +Válassza ki azokat az albumokat, melyekhez engedélyezni kívánja a hozzászólásokat. +Az engedélyezett albumok képei alatt elérhetővé válik a hozzászólás űrlap.
                  + +
                  Lezárás
                  +
                  Lehetősége van az albumok ideiglenes zárolására. + Ha zárol egy albumot, annak gyermek albumai is zárolva lesznek. + Ha feloldja egy album zárolását, annak szülő albuma is feloldásra kerül.
                  + +
                  Nyilvános / Privát
                  +
                  Kezelheti a kiválasztott albumokhoz tartozó engedélyeket. + Kiválaszthatja a privát albumokat : összefüggésben van a látogatók és/vagy csoportok engedélyeinek beállításával. + Ha egy album privát, a belső albumok is privát albumokká válnak. + Ha egy album nyilvános, a szülő album is nyilvánossá válik.
                  + +
                  Reprezentál
                  +
                  Ez a lehetőség csak akkor kezelhető, ha az + allow_random_representative konfigurációs paramétere true (lásd include/config_defaults.inc.php). + Minden album képviselő lehet véletlenszerű, vagy lehet egyedi (egy egyedi kép).
                  + +
                  diff --git a/sources/language/hu_HU/help/configuration.html b/sources/language/hu_HU/help/configuration.html new file mode 100644 index 0000000..d41352c --- /dev/null +++ b/sources/language/hu_HU/help/configuration.html @@ -0,0 +1,108 @@ +

                  Beállítások

                  + +

                  Az adminisztrátoroknak ezen az oldalon lehetőségük van a galéria alapvető jellemzőinek beállítására. Valójában itt tényleg csak az alapvető jellemzők megváltoztatására van lehetőség, ezek az adminisztrátorok túlnyomó többségét ki is elégítik. További (speciális) beállításokra is mód nyílik, melyek az include/config_default.inc.php fájlban találhatók.

                  + +

                  Az oldal több csoportba rendezve tartalmazza a beállítási lehetőségeket.

                  + + +

                  Általános

                  +
                    +
                  • Galéria címe: RSS hírcsatornához és e-mailekhez.
                  • + +
                  • Oldal fejléc: Minden nyilvános oldal tetején megjelenik.
                  • + +
                  • Galéria URL: RSS hírcsatorna használatához.
                  • + +
                  • Galéria lezárása: Galéria zárolása karbantartás esetén. Csak az adminisztrátorok érik el az oldalt.
                  • + +
                  • Értékelés engedélyezése: Képek értékelésének engedélyezése.
                  • + +
                  • Vendégek által értékelhető: A nem regisztrált felhasználók is értékelhetik a képet.
                  • + +
                  • Regisztráció engedélyezése: A vendégek regisztrálhatnak.
                  • + +
                  • Az e-mail cím kötelező minden felhasználó számára: A regisztrációs profilban ill. profil módosításakor megadott e-mail cím ellenőrzésre kerül. Kivételt képez, ha az ellenőrzést az adminisztrátor hajtja végre.
                  • + +
                  • E-mail küldés, ha egy új felhasználó regisztrál: Az adminisztrátorok levélben kapnak értesítést ha egy új felhasználó regisztrált.
                  • + +
                  + +

                  Statisztikák

                  + +

                  Az oldallátogatások (category.php és picture.php) mentésre kerülnek a + history táblába.

                  + +

                  A látogatások megtekinthetők az Adminisztráció, Eszközök, Statisztikák oldalon.

                  + +
                    +
                  • Vendégek általi oldallátogatások mentése: A vendégek általi oldallátogatások kerülnek mentésre.
                  • + +
                  • Felhasználók általi oldallátogatások mentése: A regisztrált felhasználók általi oldallátogatások kerülnek mentésre.
                  • + +
                  • Adminisztrátorok általi oldallátogatások mentése: Az adminisztrátorok általi oldallátogatások kerülnek mentésre.
                  • + +
                  + +

                  Hozzászólások

                  +
                    + +
                  • Bárki hozzászólhat: A nem regisztrált vendég felhasználók is írhatnak hozzászólásokat.
                  • + +
                  • Hozzászólások száma oldalanként.
                  • + +
                  • Engedélyezés szükséges: Egy adminisztrátornak jóvá kell hagynia a hozzászólást, mielőtt az a honlapon megjelenne. A felhasználói hozzászólások jóváhagyása az Adminisztráció, Képek, + Hozzászólások oldalon történik.
                  • + +
                  • E-mail küldés, ha egy érvényes hozzászólás érkezik: Az adminisztrátorok e-mailben értesítést kapnak amennyiben új hozzászólás érkezik és jóváhagyásra kerül.
                  • + +
                  • E-mail küldés, ha egy hozzászólás jóváhagyásra vár: +Egy e-mail küldése az adminisztrátornak, amennyiben egy felhasználó hozzászólást küld, és azt az adminisztrátornak engedélyezni kell. +A felhasználói hozzászólások jóváhagyása az Adminisztráció, Képek, Hozzászólások oldalon történik.
                  • + +
                  + +

                  Feltöltés

                  +
                    +
                  • Jelenjen meg a Kép hozzáadása menüpont: Ha léteznek feltölthető kategóriák, a feltöltő link megjelenik a Kategóriák menüben.
                  • +
                  • Felhasználói szint beállítása a feltöltéshez: Azon felhasználói szint beállítása, akik feltölthetnek képeket az egyes kategóriákba.
                  • +
                  • Email-küldés, ha valaki képet töltött fel: Az adminisztrátor e-mailben értesítést kap amennyiben a felhasználók képeket töltöttek fel.
                  • +
                  + +

                  Alapértelmezett megjelenítés

                  + +

                  Itt lehet megváltoztatni a galéria alapértelmezett megjelenését. A látogatók a beállításoknak megfelető kinézetben látják a galériát. Regisztráció és bejelentkezés után a felhasználó egyéni beállításokat alkalmazhat +(a beállítások módosíthatók a profilban).

                  + +

                  A regisztrált felhasználók beállításait az +Adminisztráció, Felhasználók, Kezelés oldalon módosíthatjuk, ahol a felhasználói listából lehet kiválasztani a módosítani kívánt felhasználót.

                  + +
                    + +
                  • Nyelv: Csak a Piwigo felületre vonatkozik. Album neve, kép neve és leírása mező nem honosított.
                  • + +
                  • Képek száma soronként
                  • + +
                  • Sorok száma oldalanként
                  • + +
                  • Téma felület
                  • + +
                  • Elmúlt napban: Napok száma. Az az időszak, mely alatt a feltöltött kép újként jelenik meg. A napok számának nagyobbnak kell lenni 1-nél.
                  • + +
                  • Összes album kibontása: Az albumok menüben az összes album alapértelmezésben kibontásra kerül. Figyelem: az opció nagy erőforrás fogyasztást valamint hatalmas menüt eredményez amennyiben sok album található a galériában.
                  • + +
                  • Hozzászólások számának mutatása: A megjelenítendő hozzászólások darabszáma a kép és bélyegképek oldalon. Erőforrásokat fogyaszt.
                  • + +
                  • Találatok számának megjelenítése: Képek megtekintésének száma a bélyegképek alatt a bélyegképek oldalon. + Csak abban az esetben, ha a speciális paraméter beállítás:
                    + $conf['show_nb_hits'] = true;
                    + Megjegyzés: alapértelmezés szerint false.
                  • + +
                  • Maximális képszélesség: A kép maximális szélessége megjelenítéskor. Amennyiben a kép szélessége nagyobb a megadottnál, megjelenítéskor átméretezésre kerül. Ezen lehetőség választása helyett javasoljuk inkább a képek átméretezését. Ez a megoldás javasolt.
                  • + +
                  • Maximális képmagasság: Értelmezése megegyezik a maximális képszélességnél leírtakkal.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/hu_HU/help/group_list.html b/sources/language/hu_HU/help/group_list.html new file mode 100644 index 0000000..e7956ac --- /dev/null +++ b/sources/language/hu_HU/help/group_list.html @@ -0,0 +1,23 @@ +

                  Csoportok kezelése

                  + +

                  Ezen a helyen lehetőség van a csoportok kezelésére.

                  + +

                  Csoport hozzáadása

                  + +

                  Adminisztrátor hozhat létre csoportokat.

                  + +

                  Csoport lista

                  + +

                  A lista elemei a következő lehetőségeket biztosítják:

                  + + +
                    +
                  • tovább a tagok listájához
                  • +
                  • tovább az engedélyek kezelése oldalra
                  • +
                  • csoport törlése (megerősítés szükséges)
                  • +
                  • "alapértelmezett csoport" tulajdonság megváltoztatása (megerősítés szükséges)
                  • +
                  + +

                  Alapértelmezett csoport

                  +

                  Az alapértelmezett csoport egy olyan csoport, melyhez tagságot kap minden újonnan regisztrált, +illetve adminisztrátor által létrehozott felhasználó.

                  diff --git a/sources/language/hu_HU/help/help_add_photos.html b/sources/language/hu_HU/help/help_add_photos.html new file mode 100644 index 0000000..a60953d --- /dev/null +++ b/sources/language/hu_HU/help/help_add_photos.html @@ -0,0 +1,21 @@ +

                  A képek galériába történő feltöltéséhez több módszer áll rendelkezésedre:

                  + +
                    +
                  • A Közvetlen Feltöltés a legegyszerűbb és legkényelmesebb módja a képek feltöltésének. A módszer használata erősen függ a böngésződ képességeitől, valamint a tárhelyszolgáltató által biztosított lehetőségektől. Amennyiben nagyobb mennyiségű képet szeretnél egyszerre feltölteni, vagy ezzel a módszerrel probléma adódna, próbáld ki a következő két lehetőség valamelyikét!
                  • +
                  + + + +
                    +
                  • A pLoader egy, a számítógépedre telepített asztali alkalmazás. Tedd be a feltöltendő képeket a "Húzd és dobd" módszerrel a pLoader bal oldali ablakába, majd kattints a "Feltöltés Galériába" gombra, hagyd, hogy a pLoader végezze a dolgát. Más asztali alkalmazások is szóba jöhetnek, például a WinToPiwigo vagy a Digikam export bővítmény.
                  • +
                  + + + +
                  +
                    +
                  • Nagy mennyiségű képek minimális munkával történő hozzáadásának legegyszerűbb módja a Feltöltés FTP-n keresztül. Feltöltés előtt el kell végezni a képek előkészítését. Az FTP módszer használata esetén a képek helyének előkészítését kézzel kell elvégezni a tárhelyen lévő könyvtárstruktúra kialakításával.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/hu_HU/help/help_groups.html b/sources/language/hu_HU/help/help_groups.html new file mode 100644 index 0000000..a4fb499 --- /dev/null +++ b/sources/language/hu_HU/help/help_groups.html @@ -0,0 +1,10 @@ +

                  A felhasználók jogosultságainak kezelése egyszerűbbé válik csoportok létrehozásával.

                  + +

                  Csoportok létrehozhatók az Adminisztráció » Felhasználók +» Csoportok útvonalon, majd az +Adminisztráció » Felhasználók » +Kezelés útvonalon kapcsolhatók a felhasználók az egyes csoportokhoz.

                  + +

                  Egy felhasználó több csoportba is tartozhat. Engedélyezése felülbírálja a tiltásokat : +ha a "jack" nevű felhasználó a "család" és "barátok" csoportba is tartozik és a +"Karácsony 2003" albumot a "család" csoport láthatja, akkor "jack" látni fogja a "Karácsony 2003" albumot.

                  diff --git a/sources/language/hu_HU/help/help_misc.html b/sources/language/hu_HU/help/help_misc.html new file mode 100644 index 0000000..dd4c7ca --- /dev/null +++ b/sources/language/hu_HU/help/help_misc.html @@ -0,0 +1,6 @@ +

                  Amint elkészült a galéria, lehetőség van az alapértelmezett megjelenítés tulajdonságainak beállítására az +Adminisztráció » Beállítások » Lehetőségek oldalon.

                  +

                  Minden új regisztrált felhasználó regisztráláskor örökli az alapértelmezett konfigurációs beállításokat.

                  + +

                  További kérdések esetén a Piwigo közösség örömmel válaszol azokra a +fórumon.

                  diff --git a/sources/language/hu_HU/help/help_permissions.html b/sources/language/hu_HU/help/help_permissions.html new file mode 100644 index 0000000..e45edfa --- /dev/null +++ b/sources/language/hu_HU/help/help_permissions.html @@ -0,0 +1,52 @@ +
                  +Jogosultságok a képekhez + +

                  Minden képhez tartozik hozzáférési szint (zárolás). Minden felhasználóhoz tartozik hozzáférési szint (egy kulcs). A jelenlegi 5 hozzáférési szint:

                  +
                    +
                  1. Egyik sem
                  2. +
                  3. Kapcsolattartók
                  4. +
                  5. Barátok (magasabb mint a Kapcsolattartók)
                  6. +
                  7. Család (magasabb mint a Barátok)
                  8. +
                  9. Adminisztrátor (magasabb minden más szintnél)
                  10. +
                  + +

                  Magasabb hozzáférési szint tulajdonosa jogosult az alacsonyabb hozzáférési szint megtekintésére. Minél magasabb a felhasználó hozzáférési szintje, annál több képet tekinthet meg.

                  + +

                  Például ha a "peter_wedding-0024.jpg" kép hozzáférési szintje "Család", akkor:

                  +
                    +
                  • Péter (aki "Adminisztrátor") látni fogja a képet, mert az "Adminisztrátorok" láthatják az összes képet
                  • +
                  • Betti (aki a "Család" tagja) látni fogja a képet
                  • +
                  • Marika (aki a "Barátok" tagja) nem fogja látni a képet
                  • +
                  + +

                  Egy felhasználó akinek nincs jogosultsága az album tartalmának megtekintéséhez, nem látja sem az albumot, sem az album címét. Ugyanez az elv érvényes a címkére is.

                  + +

                  Az egyes felhasználókhoz tartozó hozzáférési szint az Adminisztráció » Felhasználók » Kezelés lapon állítható be.

                  + +
                  + +
                  +Jogosultságok az albumokhoz + +

                  Szabályozható az albumokhoz történő hozzáférés. Az albumokhoz történő hozzáférés jogosultjainak kezeléséhez az album típusát "Privát" szintre kell váltani.

                  + +

                  Egy album privát albummá történő módosítása elvégezhető az album szerkesztésével +(Adminisztráció » Albumok » Kezelés +» javítás), vagy a teljes album fa jogosultságainak beállításával +(Adminisztráció » Albumok » +Tulajdonságok » Nyilvános / Privát).

                  + +

                  Amint egy album bekerül a privát albumok közé, három módja van a csoport és felhasználói engedélyek módosításának:

                  + +
                    + +
                  • Adminisztráció » Felhasználók » Kezelés » + Engedélyek (soronként egy felhasználó)
                  • + +
                  • Adminisztráció » Felhasználók » Csoportok » + Engedélyek (soronként egy csoport)
                  • + +
                  • Adminisztráció » Albumok » Kezelés » + Engedélyek (soronként egy album)
                  • + +
                  diff --git a/sources/language/hu_HU/help/help_virtual_links.html b/sources/language/hu_HU/help/help_virtual_links.html new file mode 100644 index 0000000..955dab0 --- /dev/null +++ b/sources/language/hu_HU/help/help_virtual_links.html @@ -0,0 +1,10 @@ +

                  A képek a fájlkönyvárakkal megegyező albumokban jelennek meg.

                  + +

                  A képek több albumban is megjeleníthetők a fájl tárhelyen történő megkettőzése nélkül. +A képek albumokhoz történő társítására a képek szerkesztés oldalán van lehetőség +(az adminisztrátor a képeket a "Galéria megtekintése" gomb segítségével érheti el).

                  + +

                  A megoldás a virtuális albumok rendszerén alapul, amennyiben nincs megfelelő album: +Virtuális albumok létrehozására az +Adminisztráció » Albumok » +Kezelés útvonalon van lehetőség.

                  diff --git a/sources/language/hu_HU/help/history.html b/sources/language/hu_HU/help/history.html new file mode 100644 index 0000000..6b02a1d --- /dev/null +++ b/sources/language/hu_HU/help/history.html @@ -0,0 +1,44 @@ +

                  Események

                  + +

                  Ezen az oldalon lehetősége van megtekinteni a a galéria eseményeit a választott beállítások szerint - Adminisztráció - Speciális összetevők - Statisztika.

                  + +

                  Statisztika

                  +
                    +

                    Ha azt választotta, hogy a látogatott oldalak adatai (index.php és picture.php) maradjanak a history táblában. +Ez a fül lehetővé teszi, hogy nyomon kövesse az oldal látogatásokat.

                    + +
                  • Teljes statisztika : Statisztika évekre.
                  • + +
                  • Éves statisztika : Statisztika a választott év hónapjaira.
                  • + +
                  • Havi statisztika : Statisztika a kiválasztott hónap napjaira.
                  • + +
                  • Napi statisztika : Statisztika a kiválasztott nap óráira.
                  • + +
                  + +

                  Keresés

                  +
                    +

                    Ha azt választotta, hogy a látogatott oldalak adatai (index.php és picture.php) maradjanak a history táblában. +Ez a fül lehetővé teszi, hogy különböző szűrési feltételek használatával tekintse meg +a honlap oldalainak látogatottságát.

                    + +
                  • Szűrés dátum szerint : Dátum szerinti szűrést végezhet + a tevékenységek megtekintésére.
                  • + +
                  • Szűrés adott típusú elemre : Meghatározott elemre történő + szűrést végezhet a tevékenységek megtekintésére.
                  • + +
                  • Szűrés felhasználókra : Konkrét felhasználóra történő + szűrést végezhet a tevékenységek megtekintésére.
                  • + +
                  • Szűrés fájlnévre : Fájlnévre történő szűrést végezhet + a tevékenységek megtekintésére.
                  • + +
                  • Szűrés elem-ID-re : Kép ID-re történő szűrést végezhet + a tevékenységek megtekintésére.
                  • +
                  diff --git a/sources/language/hu_HU/help/index.php b/sources/language/hu_HU/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/hu_HU/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/hu_HU/help/maintenance.html b/sources/language/hu_HU/help/maintenance.html new file mode 100644 index 0000000..a0a9715 --- /dev/null +++ b/sources/language/hu_HU/help/maintenance.html @@ -0,0 +1,12 @@ +
                    + +
                  • + Nem kapcsolódó elemek: + Képek megjelenítése, melyek nem kapcsolódnak virtuális albumhoz. +
                  • +
                  • + Azonos nevű fájlok több fizikai albumban: + Képek vagy fájlok megjelenítése, melyekről bebizonyosodott, hogy azonos a fájlnevük az egyes albumokban. +
                  • + +
                  diff --git a/sources/language/hu_HU/help/notification_by_mail.html b/sources/language/hu_HU/help/notification_by_mail.html new file mode 100644 index 0000000..9a0b53b --- /dev/null +++ b/sources/language/hu_HU/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

                  Értesítés e-mailben

                  + +

                  Ez az oldal lehetőséget biztosít a felhasználóknak küldendő e-mail értesítések beállítására és kezelésére, a webhelyen történt változásokról.

                  + +

                  Az oldal 3 lapot tartalmaz:

                  + +

                  Paraméterek

                  +

                  Csak a webmesterek számára elérhető, lehetőséget biztosít az e-mail értesítések paramétereinek beállítására.

                  + +

                  Feliratkozás

                  +

                  Csak a webmesterek számára elérhető, ezen a lapon kezelhetjük a regisztrált felhasználók feliratkozását/leiratkozását az e-mail értesítésekre.

                  + +

                  Küld

                  +

                  Csak a webmesterek és adminisztrátorok számára elérhető, lehetővé teszi az értesítések elküldését az oldalon történt változásokról.

                  + diff --git a/sources/language/hu_HU/help/permalinks.html b/sources/language/hu_HU/help/permalinks.html new file mode 100644 index 0000000..0aa7e7a --- /dev/null +++ b/sources/language/hu_HU/help/permalinks.html @@ -0,0 +1,7 @@ +

                  Közvetlen linkek

                  + +

                  A közvetlen linkekkel keresőbarát, átlátható URL-ek állíthatók elő. Amikor egy albumhoz közvetlen linket rendelünk, az URL-ben nincs szükség az ID, vagy egyéb nehezen megjegyezhető karaktersorozat megjelenítésére.

                  + +

                  Ha egy közvetlen linket törlünk, lehetőségünk van menteni a közvetlen link előzményeket úgy, hogy a külső linkek továbbra is működnek a PWG lapokon. A közvetlen link előzmények táblában láthatja mikor töröltek egy közvetlen linket, illetve mikor használták utoljára, valamint azt is, hányszor használták a törlés óta.

                  + +

                  Ne feledje, hogy az albumokhoz rendelt közvetlen linkeknek egyedinek kell lenniük. Egy közvetlen linket nem lehet többször definiálni a közvetlen link előzményekben.

                  diff --git a/sources/language/hu_HU/help/photos_add_ftp.html b/sources/language/hu_HU/help/photos_add_ftp.html new file mode 100644 index 0000000..96bd6d2 --- /dev/null +++ b/sources/language/hu_HU/help/photos_add_ftp.html @@ -0,0 +1,112 @@ +
                  + Kezdő lépések + +
                    +
                  1. Hozz létre egy könyvtárat a számítógépen.
                  2. + +
                  3. Másolj be néhány képet a könyvtárba, a Weben engedélyezett méret figyelembe vételével. Figyelem: A fájl és mappa neve is csak betűket és számokat tartalmazhat az angol abc szerint, valamint a következő speciális karaktereket: "-", "_" vagy ".". Tilos szóközt (SPACE) valamint egyéb különleges karaktereket használni.
                  4. + +
                  5. Másold fel FTP program segítségével a "galeries" mappába az így létrehozott mappádat.
                  6. + +
                  7. Lépj be a galériába és menj az Adminisztráció » Eszköszök » Bélyegképek oldalra, hogy létrehozd a hiányzó bélyegképeket.
                  8. + +
                  9. Menj vissza az Adminisztráció menübe és kattints a "Szinkronizálás" gombra.
                  10. +
                  + +Gratulálunk, ezzel létrehoztad az első album képtárat. + +
                  + +
                  + Könyvtárak és fájlok szervezése + +
                    + +
                  • + +

                    A mappák és albumok listája a Piwigo "galeries" könyvtárban. + Itt következik a könyvtárfa egy kis galériáról, (de számos funkcióval):

                    + +
                    +.
                    +|-- admin
                    +|-- doc
                    +|-- galleries
                    +|   |-- category-1
                    +|   |   |-- category-1.1
                    +|   |   |   |-- category-1.1.1
                    +|   |   |   |   |-- category-1.1.1.1
                    +|   |   |   |   |   |-- pwg_high
                    +|   |   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   |   |-- thumbnail
                    +|   |   |   |   |   |   +-- TN-wedding.jpg
                    +|   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   +-- category-1.1.1.2
                    +|   |   |   +-- category-1.1.2
                    +|   |   |-- category-1.2
                    +|   |   |   |-- pookie.jpg
                    +|   |   |   +-- thumbnail
                    +|   |   |       +-- TN-pookie.jpg
                    +|   |   +-- category-1.3
                    +|   +-- category-2
                    +|       |-- piglet.gif
                    +|       |-- pwg_representative
                    +|       |   +-- video.jpg
                    +|       |-- thumbnail
                    +|       |   +-- TN-piglet.jpg
                    +|       +-- video.avi
                    +|-- include
                    +|-- install
                    +|-- language
                    +|-- template
                    ++-- tool
                    + +
                  • + +
                  • Minden új alkönyvtár a "galeries" könyvtárban létrehoz egy új albumot, kivételek a "thumbnail", "pwg_high" és "pwg_representative" (a magyarázatot lásd alább). A könyvtárak mélysége nincs korlátozva. + A fenti példában a Kategorie-1.1.1.1 könyvtár 4 mélység szintű.
                  • + +
                  • Alapvetően, egy elemet egy fájl határoz meg. Egy fájl Piwigo elem lehet, ha kiterjesztése a file_ext + konfigurációs paraméterek lehetőségei között van (lásd include/config_default.inc.php fájl). + Egy fájl kép lehet, ha kiterjesztése a picture_ext konfigurációs paraméterek lehetőségei között van.
                  • + +
                  • Minden képhez tartoznia kell egy bélyegképnek (lásd lejjebb a + bélyegképek szakaszban).
                  • + +
                  • Képnek egy megfelelő felbontású, jó minőségű képet ajánlott választani (lásd a fenti példában a + wedding.jpg fájlt). Az eredeti kép fájlneve ne tartalmazzon előtagot.
                  • + +
                  • Amennyiben a feltöltött elem nem képfájl, (video, hang, szöveges fájl, vagy egyéb...) + alapértelmezés szerint a fájl kiterjesztéséhez illeszkedő ikon jelenik meg. + Az ilyen fájlokhoz hozzárendelhető egy bélyegkép fájl (lásd a fenti példában a video.avi fájlt).
                  • + +
                  • Figyelem: a könyvtárak és fájlok nevei csak betűket és számokat, + valamint a következő karaktereket tartalmazhatják: "-", "_" vagy ".". + Nem lehet üres hely és soremelés karakter.
                  • + +
                  • A bélyegképek és album képviselők helyükre tételének útvonala: Adminisztráció » Eszközök » + Szinkronizálás
                  • + +
                  + +
                  +
                  + Bélyegképek +
                    + +
                  • Minden képnek rendelkeznie kell egy hozzá tartozó bélyegképpel.
                  • + +
                  • A bélyegképek az album könyvtár "thumbnail" alkönyvtárában kerülnek eltárolásra. + A bélyegkép neve megegyezik a kép fájlnevével, egy a konfigurációs paraméterekben prefix_thumbnail megadott előtaggal kiegészítve (lásd include/config.inc.php).
                  • + +
                  • A kép és a hozzárendelt bélyegkép kiterjesztése eltérő lehet (például egy ".GIF" kiterjesztésű képhez tartozhat ".jpg" kiterjesztésű bélyegkép).
                  • + +
                  • Javaslat: külső modul használata a bélyegképek létrehozásához.
                  • + +
                  • Használhatod, bár nem ajánlott (kép minőség, web szerver erőforrásainak terhelése): Adminisztráció » Eszközök » Bélyegképek oldalon a bélyegképek létrehozását.
                  • + +
                  • Adj írási jogot az összes album könyvtárnak.
                  • + +
                  +
                  diff --git a/sources/language/hu_HU/help/search.html b/sources/language/hu_HU/help/search.html new file mode 100644 index 0000000..16208d8 --- /dev/null +++ b/sources/language/hu_HU/help/search.html @@ -0,0 +1,23 @@ +

                  Keresés

                  + +

                  Ez az oldal lehetővé teszi képek keresését a teljes galériában.

                  + +
                  + +
                  Keresés szavakra
                  +
                  Megkeresi az összes a keresett szóhoz kapcsolódó képet a galériában. + Részleges egyezések megjelenítéséhez használhatja a * karaktert.
                  + +
                  Szerző keresése
                  +
                  Részleges egyezések megjelenítéséhez használhatja a * karaktert.
                  + +
                  Keresés dátum alapján
                  +
                  Válassza ki a kezdő és/vagy a befejező dátumot a kereséshez. + Az utolsó mezőbe az évszámot kell beírnia a következő formában : 0000 (például 2004)
                  + +
                  Keresés albumokban
                  +
                  Jelölje ki az albumot vagy albumokat, melyben keresni kíván. + Kereshet az összes belső albumban a szülő album kijelölésével, + ha engedélyezi a keresést a belső albumokban is.
                  + +
                  diff --git a/sources/language/hu_HU/help/synchronize.html b/sources/language/hu_HU/help/synchronize.html new file mode 100644 index 0000000..d0a7910 --- /dev/null +++ b/sources/language/hu_HU/help/synchronize.html @@ -0,0 +1,12 @@ +

                  Szinkronizálás

                  + +

                  Kétféle szinkronizálás hajtható végre : szinkorizálhatók a mappák/fájlok, +illetve a fájlok metaadatai. A mappák/fájlok szinkronizálásakor a könyvtár +fa adatai frissülnek az adatbázisban. Metaadatok frissítésekor az elemekhez kapcsolódó +információk frissülnek, fájlméret, méret adatok pixelben, EXIF vagy IPTC információk.

                  + +

                  Az első szinkronizálásnál a mappák/fájlok szinkronizálását egyszerre kell elvégezni.

                  + +

                  A szinkronizálási folyamat hossza elhúzódhat, (a szükséges idő erősen függ a szerver +terhelésétől valamint az elemek számától) ezért lehetőség van a szinkronizálás +albumonkénti végrehajtására.

                  diff --git a/sources/language/hu_HU/help/user_list.html b/sources/language/hu_HU/help/user_list.html new file mode 100644 index 0000000..dc013aa --- /dev/null +++ b/sources/language/hu_HU/help/user_list.html @@ -0,0 +1,27 @@ +

                  Felhasználók listája

                  + +

                  Ezen az oldalon kezelhetők a regisztrált felhasználókhoz tartozó tulajdonságok, kivétel az egyéb oldalakon állítható jogosultságok.

                  + +

                  Felhasználó hozzáadása

                  + +

                  Adminisztrátor a regisztrációs folyamat végrehajtása nélkül is hozzáadhat felhasználókat.

                  + +

                  Felhasználói lista

                  + +

                  A lista felhasználónevekre szűrhető (használható a * helyettesítő karakter), +ezen belül státuszra és/vagy csoportra is szűkíthető. +Rendezhető dátumra, illetve növekvő vagy csökkenő sorrendre.

                  + +

                  Ezen az oldalon lehetőség van több felhasználó együttes kezelésére, a következő műveletek végrehajtásával:

                  + +
                    + +
                  • felhasználók törlése (megerősítés szükséges)
                  • +
                  • státusz módosítása
                  • +
                  • csoportokhoz történő hozzárendelés, vagy eltávolítás
                  • +
                  • megjelenés tulajdonságainak módosítása
                  • +
                  • további tulajdonságok módosítása
                  • + +
                  + +

                  Célként a kijelölt felhasználó (alapértelmezés) vagy az összes felhasználó megjelenik a szűrt listában.

                  diff --git a/sources/language/hu_HU/hu_HU.jpg b/sources/language/hu_HU/hu_HU.jpg new file mode 100644 index 0000000..e9bbc45 Binary files /dev/null and b/sources/language/hu_HU/hu_HU.jpg differ diff --git a/sources/language/hu_HU/index.php b/sources/language/hu_HU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/hu_HU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/hu_HU/install.lang.php b/sources/language/hu_HU/install.lang.php new file mode 100644 index 0000000..c153556 --- /dev/null +++ b/sources/language/hu_HU/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Segítségre van szüksége ? Kérdéseit itt teheti fel: Piwigo üzenőfal.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'A látogatók ezen az e-mail címen tudják felvenni a kapcsolatot az adminisztrátorral'; +$lang['PHP 5 is required'] = 'PHP 5 szükséges'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Úgy tűnik, a tárhelyszolgáltatójánál jelenleg futó PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo megpróbálhatja bekapcsolni a PHP 5-öt azáltal, hogy létrehoz vagy módosít egy .htaccess fájlt.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Figyelem: Ha meg tudja változtatni a PHP konfigurációt, indítsa újra a Piwigot.'; +$lang['Try to configure PHP 5'] = 'Próbálja meg beállítani a PHP 5-öt'; +$lang['Sorry!'] = 'Elnézést!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nem tudta beállítani a PHP 5-öt.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Lehet, hogy a tárhely szolgáltató támogatja a PHP 5-öt. A bekapcsoláshoz keresse meg őket."; +$lang['Hope to see you back soon.'] = 'Remélem később viszontlátjuk.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulálunk, a Piwigo telepítése sikeresen befejeződött'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Egy lehetséges megoldás a szöveget az alul lévő dobozba másolni, és beilleszteni a "local/config/database.inc.php" fájlba. (Figyelem: database.inc.php csak azt tartalmazhatja amit a szövegterület, soremelés vagy üres karakterhely nélkül)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'A local/config/database.inc.php konfigurációs fájl létrehozása sikertelen.'; +$lang['Download the config file'] = 'Konfigurációs fájl letöltése'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Letöltheti a konfigurációs fájlt és töltse fel a telepítésének local/config könyvtárába.'; +$lang['Just another Piwigo gallery'] = 'Csak egy újabb Piwigo galéria'; +$lang['Welcome to my photo gallery'] = 'Üdvözöljük a képgalériában'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Kérdése van? Keresse fel fórumunkat: %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'Köszönt a frissen telepített Piwigo galéria!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost vagy egyéb, a fogadó szolgáltató által megadott'; +?> \ No newline at end of file diff --git a/sources/language/hu_HU/iso.txt b/sources/language/hu_HU/iso.txt new file mode 100644 index 0000000..c0e98da --- /dev/null +++ b/sources/language/hu_HU/iso.txt @@ -0,0 +1 @@ +Magyar [HU] \ No newline at end of file diff --git a/sources/language/hu_HU/upgrade.lang.php b/sources/language/hu_HU/upgrade.lang.php new file mode 100644 index 0000000..b2dfd45 --- /dev/null +++ b/sources/language/hu_HU/upgrade.lang.php @@ -0,0 +1,45 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Végezze el a karbantartás ellenőrzést [Adminisztráció>Eszközök>Karbantartás] ha bármilyen problémával találkozna.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'A frissítés csak rendszergazda jogosultsággal futtatható, kérjük jelentkezzen be.'; +$lang['You do not have access rights to run upgrade'] = 'Önnek nincs jogosultsága a frissítés elvégzéséhez'; + +// Upgrade informations from upgrade_1.3.1.php +$lang['All sub-albums of private albums become private'] = 'Az összes belső album privát albummá válik'; +$lang['User permissions and group permissions have been erased'] = 'A felhasználói és csoport jogosultságok törlésre kerültek'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Csak a bélyegképek prefixe és a webmester email címe került mentésre az előző konfigurációból.'; +// missing translations 2.1.0 RC1 +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Ez az oldal felajánlja az adatbázis frissítését, frissítse a Piwigot a régi verzióról az új verzióra. A frissítési asszisztens szerint jelenleg a %s verzió fut (vagy azzal egyenértékű).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Elővigyázatosságból a bővítmények ki vannak kapcsolva. Újraaktiválás előtt a bővítmény frissítéseket ellenőrizni kell:'; +$lang['In %s, before ?>, insert:'] = 'A(z) %s, elé ?>, beszúrni:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Elővigyázatosságból az alábbi témák kikapcsolásra kerültek. Frissítés előtt a témákat ellenőrizni kell, majd aktiválásra kerülhetnek:'; + +?> diff --git a/sources/language/id_ID/common.lang.php b/sources/language/id_ID/common.lang.php new file mode 100644 index 0000000..ffe3eb6 --- /dev/null +++ b/sources/language/id_ID/common.lang.php @@ -0,0 +1,419 @@ + \ No newline at end of file diff --git a/sources/language/id_ID/id_ID.jpg b/sources/language/id_ID/id_ID.jpg new file mode 100644 index 0000000..ee52223 Binary files /dev/null and b/sources/language/id_ID/id_ID.jpg differ diff --git a/sources/language/id_ID/index.php b/sources/language/id_ID/index.php new file mode 100644 index 0000000..ece5850 --- /dev/null +++ b/sources/language/id_ID/index.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/language/id_ID/iso.txt b/sources/language/id_ID/iso.txt new file mode 100644 index 0000000..f8ac87e --- /dev/null +++ b/sources/language/id_ID/iso.txt @@ -0,0 +1 @@ +Bahasa Indonesia [ID] \ No newline at end of file diff --git a/sources/language/index.php b/sources/language/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/is_IS/about.html b/sources/language/is_IS/about.html new file mode 100644 index 0000000..a004a90 --- /dev/null +++ b/sources/language/is_IS/about.html @@ -0,0 +1,14 @@ +

                  Þetta mynda gallerí er byggt á Piwigo.

                  + +

                  Piwigo er mynda hugbúnaður fyrir vefinn, byggt af virku +samfélag notenda og þróunaraðila. Viðbætur gera Piwigo auðveldlega +sérsníðanlegt. +Rúsínan í pylsuendanum. Piwigo er óskeypis og opinn uppspretta.

                  + +

                  Heimsækja heimasíðu Piwigo

                  + +

                  Íslensku þýðing er viðhaldið af Wallster: +

                  +

                  \ No newline at end of file diff --git a/sources/language/is_IS/common.lang.php b/sources/language/is_IS/common.lang.php new file mode 100644 index 0000000..39e3e2b --- /dev/null +++ b/sources/language/is_IS/common.lang.php @@ -0,0 +1,343 @@ + \ No newline at end of file diff --git a/sources/language/is_IS/index.php b/sources/language/is_IS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/is_IS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/is_IS/is_IS.jpg b/sources/language/is_IS/is_IS.jpg new file mode 100644 index 0000000..6a13cc8 Binary files /dev/null and b/sources/language/is_IS/is_IS.jpg differ diff --git a/sources/language/is_IS/iso.txt b/sources/language/is_IS/iso.txt new file mode 100644 index 0000000..731d4d2 --- /dev/null +++ b/sources/language/is_IS/iso.txt @@ -0,0 +1 @@ +Íslenska [IS] \ No newline at end of file diff --git a/sources/language/it_IT/about.html b/sources/language/it_IT/about.html new file mode 100644 index 0000000..527d99f --- /dev/null +++ b/sources/language/it_IT/about.html @@ -0,0 +1,19 @@ +

                  Questa galleria è basata su Piwigo.

                  + +

                  Piwigo è un software per creare gallerie fotografiche sul web, costruito +da una comunità attiva d'utenti e sviluppatori. Le estensioni rendono Piwigo +facilmente personalizzabile. Inoltre, ciliegina sulla torta, Piwigo è gratuito ed +open source.

                  + +

                  Visitate il sito ufficiale di Piwigo

                  + +

                  The italian translation is maintained by (in alphabetical order): + +

                  +.... Many thanks to you

                  \ No newline at end of file diff --git a/sources/language/it_IT/admin.lang.php b/sources/language/it_IT/admin.lang.php new file mode 100644 index 0000000..49ee97d --- /dev/null +++ b/sources/language/it_IT/admin.lang.php @@ -0,0 +1,978 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader sta per Piwigo Uploader. Dal vostro computer, pLoader prepara le vostre foto e le trasferisce verso la vostra galleria foto Piwigo.'; +$lang['Languages'] = 'Lingue'; +$lang['Installed Languages'] = 'Lingue installate'; +$lang['Add New Language'] = 'Aggiungere una lingua'; +$lang['Language has been successfully installed'] = 'La lingua è stata installata con successo'; +$lang['Allow user customization'] = 'Permettere la personalizzazione della visualizzazione'; +$lang['Select:'] = 'Selezionare:'; +$lang['None'] = 'Niente'; +$lang['Invert'] = 'Invertire'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Non è possibile disattivare questo tema, ci deve essere almeno un tema attivo.'; +$lang['Webmaster status is required.'] = 'Dovete avere lo stato di webmaster.'; +$lang['Bound Theme'] = 'Tema legato'; +$lang['Allow rating'] = 'Autorizzare le votazioni'; +$lang['Select at least one comment'] = 'Selezionare almeno un commento'; +$lang['Active Plugins'] = 'Plugins attivati'; +$lang['Inactive Plugins'] = 'Plugins disabilitati'; +$lang['Missing Plugins'] = 'Plugins mancanti'; +$lang['Uninstalled Plugins'] = 'Plugins disinstallati'; +$lang['By %s'] = 'Da %s'; +$lang['Visit plugin site'] = 'Visitate il sito del plugin'; +$lang['Active Languages'] = 'Lingue attivate'; +$lang['Delete this language'] = 'Cancellare questa lingua'; +$lang['Forbid this language to users'] = 'Vietare questa lingua agli utenti'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossibile disattivare questa lingua, innanzitutto impostare un\'altra lingua come predefinita.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossibile disattivare questa lingua. Deve essere attiva almeno una lingua.'; +$lang['Inactive Languages'] = 'Lingue disattivate'; +$lang['Make this language available to users'] = 'Rendere questa lingua disponibile agli utenti'; +$lang['Set as default language for unregistered and new users'] = 'Lingua predefinita per gli ospiti e nuovi utenti'; +$lang['Add Photos'] = 'Aggiungere delle foto'; +$lang['Miscellaneous'] = 'Informazioni'; +$lang['The following tag was deleted'] = 'Il tag seguente è stato cancellato'; +$lang['Virtual Links'] = 'Collegamenti virtuali'; +$lang['There is no other language available.'] = 'Non ci sono altre lingue disponibili.'; +$lang['There is no other plugin available.'] = 'Non ci sono altri plugin disponibili.'; +$lang['There is no other theme available.'] = 'Non ci sono altri temi disponibili.'; +$lang['delete'] = 'cancellare'; +$lang['Add another set of photos'] = 'Aggiungi un altro set di foto'; +$lang['Order of menubar items has been updated successfully.'] = 'L\'ordine degli elementi della barra dei menu è stato aggiornato con successo.'; +$lang['This theme was not designed to be directly activated'] = 'Questo tema non è stato progettato per essere attivato direttamente'; +$lang['Pending Comments'] = 'Commenti in attesa'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Nel vostro file php.ini, la variabile upload_max_filesize (%sB) è più grande di post_max_size (%sB), dovete modificare questa impostazione'; +$lang['Exif extension not available, admin should disable exif use'] = 'L\'estensione Exif non è disponibile, un amministratore deve disabilitare l\'uso dei metadati exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Il peso del file caricato supera il valore upload_max_filesize nel file php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Il peso totale dei file trasferiti supera il valore di post_max_size nel file php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Il peso del file caricato supera il valore di MAX_FILE_SIZE definito nel modulo HTML'; +$lang['The uploaded file was only partially uploaded'] = 'Il file è stato caricato solo parzialmente'; +$lang['No file was uploaded'] = 'Nessun file è stato caricato'; +$lang['Missing a temporary folder'] = 'Impossibile trovare la directory temporanea'; +$lang['Failed to write file to disk'] = 'Non è stato possibile scrivere il file sul disco'; +$lang['File upload stopped by extension'] = 'Il caricamento del file è stato fermato da un estensione'; +$lang['Unknown upload error'] = 'Errore sconosciuto durante il caricamento'; +$lang['Error on file "%s" : %s'] = 'Errore sul file "%s" : %s'; +$lang['Menu Management'] = 'Menu'; +$lang['automatic order'] = 'ordinamento automatico'; +$lang['manual order'] = 'ordinamento manuale'; +$lang['Albums automatically sorted'] = 'Album ordinati automaticamente'; +$lang['The original maximum width must be a number between %d and %d'] = 'La larghezza massima per ridimensionare la foto originale deve essere un numero compreso tra %d e %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'L\'altezza massima per ridimensionare la foto originale deve essere un numero compreso tra %d e %d'; +$lang['The original image quality must be a number between %d and %d'] = 'La qualità dell\'immagine per ridimensionare la foto originale deve essere un numero compreso tra %d e %d'; +$lang['Batch Manager'] = 'Gestione dei lotti'; +$lang['include child albums'] = 'includere gli album dipendenti'; +$lang['Selection'] = 'Selezione'; +$lang['Action'] = 'Azione'; +$lang['Set author'] = 'Definire l\'autore'; +$lang['Set title'] = 'Impostare il titolo'; +$lang['Set creation date'] = 'Impostare la data di creazione'; +$lang['Apply action'] = 'Applicare l\'azione'; +$lang['on the %d selected photos'] = 'sulle %d foto selezionate'; +$lang['%d of %d photos selected'] = '%d foto su %d sono selezionate'; +$lang['No photo selected, %d photos in current set'] = 'Nessuna foto selezionata tra le %d foto del set'; +$lang['All %d photos are selected'] = 'Tutte le %d foto del lotto sono selezionate'; +$lang['remove this filter'] = 'cancellare questo filtro'; +$lang['Duplicates'] = 'Duplicati'; +$lang['Add a filter'] = 'Aggiungere un filtro'; +$lang['Remove all filters'] = 'Cancellare tutti i filtri'; +$lang['Refresh photo set'] = 'Aggiornare il set di foto'; +$lang['The whole page'] = 'Tutta la pagina'; +$lang['The whole set'] = 'L\'intero set'; +$lang['No photo in the current set.'] = 'Nessuna foto nel set corrente.'; +$lang['No photo selected, no action possible.'] = 'Nessuna foto selezionata, nessuna azione possibile.'; +$lang['Choose an action'] = 'Scegliere un\'azione'; +$lang['remove author'] = 'cancellare l\'autore'; +$lang['Type here the author name'] = 'Inserire qui il nome dell\'autore'; +$lang['remove title'] = 'cancellare il titolo'; +$lang['Type here the title'] = 'Inserire qui il titolo'; +$lang['remove creation date'] = 'cancellare la data di creazione'; +$lang['Week starts on'] = 'La settimana comincia il'; +$lang['You have %d orphan tags: %s.'] = 'Avete %d tags orfani: %s.'; +$lang['Delete orphan tags'] = 'Cancellare i tags orfani'; +$lang['delete photo'] = 'cancellare la foto'; +$lang['Remove from caddie'] = 'Rimuovere dal cestino'; +$lang['Themes which need upgrade'] = 'Temi che necessitano un aggiornamento'; +$lang['Languages which need upgrade'] = 'Lingue che necessitano di un aggiornamento '; +$lang['All themes are up to date.'] = 'Tutti i temi sono aggiornati.'; +$lang['All plugins are up to date.'] = 'Tutti i plug-in sono aggiornati.'; +$lang['All languages are up to date.'] = 'Tutte le lingue sono aggiornate.'; +$lang['Visit theme site'] = 'Visitare il sito del tema'; +$lang['Visit language site'] = 'Visitare il sito della lingua'; +$lang['New Version'] = 'Nuova versione'; +$lang['Obsolete Plugins'] = 'Plugins obsoleti'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATTENZIONE! Questo plugin non sembra essere compatibile con questa versione di Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Volete attivarlo comunque?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'QUESTO PLUGIN FA ORMAI PARTE DEL CORE DI PIWIGO! DISINSTALLATELO ORA!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRORE: QUESTO PLUGIN E\' MANCANTE MA TUTTORA INSTALLATO! DISINSTALLATELO ORA.'; +$lang['display'] = 'visualizzare'; +$lang['Restore'] = 'Ripristinare'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Reimpostare la configurazione predefinita? Perderete tutte le vostre impostazioni!'; +$lang['Thumbnails generation in progress...'] = 'Rigenerazione delle miniature in corso...'; +$lang['Photos generation in progress...'] = 'Rigenerazione delle foto in corso...'; +$lang['%s photos have been regenerated'] = '%s foto sono state rigenerate'; +$lang['%s photos can not be regenerated'] = '%s foto non possono essere rigenerate'; +$lang['Updates'] = 'Aggiornamento'; +$lang['Update in progress... Please wait.'] = 'Aggiornamento in corso... Attendere prego.'; +$lang['Ignore this update'] = 'Ignorare questo aggiornamento'; +$lang['Reset ignored updates'] = 'Ripristinare gli aggiornamenti ignorati'; +$lang['Update All'] = 'Aggiornare tutto'; +$lang['ERROR'] = 'ERRORE'; +$lang['Update Complete'] = 'Aggiornamento completato'; +$lang['Piwigo Update'] = 'Aggiornamento di Piwigo'; +$lang['Extensions Update'] = 'Aggiornamento delle estensioni'; +$lang['All extensions are up to date.'] = 'Tutte le estensioni sono aggiornate.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'I plugin seguenti potrebbero non essere compatibili con la nuova versione di Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'I temi seguenti potrebbero non essere compatibili con la nuova versione di Piwigo:'; +$lang['I decide to update anyway'] = 'Decido comunque di aggiornare'; +$lang['Update to Piwigo %s'] = 'Aggiornare a Piwigo %s'; +$lang['Two updates are available'] = 'Due aggiornamenti sono disponibili'; +$lang['This is a minor update, with only bug corrections.'] = 'Questo è un aggiornamento minore, con solo correzioni di bug.'; +$lang['This is a major update, with new exciting features.'] = 'Questo è un aggiornamento importante, con nuove e interessanti funzionalità.'; +$lang['Some themes and plugins may be not available yet.'] = 'Alcuni temi e plugin possono non essere ancora disponibili.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'E\' possibile aggiornare direttamente a Piwigo %s, senza passare per Piwigo %s (consigliato).'; +$lang['Save Template Directory'] = 'Salvare la template directory'; +$lang['Dump Database'] = 'Salvare il database'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Includere la cronologia (Attenzione: può essere superato il limite di memoria del server)'; +$lang['Unable to dump database.'] = 'Impossibile eseguire il salvataggio del database.'; +$lang['Some upgrades are available for extensions.'] = 'Degli aggiornamenti sono disponibili per le estensioni.'; +$lang['Please wait...'] = 'Attendere prego...'; +$lang['Ignore All'] = 'Ignorare tutto'; +$lang['Crop'] = 'Ridimenzionare'; +$lang['Width'] = 'Larghezza'; +$lang['Height'] = 'Altezza'; +$lang['Follow Orientation'] = 'Rispettare l\'orientamento'; +$lang['Graphics Library'] = 'Libreria grafica'; +$lang['Show menubar'] = 'Visualizzare il menu'; +$lang['No results'] = 'Nessun risultato'; +$lang['Type in a search term'] = 'Digitare un termine di ricerca'; +$lang['Searching...'] = 'Ricerca...'; +$lang['new'] = 'nuovo'; +$lang['Default photos order'] = 'Ordinamento predefinita delle foto'; +$lang['Activate icon "new" next to albums and pictures'] = 'Visualizzare l\'icona "nuovo" a fianco degli album e delle foto'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Non potete impostare l\'ordine predefinito delle foto perché avete un\'impostazione personalizzata nella configurazione locale.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Avete specificato $conf[\'order_by\'] nel vostro file di configurazione locale, questo parametro è obsoleto, si prega di eliminarlo o rinominarlo in $conf[\'order_by_custom\'] !'; +$lang['Add a criteria'] = 'Aggiungere un criterio'; +$lang['... or '] = '... oppure '; +$lang['Create'] = 'Creare'; +$lang['Start Upload'] = 'Avviare il caricamento'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Si sta utilizzando il Flash uploader. Problemi? Provare il Browser uploader invece.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'State utilizzando il Browser uploader. Provate con il Flash uploader invece.'; +$lang['Maximum file size: %sB.'] = 'Grandezza massima dei file: %sB.'; +$lang['Allowed file types: %s.'] = 'Tipi di file autorizzati: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Risoluzione massima approssimativa: %dM pixels (sia %dx%d pixels)'; +$lang['Manage Permissions'] = 'Gestire i permessi'; +$lang['Photo %s of %s'] = 'Foto %s su %s'; +$lang['show details'] = 'mostrare i dettagli'; +$lang['hide details'] = 'nascondere i dettagli'; +$lang['Merge tags'] = 'Unire i tags'; +$lang['Select the destination tag'] = 'Selezionare il tag di destinazione'; +$lang['(this tag will be deleted)'] = '(questo tag sara cancellato)'; +$lang['Confirm merge'] = 'Confermare l\'unione'; +$lang['Merge selected tags'] = 'Unire i tags selezionati'; +$lang['No destination tag selected'] = 'Non avete selezionato il tag di destinazione'; +$lang['Tags %s merged into tag %s'] = 'I tags %s sono stati uniti nel tag %s'; +$lang['Select at least two tags for merging'] = 'Selezionare almeno due tag da fuzionare'; +$lang['Average rate'] = 'Voto medio'; +$lang['Rate'] = 'Voto'; +$lang['Learn more'] = 'Per saperne di più'; +$lang['Select an album'] = 'Selezionare un album'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Per impostazione predefinita, Piwigo creerà una nuova dimensione web dalla versione HD (alta definizione) della vostra foto.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se la foto HD non è disponibile e la foto dimensioni web è più grande delle dimensioni qui di seguito, allora Piwigo la considererà come una foto HD e creerà la nuova foto dimensioni web.'; +$lang['An error has occured during upgrade.'] = 'Si è verificato un\'errore durante l\'aggiornamento.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Non è stato possibile estrarre i file. Verificare i permessi dei file della vostra installazione di Piwigo.
                  Cliccare qui per visualizzare il rapporto d\'errore.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo non può recuperare i file d\'aggiornamento dal server'; +$lang['Last import'] = 'Ultima importazione'; +$lang['With no album'] = 'Senza album'; +$lang['With no tag'] = 'Senza tag'; +$lang['With no virtual album'] = 'Senza album virtuale'; +$lang['Predefined filter'] = 'Filtro predefinito'; +$lang['Add tags'] = 'Aggiungere i tags'; +$lang['Synchronize metadata'] = 'Sincronizzare i metadati'; +$lang['Add to caddie'] = 'Aggiungere al cestino'; +$lang['Zoom'] = 'Zoom'; +$lang['Resize after upload'] = 'Ridimensionare dopo il caricamento'; +$lang['Original Size'] = 'Dimensioni originali'; +$lang['Send connection settings by email'] = 'Inviare gli ID via email'; +$lang['Activate comments'] = 'Attivare i commenti'; +$lang['Default comments order'] = 'Ordinamento predefinito dei commenti'; +$lang['A locked gallery is only visible to administrators'] = 'Una galleria bloccata è visibile solo dagli amministratori'; +$lang['Unlock gallery'] = 'Sbloccare la galleria'; +$lang['Gallery unlocked'] = 'Galleria sbloccata'; +$lang['Notify administrators when a comment is'] = 'Notificare agli amministratori quando un commento viene'; +$lang['modified'] = 'modificato'; +$lang['deleted'] = 'cancellato'; +$lang['pending validation'] = 'in attesa di convalida'; +$lang['Save visits in history for'] = 'Salvare storia delle visite per '; +$lang['simple visitors'] = 'singoli visitatori'; +$lang['registered users'] = 'utenti registrati'; +$lang['administrators'] = 'amministratori'; +$lang['This album contains %d photos, added on %s.'] = 'Questo album contiene %d foto, aggiunte il %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Questo album contiene %d foto, aggiunte tra il %s e il %s.'; +$lang['This album contains no photo.'] = 'Questo album non contiene nessuna foto.'; +$lang['%s has been successfully updated.'] = '%s è stato aggiornato con successo.'; +$lang['Move to album'] = 'Spostare verso l\'album'; +$lang['You can activate only one mobile theme.'] = 'Potete attivare un solo tema mobile.'; +$lang['Center of interest'] = 'Centro d\'interesse'; +$lang['Not cropped correctly?'] = 'La foto non è ritagliata correttamente?'; +$lang['Photo name'] = 'Nome foto'; +$lang['Automatic sort order'] = 'Ordinamento automatico'; +$lang['apply automatic sort order'] = 'applicare un criterio di ordinamento automatico'; +$lang['Save manual order'] = 'Salvare l\'ordinamento manuale'; +$lang['cancel manual order'] = 'cancellare l\'ordinamento manuale'; +$lang['Cancel'] = 'Cancellare'; +$lang['List'] = 'Lista'; +$lang['Web Form'] = 'Modulo web'; +$lang['Applications'] = 'Applicazioni'; +$lang['Available versions for'] = 'Versioni disponibili per'; +$lang['Available on'] = 'Disponibile su'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo per iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'L\'applicazione Piwigo per iOS permette di collegarti alla tua galleria Piwigo dal tuo iPhone, iPad o iPod Touch, creando degli album e caricando le immagini.'; +$lang['Piwigo for Android'] = 'Piwigo per Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'L\'applicazione Piwigo per Android permette di collegarti alla tua galleria di Piwigo dal tuo cellulare o tablet Android, creando degli album e caricando le immagini.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin Piwigo per Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom è un software fotografico specializzato per gestire grandi quantità di immagini ed eseguirne la post-produzione.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Il plugin di Piwigo permette di esportare e sincronizzare le immagini da Lightroom direttamente alla tua galleria di Piwigo.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Plugin Piwigo per Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell è un organizzatore di immagini digitali open-source che funziona sotto Linux. E\' il gestore di immagini predefinito di Ubuntu e Fedora.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Su Linux, semplicemente installa il pacchetto Shotwell e attiva l\'opzione di pubblicazione su Piwigo.'; +$lang['Piwigo publish plugin for digiKam'] = 'Plugin Piwigo per digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam è un avanzato software di gestione foto digitali gratuito per Linux, Windows e MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam è stato progettato per i fotografi che vogliono visualizzare, gestire, modificare, migliorare, organizzare, tag e condividere foto.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Per esportare le immagini da digiKam a Piwigo, semplicemente installa digiKam e il plugin Kipi.'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin Piwigo per iPhoto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto è il gestore d\'immagini predefinito su MacOSX. Il plugin di Piwigo permette di creare nuovi album e esportare immagini direttamente da iPhoto sulla Galleria di Piwigo.'; +$lang['Piwigo export plugin for Aperture'] = 'Plugin Piwigo per Aperture'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture è un potente programma per rifinire le immagini e gestire grandi librerie sotto Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture è realizzato per fotografi professionisti con la semplicità di iPhoto.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Il plugin di esportazione Piwigo permette di creare album ed esportare le immagini.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client per Android) è un client open-source (GPL v3) per Piwigo sotto piattaforma Android.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Le caratteristiche includono la navigazione nella galleria, la creazione di album e il caricamento di immagini'; +$lang['any visitor can see this album'] = 'qualsiasi visitatore può vedere questo album'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'i visitatori devono registrarsi ed avere i permessi adeguati per vedere questo album'; +$lang['Groups and users'] = 'Gruppi e utenti'; +$lang['Permission granted for groups'] = 'Permessi ammessi ai gruppi'; +$lang['Select groups...'] = 'Selezione gruppi...'; +$lang['There is no group in this gallery.'] = 'Non c\'è nessun gruppo in questa galleria.'; +$lang['Permission granted for users'] = 'Permessi ammessi agli utenti'; +$lang['Select users...'] = 'Selezione utenti...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utenti hanno automaticamente i permessi in quanto appartengono ad un gruppo ammesso'; +$lang['include photos with lower privacy level'] = 'includere le foto con un livello di confidenzialità inferiore'; +$lang['No group is permitted to see this private album'] = 'A nessun gruppo è permesso visualizzare questo album privato'; +$lang['Permission management'] = 'Gestione permessi'; +$lang['Photo sizes with crop'] = 'Dimensione immagini con ritaglio'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Il centro di interesse è la zona più significativa nella foto.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Per le foto con ritaglio, come "quadrato", Piwigo farà il meglio possibile per includere il centro d\'interesse.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Per impostazione predefinita, il centro d\'interesse è posizionato nel mezzo della foto.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Seleziona una zona con il mouse in modo da definire un nuovo centro d\'interesse.'; +$lang['custom'] = 'Personalizzato'; +$lang['Delete multiple size images'] = 'Elimina immagini con dimensioni differenti'; +$lang['Generate multiple size images'] = 'Genera immagini con dimensioni diverse'; +$lang['add a new watermark'] = 'Aggiungi un nuovo watermark'; +$lang['Apply watermark if height is bigger than'] = 'Aggiungi watermark se l\'altezza è maggiore di'; +$lang['Apply watermark if width is bigger than'] = 'Aggiungi watermark se la larghezza è maggiore di'; +$lang['bottom left corner'] = 'angolo in basso a sinistra'; +$lang['bottom right corner'] = 'angolo in basso a destra'; +$lang['middle'] = 'centro'; +$lang['Opacity'] = 'Opacità'; +$lang['Select a file'] = 'Scegli un file'; +$lang['top left corner'] = 'angolo in alto a sinistra'; +$lang['top right corner'] = 'angolo in alto a destra'; +$lang['X Position'] = 'Posizione X'; +$lang['X Repeat'] = 'Ripetizione X'; +$lang['Y Position'] = 'Posizione Y'; +$lang['Multiple Size'] = 'Dimensioni multiple'; +$lang['Watermark'] = 'Watermark'; +$lang['Original file : %s'] = 'File originale: %s'; +$lang['Posted %s on %s'] = 'Postato %s il %s'; +$lang['Added by %s'] = 'Aggiunto da %s'; +$lang['Visited %d times'] = 'Visitato %d volte'; +$lang['Numeric identifier : %d'] = 'Numero identificativo: %d'; +$lang['%s ago'] = '%s fa'; +$lang['%s in the future'] = '%s nel futuro'; +$lang['Rated %d times, score : %.2f'] = 'Votato %d volte, punteggio: %.2f'; +$lang['%d year'] = '%d anno'; +$lang['%d years'] = '%d anni'; +$lang['%d month'] = '%d mese'; +$lang['%d months'] = '%d mesi'; +$lang['%d week'] = '%d settimana'; +$lang['%d weeks'] = '%d settimane'; +$lang['%d day'] = '%d giorno'; +$lang['%d days'] = '%d giorni'; +$lang['%d hour'] = '%d ora'; +$lang['%d hours'] = '%d ore'; +$lang['%d minute'] = '%d minuto'; +$lang['%d minutes'] = '%d minuti'; +$lang['%d second'] = '%d secondo'; +$lang['%d seconds'] = '%d secondi'; +$lang['Sharpen'] = 'Evidenziare'; +$lang['Edit photo'] = 'Modificare foto'; +$lang['create a new site'] = 'creare un nuovo sito'; +$lang['No order field selected'] = 'Nessun criterio di ordinamento selezionato'; +$lang['Name of the duplicate'] = 'Nome del duplicato'; +$lang['Source tag'] = 'Sorgente tag'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Il tag "%s" è ormai una copia di "%s"'; +$lang['Duplicate selected tags'] = 'Duplicare i tags selezionati'; +$lang['Minimum height'] = 'Altezza minima'; +$lang['Minimum width'] = 'Larghezza minima'; +$lang['Portrait'] = 'Ritratto'; +$lang['Landscape'] = 'Paesaggio'; +$lang['Panorama'] = 'Panorama'; +$lang['Manage photos'] = 'Gestire foto'; +$lang['View in gallery'] = 'Mostra nella galleria'; +$lang['Number of albums per page'] = 'Numero d\'album per pagina'; +$lang['Ratio'] = 'Rapporto'; +$lang['between %d and %d pixels'] = 'tra %d e %d pixels'; +$lang['between %.2f and %.2f'] = 'tra %.2f e %.2f'; +$lang['Manage the members'] = 'Gestire membri'; +$lang['Type here the name of the new group'] = 'Digita quì il nome del nuovo gruppo'; +$lang['No group selected, no action possible.'] = 'Nessun gruppo selezionato, nessuna azione possibile.'; +$lang['Please select at least two groups'] = 'Seleziona almeno due gruppi'; +$lang['Duplicate'] = 'Duplicare'; +$lang['Merge selected groups'] = 'Unire i gruppi selezionati'; +$lang['This group will be unset to default'] = 'Questo gruppo non sarà più utilizzato per impostazione predefinita'; +$lang['This group will be set to default'] = 'Questo gruppo sarà impostato sul valore predefinito'; +$lang['No members to manage'] = 'Nessun membro da gestire'; +$lang['Rename'] = 'Rinomina'; +$lang['Purge user cache'] = 'Svuotare la cache utente'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Le dimensioni dell\'immagine saranno ridotte a %dx%d pixel.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Ridimensionamento dopo l\'upload disattivato a causa dell\'uso di GD come libreria grafica'; +$lang['Select at least one tag'] = 'Selezionare almeno un tag'; +$lang['Basic settings'] = 'Impostazioni base'; +$lang['General'] = 'Generale'; +$lang['Mail theme'] = 'Tema email'; +$lang['on the %d selected users'] = 'su %d utenti selezionati'; +$lang['Showing %s to %s of %s users'] = 'Mostra %s a %s di %s utenti'; +$lang['Registered on %s, %s.'] = 'Registrati su %s, %s.'; +$lang['No user selected of %d users'] = 'Nessun utente selezionato di %d utenti'; +$lang['User %s updated'] = 'Utente %s aggiornato'; +$lang['User %s added'] = 'Utente %s aggiunto'; +$lang['Show %s users'] = 'Mostra %s utenti'; +$lang['Users modified'] = 'Utenti modificati'; +$lang['Update user'] = 'Aggiorna utente'; +$lang['Password updated'] = 'Password aggiornata'; +$lang['No user selected, no action possible.'] = 'Nessun utente selezionato, nessuna azione è possibile.'; +$lang['No matching user found'] = 'Nessun utente corrispondente trovato'; +$lang['Loading...'] = 'Caricamento...'; +$lang['Last visit on %s, %s.'] = 'Ultima visita su %s, %s.'; +$lang['All %d users are selected'] = 'Tutti %d utenti sono selezionati'; +$lang['(filtered from %s total users)'] = '(filtrato da %s utenti totali)'; +$lang['%d of %d users selected'] = '%d di %d utenti selezionati'; +$lang['Change username'] = 'Cambia nome utente'; +$lang['Change password'] = 'Cambia password'; +$lang['close'] = 'chiudere'; +$lang['Close user details'] = 'Chiudi dettagli utente'; +$lang['Open user details'] = 'Aprire dettagli utente'; +?> \ No newline at end of file diff --git a/sources/language/it_IT/common.lang.php b/sources/language/it_IT/common.lang.php new file mode 100644 index 0000000..f8aff06 --- /dev/null +++ b/sources/language/it_IT/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/it_IT/help/cat_modify.html b/sources/language/it_IT/help/cat_modify.html new file mode 100644 index 0000000..aa8f30f --- /dev/null +++ b/sources/language/it_IT/help/cat_modify.html @@ -0,0 +1,141 @@ +

                  Modificare un album

                  + +

                  Informazioni

                  + +
                    + +
                  • nome: rinominare l'album (virtualmente in caso + di un album fisico).
                  • + +
                  • descrizione: da un'idea generale del contenuto, + questo testo verrà visualizzato nella parte inferiore della pagina miniature.
                  • + +
                  + +

                  Spostare

                  + +

                  Se l'album è virtuale, potete spostarlo. Spostare un +album significa cambiarne l'album padre.

                  + +

                  Opzioni

                  + +
                    + +
                  • Tipo di accesso: Gestione dei permessi. Se rendete +un album privato, tutti gli album figli diventano privati. Se +rendete un album pubblico, tutti gli album genitori diventano +pubblici.
                  • + +
                  • Blocco: Gli album e i sub-album verranno disattivati temporaneamente per manutenzione.
                  • + +
                  • Commenti: Autorizzare gli utenti a commentare +le foto di quest'album.
                  • + +
                  + +

                  Potete anche gestire queste opzioni con la gestione delle "Proprietà" +(schermo Commenti, Blocco, Pubblico/Privato, Rappresentativa disponibile in Amministrazione » Album » Proprietà).

                  + +

                  Ordine di apparizione

                  + +

                  Scegliere se il tipo di ordinamento predefinito sarà usato.

                  + +

                  Indicare se quest'ordinamento sarà applicato ai sub-album.

                  + +

                  Scegliere le colonne per l'ordinamento da usare su quest'album.

                  +
                    +
                  • Data di creazione: Data di creazione della foto
                  • +
                  • Aggiunto il: Data di sincronizzazione
                  • +
                  • Voto medio (*): Media che potrebbe essere modificata dal voto di un utente
                  • +
                  • Le più viste (*): La visita attuale potrebbe modificare l'ordine delle foto più viste
                  • +
                  • Nome file: Nome inserito nei campi precedenti
                  • +
                  • Id: Id interno (gli album più recenti hanno un "Id" più grande dei precedenti.
                  • + +
                  +

                  (*)Attenzione: Effettuare qualche test, l'ordinamento scelto potrebbe darvi qualche sorpresa.

                  + + +

                  Copertina

                  + +

                  La copertina di un album è la miniatura che appare per rappresentare l'album sulla pagina principale (category.php) quando +l'album contiene solo dei sub-album +e non direttamente delle foto (come +alla radice).

                  + +

                  Esistono quattro modi per scegliere la copertina di un album:

                  + +
                    + +
                  • Pagina di visualizzazione delle foto: nella barra delle azioni, uno dei pulsanti permette di scegliere +la foto da visualizzare come copertina rappresentante l'album visualizzato. Il pulsante in questione è visibile solo +agli amministratori.
                  • + +
                  • Modicare le informazioni di una foto +in amministrazione. Questa pagina può essere raggiunta tramite picture.php o Gestione per +lotti con il modo unitario. Per i dettagli, vedi l'aiuto per +questa pagina.
                  • + +
                  • Amministrazione » Album » Proprietà » +Copertina. Per i dettagli, vedi l'aiuto per questa pagina.
                  • + +
                  • Modificare un album (questa +pagina).
                  • + +
                  + +

                  La scelta della copertina dipende dal parametro di configurazione +allow_random_representative (vedi include/config_default.inc.php).

                  + +

                  Di default (allow_random_representative è impostato su "false"), ogni +album contenente almeno una foto, è rappresentato da un elemento +fisso (copertina). Una volta impostata (alla creazione del album), la copertina cambia +solo se lo decide l'amministratore. Se la copertina +non è appropriata, potete chiedere di Scegliere una copertina +a caso.

                  + +

                  Se il parametro di configurazione allow_random_representative +è impostato su "true", l'album contenente delle foto può non avere +una copertina fissa. Usare semplicemente il pulsante Cancellare +copertina.

                  + +

                  Se l'album non contiene nessuna foto (ma solo dei sub-album) può comunque essere rappresentato da una qualsiasi +foto. Utilizzare la pagina Modicare le informazioni +di una foto. L'unica opzione disponibile di questa pagina è il pulsante +Cancellare copertina.

                  + +

                  Associare tutte le foto di un album ad un nuovo album

                  + +
                    + +
                  • Nome dell'album virtuale: Nome del nuovo album da creare, +tutte le foto dell'attuale album verranno associate al nuovo album.
                  • + +
                  • Album padre: Dove deve essere creato il nuovo album, +lasciare vuoto per crearlo alla radice (root) del sito.
                  • + +
                  + +

                  Associare tutte le foto del album attuale a degli album esistenti

                  + +
                    + +
                  • Album: Scegliere l'album di destinazione.
                  • + +
                  + +

                  Inviare un'email informativa ai membri del gruppo

                  + +
                    + +
                  • Gruppo: Gruppo dei destinatari
                  • + +
                  • Contenuto dell'email: Testo libero da mandare.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/it_IT/help/cat_move.html b/sources/language/it_IT/help/cat_move.html new file mode 100644 index 0000000..08ee460 --- /dev/null +++ b/sources/language/it_IT/help/cat_move.html @@ -0,0 +1,15 @@ +

                  Spostare gli album virtuali

                  + +

                  Solo gli album virtuali possono avere un nuovo album padre.

                  + +

                  Album virtuali da spostare

                  + +

                  Selezionare uno o più album virtuali da spostare. +Se l'elenco è vuoto, ciò vuole dire che non ne avete ancora creato uno.

                  + +

                  Nuovo album padre

                  + +

                  Selezionare un nuovo album padre (virtuale o fisico). +Se non ne selezionate uno, +gli album da spostare verranno inserite nella root del sito. +Non potete spostare un album verso se stesso o verso un proprio sub-album.

                  diff --git a/sources/language/it_IT/help/cat_options.html b/sources/language/it_IT/help/cat_options.html new file mode 100644 index 0000000..110d656 --- /dev/null +++ b/sources/language/it_IT/help/cat_options.html @@ -0,0 +1,32 @@ +

                  Opzioni degli album

                  + +

                  Gestione delle opzioni di più album alla volta.

                  + +
                  + +
                  Commenti utenti
                  + +
                  Permettere agli utenti di aggiungere dei commenti negli album selezionati. +È possibile aggiungere un commento ad una foto se questa si trova in un album dove i commenti sono autorizzati.
                  + +
                  Bloccare
                  + +
                  Gli album selezionati sono temporaneamente bloccati +per lavori di manutenzione. Se un album è bloccato per manutenzione, tutti i sub-album sono a loro volta bloccati. +Se un album è sbloccato, tutti gli album padri vengono sbloccare.
                  + +
                  Pubblico / Privato
                  + +
                  La gestione dei permessi è possibile solo sugli album privati. Una volta reso un album privato, dovete +in modo esplicito autorizzare gli utenti o i gruppi +ad accedervi. Se un album è privato, tutti i sub-album diventono a loro volta privati. +Se un album diventa pubblico, tutti gli album padri diventono pubblici.
                  + +
                  Copertina
                  + +
                  Questa opzione è disponibile solo se il parametro di +configurazione allow_random_representative (vedi include/config_defaults.inc.php) è impostato su +true. Ogni album può essere rappresentato da una miniatura presa a caso o da una miniatura scelta come unica copertina.
                  + +
                  \ No newline at end of file diff --git a/sources/language/it_IT/help/cat_perm.html b/sources/language/it_IT/help/cat_perm.html new file mode 100644 index 0000000..71a5800 --- /dev/null +++ b/sources/language/it_IT/help/cat_perm.html @@ -0,0 +1,13 @@ +

                  Gestire i permessi per un album

                  + +

                  Questa pagina è disponibile soltanto per gli album privati. +Qui potete scegliere gli utenti e i gruppi autorizzati per quest'album.

                  + +

                  Gruppi

                  + +

                  Potete concedere o negare l'accesso dei gruppi per l'album corrente. Di conseguenza, gli utenti +che appartengono a questi gruppi si vedranno autorizzati, o non autorizzati, ad accedere al suddetto album.

                  + +

                  Utenti

                  + +

                  Potete concedere o negare l'accesso agli utenti ad un album in modo individuale. Agli utenti autorizzati ad accedere ad un album, grazie all'appartenenza ad un gruppo, gli si può negare l'accesso attivando un'eccezione

                  diff --git a/sources/language/it_IT/help/configuration.html b/sources/language/it_IT/help/configuration.html new file mode 100644 index 0000000..47e1d56 --- /dev/null +++ b/sources/language/it_IT/help/configuration.html @@ -0,0 +1,132 @@ +

                  Configurazione

                  + +

                  Questa pagina permette di gestire la configurazione di base. +Infatti, questa pagina mostra soltanto i parametri che dovrebbero +bastare per la maggiore parte degli amministratori. Se volete +vedere gli altri numerosi parametri di configurazione, leggete il file include/config_default.inc.php.

                  + +

                  Questa pagina è divisa in diverse sezioni, raggruppando i parametri +di configurazione per tema.

                  + +

                  Principale

                  +
                    + +
                  • Titolo della galleria: usato per i Feed RSS e +la notifica via email.
                  • + +
                  • Banner delle pagine: Codice HTML presente in alto +su tutte le pagine.
                  • + +
                  • URL della galleria: usato per i Feed RSS.
                  • + +
                  • Blocco galleria: Bloccare la galleria per +la manutenzione. Solo gli amministratori avranno accesso +alla galleria.
                  • + +
                  • Voto: E' possibile dare un voto alle foto.
                  • + +
                  • Voto degli ospiti: Anche gli ospiti (utenti non registrati) possono dare un voto alle foto.
                  • + +
                  • Autorizzare l'iscrizione di nuovi utenti: Iscrizione libera per tutti.
                  • + +
                  • L'indirizzo email è obbligatorio per tutti gli utenti: L'indirizzo email sarà verificato durante l'iscrizione o durante l'aggiornamento dei profili, salvo il caso in cui l'iscrizione o l'aggiornamento venissero effettuati nel pannello di amministrazione, da parte dell'amministratore.
                  • + +
                  • Notificare agli amministratori quando un nuovo utente si registra: Gli amministratori riceveranno un'email ad ogni nuova iscrizione di utenti.
                  • + +
                  • Ordinamento di default delle foto : Potete definire un'ordinamento personalizzato grazie a i menu a tendina.
                  • + +
                  + +

                  Cronologia

                  + +

                  Le visite alle pagine index.php e picture.php sono +registrate nella tabella history.

                  + +

                  Le visite sono mostrate nella pagina Amministrazione » tools » Cronologia.

                  + +
                    +
                  • Registrare le pagine visitate dagli ospiti: le pagine visitate dagli ospiti sono registrate.
                  • + +
                  • Registrare le pagine visitate dagli utenti: le pagine visitate dagli utenti sono registrate.
                  • + +
                  • Registrare le pagine visitate dagli amministratori: le pagine visitate dagli amministratori sono registrate.
                  • + +
                  + +

                  Commenti

                  +
                    + +
                  • Commenti utenti per tutti: anche gli ospiti +possono scrivere commenti.
                  • + +
                  • Numero di commenti utente per pagina.
                  • + +
                  • Approvazione: un amministratore deve autorizzare +i commenti degli utenti prima che questi possano essere visibili nella +parte pubblica. L'approvazione dei commenti utente avviene nella +pagina Amministrazione » Tools » Commenti in attesa.
                  • + +
                  • Notificare agli amministratori quando un commento è stato scritto: +Invio di un'email agli amministratori quando un utente scrive un commento.
                  • + +
                  • Notificare agli amministratori quando un commento richiede l'approvazione: +Invio di un'email agli amministratori quando un utente scrive un commento che necessita di approvazione. +L'approvazione dei commenti utente avviene nella pagina Amministrazione » Tools » Commenti in attesa.
                  • + +
                  + +

                  Visualizzazione di default

                  +

                  Modificare le opzioni di visualizzazione di default per gli utenti non +connessi. Una volta effettuata la connessione, queste opzioni sono +personalizzabili nella videata profilo).

                  + +

                  È possibile cambiare le impostazioni per gli utenti esistenti, +in quest'altra pagina: Amministrazione » +Utenti » Gestire, in cui potete cambiare le impostazioni +degli utenti.

                  + +
                    + +
                  • Lingua: Solo per i titoli della galleria. +Il nome degli album, delle foto e le descrizioni non sono compresi +nella traduzione.
                  • + +
                  • Numero di miniature per riga
                  • + +
                  • Numero di righe per pagina
                  • + +
                  • Tema dell'interfaccia
                  • + +
                  • Periodo recente: in giorni. Periodo durante il quale +una foto è considerata come recente. Questo periodo deve essere superiore +a 1 giorno.
                  • + +
                  • Espandere gli album: Espandere di default tutti +gli album nel menu? Attenzione: questa opzione consuma molte +risorse di sistema, se avete tanti album +e sub-album.
                  • + +
                  • Mostrare il numero di commenti: Mostrare il numero +di commenti sotto ogni miniatura. Attenzione: questa opzione consuma +delle risorse di sistema.
                  • + +
                  • Mostrare il numero di visite: Mostrare il numero + di visualizzazioni della foto sotto la miniatura, nella pagina delle miniature. + Valido solo se il parametro di configurazione avanzata è :
                    + $conf['show_nb_hits'] = true;
                    + N.B.: Di default il parametro è impostato su "false".
                  • + +
                  • Larghezza massima delle foto: larghezza massima di + una foto visualizzata. Se la foto è più larga del parametro inserito, + allora quest'ultima verrà ridimensionata. Se pensate che sia necessario cambiare + questo parametro (per la visualizzazione di default), allora sarebbe meglio +ridimensionare le foto prima di caricarle, specialmente se queste sono molto pesanti.
                  • + +
                  • Altezza massima delle foto: stessi consigli della + voce precedente.
                  • + +
                  diff --git a/sources/language/it_IT/help/extend_for_templates.html b/sources/language/it_IT/help/extend_for_templates.html new file mode 100644 index 0000000..23f3d71 --- /dev/null +++ b/sources/language/it_IT/help/extend_for_templates.html @@ -0,0 +1,101 @@ +

                  Configurazione per "l'estensione" dei templates

                  + +

                  Scopo

                  +

                  Definire le condizioni di sostituzione per ogni template (modello) dalla directory template-extension +(template chiamato il "replacer" ("modelli personalizzato" / "sostituto")).

                  + +

                  I "templates originali" provengono da ./themes/default/template (o qualunque altro tema) + saranno rimpiazzati da un sostituto se quest'ultimo collegato al "template originale" + (e in modo facoltativo, quando l'URL richiesta contiene un "parametro facoltativo dell'URL").

                  + +

                  I "parametri facoltativi dell'URL" sono quelli che potete trovare dopo il nome del modulo nell'indirizzo (URL).

                  + +

                  Quindi un "parametro facoltativo dell'URL" pu essere un "permalink" attivo (per maggiore informazioni +vedere i permalinks nella nostra documentazione).

                  + +

                  Leggere: `Avvertimenti` sulle condizioni d'uso.

                  + +

                  Che cosa sono le estensioni dei template?

                  + +

                  Questo tool di configurazione potente sia per i principianti che per gli utenti esperti. +Trammite FTP, nella directory template-estensione, il Webmaster pu duplicare i file + .tpl ("template originali") con un nome diverso + (sostituto). + + "Template originali", attualmente i modelli d'origine sopportati sono:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl e/o thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl e/o footer.tpl
                  • +
                  • picture_content.tpl e/o picture.tpl
                  • + +
                  • profile.tpl e/o profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl e/o search_rules.tpl
                  • +
                  • nbm.tpl e/o notification.tpl
                  • +
                  • identification.tpl e/o register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  Dove posso trovare i "templates originali"?

                  + +

                  I templates originali sono in /themes/default/template/ +(non modificare i templates originali per evitare problemi durante gli aggiornamenti futuri). Cos, con +i "templates originali", il webmaster pu creare i suoi "replacers (modelli personalizzati)".

                  + +

                  Dove posso salvare i "modelli personalizzati"?

                  + +

                  I templates personalizzati possono essere salvati nella directory +template-extension (o sottodirectory). +I "modelli personalizzati" possono avere qualunque nome con l'estensione .tpl. Per esempio: template-extension/my-extension/video.tpl.

                  + + +

                  Come posso attivare i miei "modelli personalizzati"?

                  +

                  Un template originale dovrebbe essere assegnato a + un replacer (modello personalizzato) per potere attivare i modelli personalizzati associati. + Attivare i modelli personalizzati la funzione "Estende i templates" nel menu di Configurazione dell'Amministrazione.

                  + +

                  Se selezionate un Parametro facoltativo del URL i modelli personalizzati saranno utilizzati +unicamente sulle pagine con questa parola chiave. Per esempio: index.php?/most_visited

                  + +

                  Gli utenti esperti useranno i permalinks (link permanenti) come +parametro facoltativo del URL.

                  + +

                  Se selezionate un template legato, i modelli personalizzati avranno luogo unicamente su questo template.

                  + +

                  Come posso disattivare mio "sostituto"?

                  +
                    +
                  • Deselezionare il "template originale".
                  • +
                  • Con l'FTP cancellare il "sostituto".
                  • +
                  + +

                  Avvertenze

                  +
                    + +
                  • Il template d'origine deve essere il vero template "originale" + altrimenti potreste avere dei risultati inattesi!
                  • + +
                  • Se diversi replacers (templates personalizzati) hanno lo stesso + template originale e lo stesso parametro facoltativo del URL + solo l'ultimo sostituto sat attivo.
                  • + +
                  • Non selezionare il parametro facoltativo del URL + attiver il sostituto ad ogni uso del template. + Come detto precedente, l'ordine pu annullare i modelli personalizzati precedenti.
                  • + +
                  • Le sottodirectory: + Le sottodirectory sono ignorate, ma sono utili per cambiare l'ordine dei modelli personalizzati.
                    +distributed-samples: sono distribuite per le vostre prove! +Non modificateli, create i vostri! +
                  • + +
                  • Alla cancellazione di un sostituto, il template originale + sar immediatamente riattivato.
                  • + +
                  diff --git a/sources/language/it_IT/help/group_list.html b/sources/language/it_IT/help/group_list.html new file mode 100644 index 0000000..7d6f079 --- /dev/null +++ b/sources/language/it_IT/help/group_list.html @@ -0,0 +1,21 @@ +

                  Elenco dei gruppi

                  + +

                  Amministrazione delle proprietà dei gruppi.

                  + +

                  Aggiungere un gruppo

                  + +

                  L'amministratore può creare dei gruppi.

                  + +

                  Elenco dei gruppi

                  + +

                  Permette per ogni gruppo di:

                  + +
                    +
                  • accedere al elenco dei membri
                  • +
                  • accedere ai permessi
                  • +
                  • cancellare il gruppo (necessita di conferma)
                  • +
                  • cambiare lo stato "default" (necessita di conferma)
                  • +
                  + +

                  Gruppo di default

                  +

                  Il gruppo di default è associato automaticamente ad ogni nuovo utente.

                  \ No newline at end of file diff --git a/sources/language/it_IT/help/help_add_photos.html b/sources/language/it_IT/help/help_add_photos.html new file mode 100644 index 0000000..bff3e39 --- /dev/null +++ b/sources/language/it_IT/help/help_add_photos.html @@ -0,0 +1,33 @@ +

                  Esistono diversi metodi per aggiungere delle foto nella vostra +galleria :

                  + +
                    + +
                  • L'upload diretto dal vostro browser è il metodo più semplice ed + immediato. Questo metodo dipende molto dalle capacità del vostro browser e del vostro + server web. Ideale per caricare poche foto. Per grossi volumi di foto, oppure in + caso di problemi, potete utilizzare dei metodi alternativi.
                  • +
                  + + + +
                    +
                  • pLoader è un software gratuito da installare sul vostro + computer. Scegliete le foto che volete trasferire ed inseritele nella finestra + di pLoader, cliccate su "Trasferire verso Piwigo" e lasciate che pLoader si occupi del resto. Esistono anche altri software, come WinToPiwigo o il modulo + di esportazione Piwigo di Digikam.
                  • +
                  + + + +
                  +
                    +
                  • FTP + è il metodo ideale per aggiungere una vasta collezione + di foto con un numero minimo di click del mouse. Seguite la guida per preparare + le vostre foto. Questo metodo consente di controllare con precisione l'organizzazione + fisica dei files sul server.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/it_IT/help/help_groups.html b/sources/language/it_IT/help/help_groups.html new file mode 100644 index 0000000..e69c0af --- /dev/null +++ b/sources/language/it_IT/help/help_groups.html @@ -0,0 +1,7 @@ +

                  I gruppi sono un semplice metodo per impostare le autorizzazioni di un elenco di utenti.

                  + +

                  E' possibile creare gruppi ed aggiungere degli utenti in +Amministrazione » Utenti » Gruppi.

                  + +

                  Un utente può appartenere a diversi gruppi. L'autorizzazione è prioritaria rispetto alla proibizione. Ad esempio, se l'utente "pippo" appartiene ai gruppi "famiglia" +e "amici", e, tra questi gruppi, solo il gruppo "famiglia" può vedere l'album "Natale 2010", ne consegue che l'utente "pippo" sarà abilitato a visualizzare quest'album.

                  diff --git a/sources/language/it_IT/help/help_misc.html b/sources/language/it_IT/help/help_misc.html new file mode 100644 index 0000000..e62d4b5 --- /dev/null +++ b/sources/language/it_IT/help/help_misc.html @@ -0,0 +1,9 @@ +

                  Dopo aver creato la vostra galleria potete configurarla per gli ospiti +

                    +
                  • La visualizzazione di default in Amministrazione » Configurazione » Opzioni scheda Parametri ospite.
                  • +
                  • Il tema di default in Amministrazione » Configurazione » Temi
                  • +
                  • La lingua di default in Amministrazione » Configurazione » Lingue
                  • +
                  + Di default, ogni nuovo utente erediterà queste proprietà al momento della registrazione. +

                  +

                  Se avete delle domande, la comunità di Piwigo sarà lieta di rispondervi sull'Forum.

                  diff --git a/sources/language/it_IT/help/help_permissions.html b/sources/language/it_IT/help/help_permissions.html new file mode 100644 index 0000000..8c5c238 --- /dev/null +++ b/sources/language/it_IT/help/help_permissions.html @@ -0,0 +1,48 @@ +
                  +Autorizzazioni per le foto + +

                  Ogni foto ha un livello di privacy. Anche ciascun utente ha un livello di privacy. Ci sono 5 livelli di privacy: +

                    +
                  1. Nessuno
                  2. +
                  3. Contatti
                  4. +
                  5. Amici (superiore al livello Contatti)
                  6. +
                  7. Famiglia (superiore al livello Amici)
                  8. +
                  9. Amministratori (superiore a tutti gli altri livelli)
                  10. +
                  + +

                  I livelli superiori dispongono delle autorizzazioni per accedere ai livelli inferiori. Per un dato utente, maggiore è il suo livello di privacy, più foto potrà vedere.

                  + +

                  Ad esempio, se il livello di privacy della foto "matrimonio_pietro-0024.jpg" fosse impostato su "Famiglia", allora potreste avere una situazione simile:

                  +
                    +
                  • Pietro che ha livello di privacy impostato su Amministratore, può vederla visto che il livello "Amministratori" permette di vedere tutte le foto
                  • ; +
                  • Vanessa che ha livello di privacy impostato su Famiglia, vedrà anche lei la foto, perchè il livello Famiglia è il livello minimo richiesto
                  • ; +
                  • Maria che ha livello di privacy impostato su Amica, non potrà vederla, perchè il livello Amica è inferiore al livello Famiglia che è quello minimo necessario
                  • . +
                  + +

                  Un utente che non dispone delle autorizzazioni per vedere il contenuto di un album, non vedrà l'album e nemmeno il suo titolo. Lo stesso principio si applica a un tag.

                  + +

                  E' possibile impostare il livello di privacy di un utente nella pagina Amministrazione » Utenti » Gestire.

                  + +
                  + +
                  +Autorizzazioni per gli album + +

                  Se i livelli di privacy non corrispondono esattamente ai vostri bisogni, potete anche gestire le autorizzazioni per album, per un utente o per un gruppo. E' possibile gestire le autorizzazioni per le foto e gli album contemporaneamente, senza conflitti.

                  + +

                  Potete vietare l'accesso agli album. Impostate il tipo d'accesso a "privato" se desiderate vietare l'accesso all'album.

                  + +

                  Potete rendere un album privato modificando il singolo album (Amministrazione » Album » Gestire » Modificare) o +impostando l'opzione dell'albero completo degli album (Amministrazione » Album » Proprietà » Pubblico/Privato).

                  + +

                  Una volta che l'album è privato, potrete gestire le autorizzazioni per gruppi e gli utenti da 3 pagine :

                  + +
                    +
                  • Amministrazione » Utenti » Gestire » azione Permessi (un link per utente)
                  • +
                  • Amministrazione » Utenti » Gruppi » azione Permessi (un link per gruppo)
                  • +
                  • Amministrazione » Album » Gestire » Modificare i permessi (un link per album)
                  • +
                  + +
                  diff --git a/sources/language/it_IT/help/help_virtual_links.html b/sources/language/it_IT/help/help_virtual_links.html new file mode 100644 index 0000000..e867b72 --- /dev/null +++ b/sources/language/it_IT/help/help_virtual_links.html @@ -0,0 +1,5 @@ +

                  Le foto sono visualizzate nell'album corrispondente alla directory.

                  + +

                  Potete anche visualizzare una foto in più di un album, senza dupplicare il file. Associate la foto a un'altra o più album dallo schermo di modifica della foto (al quale accedete dalla pagina di visualizzazione della foto della vostra galleria, quando siete connessi come Amministratore).

                  + +

                  Gli album virtuali nascono da questo principio: non sono associate a nessuna directory fisica. Create degli album virtuali in Amministrazione » Album » Gestire.

                  diff --git a/sources/language/it_IT/help/history.html b/sources/language/it_IT/help/history.html new file mode 100644 index 0000000..171e2c7 --- /dev/null +++ b/sources/language/it_IT/help/history.html @@ -0,0 +1,44 @@ +

                  Cronologia

                  + +

                  Queste pagine vi permettono di controllare la cronologia delle visite del vostro sito, a seconda delle opzioni che avete attivato in - Amministrazione » Configurazione » Opzioni » Scheda "Cronologia".

                  + +

                  Statistiche

                  +
                    +

                    Se avete scelto che le visite alle pagine index.php e picture.php siano +registrate nella tabella history, +questa scheda vi permette di controllare il numero di visite

                    + +
                  • Statistiche totali: visualizzate le statistiche annuali
                  • + +
                  • Statistiche di un anno: visualizzate le statistiche mensili dell'anno selezionato.
                  • + +
                  • Statistiche di un mese: visualizzate le statistiche giornaliere del mese selezionato.
                  • + +
                  • Statistiche di una giornata: visualizzate le statistiche orarie del giorno selezionato.
                  • + +
                  + +

                  Ricerca

                  +
                    +

                    Se avete scelto che le visite delle pagine index.php e picture.php siano +registrate nella tabella history, questa scheda vi permette di controllare in dettaglio le pagine visitate con l'aiuto di diversi filtri.

                    + +
                  • Filtro per data : selezionate il periodo +di cui volete verificare l’attività.
                  • + +
                  • Filtro per tipo di elemento : selezionate +il tipo di elemento di cui volete osservare l’attività.
                  • + +
                  • Utente : selezionate l'utente di cui +volete osservare l'attività.
                  • + +
                  • Nome file : selezionate il nome del file di cui +volete osservare l'attività.
                  • + +
                  • Id immagine : selezionate l'Id dell'immagine di cui +volete osservare l'attività.
                  • +
                  \ No newline at end of file diff --git a/sources/language/it_IT/help/index.php b/sources/language/it_IT/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/it_IT/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/it_IT/help/maintenance.html b/sources/language/it_IT/help/maintenance.html new file mode 100644 index 0000000..b971d94 --- /dev/null +++ b/sources/language/it_IT/help/maintenance.html @@ -0,0 +1,64 @@ +

                  Manutenzione

                  + +

                  Per ottimizzare il tempo di generazione di una pagina, Piwigo utilizza una memoria cache. + Per esempio, invece di contare il numero di foto contenute in ogni album + ad ogni caricamento della pagina, queste informazioni vengono immagazzinate nel database. + In teoria, questa informazione dovrebbe essere sempre corretta, ma a volte si può verificare + un errore e le informazioni memorizzate nella cache risulteranno errate.

                  + +

                  Alcune informazioni diventano inutili col tempo. Cancellare queste +informazioni inutili dal database vi permette di liberare spazio sul disco.

                  + +
                    + +
                  • + Elementi orfani: + Mostra le foto che non sono associate ad un album virtuale. +
                  • +
                  • + File con lo stesso nome in più album fisici: + Mostra le foto o altri file con lo stesso nome, trovati in più album. +
                  • + +
                  + +
                    + +
                  • Aggiornamento delle informazioni degli album : + Per ogni album, sono controllate e, se necessario, aggiornate le seguenti informazioni: + elenco degli album padri, numero di foto, data dell'ultima foto, posizione tra + gli album di stesso livello, posizione tra album padri e album figli. + Quest'azione controlla anche la presenza delle foto che fungono da copertina.
                  • + +
                  • Aggiornamento delle informazioni delle foto: +Per ogni foto, le informazioni aggiornate sono: il percorso completo +del file, il voto medio. Attenzione: da non confondere con i metadati +sincronizzabili tramite la pagina Amministrazione » Album » Sincronizzare +o nella pagina Modificare le informazioni della foto (accessibile dalla pagina di visualizzazione di una foto picture.php).
                  • + +
                  • Riparare e ottimizzare il database: +Vengono eseguite le operazioni di riordinamento, riparazione ed ottimizzazione di ogni tabella del database. +
                  • + +
                  + +
                    +
                  • Ripulire i dettagli dalla cronologia: +Cancella tutte le righe dalla tabella history. La pagina +Amministrazione » Tools » Cronologia non mostrerà più nessuna informazione relativa alla cronologia. +Attenzione: Tutte le informazioni saranno definitivamente perse e non sarà più possibile recuperarle. +
                  • + +
                  • Ripulire il sommario della cronologia: +Cancella tutte le informazioni del sommario (ottenute dal dettaglio della cronologia). +
                  • + +
                  • Ripulire le sessioni scadute: cancella tutte le sessioni scadute.
                  • + +
                  • Ripulire i flussi di notifica mai usati: cancella tutte le notifiche che non sono mai state usate.
                  • + +
                  • Ripulire la cronologia delle ricerche: cancella tutte le informazioni sulle ricerche effettuate.
                  • + +
                  • Ripulire i templates compilati: cancella le informazioni relative ai templates.
                  • + +
                  diff --git a/sources/language/it_IT/help/notification_by_mail.html b/sources/language/it_IT/help/notification_by_mail.html new file mode 100644 index 0000000..2557713 --- /dev/null +++ b/sources/language/it_IT/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                  Notifiche tramite Email

                  + +

                  Questa pagina consente di configurare e gestire le notifiche via Email sui cambiamenti e le novità del vostro sito.

                  + +

                  Questa pagina è composta da 3 schede:

                  + +

                  Parametri

                  +

                  Disponibile soltanto per il Webmaster, questa scheda gestisce i parametri della notifica via email.

                  + +

                  Iscrizione

                  +

                  Disponibile soltanto per il Webmaster, questa scheda gestisce l'iscrizione/disiscrizione alla notifica via email.

                  + +

                  Invio

                  +

                  Disponibile per il Webmaster e gli Amministratori, questa scheda consente l'invio di email per notificare le novità del sito.

                  diff --git a/sources/language/it_IT/help/permalinks.html b/sources/language/it_IT/help/permalinks.html new file mode 100644 index 0000000..0a43df7 --- /dev/null +++ b/sources/language/it_IT/help/permalinks.html @@ -0,0 +1,7 @@ +

                  Permalink

                  + +

                  I Permalinks sono usati per rendere le url degli album più gradevoli. Quando un album ha un permalink associato, l'id dell'album nell'url non è più necessario.

                  + +

                  Quando un permalink è cancellato, potete salvarlo nello storico dei permalink, in modo che le fonti esterne alle pagine di PWG possano ancora farvi riferimento. Nella tabella della cronologia dei permalink potete trovare la data di cancellazione del permalink, oltre alla data dell'ultimo utilizzo ed il numero di volte che è stato utilizzato.

                  + +

                  Notare che i permalinks devono essere unici. Devono essere unici anche nella cronologia dei permalink.

                  diff --git a/sources/language/it_IT/help/photos_add_ftp.html b/sources/language/it_IT/help/photos_add_ftp.html new file mode 100644 index 0000000..8e5001f --- /dev/null +++ b/sources/language/it_IT/help/photos_add_ftp.html @@ -0,0 +1,78 @@ +
                  + Guida rapida + +
                    +
                  1. Create una directory sul vostro PC.
                  2. + +
                  3. Copiate qualche foto in questa directory. Attenzione: il nome delle directory e dei files deve essere solamente formato da lettere, cifre e/o i simboli "-", "_" o ".". Non utilizzare spazi o caratteri accentati.
                  4. + +
                  5. Con un client FTP (tipo Filezilla), caricate la directory in cui avete messo le foto, nella directory "galleries" della vostra galleria Piwigo.
                  6. + +
                  7. Connettetevi alla vostra galleria Piwigo e andate in Amministrazione e cliccate sul pulsante Sincronizzazione
                  8. +
                  + +

                  Bene! Avete appena creato il primo album della vostra galleria.

                  + +
                  + +
                  + Organizzazione delle directory e dei files + +
                    + +
                  • + +

                    Nella directory "galleries" si trovano gli album di Piwigo. Qui di seguito potete vedere lo schema ad albero di una piccola galleria (ma che usa moltissime funzionalità) :

                    + +
                    +galleries
                    +|-- matrimonio
                    +|   |-- cerimonia
                    +|   |   |-- in-chiesa
                    +|   |   |   |-- entrata-pietro.jpg
                    +|   |   |   +-- entrata-paola.jpg
                    +|   |   +-- uscita
                    +|   |   |   |-- uscita-pietro-paola.jpg
                    +|   |   |   +-- foto-gruppo-invitati.jpg
                    +|   +-- cocktail
                    +|       |-- discorso001.jpg
                    +|       |-- discorso002.jpg
                    +|       +-- discorso003.jpg
                    ++-- viaggio-di-noze
                    +    |-- albergo.png
                    +    |-- video-decollo-aereo.avi
                    +    +-- pwg_representative
                    +        +-- video-decollo-aereo.jpg
                    +
                    + +
                  • + +
                  • Ad eccezione di "pwg_representative", ogni directory inserita in "galleries" genera un album. Il numero di livelli (profondità) è illimitato.
                  • + +
                  • Una foto è invece rappresentata da un file. Un file può essere una foto di Piwigo se la sua estensione è presente tra le possibilità previste nel parametro di configuarzione file_ext (vedi +file include/config.inc.php). Un file è considerato come una foto +se la sua estensione è presente tra quelle previste nel parametro di configurazione +picture_ext.
                  • + +
                  • Gli elementi che non sono delle foto (video, suoni, file di testo o +altro) sono generalmente rappresentati con un'icona corrispondente +all'estensione del file. In modo opzionale, è possibile associare una miniatura +ed un file rappresentativo (come per il file video-decollaggio-aereo.avi nell'esempio proposto).
                  • + +
                  • Attenzione: il nome di una directory o di un file deve essere +composto da lettere, numeri o simboli come "-", "_" o ".". Non utilizzate spazio +e caratteri accentati.
                  • + +
                  • Suggerimento: un album può contenere delle foto e +dei sub-album. Tuttavia, è fortemente raccomandato scegliere, +per ogni album, se inserire delle foto o +dei sub-album.
                  • + +
                  • Una volta che i file sono +correttamente inseriti nelle directory, andare alla pagina Amministrazione » Tools » Sincronizzare.
                  • + +
                  + +
                  diff --git a/sources/language/it_IT/help/search.html b/sources/language/it_IT/help/search.html new file mode 100644 index 0000000..27ea041 --- /dev/null +++ b/sources/language/it_IT/help/search.html @@ -0,0 +1,25 @@ +

                  Ricerca

                  + +

                  Cercare delle foto in tutta la galleria.

                  + +
                  + +
                  Ricerca per parole
                  + +
                  Cercare una o più parole in tutti gli attributi che riguardano le foto mostrate nella galleria. Usare * come carattere Jolly per ricerche parziali.
                  + +
                  Ricerca per Autore
                  + +
                  Usare * come carattere Jolly per le ricerche parziali.
                  + +
                  Ricerca per data
                  + +
                  Selezionare una data e/o una data di fine. Lasciare la data vuota se +volete fare una ricerca del tipo "prima di". L'anno deve essere inserito nell'ultimo campo come nel formato seguente : 0000 (per esempio 2010)
                  + +
                  Ricerca negli album
                  + +
                  Selezionare gli album in cui desiderate efettuare la ricerca. +È possibile ricercare in tutti gli album selezionando l'album padre e autorizzando la ricerca ni tutti i sub-album.
                  + +
                  diff --git a/sources/language/it_IT/help/synchronize.html b/sources/language/it_IT/help/synchronize.html new file mode 100644 index 0000000..4a50684 --- /dev/null +++ b/sources/language/it_IT/help/synchronize.html @@ -0,0 +1,19 @@ +

                  Sincronizzare

                  + +
                    + +
                  • Ci sono 2 tipi di sincronizzazione possibili : struttura (directory/file) e +metadati. Sincronizzare la struttura significa sincronizzare l'albero +delle directory e dei file con il +database. Sincronizzare i metadati permette di aggiornare +le informazioni come le dimensioni, le informazioni EXIF o +IPTC.
                  • + +
                  • La prima sincronizzazione da effettuare deve essere quella della +struttura.
                  • + +
                  • Il processo di sincronizzazione potrebbe essere più o meno lungo (dipende +dal carico del server e della quantità di file da gestire). È possibile eseguire +la sincronizzazione album per album.
                  • + +
                  diff --git a/sources/language/it_IT/help/user_list.html b/sources/language/it_IT/help/user_list.html new file mode 100644 index 0000000..0aaa970 --- /dev/null +++ b/sources/language/it_IT/help/user_list.html @@ -0,0 +1,27 @@ +

                  Elenco degli utenti

                  + +

                  Permette la gestione dei parametri per gli utenti iscritti. Solo i permessi sono gestiti in una pagina diversa.

                  + +

                  Aggiungere un utente

                  + +

                  L'amministratore può aggiungere manualmente gli utenti.

                  + +

                  Elenco degli utenti

                  + +

                  L'elenco può essere filtrato sul nome utente (* = carattere jolly), il +gruppo o lo stato. L'elenco può essere ordinato per data d'iscrizione o +per nome utente, in ordine cronologico o +decrescente.

                  + +

                  In questa pagina si possono modificare più utenti +alla volta :

                  + +
                    +
                  • cancellare degli utenti (necessita di conferma)
                  • +
                  • modificare lo stato
                  • +
                  • associare o dissociare ai gruppi
                  • +
                  • modificare le proprietà di visualizzazione
                  • +
                  • modificare le proprietà annesse
                  • +
                  + +

                  Gli utenti modificati sono quelli selezionati (di default) o gli utenti dell'elenco filtrato.

                  diff --git a/sources/language/it_IT/index.php b/sources/language/it_IT/index.php new file mode 100644 index 0000000..ece5850 --- /dev/null +++ b/sources/language/it_IT/index.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/language/it_IT/install.lang.php b/sources/language/it_IT/install.lang.php new file mode 100644 index 0000000..bdd31be --- /dev/null +++ b/sources/language/it_IT/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Avete bisogno di aiuto? Visitate il forum di Piwigo.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'I visitatori saranno in grado di contattarvi usando questa email'; +$lang['PHP 5 is required'] = 'E\' richiesto PHP 5'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Sembra che la versione PHP del vostro server sia %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo tenterà di cambiare la configurazione di PHP 5 creando o modificando il file .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Nota: potete cambiare manualmente la configurazione PHP e poi riavviare Piwigo.'; +$lang['Try to configure PHP 5'] = 'Provare a configurare PHP 5'; +$lang['Sorry!'] = 'Spiacente!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo non è stato in grado di configurare PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Si consiglia di fare riferimento al supporto del vostro provider di hosting e vedere come potete passare a PHP 5 da soli.'; +$lang['Hope to see you back soon.'] = 'Speriamo di rivedervi presto.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Congratulazioni, l\'installazione di Piwigo è completata'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Una soluzione alternativa è quella di copiare il testo della casella sopra e incollarlo nel file "local/config/database.inc.php" (Attenzione: database.inc.php deve contenere solo quello che c\'è nel box sopra, senza nessun ritorno a capo o spazio)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Creazione del file di configurazione local/config/database.inc.php fallita.'; +$lang['Download the config file'] = 'Scaricare il file di configurazione'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'E\' possibile scaricare il file di configurazione e caricarlo in local/config della vostra installazione di Piwigo.'; +$lang['Just another Piwigo gallery'] = 'Una galleria Piwigo in più '; +$lang['Welcome to my photo gallery'] = 'Benvenuti nella mia galleria fotografica'; +$lang['Welcome to your new installation of Piwigo!'] = 'Benvenuti sulla vostra nuova installazione di Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Non esitate a consultare i nostri forum se avete un qualunque problema: %s'; +?> \ No newline at end of file diff --git a/sources/language/it_IT/iso.txt b/sources/language/it_IT/iso.txt new file mode 100644 index 0000000..47d7c4c --- /dev/null +++ b/sources/language/it_IT/iso.txt @@ -0,0 +1 @@ +Italiano [IT] \ No newline at end of file diff --git a/sources/language/it_IT/it_IT.jpg b/sources/language/it_IT/it_IT.jpg new file mode 100644 index 0000000..dd9bbb9 Binary files /dev/null and b/sources/language/it_IT/it_IT.jpg differ diff --git a/sources/language/it_IT/upgrade.lang.php b/sources/language/it_IT/upgrade.lang.php new file mode 100644 index 0000000..fc18a60 --- /dev/null +++ b/sources/language/it_IT/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s (or equivalent).'] = 'Questa pagina vi propone di aggiornare il vostro database corrispondente alla vecchia versione di Piwigo con la nuova versione. +L\'assistente all\'aggiornamento ha identificato la vostra attuale versione %s (o equivalente).'; +$lang['Upgrade from version %s to %s'] = 'Aggiornamento dalla versione %s alla %s'; +$lang['Statistics'] = 'Statistiche'; +$lang['total upgrade time'] = 'tempo totale aggiornamento'; +$lang['total SQL time'] = 'tempo totale SQL'; +$lang['SQL queries'] = 'queries SQL'; +$lang['Upgrade informations'] = 'Informazioni aggiornamento'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Se riscontrate dei problemi, effettuate una manutenzione in [Amministrazione>Tools>Manutenzione].'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Per precauzione, i seguenti plugins sono stati disattivati. E\' necessario verificare se esistono degli aggiornamenti prima di riattivarli:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Solo l\'amministratore può eseguire l\'aggiornamento: fare login.'; +$lang['You do not have access rights to run upgrade'] = 'Non avete le autorizzazioni necessarie per effettuare l\'aggiornamento'; +$lang['All sub-albums of private albums become private'] = 'Tutti i sub-album degli album privati diventano privati'; +$lang['User permissions and group permissions have been erased'] = 'I permessi degli utenti e dei gruppi sono stati cancellati'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Solo il prefisso delle miniature e l\'indirizzo email del webmaster sono stati recuperati dalla precedente configurazione'; +$lang['In %s, before ?>, insert:'] = 'Nel file %s, prima di ?>, inserite:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Per precauzione, i seguenti temi sono stati disattivati. E\' necessario verificare se esistono degli aggiornamenti prima di riattivarli:'; +?> \ No newline at end of file diff --git a/sources/language/ja_JP/README.txt b/sources/language/ja_JP/README.txt new file mode 100644 index 0000000..4db729f --- /dev/null +++ b/sources/language/ja_JP/README.txt @@ -0,0 +1,4 @@ +Piwigo Japanese language files +Translator Mitsuhiro Yoshida (http://mitstek.com/) +Started 2008-12-21 +Updated 2009-05-02 diff --git a/sources/language/ja_JP/about.html b/sources/language/ja_JP/about.html new file mode 100644 index 0000000..3ce4177 --- /dev/null +++ b/sources/language/ja_JP/about.html @@ -0,0 +1,14 @@ +

                  このフォトガラリーはPiwigoより作成されました。

                  + +

                  Piwigo はユーザや開発者のコミュニティーにより作成し、ウェブのためのフォトガラリーのソフトウェアです。Piwigoのプラグインにより簡単にカスタマイズできます。Piwigoはオープンソースで無料です。

                  + +

                  Piwigoのホームページにどうぞ! + +

                  + +

                  Pigiwo日本語版の管理は +

                  + により感謝しています。

                  diff --git a/sources/language/ja_JP/admin.lang.php b/sources/language/ja_JP/admin.lang.php new file mode 100644 index 0000000..bbac642 --- /dev/null +++ b/sources/language/ja_JP/admin.lang.php @@ -0,0 +1,907 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader は Piwigo Uploaderと言います。pLoaderはあなたの写真をパソコンからあなたのPiwigoフォト・ギャラリーまで簡単にアップロードできます。'; +$lang['Guest Settings'] = 'ゲストの設定'; +$lang['Main Page'] = 'メインページ'; +$lang['Photo Page'] = '写真のページ'; +$lang['Activate Navigation Bar'] = 'ナビゲーション・バーを有効にする'; +$lang['Activate Navigation Thumbnails'] = 'ナビゲーションのサムネイルを有効にする'; +$lang['Activate icon "%s"'] = '"%s"のアイコンを有効する'; +$lang['Photo Properties'] = '写真のプロパティ'; +$lang['Allow user customization'] = 'ユーザーのカスタマイズを有効にする'; +$lang['Miscellaneous'] = 'その他の情報'; +$lang['Virtual Links'] = 'バーチャルのリンク'; +$lang['Languages'] = '言語'; +$lang['Installed Languages'] = 'インストールされた言語'; +$lang['Add New Language'] = '新しい言語を追加する'; +$lang['Language has been successfully installed'] = '言語のインストールは成功しました'; +$lang['Select:'] = '選択:'; +$lang['None'] = 'なし'; +$lang['Invert'] = '反転'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'このテーマは無効になりません。少なくとも一つのテーマが必要です。'; +$lang['Webmaster status is required.'] = 'ウェッブマスターのステータスが必要'; +$lang['Bound Theme'] = 'バウンドテーマ'; +$lang['Allow rating'] = '評価を許可する'; +$lang['Select at least one comment'] = '少なくとも一つのコメントを選択して下さい'; +$lang['Active Plugins'] = '有効なプラグイン'; +$lang['Inactive Plugins'] = '無効なプラグイン'; +$lang['Missing Plugins'] = '見つからないプラグイン'; +$lang['Uninstalled Plugins'] = 'インストールされてないプラグイン'; +$lang['By %s'] = '著作 %s'; +$lang['Visit plugin site'] = 'プラグインのサイトを訪問する'; +$lang['Active Languages'] = '有効な言語'; +$lang['Delete this language'] = 'この言語を削除する'; +$lang['Forbid this language to users'] = 'この言語をユーザーに禁止する'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'この言語を無効になれません。まず、その他の言語をデフォルトを設定して下さい。'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'この言語を無効になれません。少なくとも一つの言語が必要です。'; +$lang['Inactive Languages'] = '無効な言語'; +$lang['Make this language available to users'] = 'この言語をユーザーが利用できるようにする'; +$lang['Set as default language for unregistered and new users'] = '登録されてないユーザーと新しいユーザーのためにデフォルト言語を設定する。'; +$lang['Add Photos'] = '写真を追加します。'; +$lang['The following tag was deleted'] = '次のタグは削除されました。'; +$lang['There is no other language available.'] = 'その他の言語がありません。'; +$lang['There is no other plugin available.'] = 'その他のプラグインがありません。'; +$lang['There is no other theme available.'] = 'その他のテーマがありません。'; +$lang['By rank'] = '順番'; +$lang['Manual order'] = '手動順番'; +$lang['Add another set of photos'] = 'その他の写真を追加します'; +$lang['Order of menubar items has been updated successfully.'] = 'ニューの順番は正常に更新されました。'; +$lang['This theme was not designed to be directly activated'] = 'このテーマは直接有効化になりません。'; +$lang['Pending Comments'] = 'コメントを確認待ち'; +$lang['Menu Management'] = 'メニュー'; +$lang['%d of %d photos selected'] = '%d 個目の %d 個の写真選択されていました。'; +$lang['Action'] = 'アックション'; +$lang['Add a filter'] = 'フィルター追加'; +$lang['Album photos associated to the following albums: %s'] = '連携されていた写真アルバム: %s'; +$lang['Albums automatically sorted'] = 'アルバムを自動的に並び替えました'; +$lang['All %d photos are selected'] = '全ての %d 個の写真が選択されました'; +$lang['Apply action'] = 'アクションを実行する'; +$lang['automatic order'] = '自動並び替え'; +$lang['Batch Manager'] = 'バッチ・マネージャー'; +$lang['Choose an action'] = 'アクションを選択して下さい'; +$lang['Activate icon "new" next to albums and pictures'] = 'アルバムと写真のとなりに、\'起動アイコン "新" があります'; +$lang['Deactivate all'] = '全て非活性する'; +$lang['Default photos order'] = 'デフォルト写真順番'; +$lang['Delete orphan tags'] = '使われていないタグを削除する'; +$lang['delete photo'] = '写真を削除する'; +$lang['Duplicates'] = '複写'; +$lang['Error on file "%s" : %s'] = '"%s" のファイル・エラー : %s'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif 拡張機能がありません。管理者がexifの使用を中止すべきです。'; +$lang['Failed to write file to disk'] = 'ディスクに書き込みを失敗しました'; +$lang['File upload stopped by extension'] = '拡張機能による、ファイル・アップロードを中止しました。'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = ' あなたのphp.ini ファイルで、upload_max_filesize (%sB) (一回のアップロードの最大容量)が、post_max_size (%sB) (一回の投稿の最大容量)より大きいです。設定を変える必要があります。'; +$lang['Average rate'] = '平均評価'; +$lang['Rate'] = '評価'; +$lang['Learn more'] = '詳細はこちら'; +$lang['An error has occured during upgrade.'] = 'アップグレード中にエラーが発生しました。'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = '展開中にエラーが発生しました。あなたのPiwigoインストールのパーミッションを確認してください。
                  ログエラーを表示するには、ここをクリックしてください。'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigoは、アップグレードファイルをサーバから検索できません。'; +$lang['Save Template Directory'] = 'テンプレートディレクトリー保存'; +$lang['Dump Database'] = 'ダンプデータベース'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'データ履歴を含む(注意:サーバーのメモリー上限値を越える可能性があります。)'; +$lang['Unable to dump database.'] = 'ダンプデータベースができません。'; +$lang['Update in progress... Please wait.'] = 'アップグレード処理中 ... お待ちください。'; +$lang['Update to Piwigo %s'] = 'Piwigo %s にアップグレード'; +$lang['Two updates are available'] = '2個のアップグレードがあります'; +$lang['This is a minor update, with only bug corrections.'] = 'これはマイナーアップグレードだけバグ修正しています。'; +$lang['This is a major update, with new exciting features.'] = 'これはメジャーアップグレードで、 いろいろな楽しい新機能がついています。.'; +$lang['Some themes and plugins may be not available yet.'] = 'あるテーマとプラグインはまだできていません。'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Piwigo %sにアップグレードせずに、直接Piwigo %s にアップグレードすることができます(推進)。'; +$lang['Add to caddie'] = 'キャディに追加する'; + +$lang['(this tag will be deleted)'] = '(このタグを削除される)'; +$lang['... or '] = '・・・または'; +$lang['Activate comments'] = 'コメントを有効する'; +$lang['Add a criteria'] = '条件を追加'; +$lang['Add tags'] = 'タグを追加'; +$lang['All extensions are up to date.'] = '全ての拡張機能が最新です'; +$lang['All languages are up to date.'] = '全ての言語が最新です'; +$lang['All plugins are up to date.'] = '全てのプラグインが最新です'; +$lang['All themes are up to date.'] = '全てのテーマが最新です'; +$lang['Allowed file types: %s.'] = '使用可能なファイル:%s。'; +$lang['Confirm merge'] = 'マージを確認して下さい'; +$lang['Create'] = '作成'; +$lang['Default comments order'] = 'デフォルトのコメント順'; +$lang['display'] = '表示'; +$lang['Height'] = '高さ'; +$lang['%d association'] = '関連:%d'; +$lang['%s has been successfully updated.'] = '%sのアップデートは成功しました。'; +$lang['Cancel'] = 'キャンセル'; +$lang['ERROR'] = 'エラー'; +$lang['Extensions Update'] = '拡張機能のアップデート'; +$lang['Ignore All'] = '全てを無視する。'; +$lang['Ignore this update'] = 'このアップデートを無視します。'; +$lang['List'] = '一覧'; +$lang['Manage Permissions'] = '権限管理'; +$lang['Merge selected tags'] = '選択したタグを統合する'; +$lang['Merge tags'] = 'タグを統合する'; +$lang['Move to album'] = 'アルバムへ移動'; +$lang['Original Size'] = 'オリジナルサイズ'; +$lang['Permission management'] = '権限管理'; +$lang['Remove all filters'] = '全てのフィルターを削除'; +$lang['Remove from caddie'] = 'キャディーから削除'; +$lang['Restore'] = '復元'; +$lang['Set author'] = '作者をセット'; +$lang['Some upgrades are available for extensions.'] = '拡張機能のアップグレードがあります。'; +$lang['Type here the author name'] = '作者名を入力してください。'; +$lang['Update All'] = '全てをアップデート'; +$lang['Update Complete'] = 'アップデート完了'; +$lang['Updates'] = 'アップデート'; +$lang['Watermark'] = '透かし'; +$lang['Width'] = '幅'; +$lang['Zoom'] = '拡大'; +$lang['add a new watermark'] = '新しい透かしを追加'; +$lang['custom'] = 'カスタム'; +$lang['hide details'] = '詳細を隠す'; +$lang['modified'] = '変更'; +$lang['remove author'] = '作者を削除'; +$lang['remove creation date'] = '作成日を削除'; +$lang['remove this filter'] = 'フィルターを削除'; +$lang['remove title'] = 'タイトルを削除'; +$lang['show details'] = '詳細表示'; +$lang['Crop'] = 'トリミングする'; +$lang['Resize after upload'] = 'アップロード後にサイズを変更'; +$lang['Searching...'] = '検索中...'; +$lang['Set title'] = 'タイトルを設定'; +$lang['Show menubar'] = 'メニューを表示'; +$lang['Start Upload'] = 'アップロード開始'; +$lang['Themes which need upgrade'] = 'テーマの更新が必要です。'; +$lang['Thumbnails generation in progress...'] = 'サムネイル作成中...'; +$lang['Type here the title'] = 'タイトルを入力して下さい。'; +$lang['Unknown upload error'] = '不明なアップロードエラー'; +$lang['Visit language site'] = '言語サイトへ移動'; +$lang['Visit theme site'] = 'テーマのサイトへ移動'; +$lang['Week starts on'] = '週の始まり'; +$lang['administrators'] = '管理者'; +$lang['Missing a temporary folder'] = '一時フォルダが見つかりません。'; +$lang['No file was uploaded'] = 'アップロードされたファイルはありません。'; +$lang['Piwigo Update'] = 'Piwigo をアップデート'; +$lang['Select a file'] = 'ファイル選択'; +$lang['Select an album'] = 'アルバムを選択'; +$lang['bottom left corner'] = '左下'; +$lang['bottom right corner'] = '右下'; +$lang['middle'] = '中央'; +$lang['top left corner'] = '左上'; +$lang['top right corner'] = '右上'; +$lang['%s photos can not be regenerated'] = '%s更新できなかった写真。'; +$lang['%s photos have been regenerated'] = '%s更新できた写真。'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'おおよその最大レゾリューション:%dM ピクセル (%dx%d ピクセルである).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'デフォルトで、PiwigoがHD(高品位)版の写真より、最新ウェブサイズ版を作成します。'; +$lang['Do you want to activate anyway?'] = 'とにかく有効化したいですか?'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'エラー:このプラグインがありませんが、インストールされています!すぐアンインストールして下さい。'; +$lang['Follow Orientation'] = '配向進み'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = '次のプラグインは、Piwigoの最新版で使えない可能性があります。'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = '次のテーマは、Piwigoの最新版で使えない可能性があります。'; +$lang['Graphics Library'] = '画像ライブラリー'; +$lang['I decide to update anyway'] = 'とにかくアップデートすることにします。'; +$lang['Languages which need upgrade'] = 'アップグレードの必要な言語'; +$lang['Last import'] = '最終インポート'; +$lang['Maximum file size: %sB.'] = '最大ファイル・サイズ:%sB.'; +$lang['New Version'] = '新しいバージョン'; +$lang['Photo %s of %s'] = '写真%sの%s'; +$lang['Photo name'] = '写真名'; +$lang['Selection'] = '選択'; +$lang['Send connection settings by email'] = '接続設定をメールで送って下さい'; +$lang['include child albums'] = '子アルバム含み'; +$lang['manual order'] = 'マニュアル順'; +$lang['new'] = '最新'; +$lang['%d day'] = '%d 日'; +$lang['%d days'] = '%d 日間'; +$lang['%d hour'] = '%d 時'; +$lang['%d hours'] = '%d 時間'; +$lang['%d minute'] = '%d 分'; +$lang['%d minutes'] = '%d 分間'; +$lang['%d month'] = '%d 月'; +$lang['%d months'] = '%d ヶ月間'; +$lang['%d second'] = '%d 秒'; +$lang['%d seconds'] = '%d 秒間'; +$lang['%d week'] = '%d 週'; +$lang['%d weeks'] = '%d 週間'; +$lang['%d year'] = '%d 年'; +$lang['%d years'] = '%d 年間'; +$lang['%s ago'] = '%s 前'; +$lang['%s in the future'] = '%s 先'; +$lang['A locked gallery is only visible to administrators'] = 'ロックされたギャラリーは管理者にのみ表示されます。'; +$lang['Applications'] = 'アプリケーション'; +$lang['Available on'] = 'が利用可能'; +$lang['Available versions for'] = '利用可能なバージョンは'; +$lang['Edit photo'] = '写真を編集'; +$lang['Gallery unlocked'] = 'ギャラリーのロック解除'; +$lang['Groups and users'] = 'グループとユーザー'; +$lang['Multiple Size'] = '複数のサイズ'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Lightroom 用 Piwigo エクスポートプラグイン'; +$lang['Piwigo export plugin for Aperture'] = 'Aperture 用 Piwigo エクスポートプラグイン'; +$lang['Piwigo export plugin for iPhoto'] = 'iPhoto 用 Piwigo エクスポートプラグイン'; +$lang['Piwigo for Android'] = 'Piwigo for Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Shotwell 用 Piwigo 公開プラグイン'; +$lang['Piwigo publish plugin for digiKam'] = 'digiKam 用 Piwigo 公開プラグイン'; +$lang['Predefined filter'] = '定義済みフィルター'; +$lang['Select groups...'] = 'グループを選択...'; +$lang['Select users...'] = 'ユーザーを選択...'; +$lang['Set creation date'] = 'コレクション日を設定'; +$lang['Sharpen'] = 'シャープ'; +$lang['The whole page'] = 'ページ全体'; +$lang['The whole set'] = 'セット全体'; +$lang['This album contains no photo.'] = 'このアルバムには写真がありません。'; +$lang['Unlock gallery'] = '未ロックのギャラリー'; +$lang['Web Form'] = 'ウェブフォーム'; +$lang['X Position'] = 'X ポジション'; +$lang['X Repeat'] = 'X リピート'; +$lang['Y Position'] = 'Y ポジション'; +$lang['any visitor can see this album'] = '誰でもこのアルバムを見ることができます。'; +$lang['create a new site'] = '新規サイト作成'; +$lang['pending validation'] = '検証待ち'; +$lang['Delete multiple size images'] = '複数サイズのイメージを削除'; +$lang['Generate multiple size images'] = '複数サイズのイメージを作成'; +$lang['Original file : %s'] = 'オリジナルファイル : %s'; +$lang['Added by %s'] = '%sで追加されました。'; +$lang['Automatic sort order'] = '自動並び替え'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = '写真の真ん中は中心デフォルト'; +$lang['Center of interest'] = '中心'; +$lang['No destination tag selected'] = '行き先タグ選択されていません'; +$lang['No group is permitted to see this private album'] = 'このプライベートなアルバムを見ることのできるグループはありません'; +$lang['No photo in the current set.'] = '現在のセットには写真がありません。'; +$lang['No photo selected, %d photos in current set'] = '写真が選択されません。現在のセットに%d枚写真があります。'; +$lang['Orphan tags deleted'] = 'オーファンタグ削除されました。'; +$lang['Photos generation in progress...'] = '写真作成中・・・'; +$lang['Posted %s on %s'] = '%sの%s展示されました。'; +$lang['Save manual order'] = 'マニュアル順保存します。'; +$lang['Select the destination tag'] = 'タグの行き先を選択します。'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'このプラグインは現在PIWIGO本ソフトに含まれています!今すぐアンインストールしてください!'; +$lang['The uploaded file was only partially uploaded'] = 'アップロードされたファイルが途中失敗しました。'; +$lang['There is no group in this gallery.'] = 'このガラリにグループがありません。'; +$lang['Type in a search term'] = '検索アイテムを入力してください。'; +$lang['Visited %d times'] = '%d回見られました。'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '注意!このプラグインがこのPIWIGOのバージョンに合っていません。'; +$lang['Who can see this photo?'] = 'どなたがこの写真を見られますか?'; +$lang['With no album'] = 'アルバムなしを含まれます。'; +$lang['With no tag'] = 'タグなしを含まれます。'; +$lang['With no virtual album'] = 'バーチャル・アルバムが含まれません。'; +$lang['You can activate only one mobile theme.'] = 'モバイル・テーマ一つしか有効できません。'; +$lang['cancel manual order'] = 'マニュアル順を中止します。'; +$lang['registered users'] = '登録されているユーザー'; +$lang['simple visitors'] = '単ユーザー'; +$lang['Obsolete Plugins'] = 'サポートされないプラグイン'; +$lang['Opacity'] = '不透明度'; +$lang['No results'] = '結果なし'; +$lang['No photo selected, no action possible.'] = '写真が選択されていないので、なにもできません。'; +$lang['Not cropped correctly?'] = '正しくトリミングできませんでしたか?'; +$lang['Notify administrators when a comment is'] = 'コメントがされた際に、管理者へ知らせる'; +$lang['Name of the duplicate'] = '複写の名前'; +$lang['No group selected, no action possible.'] = 'グループが選択されていないので、何もできません。'; +$lang['No members to manage'] = '管理すべきメンバーがいません'; +$lang['No order field selected'] = '順序フィールドが選択されていません'; +$lang['Merge selected groups'] = '選択されたグループを統合する'; +$lang['Minimum height'] = '最小高さ'; +$lang['Minimum width'] = '最小幅 +'; +$lang['Manage photos'] = '写真を管理する'; +$lang['Manage the members'] = 'メンバーを管理する'; +$lang['Landscape'] = '横置'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'トリミングする大きさを四角で指定してください。Piwigoは対象の中心を含むように最善を尽します。'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'ギャラリーの閲覧、アルバムの作成、写真のアップロードの機能'; +$lang['Duplicate'] = '複写'; +$lang['Duplicate selected tags'] = '選択したタグを複製します'; +$lang['Apply watermark if height is bigger than'] = 'これ以上の高さの際にウォーターマークを付ける'; +$lang['Apply watermark if width is bigger than'] = 'これ以上の幅の際にウォーターマークを付ける'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroomは、大量のデジタル画像の管理と、撮影後の仕事のために設計されて写真用ソフトウェアです。'; +$lang['Permission granted for groups'] = 'グループ権限'; +$lang['Panorama'] = 'パノラマ'; +$lang['Number of albums per page'] = '1ページ当りのアルバム数'; +$lang['Please select at least two groups'] = 'グループを2つ以上選んで下さい。'; +$lang['Permission granted for users'] = 'ユーザー権限'; +$lang['Basic settings'] = '基本設定'; +$lang['General'] = '全般'; +$lang['Ratio'] = 'ートレート\'比率'; +$lang['Portrait'] = 'ポートレート'; +$lang['Purge user cache'] = 'ユーザーのキャッシュを削除'; +$lang['Photo sizes with crop'] = '写真サイズ'; +$lang['Mail theme'] = 'メールの件名'; +$lang['Numeric identifier : %d'] = '割り当てる数値 : 整数 : %d'; +$lang['Loading...'] = 'ロード中 ...'; +$lang['Change password'] = 'パスワードを変える'; +$lang['Change username'] = 'ユーザー名を変える'; +?> \ No newline at end of file diff --git a/sources/language/ja_JP/common.lang.php b/sources/language/ja_JP/common.lang.php new file mode 100644 index 0000000..4f5c97e --- /dev/null +++ b/sources/language/ja_JP/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/ja_JP/help/cat_modify.html b/sources/language/ja_JP/help/cat_modify.html new file mode 100644 index 0000000..eba4c6a --- /dev/null +++ b/sources/language/ja_JP/help/cat_modify.html @@ -0,0 +1,127 @@ +

                  カテゴリを編集する

                  + +

                  情報

                  + +
                    + +
                  • 名称: カテゴリをリネームします (物理カテゴリの場合、バーチャルリネームとなります)。
                  • + +
                  • 説明: コンテンツに一般的なアイディアを与えます。このテキストは、サムネイルの下に表示されます。
                  • + +
                  + +

                  移動

                  + +

                  カテゴリがバーチャルカテゴリの場合、あなたはカテゴリを移動することができます。 +カテゴリを移動することは、そのカテゴリの親カテゴリを変更することを意味します。

                  + +

                  オプション

                  + +
                    + +
                  • アクセスタイプ: パーミッション管理。あなたがカテゴリをプライベートにした場合、 + すべての子カテゴリもプライベートになります。あなたがカテゴリをパブリックにした場合、 + すべての親カテゴリもパブリックになります。
                  • + +
                  • ロック: メンテナンスのため、カテゴリおよびサブカテゴリが一時的に無効にされます。
                  • + +
                  • コメント: このカテゴリのコンテンツに関して、認証ユーザのコメント投稿を許可します。
                  • + +
                  • アップロードを許可する: ユーザのファイルアップロードを許可します。 + このオプションは、(バーチャルカテゴリではなく) 物理カテゴリでのみ使用できます。
                  • + +
                  + +

                  あなたは、これらのオプションを「プロパティ」管理画面 (管理 > カテゴリ > プロパティ > アップロードコメントロック, +パブリック/プライベート, 見本) で管理することもできます。

                  + +

                  並び順

                  + +

                  デフォルトの並び順を使用する場合、選択してください。

                  + +

                  この並び順がサブカテゴリに適用される場合、指定してください。

                  + +

                  このカテゴリで使用するカラムの並び順を選択してください。

                  +
                    +
                  • 作成日: 写真の作成日
                  • +
                  • 投稿日: 同期化日
                  • +
                  • 平均評価 (*): 平均評価は、ビジターによって変わります。
                  • +
                  • 最多アクセス (*): 現在の訪問件数を最多アクセス順に変更します。
                  • +
                  • ファイル名: 情報フィールドに入力された名称です。
                  • +
                  • ID: 内部ID (新しいカテゴリは、前のカテゴリより高いIDを持ちます。
                  • + +
                  +

                  (*)予測できない結果となる場合がありますので、実行前に十分なテストを実施してください。

                  + + +

                  見本

                  + +

                  カテゴリの見本は、カテゴリが (ルートカテゴリのように) サブカテゴリのみ含む場合、 +メインページ (category.php) に表示されるサムネイルです。

                  + +

                  カテゴリの見本を設定するには、4つの方法があります。 :

                  + +
                    + +
                  • 写真ページ: アクションボタンの1つをクリックすることで、 + あなたは表示されている写真を表示カテゴリの見本に設定することができます。 + このボタンは、管理者のみ利用することができます。
                  • + +
                  • 管理ページで写真情報を修正する。 + この画面には、picture.phpまたはユニットモードのバッチ管理からアクセスすることができます。 + 詳細は、このページのヘルプをご覧ください。
                  • + +
                  • 「管理 > カテゴリ > プロパティ > 見本」。 + 詳細は、このページのヘルプをご覧ください。
                  • + +
                  • カテゴリを編集する (この画面)。
                  • + +
                  + +

                  見本は、設定パラメータ「allow_random_representative」の設定に依存します + (詳細は、include/config_default.inc.phpをご覧ください)。

                  + +

                  デフォルトモード (allow_random_representative = false) の場合、 +それぞれのカテゴリには、少なくとも1つの固定されたエレメントが見本にされます。 +(カテゴリ作成時に) 設定した場合、見本は、管理者が求める場合のみ変更することができます。 +見本が適切ではない場合、あなたは新しい見本をランダムに探すを使って、新しい見本を探すことができます。

                  + +

                  設定パラメータ「allow_random_representative」にtrueが設定された場合、 +エレメントを含んだカテゴリは、固定の見本を持つことができません。 +見本を削除するボタンを使用してください。

                  + +

                  カテゴリに (サブカテゴリのみで) エレメントが含まれていない場合、写真情報を修整する画面を使って、 +どのような写真でも見本にすることができます。現在の画面で使用できるオプションは、見本を削除するボタンのみです。 +このボタンを使用した場合、見本は設定されないようになります。

                  + +

                  すべてのカテゴリエレメントを新しいカテゴリにリンクする

                  + +
                    + +
                  • バーチャルカテゴリ名: 作成される新しいカテゴリ名です。 +現在のカテゴリ内にある、すべての写真は新しいカテゴリにリンクされます。
                  • + +
                  • 親カテゴリ: 新しいカテゴリがどこに作成されるか選択してください。 +未選択の場合、ホームカテゴリとして作成されます。
                  • + +
                  + +

                  すべてのカテゴリエレメントを既存のカテゴリにリンクする

                  + +
                    + +
                  • カテゴリ: リンク先のカテゴリを選択してください。
                  • + +
                  + +

                  グループメンバーに情報メールを送信する

                  + +
                    + +
                  • グループ: 受信グループ
                  • + +
                  • メールコンテンツ: グループに送信するテキストです。
                  • + +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/cat_move.html b/sources/language/ja_JP/help/cat_move.html new file mode 100644 index 0000000..04e5388 --- /dev/null +++ b/sources/language/ja_JP/help/cat_move.html @@ -0,0 +1,14 @@ +

                  バーチャルカテゴリを移動する

                  + +

                  バーチャルカテゴリのみ新しい親カテゴリを持つことができます。

                  + +

                  移動するバーチャルカテゴリ

                  + +

                  あなたが移動したいバーチャルカテゴリを選択してください。 +リストが空の場合、あなたがカテゴリを作成していないことを意味します。

                  + +

                  新しい親カテゴリ

                  + +

                  新しい親カテゴリ (バーチャルまたはフィジカル) を選択してください。 +あなたが選択しない場合、選択されたバーチャルカテゴリは、ルートに移動されます。 +あなたは、カテゴリをカテゴリ自身、または子カテゴリに移動することはできません。

                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/cat_options.html b/sources/language/ja_JP/help/cat_options.html new file mode 100644 index 0000000..3d95898 --- /dev/null +++ b/sources/language/ja_JP/help/cat_options.html @@ -0,0 +1,31 @@ +

                  カテゴリオプション

                  + +

                  このページでは、管理者が一度に多くのカテゴリのオプションを管理することができます。

                  + +
                  + +
                  アップロード
                  +
                  カテゴリに対して、ギャラリーのビジターが写真をアップロードできるようにします。 + 非バーチャルおよび非リモートカテゴリのみ表示されます。
                  + +
                  コメント
                  +
                  選択したカテゴリで、ユーザによるコメントの追加を許可します。 + コメントを追加できるカテゴリを選択してください。 + 少なくとも1つのコメント可能なカテゴリに属しているイメージには、コメントを追加することができます。
                  + +
                  ロック
                  +
                  選択されたカテゴリは、メンテナンスのため、一時的に無効にされます。 + あなたがカテゴリをロックした場合、すべての子カテゴリもロックされます。 + あなたがカテゴリのロックを解除した場合、すべての親カテゴリもロック解除されます。
                  + +
                  パブリック/プライベート
                  +
                  選択されたカテゴリの権限を管理します。選択されたカテゴリがプライベートの場合、 + あなたは、ユーザまたはグループにアクセスの許可を与える必要があります。 + あなたがカテゴリをプライベートにした場合、すべての子カテゴリもプライベートになります。 + あなたがカテゴリをパブリックにした場合、すべての親カテゴリもパブリックになります。
                  + +
                  見本
                  +
                  あなたがallow_random_representative (詳細は、include/config_defaults.inc.phpをご覧ください) + の設定パラメータを「true」にした場合、このオプションを管理することができます。 + それぞれのカテゴリを (独自の写真として) ランダムに表示、または単独に表示することができます。
                  +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/cat_perm.html b/sources/language/ja_JP/help/cat_perm.html new file mode 100644 index 0000000..2f4f9cd --- /dev/null +++ b/sources/language/ja_JP/help/cat_perm.html @@ -0,0 +1,14 @@ +

                  カテゴリパーミッションを管理する

                  + +

                  このページでは、プライベートカテゴリのみ利用できます。 +あなたは、このカテゴリへの権限を与えるユーザおよびグループを選択することができます。

                  + +

                  グループ

                  + +

                  現在のカテゴリに関して、あなたはグループに拒否または許可を与えることができます。 +あなたはカテゴリに許可されているグループのリストを修正することができます。

                  + +

                  ユーザ

                  + +

                  あなたは、個別のユーザに対して拒否または許可することができます。 +グループに属しているユーザに対して、拒否または許可を与えることができます。

                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/configuration.html b/sources/language/ja_JP/help/configuration.html new file mode 100644 index 0000000..89b042a --- /dev/null +++ b/sources/language/ja_JP/help/configuration.html @@ -0,0 +1,111 @@ +

                  設定

                  + +

                  このページでは、管理者が基本的な設定を実行することができます。 +実際、このページでは、多くの管理者が必要とする最小設定のみ表示しています。 +あなたが他の多くの (そして高度な) 設定を閲覧したい場合、include/config_default.inc.phpファイルを参照してください。

                  + +

                  このページは、テーマにより設定パラメータを再編成するため、いくつかのセクションに分けられています。

                  + + +

                  メイン

                  +
                    +
                  • ギャラリータイトル: RSSフィードおよびメール通知に使用されます。
                  • + +
                  • ページバナー: それぞれのページのトップに表示されます。
                  • + +
                  • ギャラリーURI: RSSフィードに使用されます。
                  • + +
                  • ギャラリーをロックする: メンテナンスのため、ギャラリー全体をロックします。 + 管理者のみギャラリーにアクセスすることができます。
                  • + +
                  • 評価: 写真の評価機能を有効にします。
                  • + +
                  • ゲストによる評価: 未登録のユーザでも写真を評価できます。
                  • + +
                  • ユーザ登録を許可する: すべての人が自由にユーザ登録できます。
                  • + +
                  • すべてのユーザにメールアドレスを必須とする: 管理者による処理を除き、ユーザ登録およびプロファイル更新時にメールアドレスがチェックされます。
                  • + +
                  • 新しいユーザ登録時、管理者にメールする: すべてのユーザ登録に関して、管理者がメール受信します。
                  • + +
                  + +

                  履歴

                  + +

                  ページにアクセスすることで、category.phpおよびpicture.phphistoryテーブルに記録されます。

                  + +

                  アクセスは、「管理 > 特別 > 履歴」に表示されます。

                  + +
                    +
                  • ゲストによるページアクセスを記録する: ゲストによるページアクセスが記録されます。
                  • + +
                  • ユーザによるページアクセスを記録する: ユーザによるページアクセスが記録されます。
                  • + +
                  • 管理者によるページアクセスを記録する: 管理者によるページアクセスが記録されます。
                  • + +
                  + +

                  コメント

                  +
                    + +
                  • すべてのユーザにコメントを許可する: ユーザ登録されていないゲストでもコメントを投稿することができます。
                  • + +
                  • 1ページあたりのコメント数.
                  • + +
                  • 承認: サイトで閲覧可能な状態になる前に、管理者がユーザによるコメントを承認します。 + ユーザコメントの承認は、「管理 > 写真 > コメント」にて実施されます。
                  • + +
                  • 有効なコメントが投稿された場合、管理者にメールする: +ユーザがコメントを登録して、コメントが承認された場合、管理者にメール送信します。
                  • + +
                  • コメントの承認が必要な場合、管理者にメールする: +管理者による承認が必要なコメントをユーザが投稿した場合、管理者にメール送信します。 +ユーザコメントの承認は、「管理 > 写真 > コメント」にて実施されます。
                  • + +
                  + +

                  アップロード

                  +
                    +
                  • 毎回アップロードリンクを表示する: アップロード可能なカテゴリが存在する場合、それぞれのカテゴリに追加リンクが表示されます。
                  • +
                  • アップロードに関するユーザアクセスレベル: ユーザによるアップロードの制限を許可します。
                  • +
                  • 写真がアップロードされた場合、管理者にメールする: ユーザにより写真がアップロードされた場合、管理者にメール通知します。
                  • +
                  + +

                  デフォルト表示

                  + +

                  ここであなたは、ログインしていないユーザに対する、デフォルト表示オプションを変更することができます。 +ユーザがログインした場合、これらのオプションは、ユーザ独自のオプション (プロファイルで変更可) により上書きされます。

                  + +

                  すべてのユーザは、表示オプションを変更することができますが、あなたは「管理 > アイデンティフィケーション > ユーザ」にて、 +選択したユーザの表示オプションを変更することもできます。

                  + +
                    + +
                  • 言語: Piwigoラベルのみに関係します。カテゴリ名、写真名およびすべての説明はローカライズされません。
                  • + +
                  • 1行あたりのイメージ数
                  • + +
                  • 1ページあたりの行数
                  • + +
                  • インターフェーステーマ
                  • + +
                  • 最近の期間: 日数。写真が新しい写真として表示される期間です。1日より多い日数を指定してください。
                  • + +
                  • すべてのカテゴリを拡げる: デフォルトで、すべてのカテゴリをメニューに広げますか? + 警告: このオプションは、多くのりソースを消費して、あなたのカテゴリツリーが多くのカテゴリを含む場合、巨大なメニューを作成してしまいます。
                  • + +
                  • コメント数を表示する: サムネイルページで、それぞれの写真のコメント数を表示します。多くのリソースを消費します。
                  • + +
                  • ヒット数を表示する: サムネイルページで、写真のヒット数をサムネイル下に表示します。 + 特別設定パラメータが次の場合のみ表示されます:
                    + $conf['show_nb_hits'] = true;
                    + 注意: デフォルトでは、falseが設定されています。
                  • + +
                  • 写真の最大幅: 写真の最大表示幅です。この設定より写真が大きい場合、表示時にリサイズされます。 + この設定に値を入力したい場合、あなたの写真の幅に変更することをお勧めします。
                  • + +
                  • 写真の最大高: 前の設定と同じです。
                  • + +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/extend_for_templates.html b/sources/language/ja_JP/help/extend_for_templates.html new file mode 100644 index 0000000..b5b0060 --- /dev/null +++ b/sources/language/ja_JP/help/extend_for_templates.html @@ -0,0 +1,85 @@ +

                  テンプレートの拡張設定

                  + +

                  ゴール

                  +

                  それぞれのテンプレートに関して、テンプレート拡張より、テンプレートの置換 (「replacer」と呼びます) を定義します。

                  + +

                  replacerがオリジナルテンプレートにリンクされた場合 (または任意で、要求されたURIに「任意のURIキーワード」が含まれている場合)、 +./template/yoga (または他のyoga) は「replacer」と置換されます。

                  + +

                  「任意のURIキーワード」は、URIのモジュール名の後にあります。

                  + +

                  従って、「任意のURIキーワード」は、「パーマリンク」になり得ます (パーマリンクに関する詳細は、私たちのドキュメントをご覧ください)。

                  + +

                  使用用法に関して、「注意」をご覧ください。

                  + +

                  テンプレート拡張とは?

                  + +

                  この設定ツールは、ビギナーおよびアドバンストユーザにとって、パワフルなツールです。 +FTPを使用して、ウェブマスタは、多くの配布 .tplファイル (「オリジナルテンプレート」) を異なる名称 (「replacer」) で複製することができます。 + + 現在サポートされている「オリジナルテンプレート」は、以下のとおりです:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl および/または thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl および/または footer.tpl
                  • +
                  • picture_content.tpl および/またはpicture.tpl
                  • + +
                  • profile.tpl および/または profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl および/または search_rules.tpl
                  • +
                  • nbm.tpl および/または notification.tpl
                  • +
                  • identification.tpl および/または register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  オリジナルテンプレートは、どこにありますか?

                  + +

                  配布されているオリジナルテンプレートは、template/yoga/ にあります (アップグレードの観点から、編集しないでください)。 +そのため、ウェブマスタは、「オリジナルテンプレート」から独自の「replacers (カスタマイズテンプレート)」を作成することができます。 + +

                  replacerは、どこに保存すべきですか?

                  + +

                  replacer (カスタマイズテンプレート) は、template-extensionフォルダ (または、そのサブフォルダ) に配置する必要があります。 +Replacers can have any filename with the .tpl extension. For example: template-extension/my-extension/video.tpl.

                  + + +

                  replacerは、どこで有効にできますか?

                  +

                  関連する置換テンプレートを有効にするため、オリジナルテンプレートは、 +replacer (カスタマイズテンプレート) に割り当てられる必要があります。 +これは、設定管理ページの「テンプレートの拡張」にて、割り当てることができます。

                  + +

                  あなたが任意のURIキーワードを選択した場合、このキーワードを使ったページのみ、 +置換が実行されます。例えば次のようになります: index.php?/most_visited

                  + +

                  アドバンストユーザは、任意URIキーワードをパーマリンクとして使用します。

                  +

                  replacerを無効にするには?

                  +
                    +
                  • 関連する「オリジナルテンプレート」の選択を解除してください。
                  • +
                  • FTPでreplacerを削除してください。
                  • +
                  + +

                  注意

                  +
                    + +
                  • オリジナルテンプレートは、「オリジナル」テンプレートであるべきです。そうでない場合、あなたの予想できない結果となってしまいます!
                  • + +
                  • 同じオリジナルテンプレートを使って、いくつかのreplacer (カスタマイズテンプレート) を作成して、 +同じ任意のURIキーワードを使用する場合、最後のreplacerのみ有効となります。
                  • + +
                  • 未選択の任意のURIキーワードは、すべてのテンプレート使用に関して、replacerを有効にします。 +前の時点と同じように、順番は、前に選択されたreplacerをオーバーライドすることができます。
                  • + +
                  • サブフォルダ: +サブフォルダは無視されますが、現在の順番を変更するのに有用です。
                    +distributed-samples: テスト目的のため提供されます! +編集せずに、あなた自身のテンプレートを作成してください。 +
                  • + +
                  • replacerを削除すると、すぐにオリジナルテンプレートが再度有効にされます。
                  • + +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/group_list.html b/sources/language/ja_JP/help/group_list.html new file mode 100644 index 0000000..84ef9a5 --- /dev/null +++ b/sources/language/ja_JP/help/group_list.html @@ -0,0 +1,22 @@ +

                  グループリスト

                  + +

                  ここでは、あなたが定義したグループを管理することができます。

                  + +

                  グループを追加する

                  + +

                  管理者は、グループを追加することができます。

                  + +

                  グループリスト

                  + +

                  グループリストでは、それぞれの要素に関して:

                  + + +
                    +
                  • メンバーリストに移動できます。
                  • +
                  • パーミッションに移動できます。
                  • +
                  • グループを削除できます (要チェックボックスの確認)。
                  • +
                  • ステータスを「デフォルト」に切り替えることができます (要チェックボックスの確認)。
                  • +
                  + +

                  デフォルトグループ

                  +

                  デフォルトグループは、新しいユーザが自動的に関連付けられるグループです。

                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/help_add_photos.html b/sources/language/ja_JP/help/help_add_photos.html new file mode 100644 index 0000000..490a822 --- /dev/null +++ b/sources/language/ja_JP/help/help_add_photos.html @@ -0,0 +1,21 @@ +

                  色々な方法でガラリーに写真をアップロードできます:

                  + +
                    +
                  • ブラウザーの中で直接なアップロード は一番快適に気軽です。しかし、それはあなたのブラウザーやWebサーバーに依存します。多数の写真又は、その他のトラベルが発生がありましたら、その他のアップロード方法もあります。
                  • +
                  + + + +
                    +
                  • pLoader はあなたのパソコンにインストールするデスクトップのアプリケーションです。 pLoader ウィンドウに写真をドラッグ&ドロップし、"Piwigoにアップロード" をクリックして待つだけです。WinToPiwigo 又はDigikam などのデスクトップアプリケーションも、あります。
                  • +
                  + + + +
                  +
                    +
                  • 多数の写真をアップロードする場合、FTP は推薦しています。写真をアップロードするために、ガイドをお読みください。FTPの方法はサーバー上に写真の場所を正確に指定することができます。
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/help_groups.html b/sources/language/ja_JP/help/help_groups.html new file mode 100644 index 0000000..6a5bea9 --- /dev/null +++ b/sources/language/ja_JP/help/help_groups.html @@ -0,0 +1,6 @@ +

                  ユーザは自分の写真をアップロードすることもできます。

                  + +

                  物理カテゴリにアップロードを許可します (「管理 > カテゴリ > 管理 > 編集」または「管理 > カテゴリ » プロパティ » アップロード」)。バーチャルカテゴリには、アップロードすることができません。

                  + +

                  対応するディレクトリに書込み権を与えてください。

                  + diff --git a/sources/language/ja_JP/help/help_misc.html b/sources/language/ja_JP/help/help_misc.html new file mode 100644 index 0000000..a2681ce --- /dev/null +++ b/sources/language/ja_JP/help/help_misc.html @@ -0,0 +1,6 @@ +

                  あなたのギャラリーを作成したらすぐに、「管理 » 設定 » デフォルト」にて、デフォルト表示プロパティを変更してください。 + すべての新規登録ユーザは、これらのデフォルト設定を使用することになります。

                  + +

                  あなたに質問がある場合、Piwigoコミュニティは、あなたをフォーラムで歓迎します。

                  + + diff --git a/sources/language/ja_JP/help/help_permissions.html b/sources/language/ja_JP/help/help_permissions.html new file mode 100644 index 0000000..d8a3bde --- /dev/null +++ b/sources/language/ja_JP/help/help_permissions.html @@ -0,0 +1,45 @@ +
                  +写真のパーミッション + +

                  各写真は プライバシーレベルがあります。各ユーザーはプライバシーレベルもあります。5つのプライバシーレベルがあります:

                  +
                    +
                  1. なし
                  2. +
                  3. 連絡先
                  4. +
                  5. 友人(連絡先より高い)
                  6. +
                  7. 家族 (友人より高い)
                  8. +
                  9. アドミン (その他のレベルより高い)
                  10. +
                  + +

                  最も高いレベルは最も低いレベルのパーミッションがあります。どのユーザーにも、最も高いプライバシーレベルは最も多くの写真が見られます。

                  + +

                  例えば、もし、"peter_wedding-0024.jpg" の写真は家族のプライバシーレベルを設定していれば、

                  +
                    +
                  • 山田さんはアドミンなので、全ての写真がが見られます。
                  • +
                  • 田中さんは 家族 なので、その写真も見られます。
                  • +
                  • 鈴木さんは友人) なので、その写真が見られません。
                  • +
                  + +

                  カテゴリー内容のパーミッションがないユーザーはそのカテゴリーやそのタイトルも見られません。タグも同じようなルールもあります。

                  + +

                  アドミニストレーション » ユーザー » 管理の画面でユーザーのプライバシーレベルを設定できます。

                  + +
                  + +
                  +カテゴリーのパーミッション + +

                  もし、現在のプライバシーレベルが利用できなかったら、ユーザー又はグループのためのカテゴリーのパーミッションも設定できます。カテゴリーと写真を同時にパーミッションを設定できます。

                  + +

                  あなたは、カテゴリへのアクセスを禁止することができます。あなたがパーミッションを管理したい場合、カテゴリアクセスタイプを「プライベート」に変更してください。

                  + +

                  あなたは、単一のカテゴリを編集 (管理 » カテゴリ » 管理 > 編集) または、 + すべてのカテゴリツリーを設定 (管理 » カテゴリ » プロパティ » パブリック/プライベート) することで、カテゴリをプライベートにすることができます。

                  + +

                  カテゴリがプライベートにされた場合、あなたはグループおよびユーザのパーミッションを3つの画面で管理することができます:

                  + +
                    +
                  • 管理 » アイデンティフィケーション » ユーザ » パーミッション (1ユーザにつき1リンク)
                  • +
                  • 管理 » アイデンティフィケーション » グループ » パーミッション (1グループにつき1リンク)
                  • +
                  • 管理 » カテゴリ » カテゴリパーミッションの編集 (1カテゴリにつき1リンク)
                  • +
                  +
                  diff --git a/sources/language/ja_JP/help/help_virtual_links.html b/sources/language/ja_JP/help/help_virtual_links.html new file mode 100644 index 0000000..b815fe3 --- /dev/null +++ b/sources/language/ja_JP/help/help_virtual_links.html @@ -0,0 +1,8 @@ +

                  写真は、ファイルディレクトリに関連するカテゴリ内に表示されます。

                  + +

                  ウェブサーバ内で複製せず、あなたは複数のカテゴリで写真を表示することができます。 +(管理者がギャラリーの写真ページからアクセスできる) 写真編集画面でカテゴリと写真を関連付けてください。

                  + +

                  バーチャルディレクトリは、このコンセプトに基づいています: バーチャルディレクトリには、対応するカテゴリが存在しません。 +バーチャルカテゴリを「管理 » カテゴリ » 管理」にて作成してください。

                  + diff --git a/sources/language/ja_JP/help/history.html b/sources/language/ja_JP/help/history.html new file mode 100644 index 0000000..095e6a0 --- /dev/null +++ b/sources/language/ja_JP/help/history.html @@ -0,0 +1,32 @@ +

                  履歴

                  + +

                  これらのページでは、あなたが「管理 > 一般 > 履歴」で選択したオプションに従って、Piwigoの履歴ナビゲーションにアクセスすることができます。

                  + +

                  統計

                  +
                    +

                    あなたが、historyテーブルにページアクセス (index.phpおよびpicture.php) を保存している場合、ここではサイトのページアクセスに関する情報を閲覧することができます。

                    + +
                  • 全体の統計 : あなたは、年毎の統計を閲覧することができます。
                  • + +
                  • 年毎の統計 : あなたが選択した年に関して、月毎の統計を閲覧することができます。
                  • + +
                  • 月毎の統計 : あなたが選択した月に関して、日毎の統計を閲覧することができます。
                  • + +
                  • 日毎の統計 : あなたが選択した日付に関して、時間毎の統計を閲覧することができます。
                  • + +
                  + +

                  検索

                  +
                    +

                    あなたが、historyテーブルにページアクセス (index.phpおよびpicture.php) を保存している場合、ここでは異なるフィルタにより、サイトのページアクセス詳細に関する情報を閲覧することができます。

                    + +
                  • 日付に関するフィルタ : あなたが活動を閲覧したい期間を選択してください。
                  • + +
                  • エレメントタイプに関するフィルタ : あなたが活動を閲覧したいエレメントタイプを選択してください。
                  • + +
                  • ユーザに関するフィルタ : あなたが活動を閲覧したいユーザを選択してください。
                  • + +
                  • ファイル名に関するフィルタ : あなたが活動を閲覧したいファイル名を選択してください。
                  • + +
                  • イメージIDに関するフィルタ : あなたが活動を閲覧したいイメージIDを選択してください。
                  • +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/index.php b/sources/language/ja_JP/help/index.php new file mode 100644 index 0000000..5ba26cd --- /dev/null +++ b/sources/language/ja_JP/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ja_JP/help/maintenance.html b/sources/language/ja_JP/help/maintenance.html new file mode 100644 index 0000000..6fe01d3 --- /dev/null +++ b/sources/language/ja_JP/help/maintenance.html @@ -0,0 +1,56 @@ +

                  メンテナンス

                  + +

                  ページ作成時間を最適化するため、Piwigoはキャッシュ情報を使用します。 +例えば、それぞれのカテゴリに含まれている写真数を、ページがリロードされるたびにカウントするのではなく、 +データベースに保存します。理論的には、この情報は常に更新されますが、時々エラーが発生して、キャッシュ情報が +正しく表示されない場合もあります。

                  + +

                  時間に関して、いくつかの情報が無用になる場合もあります。この無用な情報をデータベースから削除することで、 +あなたはディスクスペースを減らすことができます。

                  + +
                    + +
                  • + 未リンクのエレメント: + どのバーチャルカテゴリにも関連付けられていないイメージを表示します。 +
                  • +
                  • + 1つ以上の物理カテゴリに存在する同一名ファイル: + 複数カテゴリで見つかった同一ファイル名のイメージまたはファイルを表示します。 +
                  • + +
                  + +
                    + +
                  • カテゴリ情報を更新する: それぞれのカテゴリに関して、次の情報が更新または管理されます: + 親カテゴリのリスト、写真数、最近の写真の日付、子カテゴリのポジション、すべてのカテゴリのポジション。 + この処理では、サムネイルの一致もチェックされます。
                  • + +
                  • イメージ情報を更新する: それぞれの写真に関して、次の情報が更新されます: + ファイルのフルパス、平均評点。 + 警告: 「管理 > カテゴリ > 同期化」または + 写真の修正ページ (例えば、写真を経由) で同期化できる、 + メタデータ情報に混乱しないでください。
                  • + +
                  • データベースを修復および最適化する: + それぞれのテーブルに関して、並び替え、修復および最適化処理が実行されます。 +
                  • +
                  + +
                    +
                  • 履歴詳細を消去する: 履歴テーブルから、すべてのレコードが削除されます。 + 「管理 > 特別 > 履歴」ページでは、過去の履歴に関する情報が表示されなくなります。 + 警告: すべてのデータが削除されて、元に戻すことはできませんので留意してください。
                  • + +
                  • 履歴サマリーを消去する: 履歴に関して、すべてのサマリー情報を削除します。このサマリーは、履歴詳細から計算されます。
                  • + +
                  • セッションを削除する: 期限切れのユーザセッションを削除します。
                  • + +
                  • 未使用の通知フィードを削除する
                  • + +
                  • Purge search history
                  • + +
                  • コンパイル済みテンプレートを削除する
                  • + +
                  diff --git a/sources/language/ja_JP/help/notification_by_mail.html b/sources/language/ja_JP/help/notification_by_mail.html new file mode 100644 index 0000000..0fd2471 --- /dev/null +++ b/sources/language/ja_JP/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                  メール通知

                  + +

                  この画面では、あなたのサイトニュースに関する、ユーザのメール購読を設定および管理します。

                  + +

                  この画面は、3つのタブで構成されます:

                  + +

                  パラメータ

                  +

                  ウェブマスタのみ利用できます。このタブでは、メール通知のパラメータを設定します。

                  + +

                  購読

                  +

                  ウェブマスタのみ利用できます。このタブでは、ユーザに関する、メール通知の購読/購読解除を管理します。

                  + +

                  送信

                  +

                  ウェブマスタおよび管理者のみ利用できます。このタブでは、ニュースをメール通知することができます。

                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/permalinks.html b/sources/language/ja_JP/help/permalinks.html new file mode 100644 index 0000000..e286a48 --- /dev/null +++ b/sources/language/ja_JP/help/permalinks.html @@ -0,0 +1,7 @@ +

                  パーマリンク

                  + +

                  パーマリンクは、カテゴリURIを素晴らしく変更します。カテゴリにパーマリンクが設定された場合、URIにカテゴリのIDが不要となります。

                  + +

                  パーマリンクが削除された場合、今後もPWGページにアクセスできるよう、あなたはパーマリンク履歴に保存することができます。パーマリンク履歴テーブルでは、あなたは最新利用日時、このパーマリンクの利用回数およびパーマリンクの削除日時を閲覧することができます。

                  + +

                  パーマリンクは、カテゴリごとにユニークである必要がありますので留意してください。また、パーマリンク履歴では、あなたは同じパーマリンクを2回以上定義することはできません。

                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/photos_add_ftp.html b/sources/language/ja_JP/help/photos_add_ftp.html new file mode 100644 index 0000000..3f6c97d --- /dev/null +++ b/sources/language/ja_JP/help/photos_add_ftp.html @@ -0,0 +1,100 @@ +
                  + クイックスタート + +
                    +
                  1. あなたのコンピュータにディレクトリを作成してください。
                  2. + +
                  3. このディレクトリ内に写真をコピーした後、ウェブ表示のため、写真をリサイズしてください。 + 警告: ディレクトリおよびファイル名には、文字、「-」「_」「.」の記号のみ含んでください。空白、アクセント符号は含まないでください。
                  4. + +
                  5. FTPクライアントを使って、あなたのPiwigoインストレーションの「galleries」ディレクトリにディレクトリをコピーしてください。
                  6. + +
                  7. あなたのギャラリーにログインして、未作成のサムネイルを作成するため、「管理 > 写真 > サムネイル」に移動してください。
                  8. + +
                  9. 管理」に移動して、大きな「クイックローカル同期」ボタンをクリックしてください。
                  10. +
                  + +

                  おめでとうございます! あなたは、フォトギャラリーの最初のカテゴリの作成に成功しました。

                  + +
                  + +
                  + ディレクトリおよびファイル構造 +
                    + +
                  • + +

                    ギャラリーディレクトリは、Piwigoディレクトリ「galleries」にあります。以下、非常に小さな (しかし、多くの特長を持つ) ギャラリーのディレクトリツリーの例です:

                    + +
                    .
                    +|-- admin
                    +|-- doc
                    +|-- galleries
                    +|   |-- category-1
                    +|   |   |-- category-1.1
                    +|   |   |   |-- category-1.1.1
                    +|   |   |   |   |-- category-1.1.1.1
                    +|   |   |   |   |   |-- pwg_high
                    +|   |   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   |   |-- thumbnail
                    +|   |   |   |   |   |   +-- TN-wedding.jpg
                    +|   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   +-- category-1.1.1.2
                    +|   |   |   +-- category-1.1.2
                    +|   |   |-- category-1.2
                    +|   |   |   |-- pookie.jpg
                    +|   |   |   +-- thumbnail
                    +|   |   |       +-- TN-pookie.jpg
                    +|   |   +-- category-1.3
                    +|   +-- category-2
                    +|       |-- piglet.gif
                    +|       |-- pwg_representative
                    +|       |   +-- video.jpg
                    +|       |-- thumbnail
                    +|       |   +-- TN-piglet.jpg
                    +|       +-- video.avi
                    +|-- include
                    +|-- install
                    +|-- language
                    +|-- template
                    ++-- tool
                    + +
                  • + +
                  • 「galleries」配下の各ディレクトリは、カテゴリを表します。カテゴリの深さに制限はありません。
                  • + +
                  • 基本的に、エレメントはファイルによって表されます。 + ファイル拡張子が設定パラメータのfile_ext内にある場合、ファイルはPiwigoのエレメントになることができます (詳細は、include/config_default.inc.phpファイルをご覧ください)。
                  • + +
                  • 写真エレメントは、サムネイルと関連付ける必要があります (詳細は、下記サムネイルの項目をご覧ください)。
                  • + +
                  • 写真エレメントは、高品質のファイルを関連付けることができます。上記例では、wedding.jpgです。高品質の写真には、接頭辞がありません。
                  • + +
                  • デフォルトでは、写真エレメント (ビデオ、サウンド、テキスト等) に関して、ファイル名の拡張子に関連付けられるアイコンはありません。 + 任意で、あなたはサムネイルおよび見本ファイルを関連付けることができます (上記例のvideo.aviをご覧ください)。
                  • + +
                  • 警告: ディレクトリおよびファイル名には、文字、「-」「_」「.」の記号のみ含んでください。空白、アクセント符号は含まないでください。
                  • + +
                  • ファイル、サムネイルおよび見本が正しくディレクトリに配置された場合、「管理 > カテゴリ > 同期化」に移動してください。
                  • + +
                  + +
                  + +
                  + サムネイル +
                    + +
                  • それぞれの写真は、サムネイルを持つ必要があります。
                  • + +
                  • サムネイルは、カテゴリディレクトリ内のサブディレクトリ「thumbnail」に保存されます。 + サムネイルは、関連する写真のファイル名に接頭辞「TN-」を付けたファイル名となります。
                  • + +
                  • アドバイス: サムネイルの作成には、外部モジュールをお使いください。
                  • + +
                  • (イメージクオリティ、ウェブサーバリソースのロードに関して) 推奨はできませんが、あなたはサムネイルの作成に「管理 > 写真 > サムネイル」ページを使用することができます。
                  • + +
                  • すべてのカテゴリディレクトリに書込み権を与えてください。
                  • + +
                  +
                  diff --git a/sources/language/ja_JP/help/search.html b/sources/language/ja_JP/help/search.html new file mode 100644 index 0000000..2cee0cc --- /dev/null +++ b/sources/language/ja_JP/help/search.html @@ -0,0 +1,22 @@ +

                  検索

                  + +

                  このページでは、あなたはギャラリー全体から写真を検索することができます。

                  + +
                  + +
                  言葉で探す
                  +
                  入力された言葉を使用して、ギャラリーで表示される写真に関連した属性すべてを検索します。 + 部分的な合致には、* をワイルドカードとして使用してください。
                  + +
                  作者で探すdt> +
                  部分的な合致には、* をワイルドカードとして使用してください。
                  + +
                  日付で探す
                  +
                  あなたの検索に関して、日付および終了日を選択してください。あなたが「以前」を検索したい場合、 + 日付を空白のままにしてください。年は最後のフィールドに次のようなフォーマットで入力してください : 0000 (例 2009)
                  + +
                  カテゴリを探す
                  +
                  あなたが探したいカテゴリを選択してください。親カテゴリを選択した後、 + 「サブカテゴリを探す」オプションを選択した場合、すべてのサブカテゴリも検索されます。
                  + +
                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/synchronize.html b/sources/language/ja_JP/help/synchronize.html new file mode 100644 index 0000000..0c7deb7 --- /dev/null +++ b/sources/language/ja_JP/help/synchronize.html @@ -0,0 +1,10 @@ +

                  同期化

                  + +

                  同期化には、2つの方法があります: ディレクトリ/ファイルおよびファイルメタデータです。 +ディレクトリ/ファイルでは、データベース内のカテゴリツリーを含んだディレクトリを同期化します。 +メタデータでは、ファイルサイズ、ピクセルのサイズ、EXIFまたはIPTC情報等のエレメント情報を更新します。

                  + +

                  最初の同期化は、ディレクトリ/ファイルを実行してください。

                  + +

                  同期化処理には長時間を要します (あなたのサーバロードおよび管理するエレメント量に依存します)。 +そのため、カテゴリごとに処理することも可能です。

                  \ No newline at end of file diff --git a/sources/language/ja_JP/help/user_list.html b/sources/language/ja_JP/help/user_list.html new file mode 100644 index 0000000..35f508c --- /dev/null +++ b/sources/language/ja_JP/help/user_list.html @@ -0,0 +1,30 @@ +

                  ユーザリスト

                  + +

                  このページでは、あなたは登録済みユーザを管理することができます。 +パーミッションのみ異なるページで管理します。

                  + +

                  ユーザを追加する

                  + +

                  管理者は、手動でユーザを追加することができます。

                  + +

                  ユーザリスト

                  + +

                  リストは、ユーザ名 (ワイルドカードは、* を使用)、グループまたはステータスでフィルタすることができます。 +また、リストは登録日またはユーザ名の昇順または降順に並び替えることもできます。

                  + +

                  このページでは、複数のユーザに対して、同時に異なる処理を実施することができます:

                  + +
                    + +
                  • ユーザの削除 (要確認チェックボックスのチェック)
                  • + +
                  • ステータスの変更
                  • + +
                  • グループの関連付け、または関連付けの解除
                  • + +
                  • 表示プロパティの変更
                  • + +
                  • 追加的なプロパティの変更
                  • + +
                  +

                  ターゲットは「選択」されたユーザ (デフォルト) です。または、「すべて」のユーザを選択することができます。

                  diff --git a/sources/language/ja_JP/index.php b/sources/language/ja_JP/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/ja_JP/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ja_JP/install.lang.php b/sources/language/ja_JP/install.lang.php new file mode 100644 index 0000000..2fa0d85 --- /dev/null +++ b/sources/language/ja_JP/install.lang.php @@ -0,0 +1,67 @@ +Piwigo message board.'] = 'ヘルプが必要ですか? Piwigoメッセージボードにて、あなたの質問を投稿してください。'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'ゲストは、このメールアドレスでサイト管理者に連絡することができます。'; +$lang['PHP 5 is required'] = 'PHP 5が必要です'; +$lang['It appears your webhost is currently running PHP %s.'] = 'あなたのウェブホストは現在PHP %sを使っています。'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigoは.htaccess ファイルを作成するか変更して、PHP 5を設定してみます。'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注:自分で設定を変更し、その後Piwigoを再起動もできます。'; +$lang['Try to configure PHP 5'] = 'PHP 5を設定してみます。'; +$lang['Sorry!'] = '申し訳ありません!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'PiwigoはPHP 5を設定できませんでした。'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'あなたのホスティング業者のサポートに連絡し、どうやったらPHP 5を設定できるか確認すべきです。'; +$lang['Hope to see you back soon.'] = 'またお越し下さい'; +$lang['Congratulations, Piwigo installation is completed'] = 'おめでとうございました。Piwigo のインストールが完了しました。'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'その他の解決は、上のボックスにあるテクストをコピーし、"local/config/database.inc.php"に貼り付けます。(注意:database.inc.php は上のテクスト内容以外のこと(エンターキーやスペースなど)を含まないでください。)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'local/config/database.inc.php の設定ファイル作成に失敗しました。'; +$lang['Download the config file'] = '設定ファイルをダウンロードします。'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = '設定ファイルをダウンロードし、インストールされた local/config ディレクトリーにアップロードすることができます。'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'どうぞ、フォーラムで相談するのをためらわないでください: %s'; +$lang['Just another Piwigo gallery'] = '他のPiwigoギャラリー'; +$lang['Welcome to your new installation of Piwigo!'] = '新しくPiwigoをインストールしていただき、ありがとうざいます!'; +$lang['Welcome to my photo gallery'] = '私のフォトギャラリーへようこそ'; +?> \ No newline at end of file diff --git a/sources/language/ja_JP/iso.txt b/sources/language/ja_JP/iso.txt new file mode 100644 index 0000000..cdd2a55 --- /dev/null +++ b/sources/language/ja_JP/iso.txt @@ -0,0 +1 @@ +日本語 [JP] \ No newline at end of file diff --git a/sources/language/ja_JP/ja_JP.jpg b/sources/language/ja_JP/ja_JP.jpg new file mode 100644 index 0000000..02336b3 Binary files /dev/null and b/sources/language/ja_JP/ja_JP.jpg differ diff --git a/sources/language/ja_JP/upgrade.lang.php b/sources/language/ja_JP/upgrade.lang.php new file mode 100644 index 0000000..63b8984 --- /dev/null +++ b/sources/language/ja_JP/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s (or equivalent).'] = 'このページであなたのデータベースをアップグレードするように推薦しています(旧Piwigoのデータベースから、現在版)。 +アップグレード・アシスタントはあなたが現在release %s (またはそれと同等)を使っています。'; +$lang['Upgrade from version %s to %s'] = 'バージョン %s から %s にアップグレードする'; +$lang['Statistics'] = '統計'; +$lang['total upgrade time'] = '合計アップグレード時間'; +$lang['total SQL time'] = '合計SQL時間'; +$lang['SQL queries'] = 'SQLクエリー'; +$lang['Upgrade informations'] = '更新情報'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = '問題がある場合、[管理 > ツール > メンテナンス] でメンテナンスチェックを実行してください。'; +$lang['Only administrator can run upgrade: please sign in below.'] = '管理者のみアップグレードを実行できます: 以下でログインしてください。'; +$lang['You do not have access rights to run upgrade'] = 'あなたには、アップグレードを実行する権限がありません。'; +$lang['All sub-albums of private albums become private'] = 'プライベートカテゴリのすべてのサブカテゴリがプライベートにされました。'; +$lang['User permissions and group permissions have been erased'] = 'ユーザパーミッションおよびグループパーミッションが削除されました。'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = '以前の設定より、サムネイル接頭辞およびウェブマスターのメールアドレスのみ保存されました。'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = '予防措置として、次のプラグインは無効になりました。プラグインを有効にする前に、プラグインのアップグレードを確認してください。:'; +$lang['In %s, before ?>, insert:'] = '%sに、 ?>の前に入力:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '予防措置として、次のテーマが無効になりました。テーマを有効にする前に、アップグレードを確認してください。:'; +?> \ No newline at end of file diff --git a/sources/language/ka_GE/about.html b/sources/language/ka_GE/about.html new file mode 100644 index 0000000..b55f1e5 --- /dev/null +++ b/sources/language/ka_GE/about.html @@ -0,0 +1,12 @@ +
                • Piwigo - ეს არის სკრიპტი,რომელიც საშუალებას გაძლევთ ადვილად შექმნათ ფოტო სურათების ონლაინ გალერეა.
                • + +
                • გალერეა Piwigo შექმნილია PHP (elePHPant) საშუალებით და იყენებს MySQL (SQuirreL) მონაცემთა ბაზას.
                • + +
                • თუკი გაგიჩნდებათ რაიმე კითხვა ან კომენტარი სკრიპტთან დაკავშირებით,გთხოვთ დატოვოთ იგი ოფიციალურ საიტზე Piwigo, ან მის ფორუმზე.
                • + +

                  The Georgian is maintained by (alpha ordered): +

                  + .... thanks to them

                  \ No newline at end of file diff --git a/sources/language/ka_GE/admin.lang.php b/sources/language/ka_GE/admin.lang.php new file mode 100644 index 0000000..7710c72 --- /dev/null +++ b/sources/language/ka_GE/admin.lang.php @@ -0,0 +1,825 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader ცვლის Piwigo ამტვირთავს. pLoader-ის მეშვეობით თქვენ შეგიძლიათ ლოკალურად მოამზადოთ ფოტოები და და ატვირთოთ თქვენს Piwigo ფოტო გალერეაში.'; +$lang['Guest Settings'] = 'სტუმრის პარამეტრები'; +$lang['Main Page'] = 'მთავარი გვერდი'; +$lang['Photo Page'] = 'ფოტოების გვერდი'; +$lang['Activate Navigation Bar'] = 'სანავიგაციო პანელის აქტივაცია'; +$lang['Activate Navigation Thumbnails'] = 'მინიატურებში ნავიგაციის აქტივაცია'; +$lang['Activate icon "%s"'] = 'გავააქტიუროთ ხატულა "%s"'; +$lang['Photo Properties'] = 'ფოტოს თვისება'; +$lang['Allow user customization'] = 'ნება დავრთოთ მომხმარებლებს შეცვალონ გალერეის სახე'; +$lang['Languages'] = 'ენები'; +$lang['Installed Languages'] = 'დაყენებული ენები'; +$lang['Add New Language'] = 'დავამატოთ ახალი ენა'; +$lang['Language has been successfully installed'] = 'ენა წარმატებით დაყენდა'; +$lang['Select:'] = 'ავირჩიოთ:'; +$lang['None'] = 'არც ერთი'; +$lang['Invert'] = 'გადავწიოთ'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'შეუძლებელია ამ თემის დეაქტივაცია, თქვენ ერთი თემა მაინც უნდა გქონდეთ.'; +$lang['Webmaster status is required.'] = 'საჭიროა ადმინისტრატორის სტატუსი.'; +$lang['Bound Theme'] = 'დაკავშირებული თემა'; +$lang['Allow rating'] = 'ნება დავრთოთ შეაფასონ'; +$lang['Select at least one comment'] = 'აირჩიეთ ერთი კომენტარი მაინც'; +$lang['Active Plugins'] = 'გავააქტიუროოთ პლაგინი'; +$lang['Inactive Plugins'] = 'პლაგინის დეაქტივაცია'; +$lang['Missing Plugins'] = 'დაკარგული პლაგინები'; +$lang['Uninstalled Plugins'] = 'წაშლილი პლაგინები'; +$lang['By %s'] = ' %s'; +$lang['Visit plugin site'] = 'ვეწვიოთ პლაგინის საიტს'; +$lang['Active Languages'] = 'გავააქტიუროთ ენები'; +$lang['Delete this language'] = 'წავსალოთ ეს ენა'; +$lang['Forbid this language to users'] = 'გავხადოთ ეს ენა მომხმარებლისათვის ხელმიუწვდომელი'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'შეუყძლებელია ამ ენის დეაქტივაცია, დააყენეთ ძირითად ენად სხვა მანამდე.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'შეუძლებელია ამ ენის დეაქტივაცია, თქვენ ერთი ენა მაინც უნდა გქონდეთ.'; +$lang['Inactive Languages'] = 'ენის დეაქტივაცია'; +$lang['Make this language available to users'] = 'გავხადოთ ეს ენა მომხმარებლებისათვის ხელმისაწვდომი'; +$lang['Set as default language for unregistered and new users'] = 'დავაყენოთ ეს ენა დაურეგისტრირებელი მომხმარებლებისათვის ძირითადად'; +$lang['Add Photos'] = 'ფოტოს დამატება'; +$lang['The following tag was deleted'] = 'შემდეგი ნიშნულები წაშლილია'; +$lang['Miscellaneous'] = 'სხვა და სხვა'; +$lang['Virtual Links'] = 'ვირტ.ბმულები'; +$lang['Templates configuration has been recorded.'] = 'შაბლონის კონფიგურაცის გადაწერილია.'; +$lang['Modify information'] = 'ინფორმაცია ცვლილებების შესახებ'; +$lang['There is no other language available.'] = 'არ არის სხვა ენები.'; +$lang['There is no other plugin available.'] = 'არ არის სხვა პლაგინები.'; +$lang['There is no other theme available.'] = 'არ არის სხვა თემები.'; +$lang['By rank'] = 'რეიტინგით'; +$lang['Manual order'] = 'დავალაგოთ ხელით'; +$lang['Add another set of photos'] = 'დავამატოთ ფოტოები'; +$lang['Order of menubar items has been updated successfully.'] = 'მენიუში განლაგების წესი წარმატებით შეიცვალა.'; +$lang['This theme was not designed to be directly activated'] = 'ამ თემაში არ არის გათვლილი პირდაპირი აქტივაცია'; +$lang['Who can see this photo?'] = 'ვის შეუძლია ამ ფოტოს ნახვა?'; +$lang['Pending Comments'] = 'კომენტარის მოლოდინში'; +$lang['Menu Management'] = 'მენიუ'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'თქვენს php.ini ფაილში, upload_max_filesize (%sB) მეტია ვიდრე post_max_size (%sB), თქვენ უნდა შეცვალოთ ეს პარამეტრი '; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif გაფართოება არ არის ხელმისაწვდომი, ადმინისტრატორმა უნდა გამორთოს exif–ის გამოყენება'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'ასატვირთი ფაილის ზომა აღემატება upload_max_filesize დირექტივას ფაილში php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'ატვირთული ფაილების ზომა აღემატება post_max_size დირექტივას ფაილში php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'ასატვირთი ფაილის ზომა აღემატება MAX_FILE_SIZE დირექტივას მითითებულს HTML ფორმაში'; +$lang['The uploaded file was only partially uploaded'] = 'ასატვირთი ფაილი მოლოდ ნაწილობრივ აიტვირთა'; +$lang['No file was uploaded'] = 'ფაილი არ არის ატვირთული'; +$lang['Missing a temporary folder'] = 'არ არსებობს დროებითი ფოლდერი'; +$lang['Failed to write file to disk'] = 'ფაილის დისკზე ჩაწერა არ მოხერხდა'; +$lang['File upload stopped by extension'] = 'ფაილის ატვირთვა შეჩერებულია გაფართოების გამო'; +$lang['Unknown upload error'] = 'უცნობი ატვირთვის შეცდომა'; +$lang['Error on file "%s" : %s'] = 'შეცდომაა ფაილში "%s" : %s'; +$lang['automatic order'] = 'ავტომატურად განლაგება'; +$lang['manual order'] = 'ხელით განლაგება'; +$lang['Albums automatically sorted'] = 'ალბომები ავტომატურად დალაგებულია'; +$lang['Batch Manager'] = 'სურათების მენეჯერი'; +$lang['include child albums'] = 'მოიცავს ბავშვის ალბომებს'; +$lang['Selection'] = 'არჩევა'; +$lang['Action'] = 'მოქმედება'; +$lang['Set author'] = 'ავტორი'; +$lang['Set title'] = 'სათაური'; +$lang['Set creation date'] = 'შექმნის თარიღი'; +$lang['Apply action'] = 'არჩევანის დადასტურება'; +$lang['on the %d selected photos'] = '%d მონიშნული ფოტო'; +$lang['%d of %d photos selected'] = '%d დან %d ფოტოა შერჩეული'; +$lang['No photo selected, %d photos in current set'] = 'ფოტო არ არის არჩეული, %d ფოტოა მიმდინარე კრებულში'; +$lang['All %d photos are selected'] = 'ყველა %d ფოტოა არჩეული'; +$lang['remove this filter'] = 'გამოვრთოთ ეს ფილტრი'; +$lang['Duplicates'] = 'დუბლიკატები'; +$lang['Add a filter'] = 'დავამატოთ ფილტრი'; +$lang['Remove all filters'] = 'გავაუქმოთ ყველა ფილტრი'; +$lang['Refresh photo set'] = 'განვაახლოთ ფოტოები'; +$lang['The whole page'] = 'მთელი გვერდი'; +$lang['The whole set'] = 'მთელი რიგი'; +$lang['No photo in the current set.'] = 'არ არის სურათი მიმდინარე ნაკრებში.'; +$lang['No photo selected, no action possible.'] = 'არ არის არჩეული არც ერთი ფოტო, მოქმედება შეუძლებელია.'; +$lang['Choose an action'] = 'აირჩიეთ მოქმედება'; +$lang['remove author'] = 'წავშალოთ ავტორი'; +$lang['Type here the author name'] = 'ჩაწერეთ აქ ავტორის სახელი'; +$lang['remove title'] = 'წავშალოთ სათური'; +$lang['Type here the title'] = 'ჩაწერეთ აქ სათაური'; +$lang['remove creation date'] = 'წავშალოთ შექმნის თარიღი'; +$lang['Album photos associated to the following albums: %s'] = 'ალბომის ფოტო ასოცირებულია შემდეგ ალბომთან: %s'; +$lang['Delete orphan tags'] = 'დაობლებული ტეგების წაშლა'; +$lang['delete photo'] = 'ფოტოს წაშლა'; +$lang['Orphan tags deleted'] = 'დაობლებული ტეგები წაშლილია'; +$lang['Remove from caddie'] = 'Remove from caddie'; +$lang['Week starts on'] = 'კვირა იწყება'; +$lang['You have %d orphan tags: %s.'] = 'თქვენ გაქვთ %d დაობლებული ტეგი: %s.'; +$lang['Themes which need upgrade'] = 'თემები, რომელთაც სჭირდებათ განახლება'; +$lang['Languages which need upgrade'] = 'ენები, რომელთაც სჭირდება განახლება'; +$lang['All themes are up to date.'] = 'ყველა თემა განახლებულია.'; +$lang['All plugins are up to date.'] = 'ყველა პლაგინი განახლებულია.'; +$lang['All languages are up to date.'] = 'ყველა ენა განახლებულია.'; +$lang['Visit theme site'] = 'ეწვიეთ თემის ვებ გვერდს'; +$lang['Visit language site'] = 'ეწვიეთ ენის ვებ გვერდს'; +$lang['New Version'] = 'ახალი ვერსია'; +$lang['Obsolete Plugins'] = 'მოძველებული პლაგინები'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'გართხილება! ამ პლაგინს არ აქვს Piwigo–ს ამ ვერსიის მხარაჭერა.'; +$lang['Do you want to activate anyway?'] = 'თქვენ მაინც გინდათ გაააქტიუროთ?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ეს პლაგინი უკვე PIWIGO–ს ბირთვის ნაწილია! წაშალეთ იგი!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'შეცდომაა: ეს პლაგინი აკლია, მაგრამ იგი დაყენებულია! წაშალეთ იგი.'; +$lang['display'] = 'ნახვა'; +$lang['new'] = 'ახალი'; +$lang['No results'] = 'შედეგი არ არის'; +$lang['Searching...'] = 'ძიება...'; +$lang['Type in a search term'] = 'ჩაწერეთ მოსაძებნი სიტყვა'; +$lang['Learn more'] = 'გავიგოთ მეტი'; +$lang['Rate'] = 'შეფასება'; +$lang['Average rate'] = 'საშუალო ქულა'; +$lang['An error has occured during upgrade.'] = 'განახლების დროს მოხდა შეცდომა.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'ამოარქივების დროს მოხდა შეცდომა. გთხოვთ, შეამოწმეთ დაშვების უფლება piwigo–ს ფოლდერთან.
                  დაკლიკეთ, რათა ნახოთ ინფორმაცია შეცდომაზე.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ვერ იღებს განახლების ფაილებს სერვერიდან'; +$lang['Save Template Directory'] = 'შევინახოთ დირექტორიის შაბლონი'; +$lang['Dump Database'] = 'მონაცემთა ბაზის წაშლა'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'ჩავრთოთ ისტორიის მონაცემები (გაფრთხილება: შესაძლებელია სერვერზე მეხსიერების ლიმიტის გადაჭარბება)'; +$lang['Unable to dump database.'] = 'შეუძლებელია მონაცემთა ბაზის წაშლა.'; +$lang['Update in progress... Please wait.'] = 'მიმდინარეობს განახლების პროცესი... გთხოვთ დაიცადოთ.'; +$lang['Update to Piwigo %s'] = 'განაახლეთ Piwigo %s'; +$lang['Two updates are available'] = 'ორი განახლებაა ხელმისაწვდომი'; +$lang['This is a minor update, with only bug corrections.'] = 'ეს მცირე განახლებაა, მხოლოდ შეცდომების შესწორება.'; +$lang['This is a major update, with new exciting features.'] = 'ეს ძალიან დიდი განახლებაა საინტერესო სიახლეებით.'; +$lang['Some themes and plugins may be not available yet.'] = 'თემების და პლაგინების ნაწილი ჯერჯერობით არ არის ხელმისაწვდომი.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'თქვენ პირდაპირ შეგიძლიათ Piwigo %s გადახვიდეთ, Piwigo %s განახლების გარეშე(რეკომენდირებულია).'; + + + +$lang['%s has been successfully updated.'] = '%s წარმატებით განახლდა'; +$lang['%s photos can not be regenerated'] = '%s ფოტო არ არის რეგენერირებილი'; +$lang['%s photos have been regenerated'] = '%s ფოტო გენერირებულია'; +$lang['(this tag will be deleted)'] = '( ეს ტეგი წაშლილია)'; +$lang['... or '] = '... ან'; +$lang['Activate comments'] = 'კომენტარების გააქტიურება'; +$lang['Activate icon "new" next to albums and pictures'] = 'ააქტიურებს ხატულას "ახალი" ალბომისა და ფოტოების გვერდით'; +$lang['Add a criteria'] = 'კრიტერიუმის დამატება'; +$lang['Add tags'] = 'ტეგების დამატება'; +$lang['All extensions are up to date.'] = 'ყველა გაფართოება განახლებულია.'; +$lang['Allowed file types: %s.'] = 'დაშვებული ფაილის გაფართოებებია: %'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'დაახლოებით მაქსიმალური რეზოლუციაა: %dM პიქსელი (ესაა %dx%d პიქსელი).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'ნაგულისხმევია ის რომ, Piwigo შექმნის თქვენი ფოტოს ახალ HD (High Definition) ვერსიას.'; +$lang['Cancel'] = 'დასრულება'; +$lang['Confirm merge'] = 'დაადასტურეთ გაერთიანება'; +$lang['Create'] = 'შექმნა'; +$lang['Crop'] = 'ჩამოჭრა'; +$lang['Deactivate all'] = 'გამოვრთოთ ყველა'; +$lang['Default comments order'] = 'კომენტარების განლაგების წესი'; +$lang['Default photos order'] = 'ფოტოების განლაგების წესი'; +$lang['Move to album'] = 'გადავიტანოთ ალბომში'; +$lang['Not cropped correctly?'] = 'არ ჩამოიჭრა სწორედ?'; +$lang['Photo name'] = 'ფოტოს სახელი'; +$lang['Photos generation in progress...'] = 'მიმდინარეობს ფოტოების გენერაცია...'; +$lang['Piwigo Update'] = 'Piwigo განახლებულია'; +$lang['Predefined filter'] = 'სტანდარტული ფილტრები'; +$lang['Reset ignored updates'] = 'გავაუქმოთ იგნორირებული განახლებები'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'აღვადგინოთ ძირითადი კონფიგურაცია. თქვენ დაკარგავთ პლაგინების პარამეტრებს!'; +$lang['Restore'] = 'აღდგენა'; +$lang['Save visits in history for'] = 'შევინახოთ ნახვები ისტორიაში'; +$lang['Select an album'] = 'აირჩიეთ ალბომი'; +$lang['Select at least two tags for merging'] = 'აირჩიეთ ორი ტეგი მაინც გასაერთიენებლად'; +$lang['Select the destination tag'] = 'აირჩიეთ დანიშნულების ტეგი'; +$lang['Send connection settings by email'] = 'პირადი პარამეტრების ელ-ფოსტაზე გაგზავნა'; +$lang['Show menubar'] = 'ვაჩვენოთ მენიუ'; +$lang['Some upgrades are available for extensions.'] = 'ზოგიერთი გაფართოებისათვის განახლება ხელმისაწვდომია.'; +$lang['Start Upload'] = 'დავიწყოთ ატვირთვა'; +$lang['Tags %s merged into tag %s'] = 'ტეგი %s გაერთიანდება ტეგთან %s'; +$lang['The original image quality must be a number between %d and %d'] = 'გამოსახულების თავდაპირველი ხარისხი უნდა იყოს ციფრი %d და %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'ორიგინალური მაქსიმალური სიმაღლე უნდა იყოს %d და %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'ორიგინალური მაქსიმალური სიგანე უნდა იყოს %d და %d'; +$lang['This album contains %d photos, added between %s and %s.'] = 'ეს ალბომი შეიცავს %d ფოტოს, დამატებულია %s და %s შორის'; +$lang['This album contains %d photos, added on %s.'] = 'ეს ალბომი შეიცავს %d ფოტოს, დამატებულია %s'; +$lang['This album contains no photo.'] = 'ამ ალბომში ფოტო არ არის.'; +$lang['Thumbnails generation in progress...'] = 'მიმდინარეობს ხატულების გენერაცია...'; +$lang['You can activate only one mobile theme.'] = 'თქვენ უნდა გაააქტიუროთ მხოლოდ ერთი მობილური თემა.'; +$lang['administrators'] = 'ადმინისტრატორები'; +$lang['registered users'] = 'დარეგისტრირებული მომხმარებლები'; +$lang['show details'] = 'ვნახოთ დეტალები'; +$lang['simple visitors'] = 'უბრალო მნახველები'; +$lang['%d day'] = '%d დღე'; +$lang['%d days'] = '%d დღე'; +$lang['%d hour'] = '%d საათი'; +$lang['%d hours'] = '%d საათი'; +$lang['%d minute'] = '%d წუთი'; +$lang['%d minutes'] = '%d წუთი'; +$lang['%d month'] = '%d თვე'; +$lang['%d months'] = '%d თვე'; +$lang['%d second'] = '%d წამი'; +$lang['%d seconds'] = '%d წამი'; +$lang['%d week'] = '%d კვირა'; +$lang['%d weeks'] = '%d კვირა'; +$lang['%d year'] = '%d წელი'; +$lang['%d years'] = '%d წელი'; +$lang['Added by %s'] = 'დამატებულია %s'; +$lang['Edit photo'] = 'ფოტოს რედაქტირება'; +$lang['Original file : %s'] = 'ორიგინალი ფაილი: %d'; +$lang['Posted %s on %s'] = 'გამოქვეყნებულია %s %s -ში'; +$lang['Sharpen'] = 'სიმკვეთრე'; +?> diff --git a/sources/language/ka_GE/common.lang.php b/sources/language/ka_GE/common.lang.php new file mode 100644 index 0000000..48841d5 --- /dev/null +++ b/sources/language/ka_GE/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/ka_GE/help/cat_modify.html b/sources/language/ka_GE/help/cat_modify.html new file mode 100644 index 0000000..d305c66 --- /dev/null +++ b/sources/language/ka_GE/help/cat_modify.html @@ -0,0 +1,117 @@ +

                  კატეგორიის რედაქტირება

                  + +

                  ინფორმაცია

                  + +
                    + +
                  • სათაური: გაძლევთ საშუალებას სახელი გადაარქვათ კატეგორიას + (გავს ფსევდონიმს, რეალური კატეგორიის შემთხვევაში).
                  • + +
                  • აღწერა: შეგიძლიათ აღწეროთ კატეგორიის შემადგენლობა. + ეს ტექსტი გამოჩნდება მინიატურების გვერდზე, ქვევით.
                  • + +
                  + +

                  გადატანა

                  + +

                  თუ კატეგორია ვირტუალურია, თქვენ შეგიძლიათ გადაიტანოთ იგი. კატეგორიის გადატანა ნიშნავს მშობლიური კატეგორიის შეცვლას.

                  + +

                  ოპციები

                  + +
                    + +
                  • დაშვების ტიპი: დაშვების მართვა. თუ კატეგორიას მიანიჭებთ სტატუსს პრივატული, მაშინ ყველა ქვეკატეგორია ამ კატეგორიაში გახდება პრივატული, ხოლო თუ მიანიჭებთ კატეგორიას სტატუსს საერთო, მაშინ ყველა ქვეკატეგორია ამ კატეგორიაში გახდება საერთო.
                  • + +
                  • დაბლოკვა: კატეგორია და მისი ქვეკატეგორიები დროებით დაბლოკილი იქნება, მომსახურეობის მიზნით.
                  • + +
                  • Комментарии: მომხმარებლის მიერ კატეგორიის ელემენტების კომენტირების მართვა.
                  • + +
                  • ნება დავრთოთ ატვირთვაზე: მომხმარებლების მიერ ფაილების ატვირთვის მართვა. ეს ოპცია ხელმისაწვდომია მხოლოდ ჩვეულებრივი (არა ვირტუალური) კატეგორიებისათვის.
                  • + +
                  + +

                  ასევე თქვენ შეგიძლიათ მართოთ ეს გასწორებები გვერდზე "თვისება" + (ჩანართი ატვირთვა, კომენტარები, დაბლოკვა, +საერთო/პრივატული), ყველაფერი ეს მენიუში ადმინისტრირება, გალერეა, თვისება.

                  + +

                  სორტირების წესი

                  + +

                  პირველი ჩეკბოქსი განსაზღვრავს ძირითად სორტირებას.

                  +

                  მეორე ჩეკბოქსი განსაზღვრავს სორტირების წესს ქვეკატეგორიებზე.

                  + +

                  აირჩიეთ სხვა სორტირების წესი, თუკი ეს საჭიროა.

                  +
                    +
                  • გადაღების დრო: ფოტოს გადაღების თარიღი
                  • +
                  • გამოქვეყნების დრო: ფოტოს გალერეაში გამოქვეყნების თარიღი
                  • +
                  • საშუალო ქულა (*): რეიტინგის მიხედვით, რომლითაც ხმას აძლევენ მომხმარებლები
                  • +
                  • პოპულარულობის მიხედვით (*): მომხმარებლების მიერ ფოტოების ნახვის მიხედვით
                  • +
                  • ფოტოს სახელი: ფოტოს სახელის მიხედვით სორტირება
                  • +
                  • Id: შიდა იდენტიფიკატორი (ახალ კატეგორიებს აქვთ უფრო მაღალი იდენტიფიკატორი ვიდრე ძველებს).
                  • + +
                  +

                  (*) ცადეთ ეს მნიშვნელობები. ხშირად ისინი იძლევიან არა პროგნოზირებად რეზულტატს.

                  + + +

                  წარმომადგენელი

                  + +

                  კატეგორიის წარმომადგენელი-ეს არის მინიატურა, რომელიც წარმოადგენს კატეგორას გალერეის მთავარ გვერდზე (category.php) როცა კატეგორია შეიცავს მხოლოდ ქვეკატეგორიებს.

                  + +

                  არსებობს 4 საშუალება კატეგორიის წარმომადგენლად დანიშვნინსათვის:

                  + +
                    + +
                  • ფოტოების გვერდი: ღილაკების რიგში პანელზე არის ღილაკი, რომელიც საშუალებას გაძლევთ კატეგორიის წარმომადგენლად დანიშნოთ ეს ფოტო. ეს ღილაკი ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის.
                  • + +
                  • ფოტოს ინფორმაციის რედაქტირება + ადმინისტრირების განყოფილებაში. ეს ფუნქცია ხელმისაწვდომია ფოტოების გვერდიდან picture.php ან კალათის მართვა + ჯგუფური რეჟიმი. ნახეთ დახმარება ამ ეკრანისათვის დეტალების დასაზუსტებლად.
                  • + +
                  • ადმინისტრირება, გალერეა, თვისება, წარმომადგენელი. ნახეთ დახმარება ამ ეკრანისათვის დეტალების დასაზუსტებლად.
                  • + +
                  • კატეგორიის რედაქტირება (этот экран).
                  • + +
                  + +

                  შეხედულება დამოკიდებულია კონფიგურაციის პარამეტრებზე +allow_random_representative (ნახე include/config_default.inc.php).

                  + +

                  ძირითადად (allow_random_representative დაყენებულია false) +ყოველი კატეგორია, რომელიც შეიცავს ერთ ელემენტს მაინც, წარმოდგენილია ფიქსირებული ელემენტით. დაყენებული ერთხელ (კატეგორიის შექმნისას), წარმომადგენელი შეიცვლება მხოლოდ მას შემდეგ რაც ადმინისტრატორი შეცვლის მას. +თუკი შეხედულება არ მოგწონთ, შეგიძლიათ აირჩიოთ მოძებნოთ ახალი წარმომადგენელი შემთხვევითი წესით.

                  + +

                  თუკი კონფიგურაციის პარამეტრი allow_random_representative დაყენებულია true, კატეგორიას, რომელიც შეიცავს ელემენტებს, ფიქსირებული წარმომადგენელი არ გააჩნია. გამოიყენეთ ღილაკი წავშალოთ წარმომადგენელი.

                  + +

                  თუკი კატეგორია არ შეიცავს ელემენტებს ( არ შეიცავს ქვეკატეგორიებს), იგი შეიძლება წარმოდგენილი იყოს ნებისმიერი ელემენტით შევცვალოთ ინფორმაცია ფოტოზე. + +

                  მივამაგროთ ამ კატეგორიის ყველა ელემენტი ახალს

                  + +
                    + +
                  • ვირტუალური კატეგორიის სახელი: ახალი კატეგორია ამ სახელით იქნება შექმნილი, ყველა ფოტო ამ კატეგორიაში, მიმაგრებული იქნება მასთან.
                  • + +
                  • მშობლიური კატეგორია: სად იქნება შექმნილი ახალი კატეგორია, თუკი ეს უნდა იყოს ზემოთა კატეგორია, დატოვეთ პარამეტრი ცარიელი.
                  • + +
                  + +

                  მივამაგროთ ამ კატეგორიის ყველა ელემენტი ერთ ერთ არსებულს

                  + +
                    + +
                  • გალერეა: აირჩიეთ კატეგორია, რომელთანაც საჭიროა მიამაგროთ ელემენტები.
                  • + +
                  + +

                  გაუგზავნოთ საინფორმაციო წერილი ჯგუფს

                  + +
                    + +
                  • ჯგუფი: ჯგუფი-ადრესატი
                  • + +
                  • Содержание: ტექსტი, რომელიც გაეგზავნება მის მონაწილეებს.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/ka_GE/help/cat_move.html b/sources/language/ka_GE/help/cat_move.html new file mode 100644 index 0000000..9c03800 --- /dev/null +++ b/sources/language/ka_GE/help/cat_move.html @@ -0,0 +1,14 @@ +

                  ვირტუალური კატეგორიების გადატანა

                  + +

                  მხოლოდ ვირტუალური კატეგორიები შეიძლება გადატანილი იყოს სხვა მშობლიურ კატეგორიაში.

                  + +

                  ვირტუალური კატეგორიები გადასატანად

                  + +

                  აირჩიეთ ვირტუალური კატეგორიები, რომლების გადატანაც გსურთ. +თუკი სია ცარიელია, მაშინ თქვენ ჯერ არ შეგიქმნიათ ვირტუალური კატეგორიები.

                  + +

                  ახალი მშობლიური კატეგორია

                  + +

                  აირჩიეთ ახალი მშობლიური კატეგორია (ვირტუალური ან რეალური). +თუკი არაფერს არ აირჩევთ, ვირტუალური კატეგორიები, არჩეული წინა ეტაპზე, გადატანილი იქნება გალერეის ფუძეში. +თქვენ არ შეგიძლიათ გადაიტანოთ კატეგორია თავისივე თავში ან ერთ ერთ მისივე ქვეკატეგორიაში.

                  diff --git a/sources/language/ka_GE/help/cat_options.html b/sources/language/ka_GE/help/cat_options.html new file mode 100644 index 0000000..6bde44f --- /dev/null +++ b/sources/language/ka_GE/help/cat_options.html @@ -0,0 +1,28 @@ +

                  კატეგორიის თვისება

                  + +

                  ეს ეკრანი საშუალებას აძლევს ადმინისტრატორს შეცვალოს რამდენიმე კატეგორიის თვისება ერთდროულად.

                  + +
                  + +
                  ატვირთვა
                  +
                  ხსნის კატეგორიებს მომხმარებლებისათვის ასატვირთად. ნაჩვენებია მხოლოდ არა ვირტუალური და წაუშლელი კატეგორიები.
                  + +
                  კომენტარები
                  +
                  ხსნის კატეგორიებს კომენტირებისათვის. +აირჩიეთ კატეგორიები, რომლებიც გინდათ გახსნათ კომენტირებისათვის. +ფოტო ღიაა კომენტირებისათვის, თუკი ერთი კატეგორია მაინც გახსნილია კომენტარებისათვის.
                  + +
                  ბლოკირება
                  +
                  არჩეული კატეგორიები დროებით დაბლოკილი იქნება, მომსახურების მიზნით. დაბლოკილი კატეგორიის ყველა ქვეკატეგორია , ასევე იქნება დაბლოკილი. როცა მოხსნით ბლოკირებას კატეგორიას, მისი ქვეკატეგორიებიდანაც მოიხსნება ბლოკირება.
                  + +
                  საერთო / პრივატული
                  +
                  არჩეულ კატეგორიებთან დაშვების მართვა. თუკი გახდით კატეგორიას პრივატულს, საჭიროა მისცეთ მომხმარებლებს ან/და ჯგუფებს მასთან დაშვების უფლება. + თუკი კატეგორიას გახდით პრივატულს, მისი ქვეკატეგორიებიც პრივატული გახდება. + თუკი კატეგორიას გახდით საერთოს, ყველა მისი ქვეკატეგორია ასევე საერთო იქნება.
                  + +
                  პრივილეგიები
                  +
                  ეს განყოფილება ხელმისაწვდომია,თუკი პარამეტრი allow_random_representative + (ნახეთ include/config_defaults.inc.php) დაყენებულია + true. ყოველ კატეგორიას შეიძლება ქონდეს შემთხვევითი წარმომადგენელი ან მხოლოდ ერთი წარმომადგენელი რომელსაც ადმინისტრატორი აირჩევს.
                  + +
                  diff --git a/sources/language/ka_GE/help/cat_perm.html b/sources/language/ka_GE/help/cat_perm.html new file mode 100644 index 0000000..cd145dc --- /dev/null +++ b/sources/language/ka_GE/help/cat_perm.html @@ -0,0 +1,11 @@ +

                  უფლებების მართვა კატეგორიისათვის

                  + +

                  ეს ეკრანი ხელმისაწვდომია მხოლოდ პრივატული კატეგორიისათვის. აქ შეიძლება მომხმარებლების ან/და ჯგუფების არჩევა, რომლებსაც ექნებათ დაშვების უფლება ამ კატეგორიასთან.

                  + +

                  ჯგუფები

                  + +

                  თქვენ შეგიძლიათ უფლება მისცეთ ან აუკრძალოთ ჯგუფებს ამ კატეგორიასთან დაშვება.ჯგუფისთვის დაშვების უფლების შეცვლით, თქვენ ცვლით დაშვების უფლებას მომხმარებლებისთვისაც, რომლებიც ამ ჯგუფში არიან გაერთიანებულნი.

                  + +

                  მომხმარებლები

                  + +

                  ისევე როგორც ჯგუფებისათვის, შეგიძლიათ მოექცეთ ცალკეულ მომხმარებლებსაც.მომხმარებელი რომელსაც კატეგორიასთან დაშვების უფლება აქვს ჯგუფის მიხედვით, შეიძლება შეზღუდული იყოს პერსონალურად მომხმარებლის დაშვების შეზღუდვის საშუალებით.

                  diff --git a/sources/language/ka_GE/help/configuration.html b/sources/language/ka_GE/help/configuration.html new file mode 100644 index 0000000..9683924 --- /dev/null +++ b/sources/language/ka_GE/help/configuration.html @@ -0,0 +1,103 @@ +

                  გასწორება

                  + +

                  ეს ეკრანი აძლევს ადმინისტრატორს საშუალებას გააკეთოს უმარტივესი გასწორებები. სინამდვილეში, ეს ეკრანი გაჩვენებთ მხოლოდ უმარტივეს გასწორებებს, რომელიც საკმარისი იქნება ადმინისტრატორების უმეტესობისათვის. თუკი გსურთ იხილოთ სხვა გასწორებები (დამატებით), იხილეთ ფაილი include/config_default.inc.php.

                  + +

                  ეკრანი დაყოფილია სექციებად და დაჯგუფებულია რამდენიმე თემად.

                  + + +

                  მთავარი

                  +
                    +
                  • გალერეის სახელი: გამოიყენება RSS ლენტაში და email შეტყობინებებში.
                  • + +
                  • წარწერა ბანერზე: ნაჩვენები იქნება ყველა გვერდის ზევით.
                  • + +
                  • გალერეის მისამართი: გამოიყენება RSS ლენტაში.
                  • + +
                  • გალერეის დაბლოკვა: გალერეის დაკეტვა მომსახურეობის მიზნით. გალერეა ღია იქნება მხოლოდ ადმინისტრატორისათვის.
                  • + +
                  • შეფასებები: ნება დავრთოთ შეაფასონ.
                  • + +
                  • სტუმრების შეფასებები: დაურეგისტრირებელი მომხმარებლებიც შეძლებენ შეაფასონ ფოტოები.
                  • + +
                  • დაუშვათ მომხმარებლების რეგისტრაცია: ნებისმიერს შეუძლია დარეგისტრირება.
                  • + +
                  • ელ.ფოსტის მისამართი აუცილებელია ყველა მომხმარებლისათვის : მისამართის არსებობა შემოწმებული იქნება რეგისტრაციის დროს ან პროფილის შეცვლის დროს თუკი ეს მოქმედება აღნიშნულია ადმინისტრირების ნაწილში.
                  • + +
                  • შევატყობინოთ ადმინისტრატორს როცა ახალი მომხმარებელი დარეგისტრირდება: + ადმინისტრატორი მიიღებს შეტყობინებას ყოველი რეგისტრაციის შესახებ.
                  • + +
                  + +

                  ისტორია

                  + +

                  ნანახი გვერდები category.php და + picture.php ჩაწერილი იქნება ტაბულაში history.

                  + +

                  ნახვები ნაჩვენები იქნება ადმინისტრირება, სპეც.ფუნქციები, ისტორია.

                  + +
                    +
                  • შევინახოთ სტუმრების მიერ ნანახი გვერდები: გვერდები, რომლებსაც სტუმრები ნახავენ, შენახული იქნება.
                  • + +
                  • შევინახოთ მომხმარებლების მიერ ნანახი გვერდები: გვერდები, რომლებსაც დარეგისტრირებული მომხმარებლები ნახავენ, შენახული იქნება.
                  • + +
                  • შევინახოთ ადმინისტრატორების მიერ ნანახი გვერდები: გვერდები, რომლებსაც ადმინისტრატორები ნახავენ, შენახული იქნება.
                  • + +
                  + +

                  კომენტარები

                  +
                    + +
                  • კომენტარები ყველასათვის: დაურეგისტრირებელი მომხმარებლებიც შეძლებენ შეაფასონ ფოტოები.
                  • + +
                  • კომენტარების რაოდენობა გვერდზე.
                  • + +
                  • შემოწმება: ადმინისტრატორი ამოწმებს მომხმარებლების მიერ დაწერილ შეფასებებს მანამდე, სანამ ისინი ნაჩვენები იქნება საიტზე. კომენტარების შეფასება შესაძლებელია გვერდზე ადმინისტრირება, ფოტოები, კომენტარები.
                  • + +
                  • შევატყობინოთ ადმინისტრატორს როდესაც არსებობს კომენტარები: გაუგზავნოთ email ადმინისტრატორს როდესაც მომხმარებელი დატოვებს კომენტარს.
                  • + +
                  • შევატყობინოთ ადმინისტრატორს როდესაც არსებობს კომენტარები შესამოწმებლად: +გაუგზავნოთ email ადმინისტრატორს როდესაც მომხმარებელი დატოვებს კომენტარს ადმინისტრატორის შესამოწმებლად. შესამოწმებელი კომენტარები მდებარეობს გვერდზე +ადმინისტრირება, ფოტოები, კომენტარები.
                  • + +
                  + +

                  ატვირთვა

                  +
                    +
                  • ვაჩვენოთ ატვირთვის ბმული მუდმივად: თუკი არსებობს კატეგორიები, სადაც დაშვებულია ატვირთვა, დამატებული იქნება ბმული, რომელიც გამოჩნდება ყველა კატეგორიაში.
                  • +
                  • მომხმარებლის დაშვების უფლება ასატვირთად: +საშუალებას გაძლევთ შეზღუდოთ მომხმარებლების მიერ ატვირთვა
                  • +
                  • შევატყობინოთ ადმინისტრატორს როდესაც ატვირთულია ფოტო: ადმინისტრატორი მიიღებს შეტყობინებას მომხმარებლის მიერ ატვირთულ ფოტოზე.
                  • +
                  + +

                  ჩვენების ძირითადი სახე

                  + +

                  აქ შესაძლებელია შეცვალოთ ჩვენების ძირითადი პარამეტრები სტუმრისათვის ან არა ავტორიზებული მომხმარებლისათვის. ავტორიზაციის შემდეგ ჩვენების პარამეტრები შეიცვლება მომხმარებლისაზე ( რომელიც მითითებულია გვერდზე პროფაილი).

                  + +

                  ჩვენების პარამეტრები ყველა არსებული მომხმარებლისათვის შეგიძლიათ შეცვალოთ გვერდზე ადმინისტრირება, იდენტიფიკაცია, მომხმარებლები, სადაც შესაძლებელია ჩვენების პარამეტრების გასწორება არნიშნული მომხმარებლებისათვის.

                  + +
                    + +
                  • ენა: გავლენა აქვს მხოლოდ წარწერებზე. კატეგორიის სახელები, ფოტოები და აღწერილობა ლოკალიზებული არ იქნება.
                  • + +
                  • ფოტოების რაოდენობა სტრიქონში
                  • + +
                  • სტრიქონების რაოდენობა გვერდზე
                  • + +
                  • გაფორმება
                  • + +
                  • "ახლების" ვადა: დღეებში. პერიოდი, რომლის განმავლობაშიც ფოტო ჩაითვლება ახლად. უნდა იყოს 1 დღეზე მეტი.
                  • + +
                  • გავხსნათ ყველა კატეგორია: გავხსნათ ყველა კატეგორია მენიუში? + ყურადღება: ეს ვარიანტი საკმაოდ დიდ რესურსს მოითხოვს და შესაძლებელია ძალიან დიდი მენიუს გენერირება მოახდინოს, თუკი თქვენს გალერეაში ძალიან ბევრი კატეგორიაა.
                  • + +
                  • ვაჩვენოთ კომენტარების რაოდენობა: ვაჩვენოთ კომენტარების რაოდენობა თითოეული ფოტოსათვის მინიატურების გვერდზე.
                  • + +
                  • ვაჩვენოთ ნახვების რაოდენობა: ვაჩვენოთ ფოტოების ნახვების რაოდენობა მინიატურების გვერდზე. მოქმედებს როდესაც პარამეტრი:
                    $conf['show_nb_hits'] = true;
                    + შენიშვნა: პარამეტრი ძირითადად დგას false.
                  • + +
                  • გამოსახულების მახსიმალური სიგანე: მაქსიმალური სიგანე ჩვენებისას. თუკი ფოტო მეტია სიგანეში, იგი შემცირებული იქნება ჩვენებისას. თუ თქვენ ირჩევთ ამ ოფციას, უკეთესი იქნება ადრევე შეცვალოთ ფოტოს სიგანე.
                  • + +
                  • გამოსახულების მაქსიმალური სიმაღლე: იგივე კომენტარები, რაც სიგანეზე.
                  • + +
                  + diff --git a/sources/language/ka_GE/help/extend_for_templates.html b/sources/language/ka_GE/help/extend_for_templates.html new file mode 100644 index 0000000..6899d49 --- /dev/null +++ b/sources/language/ka_GE/help/extend_for_templates.html @@ -0,0 +1,77 @@ +

                  შაბლონების გაფართოების გასწორება

                  + +

                  მიზანი

                  +

                  გაარკვიეთ ყოველი შაბლონისათვის შეცვლის პირობა შაბლონ-გაფართოებაზე (შაბლონი, სახელად "შემცვლელი").

                  + +

                  "პირველადი შაბლონი" ./template/yoga -დან(ან სხვა) ჩანაცვლებული იქნება "შემცვლელი"-თ თუკი შემცვლელი დაკავშირებულია ამ პირველადთან (და თუკი URL შეიცავს "URL ოპციონალურ სიტყვას").

                  + +

                  "URL ოპციონალურ სიტყვა" ეს არის ის, რომელიც შეგიძლიათ იპოვოთ მოდულის დასახელების შემდეგ URL -ში.

                  + +

                  ამიტომ, "URL ოპციონალური სიტყვები" შესაძლოა იყვნენ აქტიური "პირდაპირი ბმულები" +(ნახეთ შესაბამისი განყოფილება ჩვენს დოკუმენტაციაში, შემდგომი განმარტებებისათვის).

                  + +

                  წაიკითხეთ: `გაფრთხილება` მოხმარების წესები.

                  + +

                  რა არის შაბლონი-გაფართოება?

                  + +

                  ეს არის კონფიგურაციის ინსტრუმენტი - მძლავრი ახალბედა და გამოცდილი მომხმარებლებისათვის. FTP-ს გამოყენებით, ფოლდერ template-extension -ში, Web-მასტერს შეუძლია დუბლირება ბევრი სხვა და სხვა .tpl ფაილების ("პირველადი შაბლონი") სხვა და სხვა დასახელებით ("შემცვლელი"). + + + "პირველადი შაბლონები", მიმდინარე ორიგინალი მხარდაჭერილი შაბლონები:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl და/ან thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl და/ან footer.tpl
                  • +
                  • picture_content.tpl და/ან picture.tpl
                  • + +
                  • profile.tpl და/ან profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl და/ან search_rules.tpl
                  • +
                  • nbm.tpl და/ან notification.tpl
                  • +
                  • identification.tpl და/ან register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  სად ვნახო "პირველადი შაბლონები"?

                  + +

                  პირველადი შაბლონები იმყოფება ფოლდერში template/yoga/ +(იქვე ნუ გაუკეთებთ რედაქტირებას რათა შეინარჩუნოთ განახლების საშუალება). ისე რომ, "პირველადი შაბლონებით" ნებისმიერ web-მასტერს შეყძლია შექმნას თავისი "შემცვლელი" (მომხმარებლის შაბლონები).

                  + +

                  სად ჩავწეროთ "შემცვლელი"?

                  + +

                  "შემცვლელი" (მომხმარებლის შაბლონები) უნდა განთავსდეს ფოლდერში template-extension (ან მის ქვეფოლდერში). შემცვლელს შესაძლოა ქონდეს ნებისმიერი სახელი, გაფართოებით .tpl. მაგალითად: template-extension/my-extension/video.tpl.

                  + + +

                  როგორ გავააქტიურო ჩემი "შემცვლელი შაბლონები"?

                  +

                  ყოველი პირველადი შაბლონი შეთავსებული უნდა იყოს თავის "შემცვლელ" (მომხმარებლის შაბლონთან) რათა გაააქტიუროთ დაკავშირებული შეცვლა. ეს მიზანი აქვს "შაბლონების გაფართოების გასწორება"-ს მენიუში გასწორება.

                  + +

                  თუკი თქვენ აირჩევთ URL ოპციონალურ სიტყვას მაშინ შეცვლა მოხდება მხოლოდ გვერდებზე რომელიც დაკავშირებულია ამ სიტვასთან. მაგალითად: index.php?/most_visited

                  + +

                  გამოცდილ მომხმარებლებს შეუძლიათ გამოიყენონ პირდაპირი ბმული როგორც URL ოპციონალურ სიტყვა.

                  + +

                  როგორ გავუკეთო დეაქტივაცია ჩემს "შემცვლელ შაბლონებს"?

                  +
                    +
                  • აღნიშნეთ არჩეული "პირველადი შაბლონი".
                  • +
                  • FTP-თი წაშალეთ "შემცვლელი".
                  • +
                  + +

                  გაფრთხილება

                  +
                    + +
                  • ორიგინალი შაბლონი უნდა იყოს "პირველადი" შაბლონი, წინააღმდეგ შემთხვევაში რეზულტატი შეიძლება იყოს არაპროგნოზირებადი!
                  • + +
                  • თუკი არსებობს რამდენიმე "შემცვლელი" (მომხმარებლის შაბლონი) ერთნაირი სახელით "პირველადი შაბლონით" და ერთნაირი URL ოპციონალურ სიტყვით მხოლოდ ბოლო "შემცვლელი" იქნება აქტიური.
                  • + +
                  • უარი არჩევაზე URL ოპციონალურ სიტყვა აქტიურს გახდის "შემცვლელ" შაბლონს ყველასთვის. როგორც წინა პუნქტში, შემდეგი არჩევანი აუქმებს წინას.
                  • + +
                  • ქვეფოლდერები: +ქვეფოლდერები იგნორირებულია მაგრამ, ისინი მოსახერხებელია მომდინარე პარამეტრების შეცვლისათვის.
                    +
                  • + +
                  • "შემცვლელის" წაშლით "პირველადი" შაბლონი ისევ აქტიუტი გახდება.
                  • + +
                  diff --git a/sources/language/ka_GE/help/group_list.html b/sources/language/ka_GE/help/group_list.html new file mode 100644 index 0000000..1f75a83 --- /dev/null +++ b/sources/language/ka_GE/help/group_list.html @@ -0,0 +1,22 @@ +

                  ჯგუფების სია

                  + +

                  აქ თქვენ შეგიძლიათ მართოთ შექმნილი ჯგუფები.

                  + +

                  დავამატოთ ჯგუფი

                  + +

                  ადმინისტრატორს შეუძლია დაამატოს ჯგუფები.

                  + +

                  ჯგუფების სია

                  + +

                  ყოველი ელემენტის სიიდან შესაძლებელია შექმნათ:

                  + + +
                    +
                  • გადავიდეთ მონაწილეთა სიასთან
                  • +
                  • გადავიდეთ ნებართვებთან
                  • +
                  • წავშალოთ ჯგუფი (require a confirmation checkbox)
                  • +
                  • toggle status "default" (გამოდის მოთხოვნა დასტურზე)
                  • +
                  + +

                  ძირითადი ჯგუფი

                  +

                  ახალი მომხმარებლები ავტომატურად ხვდებიან ამ ჯგუფში.

                  diff --git a/sources/language/ka_GE/help/help_add_photos.html b/sources/language/ka_GE/help/help_add_photos.html new file mode 100644 index 0000000..51eb79a --- /dev/null +++ b/sources/language/ka_GE/help/help_add_photos.html @@ -0,0 +1,20 @@ +

                  არსებობს რამდენიმე საშუალება დაამატოთ ფოტოები გალერეაში:

                  + +
                    +
                  • ატვირთვა ბროუზერით – ეს ყველაზე ადვილი და ოპერატიული მეთოდია. ატვირთვის საიმედობა ამ დროს დამოკიდებულია თქვენი ბროუზერის და ვებ-სერვერის შესაძლებლობაზე. თუკი თქვენ გინდათ ატვირთოთ ძალიან დიდი რაოდენობის ფოტო, ან თუკი რაიმე სახის სიძნელეს შეხვით, ყოველთვის შეგიძლიათ გამოიყენოთ ატვირთვის ალტერნატიული გზა. +
                  • +
                  + + + +
                    +
                  • pLoader – ეს არის პროგრამა, რომელიც გაეშვება თქვენს კომპიუტერში. გადმოიტანეთ & ფოტოები ასატვირთად pLoader-ის ფანჯარაში, დაკილკეთ "Upload to Piwigo" და pLoader-ი შეუდგება მუშაობას. არსებობს სხვა პროგრამებიც,მაგალითად, WinToPiwigo და პლაგინი ფოტოების ექსპორტისათვის პროგრამიდან Digikam Piwigo-ში.
                  • +
                  + + + +
                    +
                  • ატვირთვა FTP თი – ყველაზე რეკომენდირებული საშუალება ძალიან დიდი რაოდენობის ფოტოების ასატვირთად კლიკების მინიმალური რაოდენობით. მოამზადეთ ფოტოები ინსტრუქციის გამოყენებით. FTP თი ატვირთვა საშუალებას მოგცემთ სერვერზე ფოტოების ორგანიზებისა ისე, როგორც თქვენ ეს გინდათ.
                  • +
                  + + diff --git a/sources/language/ka_GE/help/help_groups.html b/sources/language/ka_GE/help/help_groups.html new file mode 100644 index 0000000..eebf104 --- /dev/null +++ b/sources/language/ka_GE/help/help_groups.html @@ -0,0 +1,6 @@ +

                  Piwigo გაძლევთ საშუალებას მართოთ მომხმარებლების ჯგუფები. ეს მოსახერხებელია პრივატული კატეგორიების ხელმისაწვდომობის მხრივ.

                  + +

                  თქვენ შეგიძლიათ შექმნათ ჯგუფები გვერდზე ადმინისტრირება, იდენტიფიკაცია, ჯგუფები და დაამატოთ მომხმარებლები შექმნილ ჯგუფში გვერდზე ადმინისტრირება, იდენტიფიკაცია, მომხმარებლები.

                  + +

                  მომხმარებელი შესაძლოა იმყოფებოდეს რამდენიმე ჯგუფში. ნებართვა უფრო ძლიერია ვიდრე აკრძალვა: თუკი მომხმარებელი "jack" არის ჯგუფში "family" და "friends", და არის კატეგორია "Christmas 2003", რომელთანაც დაიშვებიან მხოლოდ მომხმარებლები ჯგუფიდან "family", მომხმარებელს "jack" ექნება უფლება ნახოს კატეგორია "Christmas 2003".

                  + diff --git a/sources/language/ka_GE/help/help_misc.html b/sources/language/ka_GE/help/help_misc.html new file mode 100644 index 0000000..780db53 --- /dev/null +++ b/sources/language/ka_GE/help/help_misc.html @@ -0,0 +1,4 @@ +

                  მას შემდეგ რაც შექმნით გალერეას, შეცვალეთ ძირითადი მნიშვნელობები, რომლებიც პასუხს აგებენ გალერეის სახეზე, ამისათვის კორექტირება გაუკეთეთ მნიშვნელობებს გვერდზე ადმინისტრირება, გასწორება, ძირითადი ყოველი ახალი მომხმარებელი იხილავს გალერეას ისეთს როგორც თქვენ ამას მიუთითებთ გასწორების დროს.

                  + +

                  თუკი თქვენ გაქვთ შეკითხვები, ნუ დაიზარებთ და ნუ შეგრცხვებათ მოძებნოთ პასუხები ფორუმზე ან დასვათ კითხვები იქ. უფრო დეტალური ინფორმაციისათვის წაიკითხეთ Piwigo-ს ოფიციალური დოკუმენტაცია .

                  + diff --git a/sources/language/ka_GE/help/help_permissions.html b/sources/language/ka_GE/help/help_permissions.html new file mode 100644 index 0000000..5399e98 --- /dev/null +++ b/sources/language/ka_GE/help/help_permissions.html @@ -0,0 +1,45 @@ +
                  +ფოტოებთან დაშვება + +

                  ყოველი ფოტოსათვის შეგიძლიათ განსაზღვროთ დაშვების უფლება (ბლოკირება). ასევე ყოველ მომხმარებელს შეგიძლიათ მიანიჭოთ გარკვეული დაშვების უფლება (გასაღები). გთავაზობთ დაშვების 5 დონეს:

                  +
                    +
                  1. დახურულია ყველასათვის
                  2. +
                  3. ნაცნობები
                  4. +
                  5. მეგობრები (ე.ი. მეტი ვიდრე ნაცნობები)
                  6. +
                  7. ოჯახი (ე.ი. მეტი ვიდერ მეგობრები)
                  8. +
                  9. ადმინისტრატორები (ყველაზე მაღალი)
                  10. +
                  + +

                  უფრო მაღალი დონე შეიცავს უფორ დაბალი ჯგუფის დაშვებებს. მომხმარებელი, რაც უფრო მეტია მისი დაშვების უფლება, მით მეტი ფოტოს ნახვას შეძლებს.

                  + +

                  მაგალითად, თუკი ფოტოს "peter_wedding-0024.jpg" ("პეტის-ქორწილი-0024.jpg") აქვს დაშვების დონე"ოჯახი" ეს ნიშნავს, რომ:

                  +
                    +
                  • Peter (პეტი) (მისი ჯგუფია "ადმინისტრატორი") შეძლებს ნახოს ეს ფოტო, რადგან "ადმინისტრატორი" უფლებამოსილია ნახოს ყველა ფოტო
                  • +
                  • Beth (ბეტი)(მისი ჯგუფია "ოჯახი" ) იგიც შეძლებს ნახოს ეს ფოტო
                  • +
                  • Mary (მარი)(რომლის ჯგუფია "მეგობარი") ვერ ნახავს ამ ფოტოს
                  • +
                  + +

                  მომხმარებელი, რომელსც არა აქვს უფლება ნახოს ესა თუ ის ფოტო, ვერ ნახავს ინფორმაციას კატეგორიაში შემავალი ფოტოების რაოდენობაზე, ვერც თვითონ კატეგორიას და ვერც მის სათაურს.

                  + +

                  თქვენ შეგიძლიათ მიანიჭოთ დაშვების უფლება მომხმარებელს მენიუში ადმინისტრირება » მომხმარებელი » მართვა.

                  + +
                  + +
                  +კატეგორიებთან დაშვება + +

                  თუკი დაშვების დონე არ შეესაბამება თქვენს მოთხოვნებს, შეგიძლიათ მართოთ იგი გარკვეული ჯგუფისათვის ან მომხმარებლებისთვის. თქვენ შეგიძლიათ მართოთ დაშვების უფლება ფოტოებისა და კატეგორიებისათვის ერთდოულად - კონფლიქტები არ მოხდება.

                  + + +

                  თქვენ შეგიძლიათ აკრძალოთ კატეგორიასთან დაშვება. კატეგორიები შეიძლება იყოს "საერთო" ან "პრივატული". დაშვების უფლების ( ჯგუფისათვის ან მომხმარებლისათვის) დაყენება შესაძლებელია მხოლოდ პირივატული კატეგორიისათვის.

                  + +

                  თქვენ შეგიძლიათ გახადოთ კატეგორია პრივატული ყოველი კატეგორიის თვისებების რედაქტირებით (ადმინისტრირება, გალერეა, მართვა, რედაქტირება) ან კატეგორიის თვისების ნახვისას ( ადმინისტრირება, გალერეა, თვისება, საერთო / პრივატული ).

                  + +

                  თუკი კატეგორია პრივატულია, დაშვების უფლება შეგიძლიათ დააყენოთ სამი საშუალებით:

                  + +
                    +
                  • ადმინისტრირება » იდენტიფიკაცია » მომხმარებლები » ნებართვები (ბოლო სვეტი მომხმარებლის ტაბულაში)
                  • +
                  • ადმინისტრირება » იდენტიფიკაცია » ჯგუფი » ნებართვები (ბოლო სვეტი ჯგუფის ტაბულაში)
                  • +
                  • ადმინისტრირება » გალერეა » მართვა » რედაქტირება (ბმული ყოველი კატეგორიისათვის)
                  • +
                  +
                  diff --git a/sources/language/ka_GE/help/help_virtual_links.html b/sources/language/ka_GE/help/help_virtual_links.html new file mode 100644 index 0000000..ea6ef3f --- /dev/null +++ b/sources/language/ka_GE/help/help_virtual_links.html @@ -0,0 +1,8 @@ +

                  Piwigo ანსხვავებს კატეგორიებს სად ინახება ელემენტები და კატეგორიებს სადაც ისინი ნაჩვენები იქნება.

                  + +

                  ძირითადად, ელემენტები ნაჩვენები იქნება მხოლოდ რეალური კატეგორიებიდან: ანუ ისინი, რომლებიც დაკავშირებული არიან ფოლდერებთან სერვერზე.

                  + +

                  იმისათვის, რომ მიაბათ ელემენტი კატეგორიას, საჭიროა მიუთითოთ იგი ელემენტის რედაქტირების გვერდზე ან ინფორმაციაში კატეგორიის ყველა ელემენტის შესახებ.

                  + +

                  ამ პრინციპის ცოდნით ადვილია გაიგოთ რა არის ვირტუალური კატეგორია: ესაა კატეგორია, რომელსაც არ შეესაბამება ფოლდერი სერვერზე. ვირტუალური კატეგორიები შეგიძლიათ შექმნათ გვერდზე ადმინისტრირება, კატეგორიები, მართვა .

                  + diff --git a/sources/language/ka_GE/help/history.html b/sources/language/ka_GE/help/history.html new file mode 100644 index 0000000..c1826ea --- /dev/null +++ b/sources/language/ka_GE/help/history.html @@ -0,0 +1,38 @@ +

                  ისტორია

                  + +

                  ეს ეკრანი გაძლევთ საშუალებას ნახოთ ნახვების ისტორია ოპციების თანახმად, რომლებიც არჩეულია გვერდზე ადმინისტრირება - გასწორება - ისტორია.

                  + +

                  სტატისტიკა

                  +
                    +

                    თუკი თქვენ აირჩიეთ ნახვების ისტორიის შენახვა (index.php და picture.php) ტაბულაში history. +მაშინ აქ იხილავთ ამ გვერდების ნახვის სტატისტიკას.

                    + +
                  • ყველა: სტატისტიკის ნახვა წლების მიხედვით.
                  • + +
                  • წლიური სტატისტიკა: ყოველთვიური სტატისტიკის ნახვა არჩეული წლისთვის.
                  • + +
                  • თვის სტატისტიკა: ყოველდღიური სტატისტიკის ნახვა არჩეული თვისთვის.
                  • + +
                  • დღის სტატისტიკა: საათობრივი სტატისტიკის ნახვა არჩეული დღისთვის.
                  • + +
                  + +

                  ძიება

                  +
                    +

                    თუკი თქვენ აირჩიეთ ნახვების ისტორიის შენახვა (index.php და picture.php) ტაბულაში history. +მაშინ აქ იხილავთ ამ გვერდების ნახვის სტატისტიკას დაჯგუფებულს ფილტრების მეშვეობით.

                    + +
                  • ფილტრი თარიღზე: აირჩიეთ თარიღის ინტერვალი აქტიურობის სტატისტიკის სანახავად.
                  • + +
                  • ფილტრი ელემენტის ტიპზე: აირჩიეთ ელემენტის ტიპი აქტიურობის სტატისტიკის სანახავად.
                  • + +
                  • ფილტრი მომხმარებელზე: აირჩიეთ მომხმარებელი აქტიურობის სტატისტიკის სანახავად.
                  • + +
                  • ფილტრი ფაილის სახელზე: აირჩიეთ ფაილის სახელი აქტიურობის სტატისტიკის სანახავად.
                  • + +
                  • ფილტრი გამოსახულების ნომერზე: აირჩიეთ გამოსახულების ნომერი აქტიურობის სტატისტიკის სანახავად.
                  • +
                  diff --git a/sources/language/ka_GE/help/index.php b/sources/language/ka_GE/help/index.php new file mode 100644 index 0000000..5ba26cd --- /dev/null +++ b/sources/language/ka_GE/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ka_GE/help/maintenance.html b/sources/language/ka_GE/help/maintenance.html new file mode 100644 index 0000000..7a44141 --- /dev/null +++ b/sources/language/ka_GE/help/maintenance.html @@ -0,0 +1,49 @@ +

                  მომსახურება

                  + +

                  გვერდის შექმნის ოპტიმიზაციისათვის, Piwigo იყენებს ინფორმაციის კეშირებას. მაგალითად, იმის მაგივრად, რომ დაითვალოს ფოტოების რაოდენობა ყოველ კატეგორიაში განახლების დროს, ეს ინფორმაცია ინახება მონაცემთა ბაზაში. თეორიულად ეს ინფორმაცია კორექტული უნდა იყოს, მაგრამ ხანდახან კეშირების დროს მომხდარი შეცდომებისას, ეს ინფორმაცია არა სწორი ხდება.

                  + +

                  ზოგიერთი ინფორმაცია დროთა განმავლობაში გამოუსადეგარი ხდება. ამ უსარგებლო ინფორმაციის წაშლა მონაცემთა ბაზიდან, საშუალებას მოგცემთ შეინარჩუნოთ ადგილი დისკზე.

                  + +
                    + +
                  • + დაუკავშირებელი ელემენტები: + გაჩვენებთ ფოტოებს, რომლებიც არ არიან დაკავშირებული არც ერთ ვირტუალურ კატეგორიასთან. +
                  • +
                  • + ფაილები ერთნაირი სახელით სხვა და სხვა ფოლდერში: + გაჩვენებთ ისეთ ფოტოებს და სხვა ფაილებს, რომლებსაც ერთნაირი სახელები აქვთ და სხვა და სხვა კატეგორიებში იმყოფებიან. +
                  • + +
                  + +
                    + +
                  • განვაახლოთ ინფორმაცია კატეგორიებზე: ყოველი კატეგორიისათვის ხდება განახლება ან კონტროლდება შემდეგი ინფორმაცია: მშობლიური კატეგორიების სია, ფოტოების რაოდენობა, მდებარეობა ერთი დონის კატეგორიებთან, მდებარეობა ყველა კატეგორიასთან მიმართებით.
                  • + +
                  • განვაახლოთ ინფორმაცია ფოტოებზე: ყოველი ფოტოსათვის განახლდება ან კონტროლირდება შემდეგი ინფორმაცია: სრული გზა ფაილამდე, რეიტინგი. + გაფრთხილება: არ აგერიოთ მეტამონაცემებში, რომლის სინქრონიზაციაც ხდება + ადმინისტრირება, გალერეა, სინქრონიზაცია ან ფოტოს რედაქტირების გვერდიდან.
                  • + +
                  • მონაცემთა ბაზის გასწორება და ოპტიმიზაცია: + ყოველი ცხრილისათვის გაკეთდება გადამოწმება, აღდგენა და ოპტიმიზაცია. +
                  • +
                  + +
                    +
                  • გავწმინდოთ ისტორია: წაიშლება ყველა სტრიქონი ცხრილში history. + გვერდზე ადმინისტრირება, სპეც.ფუნქციები, ისტორია + არ იქნება ინფორმაცია ისტორიასთან დაკავშირებით ამ ოპერაციამდე. გაფრთხილება: + ყველა მონაცემი წაიშლება და არ არის არანაირი საშუალება ინფორმაციის აღდგენისათვის.
                  • + +
                  • გავასუფთაოთ მთელი ისტორია: წაიშლება მთელი ნახვების ისტორია. ეს შემაჯამებელი ინფორმაცია გამოითვლება ისტორიის დეტალებიდან.
                  • + +
                  • გავწმინდოთ სესიები: წაიშლება მომხმარებლების დროგასული სეანსები.
                  • + +
                  • გავწმინდოთ შეტყობინებების გამოუყენებელი არხები
                  • + +
                  • გავწმინდოთ ძიების ისტორია
                  • + +
                  • გავწმინდოთ შექმნილი შაბლონები
                  • + +
                  diff --git a/sources/language/ka_GE/help/notification_by_mail.html b/sources/language/ka_GE/help/notification_by_mail.html new file mode 100644 index 0000000..012c360 --- /dev/null +++ b/sources/language/ka_GE/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

                  შეტყობინებები

                  + +

                  ეს განყოფილება შექმნილია მომხმარებლებისათვის საიტის სიახლეების დაგზავნის გასწორებისა და მართვისათვის.

                  + +

                  გვერდი შეიცავს სამ ჩანართს:

                  + +

                  პარამეტრები

                  +

                  ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის, ეს არის შეტყობინებების პარამეტრები.

                  + +

                  დაგზავნის სია

                  +

                  ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის, ეს ჩანართი მართავს მომხმარებლების ხელმოწერას და შეტყობინებებს.

                  + +

                  გაგზავნა

                  +

                  ხელმისაწვდომია მხოლოდ ადმინისტრატორისათვის, ეს ჩანართი გაძლევთ საშუალებას მოახდინოთ შეტყობინებების დაგზავნა.

                  + diff --git a/sources/language/ka_GE/help/permalinks.html b/sources/language/ka_GE/help/permalinks.html new file mode 100644 index 0000000..d862128 --- /dev/null +++ b/sources/language/ka_GE/help/permalinks.html @@ -0,0 +1,8 @@ +

                  მუდმივი ბმულები

                  + +

                  მუდმივ ბმულებს იყენებენ რიოდესაც საჭიროა კატეგორიის URL გახდეს უფრო მოხერხებული. როდესაც კატეგორიისათვის გარკვეულია პირდაპირი ბმული, კატეგორიის id, URL-ში აღარ გამოიყენება.

                  + +

                  პირდაპირი ბმულის წაშლის შემდეგ, თქვენ შეგიძლიათ შეინახოთ იგი პირდაპირი ბმულების ისტორიაში, რათა შეინარჩუნოთ შიდა ბმულების მოქმედუნარიანობა. პირდაპირი ბმულების ისტორიის ცხრილში შესაძლებელია წაშლის თარიღის, ბოლოს როდის გამოიყენეთ, სულ რამდენჯერ გამოყენეთ ინფორმაციის ნახვა.

                  + +

                  ყურადღება მიაქციეთ, შესაძლებელია მხოლოდ ერთი პირდაპირი ბმულის გამოყენება თითო კატეგორიისათვის. +ანალოგიურად, პირდაპირი ბმულების ისტორიაში არ შეიძლება ერთი და იგივე პირდაპირი ბმულის გამოყენება რამდენჯერმე.

                  diff --git a/sources/language/ka_GE/help/photos_add_ftp.html b/sources/language/ka_GE/help/photos_add_ftp.html new file mode 100644 index 0000000..b05abce --- /dev/null +++ b/sources/language/ka_GE/help/photos_add_ftp.html @@ -0,0 +1,112 @@ +
                  + სწრაფი სტარტი + +
                    + +
                  1. შექმენით ლოკალური ფოლდერი "test_category".
                  2. + +
                  3. გადაიტანეთ ფოტოები "test_category" -ში.
                  4. + +
                  5. დაუკავშირდით გალერეას FTP -თი.
                  6. + +
                  7. ატვირთეთ ლოკალური ფოლდერი "test_category" დაშორებულ ფოლდერში "galleries". + დააყენეთ დაშვების უფლება 777 ფოლდერზე "galleries/test_category".
                  8. + +
                  9. შედით თქვენს Piwigo გალერეაში როგორც ადმინისტრატორი.
                  10. + +
                  11. გადადით ადმინისტრირება, ფოტოები,მინიატურები. Piwigo იპოვის ფოტოებს მინიატურების გარეშე "test_category" -ში და მოგთხოვთ დასტურს მინიატურების შექმნაზე.
                  12. + +
                  13. გადადით ადმინისტრირება, გალერეა, სინქრონიზაცია. აღნიშნეთ "ფოლდერები და ფაილები", მოხსენით აღნიშვნა "მხოლოდ ტესტირება (არ შევიტანოთ ცვლილებები მონაცემთა ბაზაში)" და დაკლიკეთ გაგზავნა.
                  14. + +
                  15. მორჩა. თქვენ შექმენით კატეგორია "test_category" თქვენი გალერეის ფუძეში.
                  16. + +
                  + +
                  +
                  + ფოტოების დამატება + +
                    + +
                  • + +

                    კატეგორიის ფოლდერები განლაგებულია ფოლდერ "galleries" -ში. + ქვევით ნახეთ პატარა გალერეის წყობა:

                    + +
                    +.
                    +|-- admin
                    +|-- doc
                    +|-- galleries
                    +|   |-- category-1
                    +|   |   |-- category-1.1
                    +|   |   |   |-- category-1.1.1
                    +|   |   |   |   |-- category-1.1.1.1
                    +|   |   |   |   |   |-- pwg_high
                    +|   |   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   |   |-- thumbnail
                    +|   |   |   |   |   |   +-- TN-wedding.jpg
                    +|   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   +-- category-1.1.1.2
                    +|   |   |   +-- category-1.1.2
                    +|   |   |-- category-1.2
                    +|   |   |   |-- pookie.jpg
                    +|   |   |   +-- thumbnail
                    +|   |   |       +-- TN-pookie.jpg
                    +|   |   +-- category-1.3
                    +|   +-- category-2
                    +|       |-- piglet.gif
                    +|       |-- pwg_representative
                    +|       |   +-- video.jpg
                    +|       |-- thumbnail
                    +|       |   +-- TN-piglet.jpg
                    +|       +-- video.avi
                    +|-- include
                    +|-- install
                    +|-- language
                    +|-- template
                    ++-- tool
                    + +
                  • + +
                  • უმარტივეს შემთხვევაში კატეგორიები წარმოდგენილია როგორც ნებისმიერი დონის ფოლდერები ფოლდერში "galleries". ყოველი კატეგორია შეიძლება შეიცავდეს იმდენ ქვეკატეგორიას რამდენიც გნებავთ. მაგალითში მაღლა, category-1.1.1.1 მდებარეობს მე-4 დონეზე.
                  • + +
                  • ყოველი ფაილი - ესაა ფოტო. ფაილი შეიძლება იყოს Piwigo-ს ელემენტი, თუკი მისი ტიპი აღწერილია პარამეტრში file_ext + (ნახე ფაილი include/config_default.inc.php).
                  • + +
                  • ფოტოს უნდა ქონდეს მინიატურა (ნახე ქვემოთ განყოფილება მინიატურებზე)
                  • + +
                  • ფოტოს შესაძლოა ქონდეს ვერსია დიდი გაფართოებით, როგორც wedding.jpg მაგალითში მაღლა. ფოტოს დიდი გაფართოებით არ აქვს პრეფიქსი.
                  • + +
                  • ელემენტები, რომლებიც არ არიან ფოტოები (ვიდეო, მუსიკა, ტექსტი და ა.შ.) წარმოდგენილი არიან ამ ფაილის შესაბამისი მინიატურებით. დამატებით, თქვენ შეგიძლიათ დაუკავშიროთ მინიატურა და წარმომადგენლობითი ფაილი (ნახე video.avi მაგალითში მაღლა).
                  • + +
                  • ყურადღება: ფოლდერების და ფაილების სახელი უნდა შედგებოდეს ასოების, რიცხვების, "-", "_" ან "." -საგან. ნუ გამოიყენებთ დაშორებებს.
                  • + +
                  • ცნობისათვის: კატეგორია შეიძლება შეიცავდეს ელემენტებს და ქვეკატეგორიებს ერთდოულად. მიუხედავად ამისა, რეკომენდირებულია ყოველი კატეგორიისათვის აირჩიოთ, შეიცავს იგი ელემენტებს თუ კატეგორიებს.
                  • + +
                  • როდესაც ფაილები, მინიატურები და წარმომადგენლები სწორად არიან ფოლდერში განლაგებულნი, აირჩიეთ: + ადმინისტრირება, კატეგორიები, სინქრონიზაცია
                  • + +
                  + +
                  +
                  + მინიატურები + +
                    + +
                  • როგორც ვთქვით, ყოველ ფოტოს უნდა ქონდეს მინიატურა.
                  • + +
                  • მინიატურები განლაგებულია კატეგორიის ფოლდერის ქვეფოლდერში "thumbnail". + მინიატურა - ესაა სურათი რომელსაც ფაილის სახელში აქვს პრეფიქსი, რომელიც მითითებულია მინიატურის პრეფიქსის გასწორებაში (ნახე პანელი ადმინისტრირება, გასწორება, ძირითადი).
                  • + +
                  • არ არის აუცილებელი მინიატურებსაც ისეთივე გაფართოება ქონდეთ როგორც ორიგინალ ფოტოებს (ფოტოს გაფართოებით .jpg შეიძლება ქონდეს მინიატურა გაფართოებით .GIF).
                  • + +
                  • რჩევა: გამოიყენეთ შიდა მოდული მინიატურების შესაქმნელად.
                  • + +
                  • თქვენ ასევე შეგიძლიათ გამოიყენოთ სკრიპტის შესაძლებლობები ( ადმინისტრირება, ფოტოები,მინიატურები), თუმცა ამის გაკეთება არ არის რეკომენდირებული. სამწუხაროდ, მინიატურების ხარისხი შეიძლება არც თუ ისე მაღალი იყოს ხოლო პროცესორზე დატვირთვა საკმაოდ მაღალია, რამაც შესაძლოა პრობლემები შეგიქმნათ უფასო ჰოსტინგის გამოყენების შემთხვევაში.
                  • + +
                  • თუკი მაინც გამოიყენებთ სკრიპტის შესაძლებლობებს, საჭიროა ნებართვა ჩაწერაზე კატეგორიის ყველა ფოლდერში და ქვეფოლდერში "thumbnail".
                  • + +
                  +
                  diff --git a/sources/language/ka_GE/help/search.html b/sources/language/ka_GE/help/search.html new file mode 100644 index 0000000..a673212 --- /dev/null +++ b/sources/language/ka_GE/help/search.html @@ -0,0 +1,20 @@ +

                  ძიება

                  + +

                  ეს გვერდი საშუალებას გაძლევთ მოძებნოთ ფოტოები მთელს გალერეაში.

                  + +
                  + +
                  ძიება სიტყვებით
                  +
                  ძიება ყველა სიტყვით ყველა ატრიბუტით გალერეის ყველა ფოტოში. + გამოიყენეთ * როგორც მიმაგრებული ნიშანი ნაწილობრივი დამთხვევისათვის.
                  + +
                  ძიება ავტორის მიხედვით
                  +
                  გამოიყენეთ * როგორც მიმაგრებული ნიშანი ნაწილობრივი დამთხვევისათვის.
                  + +
                  ძიება თარიღის მიხედვით
                  +
                  აირჩიეთ საწყისი ან/და საბოლოო თარიღი მოთხოვნისათვის. დატოვეთ ცარიელი საწყისი თარიღი "ადრინდელის" მოსაძებნად. წელი უნდა ჩაწეროთ ბოლო ველში ფორმატში 0000 (ანუ 2010)
                  + +
                  ძიება კატეგორიებში
                  +
                  აირჩიეთ კატეგორია ან კატეგორიები ძიების რაიონის შეცამცირებლად. ქვეკატეგორიაში მოსაძებნად შეგიძლიათ აირჩიოთ კატეგორია და დასვათ ქვეკატეგორიებში ძიების ალამი.
                  + +
                  diff --git a/sources/language/ka_GE/help/synchronize.html b/sources/language/ka_GE/help/synchronize.html new file mode 100644 index 0000000..07b2a07 --- /dev/null +++ b/sources/language/ka_GE/help/synchronize.html @@ -0,0 +1,9 @@ +

                  სინქრონიზაცია

                  + +

                  შესაძლებელია სინქრონიზაციის 2 ტიპი: ფოლდერები/ფაილები და მეტამონაცემები. +ფოლდერები/ფაილები სინქრონიზირებული იქნება ფოლდერები მონაცემთა ბაზაში ფოლდერებთან. +მეტამონაცემები სინქრონიზირებული იქნება ინფორმაცია ელემენტებზე, ისეთი როგორიც არის ფაილის ზომა, ზომები პიქსელებში, ინფორმაცია EXIF ან IPTC.

                  + +

                  თავიდან სინქრონიზირებული უნდა იყოს ფოლდერები/ფაილები.

                  + +

                  სინქრონიზაციის პროცესმა შესაძლოა დიდი ხანი გასტანოს ( დამოკიდებულია სერვერის დატვირთვაზე და სინქრონიზირებული ელემენტების რაოდენობაზე) ანუ შესაძლოა ღირდეს ნაბიჯ-ნაბიჯ გააკეთოთ: კატეგორიიდან კატეგორიამდე.

                  diff --git a/sources/language/ka_GE/help/user_list.html b/sources/language/ka_GE/help/user_list.html new file mode 100644 index 0000000..3517479 --- /dev/null +++ b/sources/language/ka_GE/help/user_list.html @@ -0,0 +1,29 @@ +

                  მომხმარებლების სია

                  + +

                  ამ გვერდზე თქვენ შეგიძლიათ მართოთ დარეგისტრირებული მომხმარებლები. მარტო ნებართვების მართვა შესაძლებელია რამდენიმე ეკრანზე.

                  + +

                  მომხმარებლების დამატება

                  + +

                  ადმინისტრატორს შეუძლია ხელით დაამატოს მომხმარებელი.

                  + +

                  მომხმარებლების სია

                  + +

                  სია შეიძლება გაფილტრული იქნეს მომხმარებლის სახელის მიხედვით (გამოიყენეთ * როგორც მიმაგრებული ნიშანი ნაწილობრივი დამთხვევისათვის), ჯგუფის ან სტატუსის მიხედვით. სია შეიძლება გადარჩეულ იქნეს მომხმარებლის რეგისტრაციის ან სახელის მიხედვით, მატებით ან კლებით.

                  + +

                  ეს ეკრანი საშუალებას გაძლევთ ერთი და იგივე მოქმედება ჩაატაროთ რამდენიმე მომხმარებლის მიმართ:

                  + +
                    + +
                  • მომხმარებლის წაშლა (საჭიროა თანხმობა ნიშნის ჩასმით)
                  • + +
                  • სტატუსის შეცვლა
                  • + +
                  • ჯგუფში ჩართვა ან გამორთვა
                  • + +
                  • გამოსახულების მნიშვნელობის რედაქტირება
                  • + +
                  • დამატებითი თვისებების რედაქტირება
                  • + +
                  + +

                  გასწორებები შეეხება არჩეულ მომხმარებლებს (ძირითადად) თუ ყველას.

                  diff --git a/sources/language/ka_GE/index.php b/sources/language/ka_GE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/ka_GE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ka_GE/install.lang.php b/sources/language/ka_GE/install.lang.php new file mode 100644 index 0000000..6d956ee --- /dev/null +++ b/sources/language/ka_GE/install.lang.php @@ -0,0 +1,67 @@ +Piwigo message board.'] = 'გჭირდებათ დახმარება?დასვით შეკითხვები Piwigo–ს ფორუმზე.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'გამოყენებული იქნება მომხმარებლების მიერ ადმინისტრატორთან კავშირისათვის'; +$lang['PHP 5 is required'] = 'საჭიროა PHP 5'; +$lang['It appears your webhost is currently running PHP %s.'] = 'სავარაუდოდ თქვენი ხოსტინგი ამჟამად იყენებს PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo–ს შეუძლია შეეცადოს გადართოს თქვენი კონფიგურაცია PHP 5, .htaccess ფაილს შექმნით ან შეცვლით.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'აღნიშნეთ,რომ თქვენ შეგიძლიათ თქვენით შეცვალოთ კონფიგურაცია და ამის შემდეგ ახლიდან გაუშვით Piwigo.'; +$lang['Try to configure PHP 5'] = 'შვეცადოთ PHP 5 გადაკონფიგურირება'; +$lang['Sorry!'] = 'ბოდიში!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo–ს არ შეუძლია PHP 5 გადაკონფიგურირება.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'თქვენ უნდა მიმართოთ პროვაიდერს დახმარებისა და განმარტებისათვის ტუ როგორ მოახერხოთ PHP 5 ზე გადართვა.'; +$lang['Hope to see you back soon.'] = 'იმედი გავქვს მალე შემოგვიერთდებით.'; +$lang['Congratulations, Piwigo installation is completed'] = 'გილოცავთ,Piwigo–ს დაყენება დამთავრებულია'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'ალტერნატიული გადაწყვეტილება მდგომარეობს შემდეგში,შეგიძლიათ დააკოპიროთ ტექსტი მაღლა ბლოკიდან და ჩასვათ ამ ფაილში "local/config/database.inc.php" (გაფრთხილება: database.inc.php უნდა შეიცავდეს მხოლოდ იმას რაც წერია textarea–ში, თავისუფალი ადგილების და დაბრუნების ხაზების გარეშე)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'კონფიგურაციის ფაილის local/config/database.inc.php შექმნა არ მოხერხდა.'; +$lang['Download the config file'] = 'ავტვირთოთ კონფიგურაციის ფაილი'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'თქვენ შეგიძლიათ ატვირთოთ კონფიგურაციის ფაილი და გადასცეთ იგი local/config directory ში.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'ნუ მოგერიდებათ დახმარებისა და კონსულტაციისათვის მოგვმართოთ ჩვენს ფორუმზე: %s'; +$lang['Just another Piwigo gallery'] = 'Piwigo -ს კიდევ ერთი გალერეა'; +$lang['Welcome to my photo gallery'] = 'კეთილი იყოს ჩემს ფოტო გალერეაში თქვენი მობრძანება'; +$lang['Welcome to your new installation of Piwigo!'] = 'კეთილი იყოს თქვენს მიერ Piwigo -ს დაყენება!'; +?> \ No newline at end of file diff --git a/sources/language/ka_GE/iso.txt b/sources/language/ka_GE/iso.txt new file mode 100644 index 0000000..45edf49 --- /dev/null +++ b/sources/language/ka_GE/iso.txt @@ -0,0 +1 @@ +ქართული [GE] \ No newline at end of file diff --git a/sources/language/ka_GE/ka_GE.jpg b/sources/language/ka_GE/ka_GE.jpg new file mode 100644 index 0000000..dfc4f22 Binary files /dev/null and b/sources/language/ka_GE/ka_GE.jpg differ diff --git a/sources/language/ka_GE/upgrade.lang.php b/sources/language/ka_GE/upgrade.lang.php new file mode 100644 index 0000000..41aab4c --- /dev/null +++ b/sources/language/ka_GE/upgrade.lang.php @@ -0,0 +1,41 @@ +Tools>Maintenance] if you encounter any problem.'] = 'განახორციელეთ მომსახურება [ადმინისტრირება>ინსტრუმენტები>მომსახურება] თუკი შეგექმნათ რაიმე პრობლემა.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'მხოლოდ ადმინისტრტორს შეუძლია განახლების გაშვება: შეამოწმეთ ქვევით.'; +$lang['You do not have access rights to run upgrade'] = 'თქვენ არ გაქვთ განახლების გაშვების უფლება'; +$lang['All sub-albums of private albums become private'] = 'პრივატული (კერძო) კატეგორიის ყველა ქვეკატეგორია იქნება პრივატული'; +$lang['User permissions and group permissions have been erased'] = 'მომხმარებლების და ჯგუფების დაშვების უფლებები წაშლილია'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'მხოლოდ ესკიზების პრეფიქსები და ვებმასტერის ფოსტის მისამართი იქნა შენახული წინა კონფიგურაციიდან'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'ეს გვერდი გთავაზობთ მონაცემთა ბაზის მოდერნიზაციას,თქვენი Piwigo ძველი ვერსიიდან ახალ ვერსიამდე. განახლების დამხმარე საშუალება ფიქრობს,რომ თქვენ ამჟამად იყენებთ ვერსია %s (ან ეკვივალენტურს).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'სასურველია,რომ შემდეგი პლაგინები დეზაქტივირებული იყოს. თქვენ უნდა შეამოწმოთ პლაგინების განახლება მანამდე,სანამ მოახდენთ მათ აქტივაციას:'; +$lang['In %s, before ?>, insert:'] =' %s, მდე ?>, ჩავსვათ:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'უსაფრთხოების მიზნით შემდეგი თემები გამორთულია. თქვენ უნდა შეამოწმოთთემების განახლება? სანამ მათ ახლიდან ჩართავთ:'; +?> \ No newline at end of file diff --git a/sources/language/km_KH/about.html b/sources/language/km_KH/about.html new file mode 100644 index 0000000..49d7feb --- /dev/null +++ b/sources/language/km_KH/about.html @@ -0,0 +1,11 @@ +

                  នេះ​ជា​វិចិត្រសាល​នៃ​រូបថត​​ដែល​មាន​មូល​ដ្ឋាន​ជា​គោល​លើ​ Piwigo

                  + +

                  Piwigo គឺ​ជា​កម្មវិធី​សំរាប់​ផ្ទុក​រូប​ថត​នៅ​លើ​បណ្តាញ ដែលស្ថាបនា​ឡើង​ដោយ​ការ​ចូល​រួម​យ៉ាង​សកម្ម​នៃ​សមាគមន៍​អ្នក​ប្រើ​ប្រាស់​ និងវិស្វ័ករ​ព៌ត​មាន​វិទ្យាជាច្រើន​។ ផ្នែក​បន្ថែម​(Extension) ជាច្រើន​​ធ្វើ​ឲ្យ​ Piwigo មាន​ភាព​ងាយស្រួល​ក្នុង​ការ​កែ​ប្រែ​តាម​ចិត្ត​ដែល​អ្នក​ចង់​បាន។ ដូច​ជា​ស្ករ​សំរាប់​លាប​លើ​នំដូច្នេះ​ដែរ​, Piwigo គឺ​មិន​គិត​ថ្លៃ​ និង​ ប្រើ​ប្រាស់​ដោយ​​សេរី។

                  +

                  ចូលទៅ​វ៉ិបសាយ​ Piwigo

                  + +

                  ការ​បក​ប្រែ​ជា​ភាសាខ្មែរ​គឺ​បានការ​​ចូល​រួម​គាំ​ទ្រដោយ​ (រៀប​តាម​លំ​ដាប់​នៃអក្សរ​)៖ + +

                  + .... សូម​អរគុណ​ជា​ខ្លាំង​ដល់​លោក​អ្នក​

                  diff --git a/sources/language/km_KH/admin.lang.php b/sources/language/km_KH/admin.lang.php new file mode 100644 index 0000000..d930cc3 --- /dev/null +++ b/sources/language/km_KH/admin.lang.php @@ -0,0 +1,245 @@ +Flash uploader instead.'] = 'អ្នក​កំពុង​ប្រើ​ប្រាស់​ Browser uploader. សាក​ល្បង​ប្រើ​ Flash uploader ជំនួស​វិញ'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'អ្នក​កំពុង​ប្រើ​ប្រាស់​ Flash uploader. មាន​បញ្ហា​? សាក​ល្បង​ប្រើ​ Browser uploader ជំនួស​វិញ​'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension not available, admin should disable exif use ផ្នែក​បន្ថែម​ Exif មិន​អាច​ដំណើរ​ការ​បាន​។ អ្នក​គ្រប់​គ្រង​គួរ​តែ​ទៅ​បិទ exif use'; +$lang['Hide'] = "លាក់​"; +$lang['ACCESS_0'] = "ចូល​ដំណើរ​ការ​សេរី"; +$lang['ACCESS_1'] = "ដំណើរ​ការសំរាប់​​ទាំង​អស់​"; +$lang['ACCESS_2'] = "ដំណើរ​ការ​សំរាប់​អ្នក​ចុះឈ្មោះ​ប្រើ​ប្រាស់​"; +$lang['ACCESS_3'] = "ដំណើរ​ការ​សំរាប់​អ្នក​គ្រប់​គ្រង​"; +$lang['ACCESS_4'] = "ដំណើរ​ការ​សំរាប់​ប្រធាន​បណ្តាញ​ធំ​"; +$lang['ACCESS_5'] = "មិន​អាច​ដំណើរ​ការ​បាន​"; +$lang['Level 0'] = "---"; +$lang['Level 1'] = "ទំនាក់​ទំនង​"; +$lang['Level 2'] = "មិត្ត​ភក្តិ​"; +$lang['Level 4'] = "គ្រួ​សារ​"; +$lang['Level 8'] = "អ្នក​គ្រប់​គ្រង​"; +$lang['%d album including'] = 'សៀវ​ភៅ​រូប​ថត %d កំពុង​ដាក់​បញ្ចូល'; +$lang['%d album moved'] = 'សៀវ​ភៅ​រូប​ថត %d បានផ្លាស់​ប្តូរ​ទី​តាំង​​'; +$lang['%d albums including'] = 'សៀវ​ភៅ​រូប​ថត %d កំពុង​បញ្ចូល'; +$lang['%d albums moved'] = 'សៀវ​ភៅ​រូប​ថត %d បាន​ផ្លាស់​ប្តូរ​ទី​តាំង​'; +$lang['%d anomalies have been detected corrected.'] = 'ភាព​ខុស​ប្រក្រតីចំនួន​ %d ត្រូវ​បាន​រក​ឃើញ​ និង​បាន​កែ​ប្រែ'; +$lang['%d anomalies have been detected.'] = 'ភាព​ខុស​ប្រក្រ​តី​ចំនួន​ %d ត្រូវ​បាន​រក​ឃើញ​'; +$lang['%d anomalies have been ignored.'] = 'ភាព​ខុស​ប្រក្រ​តី​ចំនួន​ %d មិន​បាន​ទទួល​យក'; +$lang['%d anomalies have not been corrected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d មិ​នទាន់​​បាន​កែ​ប្រែ​'; +$lang['%d anomaly has been corrected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d ត្រូវ​បាន​កែ​ប្រែ​'; +$lang['%d anomaly has been detected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d ត្រូវ​បាន​រក​ឃើញ​'; +$lang['%d anomaly has been ignored.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន​ %d មិន​បាន​ទទួល​យក'; +$lang['%d anomaly has not been corrected.'] = 'ភាព​មិន​ប្រ​ក្រ​តី​ចំនួន %d មិន​ទាន់​បាន​កែ​ប្រែ'; +$lang['%d group'] = '%d ក្រុម​'; +$lang['%d groups'] = '%d ក្រុម​'; +$lang['%d guest'] = 'ភ្ញៀវ​ %d នាក់​​'; +$lang['%d guests'] = 'ភ្ញៀវ​ %d នាក់​'; +$lang['%d line filtered'] = '​ច្រោះ​យក​ %d បន្ទាត់'; +$lang['%d lines filtered'] = 'ច្រោះ​យក​ %d បន្ទាត់​'; +$lang['%d mail was not sent.'] = 'អ៊ីម៉ែល​ចំនួន %d មិន​បាន​ផ្ញើ​ចេញ​ទេ'; +$lang['%d mail was sent.'] = 'អ៊ី​ម៉ែល​ចំនួន​ %d បាន​ផ្ញើ​ចេញ​'; +$lang['%d mails were not sent.'] = 'អ៊ី​ម៉ែល​ចំនួន​ %d មិន​បាន​ផ្ញើ​ចេញ​ទេ​'; +$lang['%d mails were sent.'] = 'អ៊ី​ម៉ែល​ចំនួន​ %d បាន​ផ្ញើ​ចេញ'; +$lang['%d member'] = 'សមាជិក​ %d នាក់​'; +$lang['%d members'] = 'សមា​ជិក​ %d នាក់​'; +$lang['%d of %d photos selected'] = '%d នៃ​ %d រូប​ថត​បាន​ជ្រើស​រើស​'; +$lang['%d photo was deleted'] = 'រូប​ថត​ %d បា​ន​លុប'; +$lang['%d photos were deleted'] = 'រូប​ថត​ %d បាន​លុប'; +$lang['%d physical'] = '%d រូប​សណ្ឋាន​'; +$lang[' and %d virtual'] = ' និង​ %d សៀវ​ភៅ​រូប​ថត​រង​'; +$lang['Photo Properties'] = 'លក្ខណៈ​នៃ​រូបថត​'; +$lang['Photo name'] = 'ឈ្មោះ​រូប​ថត​'; +$lang['Name'] = 'ឈ្មោះ'; +$lang['Description'] = ' ពិពណ៌នា'; +$lang['Parent album'] = 'សៀវ​ភៅ​រូប​ថត​មេ'; +$lang['Album name'] = 'ឈ្មោះ​សៀវ​ភៅ​រូប​ថត'; +$lang['Create'] = 'បង្កើត​'; +$lang['Original Size'] = 'ទំ​ហំដើម​'; +$lang['A locked gallery is only visible to administrators'] = 'វិចិត្រ​សាលដែល​ត្រូវ​បាន​ការ​ពារ គឺ​អាច​មើល​ឃើញ​សំរាប់តែ​អ្នក​គ្រប់​គ្រង​តែ​ប៉ុណ្ណោះ'; +$lang['Unlock gallery'] = 'វិចិត្រ​សាល​​លែង​ការ​ពារ'; +$lang['Gallery unlocked'] = ' វិចិត្រ​សាលលែង​ត្រូវ​បាន​ការ​ពារ​'; +$lang['Notify administrators when a comment is'] = 'ផ្តល់​ដំណឹង​អ្នក​គ្រប់​គ្រង​ពេល​មាន​មតិ​'; +$lang['modified'] = 'បាន​​កែ​ប្រែ​'; +$lang['pending validation'] = 'ការ​បញ្ជាក់​សុពល​ភាព កំពុង​ស្ថិត​ក្នុង​ការ​រង​ចាំ​'; +$lang['Save visits in history for'] = 'រក្សា​ការ​ទស្សនា​ក្នុង​កំណត់​ត្រា​'; +$lang['simple visitors'] = 'ភ្ញៀវ​ធម្មតា'; +$lang['registered users'] = 'អ្នក​ប្រើ​ប្រាស់​បាន​ចុះ​ឈ្មោះ​'; +$lang['administrators'] = 'អ្នក​គ្រប់​គ្រង​'; +$lang['%d association'] = '%d រូប​ថត​ពាក់​ព័ន្ធ​'; +$lang['%d associations'] = '%d រូប​​ពាក់​ព័ន្ធ​'; +$lang['%d parameter was updated.'] = '%d parameter បាន​បន្ទាន់​សម័យ.'; +$lang['%d parameters were updated.'] = '%d parameters បាន​បន្ទាន់​សម័យ.'; +$lang['%d tag'] = '%d ស្លាក'; +$lang['%d tags'] = '%d ស្លាក'; +$lang['%d user comment rejected'] = '%d មតិ​អ្នក​ប្រើ​ប្រាស់​បាន​ច្រាន​ចោល'; +$lang['%d user comment validated'] = '%d មិត​អ្នក​ប្រើ​ប្រាស់​មាន​សុពល​ភាព'; +$lang['%d user comments rejected'] = '%d មតិ​អ្នក​ប្រើ​ប្រាស់​បាន​ច្រាន​ចោល'; +$lang['%d user comments validated'] = '%d មិត​អ្នក​ប្រើ​ប្រាស់​មាន​សុពល​ភាព'; +$lang['%d user deleted'] = 'អ្នក​ប្រើ​ប្រាស់​ %d បានលុប'; +$lang['%d user was not updated.'] = '%d អ្នក​ប្រើ​ប្រាស់​មិន​បាន​បន្ទាន់​សម័យ.'; +$lang['%d user was updated.'] = '%d អ្នក​ប្រើ​ប្រាស់​បាន​បន្ទាន់​សម័យ'; +$lang['%d user'] = '%d អ្នក​ប្រើ​ប្រាស់​'; +$lang['%d users deleted'] = 'អ្នក​ប្រើ​ប្រាស់​​ %d បាន​លុប'; +$lang['%d users were not updated.'] = 'អ្នក​ប្រើ​ប្រាស់​ %d មិន​បាន​បន្ទាន់​សម័យ'; +$lang['%d users were updated.'] = 'អ្នក​ប្រើ​ប្រាស់ %d បាន​បន្ទាន់​សម័យ'; +$lang['%d users'] = '%d អ្នក​ប្រើ​ប្រាស់​'; +$lang['%d waiting for validation'] = '%d កំពុង​រង​ចាំ​ការ​បញ្ជាក់​សុពល​ភាព​'; +$lang['%s has been successfully updated.'] = '%s បាន​បន្ទាន់​សម័យ​ដោយ​ជោគ​ជ័យ​'; +$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s ត្រូវ​តែប្តូរ​ទៅ false ក្នុង​ទី​តាំង​ local/config/config.inc.php'; +$lang['%s photos can not be regenerated'] = '%s រូប​ថត​មិន​អាច​កែ​ប្រែ​ឡើង​វិញ'; +$lang['%s photos have been regenerated'] = '%s រូប​ថត​បាន​កែ​ប្រែ​ឡើង​វិញ​'; +$lang['%s value is not correct file because exif are not supported'] = '%s តំលៃមិន​ត្រឹម​ត្រូវ​ ព្រោះ exif ពុំ​ត្រឹម​ត្រូវ​'; +$lang['(this tag will be deleted)'] = '(ស្លាក​នេះនឹង​ត្រូវ​លុប)'; +$lang[', click on'] = ', ចុច​លើ​'; +$lang['A new version of Piwigo is available.'] = 'កំណែ​ប្រែ​ថ្មីនៃ Piwigo អាច​ស្វែង​រក​សំរាប់​ប្រើ​ប្រាស់​បាន​'; +$lang['Access type'] = 'ប្រភេ​ទ​នៃការ​ចូល​'; +$lang['Action'] = 'សកម្មភាព​'; +$lang['Actions'] = 'សកម្ម​ភាព​'; +$lang['Activate icon "new" next to albums and pictures'] = 'Activate icon "ថ្មី​" បន្ទាប់​ពី​សៀវ​ភៅ​រូប​ថត​និង​រូប​ភាព​'; +$lang['Activate icon "%s"'] = 'ដាក់​ឲ្យ​តំ​ណើរ​ការ​រូប​តំណាង​ "%s"'; +$lang['Activate Navigation Bar'] = 'ដាក់​ឲ្យ​តំណើរ​ការ​ផ្ទាំង​បង្ហាញផ្លូវ​'; +$lang['Activate Navigation Thumbnails'] = 'ដាក់​ឲ្យ​តំណើរ​ការ​រូប​បង្ហាញ់​ផ្លូវ'; +$lang['Activate comments'] = 'ដាក់​ឲ្យ​ដំណើរ​ការ​មតិ'; +$lang['Activate'] = 'ដាក់​ឲ្យ​តំណើរ​ការ​'; +$lang['Active Languages'] = 'តំណើរ​ការ​ភាសា​'; +$lang['Active Plugins'] = 'ដំណើរ​ការ​ Plugins'; +$lang['Active Themes'] = 'ដំណើរ​ការ​ Themes'; +$lang['Add a criteria'] = 'បន្ថែម​លក្ខណៈ​វិនិច្ឆ័យ​មួយ​'; +$lang['Add a filter'] = 'បន្ថែម​តំរង​មួយ​'; +$lang['Add a tag'] = 'បន្ថែម​ស្លាក​មួយ​'; +$lang['Add a user'] = 'បន្ថែម​អ្នក​ប្រើ​ប្រាស់​មួយ​'; +$lang['Add a virtual album'] = 'បន្ថែម​សៀវ​ភៅ​រូប​ថត​រង​មួយ​'; +$lang['Add detailed content'] = 'បន្ថែម​មាតិកា​លម្អិត​ខ្លះ​ៗ​'; +$lang['Add group'] = 'បន្ថែម​ក្រុម​'; +$lang['Add New Language'] = 'បន្ថែម​ភាសា​ថ្មី​'; +$lang['add new photos to caddie'] = 'បន្ថែម​រូប​ថត​ថ្មី​ទៅក្នុង​ caddie'; +$lang['Add New Theme'] = 'បន្ថែម​ theme ថ្មី​មួយ​'; +$lang['Add Photos'] = 'បន្ថែម​រូប​ថត​ផ្សេង​ទៀត​'; +$lang['Add tags'] = 'បន្ថែម​ស្លាក​ផ្សេង​ទៀត​'; +$lang['Add write access to the "%s" directory'] = 'បន្ថែម​ការ​អនុញ្ញាត​សរសេរ​បន្ថែម​ទៅ​សៀវ​ភៅ​ "%s"'; +$lang['Add'] = 'បន្ថែម​'; +$lang['Add/delete a permalink'] = 'បន្ថែម​/លុប​ permalink មួយ​'; +$lang['added'] = 'បាន​បន្ថែម​'; +$lang['Administration Home'] = 'ទំ​ព័រ​ដើម​អ្នក​គ្រប់​គ្រង​'; +$lang['Advanced features'] = 'លក្ខណៈ​ពិសេស​'; +$lang['Album "%s" has been added'] = 'សៀវ​ភៅ​រូប​ថត​ "%s" ត្រូវ​បាន​បន្ថែម​'; +$lang['Album list management'] = 'រៀ​ប​ចំ​តារាង​សៀវ​ភៅ​រូប​ថត​'; +$lang['Album manual order was saved'] = 'តំរៀប​សៀវ​ភៅ​រូប​ថត​ដោយ​ដៃ​ត្រូវ​បាន​រក្សា​ទុក​'; +$lang['Album photos associated to the following albums: %s'] = 'រូប​ថត​ទាំង​នេះ​មាន​ទំនាក់​ទំនង​ទៅ​នឹង​សៀវ​ភៅ​រូប​ថត​ទាំង​នេះ: %s'; +$lang['Album updated successfully'] = 'សៀវ​ភៅ​រូប​ថត​បាន​កែ​លំ​អ​​ជោគ​ជ័យ​'; +$lang['albums added in the database'] = 'សៀវ​ភៅ​រូប​ថត​បាន​បញ្ចូល​ទៅ​ក្នុង​ database'; +$lang['Albums authorized thanks to group associations'] = 'សៀវ​ភៅ​រូប​ថត​បាន​អនុញ្ញាត​ អរគុណ​ដល់​សមាជិក​ក្រុម​'; +$lang['Albums automatically sorted'] = 'សៀវ​ភៅ​រូប​ថត​បាន​តំ​រៀប​ដោយ​ស្វ័យ​ប្រវត្តិ​'; +$lang['albums deleted in the database'] = 'សៀវ​ភៅ​រូប​ថត​បាន​លុប​ចេញ​ពី​ database'; +$lang['All extensions are up to date.'] = 'Extensions ទាំង​អស់​ទាន់​សម័យ'; +$lang['All languages are up to date.'] = 'ភាសាទាំង​អស់​ទាន់​សម័យ​'; +$lang['All optimizations have been successfully completed.'] = 'ដំណើរ​ការ​ទាំង​អស់​បាន​បញ្ចប់​ដោយ​ជោគ​ជ័យ​'; +$lang['All plugins are up to date.'] = 'Plugins ទាំង​អស់​ទាន់​សម័យ​'; +$lang['All themes are up to date.'] = 'Themes ទាំង​អស់​ទាន់​សម័យ'; +$lang['all'] = 'ទាំង​អស់​'; +$lang['Allow rating'] = 'អនុ​ញ្ញាត​ឲ្យ​វាយ​តម្លៃ​'; +$lang['Allow user customization'] = 'អនុញ្ញាតឲ្យ​អ្នក​ប្រើ​ប្រាស់​ធ្វើ​ការ​កែ​ប្រែ​'; +$lang['Allow user registration'] = 'អនុញ្ញាត​ឲ្យ​មាន​ការ​ចុះ​ឈ្មោះ​ប្រើ​ប្រាស់​'; +$lang['Allow users to delete their own comments'] = 'អនុញ្ញាត​ឲ្យ​អ្នក​ប្រើ​ប្រាស់​លុប​មតិ​របស់​ខ្លួន​ឯង​'; +$lang['Allow users to edit their own comments'] = 'អនុញ្ញាត​ឲ្យ​អ្នក​ប្រើ​ប្រាស់​កែ​ប្រែ​មតិ​របស់​ខ្លួន​ឯង​'; +$lang['an error happened'] = 'មាន​កំហុស​ឆ្គង​មួយ​បាន​កើត​ឡើង​'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'មាន​កំហុស​មួយ​បាន​កើត​ឡើង​កំឡុង​ពេល​ចម្លង​ចេញ​។ សូម​ពិនិត្យ​មើល​​សិទ្ធិ​​ដែល​បាន​ផ្តល់​ឲ្យ​ នៃ​ការ​តំឡើង Piwigo របស់​អ្នក​។
                  ចុច​ត្រង់​នេះ​ដើម្បី​បង្ហាញ​ log error.'; +$lang['An error has occured during upgrade.'] = 'មាន​កំហុស​មួយ​កើត​ឡើង​ក្នុងខណៈ​​ពេល​បន្ទាន់​សម័យ'; +$lang['An error occured during extraction (%s).'] = 'មាន​កំហុស​មួយ​កើត​ឡើង​ក្នុង​ខណៈ​ពេល​ឯកសារ​ (%s) កំពុង​ចំលង​ចេញ​'; +$lang['An information email was sent to group "%s"'] = 'អ៊ី​ម៉ែល​ព័តមាន​​បាន​ផ្ញើ​ទៅ​កាន់​ក្រុម​ "%s"'; +$lang['and'] = 'ហើយ​និង'; +$lang['Anomaly'] = 'ខុស​ប្រក្រតី'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'យ៉ាង​ណា​មិញ​ មាន​តែ webmasters ដែល​អាច​មើល​ឃើញ​ផ្ទាំង​នេះ, មិនមាន​ administrators'; +$lang['Apply action'] = 'ដំណើរ​ការ​សកម្មភាព​'; +$lang['Apply selected corrections'] = 'ដំណើរ​ការ​កំណែរ​ប្រែ​ដែល​បាន​ជ្រើស​រើស​'; +$lang['Apply to sub-albums'] = 'ដំណើរ​​ការ​ទៅ​កាន់​សៀវ​ភៅ​រូប​ថត​រង​'; + +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo សំរាប់​ Android ធ្វើ​ឲ្យលោក​អ្នក​អាច​ភ្ជាប់​ទូរស័ព្វ​ Android របស់​អ្នក ឬ​ក៏ Table ទៅកាន់​ Piwigo gallery របស់​អ្នក​​ ដែលលោក​​អ្នក​អាច​បង្កើត​សៀវភៅ​រូប​ថត ហើយ​ ដាក់បញ្ចូល​នូវ​រូប​ថត​ជា​ច្រើន​ក្នុង​ពេល​តែ​មួយ។'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo សំរាប់​ iOS ធ្វើ​ឲ្យលោក​​អ្នក​អាច​ភ្ជាប់ទៅកាន់​ Piwigo gallery របស់​អ្នក​ពី​ទូរស័ព្វ iPhone, iPad ឬ iPod Touch របស់​អ្នក ដែលលោក​អ្នក​អាច​បង្កើត​សៀវភៅ​រូប​ថត ហើយ​ ដាក់បញ្ចូល​នូវ​រូប​ថត​ជា​ច្រើន​ក្នុង​ពេល​តែ​មួយ។'; +$lang['%d day'] = '%d ថ្ងៃ'; +$lang['%d days'] = '%d ថ្ងៃ'; +$lang['%d hour'] = '%d ម៉ោង'; +$lang['%d hours'] = '%d ម៉ោង'; +$lang['%d minute'] = '%d នាទី'; +$lang['%d minutes'] = '%d នាទី'; +$lang['%d month'] = '%d ខែ'; +$lang['%d months'] = '%d ខែ'; +$lang['%d second'] = '%d វិនាទី'; +$lang['%d seconds'] = '%d វិនាទី'; +$lang['%d week'] = '%d សប្តាហ៍'; +$lang['%d weeks'] = '%d សប្តាហ៍'; +$lang['%d year'] = '%d ឆ្នាំ'; +$lang['%d years'] = '%d ឆ្នាំ'; +$lang['%s ago'] = '%s កន្លងទៅ'; +$lang['%s in the future'] = '%s ក្នុង​ពេល​ខាងមុខ'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u អ្នកប្រើប្រាស់​ទាំងនេះ​មានការអនុញ្ញាត​ដោយ​ស្វ័យ​ប្រវត្តិ​ ពីព្រោះ​ពួកគេ​ស្ថិត​ក្នុង​ក្រុម​ដែល​បាន​ផ្តល់​សិទ្ធអនុញ្ញាត​រួច​ហើយ។'; +$lang['Are you sure you want to delete this plugin?'] = 'តើ​អ្នក​ចង់​លុបកម្មវិធីជំនួយនេះមែនឬ?'; +$lang['Are you sure you want to install this plugin?'] = 'តើ​អ្នក​ចង់​បញ្ចូលកម្មវិធីជំនួយនេះមែនឬ?'; +$lang['Associate to album'] = 'ដែលជាប់ទាក់ទង​នឹងអាល់ប៊ុម'; +$lang['Associated'] = 'ដែលជាប់ទាក់ទង'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom គឺជា​កម្មវិធី​ក្នុងវិស័យថតរូប ដែល​អាច​គ្រប់គ្រង​នូវ​បរិមាណ​រូបភាព​អេឡិចត្រូនិចធំៗ និង​ដើម្បី​ដំណើរការការងារ​ផលិតកម្ម​បាន'; +$lang[' and %d virtuals'] = 'និង %d និម្មិតរូប'; +$lang['%d of %d users selected'] = '%d នៃ %d អ្នក​ប្រើប្រាស់​បាន​ជ្រើស'; +$lang['%d physicals'] = '%d រូបវ័ន្ត'; +$lang['(filtered from %s total users)'] = '(ច្រោះពី %s នៃ​អ្នក​ប្រើប្រាស់​សរុប)'; +$lang['Activate it now'] = 'ដាក់អោយ​សកម្មឥឡូវ'; +$lang['Added by %s'] = 'ដាក់បញ្ចូល​ដោយ %s'; +$lang['Album "%s" now contains %d photos'] = 'អាល់ប៊ុម "%s" បច្ចុប្បន្ន​មាន %d រូបភាព'; +$lang['All %d users are selected'] = '%d អ្នក​ប្រើប្រាស់​ទាំងអស់​ត្រូវបាន​ជ្រើសរើស'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'ជំរៅ (Aperture) គឺជា​ឧបករណ៍​ដ៏អស្ចារ្យ​មួយ ដើម្បីធ្វើការផ្លាស់ប្តូរ​រូបភាព និង​គ្រប់គ្រង​នូវ​បន្តុំកម្មវិធី​ដ៏ធំ​លើម៉ាស៊ីន Mac។'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'ជំរៅ (Aperture) ត្រូវបាន​រៀបចំឡើង​សម្រាប់​អ្នកអាជីពថតរូប ជាមួយនឹងភាពសាមញ្ញនៃ iPhoto'; +$lang['Apply watermark if height is bigger than'] = 'ដាក់​រូបផ្ទៃខាងក្រោយនៃ​រូបភាព បើកំពស់​ធំជាង'; +$lang['Apply watermark if width is bigger than'] = 'ដាក់​រូបផ្ទៃខាងក្រោយនៃ​រូបភាព បើទំហំទទឹង​ធំជាង'; +$lang['Applications'] = 'កម្មវិធី'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'គុណភាព​អេក្រង់​ខ្ពស់​បំផុតប្រហាក់​ប្រហែល៖ %dM pixels (គឺ​ %dx%d pixels)។'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'តើ​អ្នក​ពិតជាចង់បន្លើង​ជំនាន់មែន? អ្នក​ត្រូវ​តែ​ផ្ទៀងផ្ទាត់ថា ជំនាន់នេះ​មិនចាំបាច់លុប​ជាមុន​។'; +$lang['Authorize users to add comments on selected albums'] = 'អនុញ្ញាត​អោយ​អ្នក​ប្រើប្រាស់​ ដើម្បី​បញ្ចូលនូវ​មតិ​លើអាល់ប៊ុម​ដែល​បាន​ជ្រើស'; +$lang['Authorized'] = 'បាន​អនុញ្ញាត'; +$lang['Automatic correction'] = 'កែតម្រូវ​ដោយ​ស្វ័យ​ប្រវត្តិ'; +$lang['Automatic sort order'] = 'តម្រៀប​តាមលំដាប់​ដោយ​ស្វ័យ​ប្រវត្តិ'; +$lang['Available on'] = 'ដែល​អាច​ប្រើបាននៅ'; +$lang['Bound Theme'] = 'សម្បក​ចងភ្ជាប់'; +$lang['Cancel'] = 'បោះបង់'; +$lang['By rank'] = 'ដោយចំណាត់ថ្នាក់'; +$lang['By %s'] = 'ដោយ %s'; +$lang['Batch Manager'] = 'កម្មវិធីគ្រប់គ្រងជាបាច់'; +$lang['Basic settings'] = 'ការកំណត់មូលដ្ឋាន'; +$lang['Average rate'] = 'អត្រាជាមធ្យម'; +$lang['Available versions for'] = 'ជំនាន់ដែល​មាន​សម្រាប់'; +$lang['Available only with HTML format'] = 'មាន​តែ​នៅលើ​ទម្រង់ HTML ទេ'; \ No newline at end of file diff --git a/sources/language/km_KH/common.lang.php b/sources/language/km_KH/common.lang.php new file mode 100644 index 0000000..ead370a --- /dev/null +++ b/sources/language/km_KH/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/km_KH/index.php b/sources/language/km_KH/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/km_KH/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/km_KH/iso.txt b/sources/language/km_KH/iso.txt new file mode 100644 index 0000000..d1dacdd --- /dev/null +++ b/sources/language/km_KH/iso.txt @@ -0,0 +1 @@ +ភាសាខ្មែរ [KH] \ No newline at end of file diff --git a/sources/language/km_KH/km_KH.jpg b/sources/language/km_KH/km_KH.jpg new file mode 100644 index 0000000..0dbaf8d Binary files /dev/null and b/sources/language/km_KH/km_KH.jpg differ diff --git a/sources/language/km_KH/upgrade.lang.php b/sources/language/km_KH/upgrade.lang.php new file mode 100644 index 0000000..5163f3d --- /dev/null +++ b/sources/language/km_KH/upgrade.lang.php @@ -0,0 +1,39 @@ +%s, before ?>, insert:'] = 'ក្នុង %s មុន ?>, បញ្ចូល៖'; +$lang['Upgrade informations'] = 'ព័ត៌មាន​ពីការ​បង្កើន​ជំនាន់'; +$lang['total upgrade time'] = 'រយៈពេល​បង្កើន​ជំនាន់​សរុប'; +$lang['total SQL time'] = 'ពេលរបស់ SQL សរុប'; +$lang['Statistics'] = 'ស្ថិតិ'; +$lang['SQL queries'] = 'SQL queries'; +$lang['Upgrade from version %s to %s'] = 'បង្កើន​ជំនាន់​ពីជំនាន់ %s ទៅ %s'; +$lang['Upgrade'] = 'បង្កើន​ជំនាន់'; +$lang['All sub-albums of private albums become private'] = 'រាល់​អាល់ប៊ុមរងទាំងអស់​​នៃអាល់ប៊ុម'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'មាន​តែ​អ្នក​គ្រប់គ្រងបណ្តាញ​ទេ ដែល​អាច​បង្កើន​ជំនាន់​បាន៖ សូម​ចូល​ទៅ​ប្រព័ន្ធ​នៅខាងក្រោម។'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'សូម​ប្រុង​ប្រយ័ត្ន សម្បកខាង​ក្រោម​បាន​ដាក់​មិន​អោយ​ដំណើរការ។ អ្នក​ត្រូវ​តែ​ត្រួត​ពិនិត្យ​ថា​តើ​ សម្បក​ទាំង​នោះបាន​បង្កើន​ជំនាន់​មុន​ដាក់​អោយ​ដំណើរការ​ឡើងវិញ៖'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'សូម​ប្រុង​ប្រយ័ត្ន កម្មវិធី​ជំនួយ​ខាង​ក្រោម​បាន​ដាក់​មិន​អោយ​ដំណើរការ។ អ្នក​ត្រូវ​តែ​ត្រួត​ពិនិត្យ​ថា​តើ​ កម្មវិធី​ជំនួយ​ទាំង​នោះបាន​បង្កើន​ជំនាន់​មុន​ដាក់​អោយ​ដំណើរការ​ឡើងវិញ៖'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'ទំព័រ​នេះ​ស្នើរបង្កើន​ជំនាន់​មូលដ្ឋាន​ទិន្នន័យ ពីជំនាន់​ Piwigo ចាស់​របស់​អ្នកទៅ​ជំនាន់​ថ្មី។ ផ្នែក​ជំនួយ​ខាងបង្កើន​ជំនាន់​គិត​ថា អ្នក​កំពុង​តែដំណើរការ release %s (ឬ សមមូល).'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'អនុវត្តដំណើរ​ការ​ថែរក្សា [ផ្នែក​រដ្ឋបាល>ឧបករណ៍>ការថែរក្សា] បើ​អ្នក​ជួបបញ្ហាផ្សេងៗ'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'មាន​តែ​បុព្វបទរូបភាពតូច​ និង​អាស័យ​ដ្ឋាន​សំបុត្ររបស់​ប្រធាន​វេបសាយ​ទេ ដែល​ត្រូវ​បាន​រក្សា​ទុក​ពីការ​កំណត់​មុន​នេះ'; \ No newline at end of file diff --git a/sources/language/kn_IN/about.html b/sources/language/kn_IN/about.html new file mode 100644 index 0000000..319fbc1 --- /dev/null +++ b/sources/language/kn_IN/about.html @@ -0,0 +1,5 @@ +

                  ಈ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) Piwigo ದಿಂದ ರಚನೆಯಾಗಿದೆ

                  + +

                  Piwigo ಒಂದು ಅಂತರ್ಜಾಲದ ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ) ತಂತ್ರಾಂಶವಾಗಿದ್ದು, ಆಸಕ್ತ , ಕ್ರಿಯಾಶೀಲ ತಂತ್ರಜ್ಞರು ಹಾಗೂ ಬಳಕೆದಾರರ ಗುಂಪಿನಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ. ವಿಸ್ತರಣಿಕೆಗಳ (Extensions) ಮೂಲಕ ಈ ತಂತ್ರಾಂಶವನ್ನು ಬಹಳ ಸುಲಭವಾಗಿ ಗ್ರಾಹಕಸ್ನೇಹಿಯಾಗಿ ಮಾಡಬಹುದಾಗಿದೆ. ಎಲ್ಲಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ Piwigo ಉಚಿತ ಹಾಗೂ ಓಪನ್ ಸೋರ್ಸ್ ತಂತ್ರಾಂಶವಾಗಿದೆ.

                  + +

                  Piwigo ಜಾಲತಾಣಕ್ಕೆ ಭೇಟಿ ಕೊಡಿ

                  \ No newline at end of file diff --git a/sources/language/kn_IN/admin.lang.php b/sources/language/kn_IN/admin.lang.php new file mode 100755 index 0000000..c338a50 --- /dev/null +++ b/sources/language/kn_IN/admin.lang.php @@ -0,0 +1,264 @@ + \ No newline at end of file diff --git a/sources/language/kn_IN/common.lang.php b/sources/language/kn_IN/common.lang.php new file mode 100644 index 0000000..3a799e0 --- /dev/null +++ b/sources/language/kn_IN/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/kn_IN/install.lang.php b/sources/language/kn_IN/install.lang.php new file mode 100755 index 0000000..4ddad7b --- /dev/null +++ b/sources/language/kn_IN/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'ಸಹಾಯ ಬೇಕೆ? ನಿಮ್ಮ ಪ್ರಶ್ನೆಗಳನ್ನು Piwigo message board ನಲ್ಲಿ ಕೇಳಿ.'; +$lang['Just another Piwigo gallery'] = 'ಇದು ನಿಮ್ಮದೇ Piwigo ಚಿತ್ರಶಾಲೆ (ಗ್ಯಾಲರಿ)'; +$lang['Database name'] = 'ಡೇಟಾಬೇಸಿನ ಹೆಸರು'; +$lang['Can\'t connect to server'] = 'ಸರ್ವರ್ ನೊಂದಿಗೆ ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.'; +$lang['Congratulations, Piwigo installation is completed'] = 'ಅಭಿನಂದನೆಗಳು, ನಿಮ್ಮ Piwigo ದ ಸ್ಥಾಪನೆ ಇದೀಗ ಯಶಸ್ವಿಯಾಗಿ ಮುಗಿದಿದೆ.'; +$lang['Admin configuration'] = 'ನಿರ್ವಹಣೆಗಾರರ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳು (Admin configuration)'; +$lang['Basic configuration'] = 'ಮೂಲ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳು (Basic configuration)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'local/config/database.inc.php ಕಾರ್ಯಸಿದ್ಧತೆ ಕಡತ ವನ್ನು ರೂಪಿಸುವಲ್ಲಿ ವಿಫಲ.'; +$lang['Database configuration'] = 'ಡೇಟಾಬೇಸ್ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳು (Database configuration)'; +$lang['Download the config file'] = 'ಕಾರ್ಯಸಿದ್ಧತೆ ಕಡತ (config file) ವನ್ನು ಇಳಿಸಿಕೊಳ್ಳಿ'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'ಗಮನಿಸಿ : ನಿಮ್ಮ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳನ್ನು ನೀವೇ ಬದಲಾಯಿಸಬಹುದು ಮತ್ತು ಆನಂತರ ಅದರ ಬಳಕೆಗಾಗಿ Piwigo ಅನ್ನು ಮರುಚಾಲಿಸಿ.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = '.htaccess ಕಡತವನ್ನು ರೂಪಿಸುವುದರ ಅಥವಾ ಮಾರ್ಪಡಿಸುವುದರ ಮೂಲಕ Piwigo ನಿಮ್ಮ ಕಾರ್ಯ ಸಿದ್ಧತೆಗಳನ್ನು PHP 5 ಗೆ ವರ್ಗಾಯಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ.'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo ಗೆ PHP 5 ಅನ್ನು ಸಿಧ್ಧಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.'; +$lang['Try to configure PHP 5'] = 'PHP 5 ಅನ್ನು ಸಿಧ್ಧಗೊಳಿಸಲು ಪ್ರಯತ್ನಿಸಿ.'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'ಸ್ಥ್ಪಾಪನಾ ಕಾರ್ಯದಲ್ಲಿ, ನೀವು ಕಾರ್ಯಸಿದ್ಧತೆ ಕಡತ ವನ್ನು ಇಳಿಸಿಕೊಳ್ಳಬಹುದು ಮತ್ತು ಅದನ್ನು local/config ಡೈರಕ್ಟರಿಗೆ ವರ್ಗಾಯಿಸಬಹುದು.'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning: database.inc.php must only contain what is in the textarea, no line return or space character)'; +$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ ಗಳ ಹೆಸರುಗಳಿಗೆ ಪೂರ್ವಪ್ರತ್ಯಯ ( prefix ) ಗಳನ್ನು ಅಳವಡಿಸುತ್ತದೆ. (ಟೇಬಲ್ ಗಳನ್ನು ಉತ್ತಮ ರೀತಿಯಲ್ಲಿ ನಿರ್ವಹಿಸಲು ಇದು ನಿಮಗೆ ಸಹಾಯಕ)'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'ಯಾವುದೇ ಬಗೆಯ ಸಹಾಯಕ್ಕೆ ನಮ್ಮ ಈ ಚರ್ಚಾವೇದಿಕೆ (forum) ಗಳನ್ನು ಬಳಸುವಲ್ಲಿ ಹಿಂಜರಿಯಬೇಡಿ : %s'; +$lang['Database table prefix'] = 'ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ ಗಳ ಪೂರ್ವಪ್ರತ್ಯಯ ( prefix )'; +$lang['Password ']['confirm'] = 'ಪ್ರವೇಶಪದ [ಖಾತ್ರಿ]'; +$lang['PHP 5 is required'] = 'PHP 5 ಅತ್ಯಗತ್ಯವಾಗಿದೆ.'; +$lang['Keep it confidential, it enables you to access administration panel'] = 'ಈ ವಿವರಗಳನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಇಡಿ, ಇದು ನಿಮಗೆ ನಿರ್ವಹಣಾ ಪ್ಯಾನೆಲ್ ಅನ್ನು ಬಳಸುವಾಗ ಉಪಯೊಗಕ್ಕೆ ಬರುತ್ತದೆ.'; +$lang['It will be shown to the visitors. It is necessary for website administration'] = 'ಈ ವಿವರಗಳು ನೋಡುಗರಿಗೆ ಲಭ್ಯವಿರುತ್ತವೆ, ಜಾಲತಾಣ ನಿರ್ವಹಣಾ ಕಾರ್ಯಕ್ಕೆ ಇದು ಅತ್ಯಗತ್ಯ.'; +$lang['It appears your webhost is currently running PHP %s.'] = 'ನಿಮ್ಮ ವೆಬ್ ಹೋಸ್ಟ್ ಸಧ್ಯಕ್ಕೆ PHP %s ಅನ್ನು ಬಳಸುತ್ತಿದೆ.'; +$lang['Hope to see you back soon.'] = 'ಮತ್ತೆ ಸಧ್ಯದಲ್ಲೇ ಭೇಟಿಯಾಗೋಣ.'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'ಸರ್ವರ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ, ಆದರೆ ಡೇಟಾಬೇಸ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತಿಲ್ಲ.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'ತಾಣ ನಿರ್ವಹಣೆಗಾರರ (ಸೈಟ್ ಅಡ್ಮಿನ್) ನ್ನು ಸಂಪರ್ಕಿಸಲು ಬಳಕೆದಾರರು/ನೋಡುಗರು ಈ ಮಿಂಚೆ ವಿಳಾಸವನ್ನು ಬಳಸಬಹುದಾಗಿದೆ'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'PHP 5 ಗೆ ನೀವು ಹೇಗೆ ಬದಲಾಯಿಸಿಕೊಳ್ಳ ಬಹುದು ಎಂಬುದರ ವಿವರಗಳನ್ನು ನಿಮ್ಮ ಹೋಸ್ಟಿಂಗ್ ಪ್ರೊವೈಡರ್ ಅವರ ಸಹಾಯದಲ್ಲಿ ನೋಡಿರಿ.'; +$lang['also given by your host provider'] = 'ಹಾಗೂ ನಿಮ್ಮ ಹೋಸ್ಟಿಂಗ್ ಪ್ರೊವೈಡರ್ ಅವರಿಂದ ಪೂರೈಸಿದೆ'; +$lang['webmaster login can\'t contain characters \' or "'] = 'ವೆಬ್ ಮಾಸ್ಟರ್ ಲಾಗಿನ್ \' ಅಥವಾ " ಸಂಕೇತಾಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬಾರದು'; +$lang['localhost or other, supplied by your host provider'] = 'ನಿಮ್ಮ ಹೋಸ್ಟ್ ಪ್ರೊವೈಡರ್ ಒದಗಿಸಿರುವ ಲೋಕಲ್ ಹೋಸ್ಟ್ ಅಥವಾ ಇತರೆ'; +?> \ No newline at end of file diff --git a/sources/language/kn_IN/iso.txt b/sources/language/kn_IN/iso.txt new file mode 100644 index 0000000..4168fbb --- /dev/null +++ b/sources/language/kn_IN/iso.txt @@ -0,0 +1 @@ +ಕನ್ನಡ [IN] \ No newline at end of file diff --git a/sources/language/kn_IN/kn_IN.jpg b/sources/language/kn_IN/kn_IN.jpg new file mode 100644 index 0000000..a6d5c7e Binary files /dev/null and b/sources/language/kn_IN/kn_IN.jpg differ diff --git a/sources/language/kn_IN/upgrade.lang.php b/sources/language/kn_IN/upgrade.lang.php new file mode 100755 index 0000000..c8e84f1 --- /dev/null +++ b/sources/language/kn_IN/upgrade.lang.php @@ -0,0 +1,40 @@ +release %s (or equivalent).'] = 'ಈ ಪುಟವು ನಿಮ್ಮ ಹಳೆಯ ಪಿವಿಗೋ ಆವೃತ್ತಿಯಿಂದ ಹೊಸ ಆವೃತ್ತಿಯ ಡೇಟಾಬೇಸ್ ಗೆ ಉನ್ನತೀಕರಿಸಲು ಸೂಚಿಸುತ್ತಿದೆ. ಉನ್ನತೀಕರಣದ ಸಹಾಯಕವು ನೀವು ಸಧ್ಯಕ್ಕೆ release %s ಅಥವಾ ಅದರ ಸಮಾನವಾದುದನ್ನು ಉಪಯೋಗಿಸುತ್ತಿದ್ದೀರೆಂದು ಅಂದುಕೊಂಡಿದೆ.'; +$lang['User permissions and group permissions have been erased'] = 'ಬಳಕೆದಾರರ ಮತ್ತು ಗುಂಪುಗಳ ಅನುಮತಿಗಳನ್ನು ಅಳಿಸಲಾಗಿದೆ.'; +$lang['Upgrade'] = 'ಉನ್ನತೀಕರಿಸಿ'; +$lang['Upgrade informations'] = 'ಉನ್ನತೀಕರಣದ ವಿವರಗಳು'; +$lang['Statistics'] = 'ಅಂಕಿಅಂಶಗಳು'; +$lang['SQL queries'] = 'SQL ಕ್ವೆರಿಗಳು'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'ಏನಾದಾರೂ ತೊಂದರೆ ಉಂಟಾಗಿದ್ದಲ್ಲಿ, ನಿರ್ವಹಣೆ ಚೆಕ್ ಇನ್ ಅನ್ನು ಮಾಡಿ [Administration>Tools>Maintenance] '; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'ಕಿರುಚಿತ್ರದ ಪ್ರತ್ಯಯ ಮತ್ತು ವೆಬ್ ಮಾಸ್ಟರ್ ರ ಮಿಂಚೆ ವಿಳಾಸಗಳನ್ನು ಮಾತ್ರ ಈ ಹಿಂದಿನ ಕಾರ್ಯಸಿದ್ಧತಾ ಪಟ್ಟಿಯಲ್ಲಿ ಉಳಿಸಲಾಗಿದೆ.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'ಕೇವಲ ನಿರ್ವಹಣೆಗಾರರು ಮಾತ್ರ ಉನ್ನತೀಕರಣ ಮಾಡಬಹುದು. ದಯವಿಟ್ಟು ಈ ಕೆಳಗೆ ಸೈನ್ ಇನ್ ಆಗಿರಿ.'; +$lang['In %s, before ?>, insert:'] = '%s ನಲ್ಲಿ, ಮುಂದೆ ?>, ಸೇರಿಸಿ:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'ಮುನ್ನೆಚ್ಚರಿಕೆಯಾಗಿ, ಈ ಕೆಳಕಂಡ ಥೀಮ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಇವುಗಳನ್ನು ಮರುಸಕ್ರಿಯಗೊಳಿಸುವ ಮುನ್ನ ಉನ್ನತೀಕರಿಸಬಹುದಾದ ಥೀಮ್ ಗಳಿಗಾಗಿ ಪರೀಕ್ಷಿಸಿ.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'ಮುನ್ನೆಚ್ಚರಿಕೆಯಾಗಿ, ಈ ಕೆಳಕಂಡ ಪ್ಲಗ್ ಇನ್ ಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಇವುಗಳನ್ನು ಮರುಸಕ್ರಿಯಗೊಳಿಸುವ ಮುನ್ನ ಉನ್ನತೀಕರಿಸಬಹುದಾದ ಪ್ಲಗ್ ಇನ್ ಗಳಿಗಾಗಿ ಪರೀಕ್ಷಿಸಿ.'; +$lang['All sub-albums of private albums become private'] = 'ಎಲ್ಲಾ ಖಾಸಗಿ ಸಂಪುಟಗಳ ಉಪ-ಸಂಪುಟಗಳು ಖಾಸಗಿಯಾಗುತ್ತವೆ'; +?> \ No newline at end of file diff --git a/sources/language/ko_KR/admin.lang.php b/sources/language/ko_KR/admin.lang.php new file mode 100755 index 0000000..22dad06 --- /dev/null +++ b/sources/language/ko_KR/admin.lang.php @@ -0,0 +1,62 @@ + \ No newline at end of file diff --git a/sources/language/ko_KR/common.lang.php b/sources/language/ko_KR/common.lang.php new file mode 100644 index 0000000..e62c025 --- /dev/null +++ b/sources/language/ko_KR/common.lang.php @@ -0,0 +1,420 @@ +Z'; +$lang['Photo title, Z → A'] = '사진 제목, Z->A'; +$lang['Rating score, high → low'] = '평점, 내림차순'; +$lang['Rating score'] = '평점'; +$lang['useful when password forgotten'] = '암호를 잊은 경우를 대비'; +$lang['Username "%s" on gallery %s'] = '갤러리 %s에 있는 사용자명 "%s"'; +$lang['Tag results for'] = '태그 겸색 결과 : '; +$lang['The number of photos per page must be a not null scalar'] = '페이지당 사진 수는 0이 아닌 정수여야 합니다'; +$lang['Password reset is not allowed for this user'] = '해당 사용자는 암호 초기화를 할 수 없습니다.'; +$lang['Please enter your username or email address.'] = '사용자명 혹은 이메일 주소를 입력하십시오.'; +$lang['Specials'] = '특집'; +$lang['Registration of %s'] = '%s 등록'; +$lang['Search for all terms'] = '모든 단어로 검색'; +$lang['Search for any term'] = '아무 단어나 검색'; +$lang['Search for words'] = '단어로 검색'; +$lang['Your username has been successfully changed to : %s'] = '성공적으로 사용자명을 %s로 변경하였습니다.'; +$lang['Numeric identifier, 1 → 9'] = '숫자 식별자, 1 → 9'; +$lang['Numeric identifier, 9 → 1'] = '숫자 식별자, 9 → 1'; +$lang['SQL queries in'] = 'SQL 쿼리에 '; +$lang['Here are your connection settings'] = '접속 설정은 다음과 같습니다'; +$lang['Send my connection settings by email'] = '접속 설정을 이메일로 보내기'; +$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = '성공적으로 가입되었습니다. 곧 접속 설정이 있는 이메일을 받으실겁니다. 환영합니다.'; +$lang['View in'] = '다음에서 보기 : '; +$lang['Search in sub-albums'] = '서브 앨범에서 검색'; +$lang['Desktop'] = '컴퓨터'; +$lang['Forbidden'] = '금지됨'; +$lang['If you think you\'ve received this email in error, please contact us at %s'] = '만약 오류로 이 메일을 수신했다고 생각하시면, %s 로 연락 바랍니다.'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = '암호 확인이 입력되지 않았습니다. 선택한 암호를 확인하십시오.'; +$lang['Password is missing. Please enter the password.'] = '암호가 입력되지 않았습니다. 암호를 입력하십시오.'; +$lang['%d photos per page'] = '페이지당 %d 개의 사진'; +$lang['Theme'] = '테마'; +?> \ No newline at end of file diff --git a/sources/language/ko_KR/index.php b/sources/language/ko_KR/index.php new file mode 100644 index 0000000..47198ca --- /dev/null +++ b/sources/language/ko_KR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ko_KR/install.lang.php b/sources/language/ko_KR/install.lang.php new file mode 100755 index 0000000..e45fb81 --- /dev/null +++ b/sources/language/ko_KR/install.lang.php @@ -0,0 +1,60 @@ +Piwigo message board.'] = '도움이 필요하신가요? Piwigo message board에 물어보세요.'; +$lang['Piwigo was not able to configure PHP 5.'] = 'PHP5 설정에 실패했습니다'; +$lang['Try to configure PHP 5'] = 'PHP5 설정 시도중'; +$lang['Welcome to my photo gallery'] = '사진 갤러리에 오신 것을 환영합니다'; +$lang['please enter your password again'] = '암호를 다시 입력하십시오'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '또다른 방법으로는 위의 텍스트 상자에 있는 문장을 복사하여 "local/config/database.inc.php"에 복사하는 방법입니다. +(경고: database.inc.php는 줄바꿈이나 스페이스 없이 위 텍스트 상자에 있는 내용만 포함해야 합니다. '; +$lang['Congratulations, Piwigo installation is completed'] = '축하합니다, Piwigo설치가 끝났습니다'; +$lang['Default gallery language'] = '기본 언어'; +$lang['PHP 5 is required'] = 'PHP5가 필요합니다'; +$lang['Password ']['confirm'] = '암호 [확인]'; +$lang['Sorry!'] = '죄송합니다!'; +$lang['Start Install'] = '설치 시작'; +$lang['User'] = '사용자'; +$lang['Basic configuration'] = '기본 설정'; +$lang['Can\'t connect to server'] = '서버에 접속 할 수 없습니다'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = '축하합니다. Piwigo설치가 끝났습니다.'; +$lang['Creation of config file local/config/database.inc.php failed.'] = '설정파일 local/conf/database.inc.php 을 만들 수 없습니다.'; +$lang['Database configuration'] = '설정데이터베이스 서'; +$lang['Database name'] = '데이터베이스명'; +$lang['Database table prefix'] = '데이터베이스 테이블 접미사'; +$lang['Download the config file'] = '설정파일 다운로드'; +$lang['Host'] = '트명호스트'; +$lang['Installation'] = '설치'; +$lang['It appears your webhost is currently running PHP %s.'] = '웹서버가 PHP %s를 사용중입니다'; +?> \ No newline at end of file diff --git a/sources/language/ko_KR/iso.txt b/sources/language/ko_KR/iso.txt new file mode 100644 index 0000000..27daa74 --- /dev/null +++ b/sources/language/ko_KR/iso.txt @@ -0,0 +1 @@ +한국어 [KR] \ No newline at end of file diff --git a/sources/language/ko_KR/ko_KR.jpg b/sources/language/ko_KR/ko_KR.jpg new file mode 100644 index 0000000..c21b387 Binary files /dev/null and b/sources/language/ko_KR/ko_KR.jpg differ diff --git a/sources/language/ko_KR/upgrade.lang.php b/sources/language/ko_KR/upgrade.lang.php new file mode 100755 index 0000000..41f34da --- /dev/null +++ b/sources/language/ko_KR/upgrade.lang.php @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/sources/language/kok_IN/common.lang.php b/sources/language/kok_IN/common.lang.php new file mode 100644 index 0000000..be5de6f --- /dev/null +++ b/sources/language/kok_IN/common.lang.php @@ -0,0 +1,128 @@ + \ No newline at end of file diff --git a/sources/language/kok_IN/iso.txt b/sources/language/kok_IN/iso.txt new file mode 100644 index 0000000..4c1f151 --- /dev/null +++ b/sources/language/kok_IN/iso.txt @@ -0,0 +1 @@ +कोंकणी[IN] \ No newline at end of file diff --git a/sources/language/kok_IN/kok_IN.jpg b/sources/language/kok_IN/kok_IN.jpg new file mode 100644 index 0000000..a6d5c7e Binary files /dev/null and b/sources/language/kok_IN/kok_IN.jpg differ diff --git a/sources/language/lb_LU/common.lang.php b/sources/language/lb_LU/common.lang.php new file mode 100644 index 0000000..0a1008f --- /dev/null +++ b/sources/language/lb_LU/common.lang.php @@ -0,0 +1,269 @@ + \ No newline at end of file diff --git a/sources/language/lb_LU/iso.txt b/sources/language/lb_LU/iso.txt new file mode 100644 index 0000000..da6a906 --- /dev/null +++ b/sources/language/lb_LU/iso.txt @@ -0,0 +1 @@ +Lëtzebuergesch [LU] \ No newline at end of file diff --git a/sources/language/lb_LU/lb_LU.jpg b/sources/language/lb_LU/lb_LU.jpg new file mode 100644 index 0000000..4abad1b Binary files /dev/null and b/sources/language/lb_LU/lb_LU.jpg differ diff --git a/sources/language/lt_LT/about.html b/sources/language/lt_LT/about.html new file mode 100644 index 0000000..96ee6be --- /dev/null +++ b/sources/language/lt_LT/about.html @@ -0,0 +1,14 @@ +

                  Ši nuotraukų galerija yra sukurta naudojant Piwigo.

                  + +

                  Piwigo yra nuotraukų galerijos programinė įranga skirta puslapiams, sukurta aktyvių narių bendruomenių ir kurėjų. + Plėtiniai padaro Piwigo visiems lengvai pritaikoma. Ji yra visiškai nemokama.

                  + +

                  Apsilankykite Piwigo internetinėje svetainėje

                  + +

                  Vertimas į lietuvių sutvarkytas pagal (vardai abecelės tvarka) + +

                  +Labai ačiū vertėjams!

                  diff --git a/sources/language/lt_LT/admin.lang.php b/sources/language/lt_LT/admin.lang.php new file mode 100755 index 0000000..15565af --- /dev/null +++ b/sources/language/lt_LT/admin.lang.php @@ -0,0 +1,972 @@ +Click here to show log error.'] = 'Išskleidžiant įvyko klaida. Prašome pasitikrinti piwigo instaliacijos failų leidimus.
                  Klaidų logas čia.'; +$lang['An error has occured during upgrade.'] = 'Instaliuojant atnaujinimus įvyko klaida.'; +$lang['An error occured during extraction (%s).'] = 'Išskleidžiant failus (%s) įvyko klaida.'; +$lang['An information email was sent to group "%s"'] = 'Informacinins pranešimas nusiųstas į "%s" grupę'; +$lang['Anomaly'] = 'Anomalija'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Tik webmasteriai gali matyti šį tab\'ą, o ne administratoriai.'; +$lang['Applications'] = 'Programos'; +$lang['Allow user customization'] = 'Leisti vartotojams pasikeisti galerijos išvaizdą'; +$lang['All extensions are up to date.'] = 'Visų išplėtimų versijos naujausios.'; +$lang['All languages are up to date.'] = 'Visų kalbų versijos naujausios.'; +$lang['All optimizations have been successfully completed.'] = 'Visos optimizacijos buvo sėkmingai užbaigtos.'; +$lang['All plugins are up to date.'] = 'Visų priedų versijos naujausios.'; +$lang['All themes are up to date.'] = 'Visų temų versijos naujausios.'; +$lang['Allow rating'] = 'Leisti reitingavimą'; +$lang['Allow user registration'] = 'Leisti vartotojų registraciją'; +$lang['Allow users to delete their own comments'] = 'Leisti vartotojams trinti savo komentarus'; +$lang['Allow users to edit their own comments'] = 'Leisti vartotojams redaguoti savo komentarus'; +$lang['Allowed file types: %s.'] = 'Leidžiami failų tipai: %s.'; +$lang['Add to caddie'] = 'Pridėti į krepšelį'; +$lang['Add write access to the "%s" directory'] = 'Pridėti leidimą rašyti į "%s" katalogą'; +$lang['Add/delete a permalink'] = 'Pridėti/pašalinti fiksuotą nuorodą'; +$lang['Added by %s'] = 'Įdėjo '; +$lang['Administration Home'] = 'Administracijos puslapis'; +$lang['Advanced features'] = 'Papildomos funkcijos'; +$lang['Album "%s" has been added'] = 'Albumas "%s" pridėtas'; +$lang['Album "%s" now contains %d photos'] = 'albumas "%s" dabar turi %d nuotraukas(-ų)'; +$lang['Album list management'] = 'Albumų sąrašo valdymas'; +$lang['Album manual order was saved'] = 'Albumų rankinis išrūšiavimas išsaugotas'; +$lang['Album name'] = 'Albumo pavadinimas'; +$lang['Album photos associated to the following albums: %s'] = 'Albumo nuotraukos asocijuotos su šiais albumais: %s'; +$lang['Album updated successfully'] = 'Albumas sėkmingai atnaujintas'; +$lang['Albums authorized thanks to group associations'] = 'Albumai autorizuoti dėka grupinių asociacijų'; +$lang['Albums automatically sorted'] = 'Albumai išrūšiuoti automatiškai'; +$lang['All %d photos are selected'] = 'Pasirinktos visos %d nuotraukos'; +$lang['+ Add an upload box'] = '+ Pridėti įkrovos lauką'; +$lang['Activate icon "%s"'] = 'Aktyvuoti piktogramą "%s"'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktyvuoti piktogramą "nauja" šalia albumų ir nuotraukų'; +$lang['Active Languages'] = 'Aktyvuoti kalbas'; +$lang['Active Plugins'] = 'Aktyvūs priedai'; +$lang['Active Themes'] = 'Aktyvuoti temas'; +$lang['Add'] = 'Pridėti'; +$lang['Add New Language'] = 'Pridėti naują kalbą'; +$lang['Add New Theme'] = 'Pridėti naują temą'; +$lang['Add Photos'] = 'Pridėti nuotraukų'; +$lang['Add a criteria'] = 'Pridėti kriterijų'; +$lang['Add a filter'] = 'Pridėti filtrą'; +$lang['Add a tag'] = 'Pridėti žymą'; +$lang['Add a user'] = 'Pridėti vartotoją'; +$lang['Add a virtual album'] = 'Pridėti virtualų albumą'; +$lang['Add another set of photos'] = 'Pridėti nuotraukų rinkinį'; +$lang['Add group'] = 'Pridėti grupę'; +$lang['Add tags'] = 'Pridėti žymas'; +$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s turi būti nustatyta į false local/config/config.inc.php faile'; +$lang['%s photos can not be regenerated'] = '%s nuotraukos(-ų) negali būti regeneruotos'; +$lang['%s photos have been regenerated'] = '%s nuotraukos(-ų) regeneruota'; +$lang['%s value is not correct file because exif are not supported'] = '%s reikšmė neteisinga, nes exif nepalaikomas'; +$lang['(this tag will be deleted)'] = '(ši žyma bus ištrinta)'; +$lang[', click on'] = ', paspausk ant'; +$lang['... or '] = '... arba '; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo Android\'ui programėlė suteikia galimybę sujungti jūsų Android telefoną ar planšetę su jūsų Piwigo galerija, kurti kelis albumus ir įkelti kelias nuotraukas iškart.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo iOS\'ui programėlė suteikia galimybę sujungti jūsų iPhone, iPad ar iPod Touch su jūsų Piwigo galerija, kurti kelis albumus ir įkelti kelias nuotraukas iškart.'; +$lang['A locked gallery is only visible to administrators'] = 'Užrakinta galerija prieinama tik administratoriams'; +$lang['A new version of Piwigo is available.'] = 'Yra nauja Piwigo versija.'; +$lang['ACCESS_2'] = 'Prieinama registruotiems vartotojams'; +$lang['Action'] = 'Veiksmas'; +$lang['Actions'] = 'Veiksmai'; +$lang['Activate'] = 'Aktyvuoti'; +$lang['Activate Navigation Bar'] = 'Aktyvuoti navigacijos juostą'; +$lang['Activate Navigation Thumbnails'] = 'Aktyvuoti navigacijos piktogramas'; +$lang['Activate comments'] = 'Aktyvuoti komentarus'; +$lang['ACCESS_0'] = 'Laisva prieiga'; +$lang['ACCESS_1'] = 'Prieinama visiems'; +$lang['ACCESS_3'] = 'Prieinama administratoriams'; +$lang['ACCESS_4'] = 'Prieinama webmasteriams'; +$lang['ACCESS_5'] = 'Neprieinama'; +$lang['Access type'] = 'Prieigos tipas'; +$lang['Invert'] = 'Invertuoti'; +$lang['Languages'] = 'Kalbos'; +$lang['Languages which need upgrade'] = 'Kalbos, kurioms reikia atnaujinimo'; +$lang['Last hit'] = 'Paskutinis paspaudimas'; +$lang['Grant selected groups'] = 'Leisti prieigą pasirinktoms grupėms'; +$lang['Grant selected users'] = 'Leisti prieigą pasirinktiems vartotojams'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Neįmanoma išjungti šios kalbos - jums reikalinga bent viena kalba.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Neįmanoma išjungti šios temos - jums reikalinga bent viena tema.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ši tema negali būti išjungta, nes ji reikalinga kitoms temoms: %s'; +$lang['Inactive Languages'] = 'Neaktyvios kalbos'; +$lang['Inactive Plugins'] = 'Neaktyvūs priedai'; +$lang['Inactive Themes'] = 'Neaktyvios temos'; +$lang['Informations'] = 'Informacija'; +$lang['Install'] = 'Instaliuoti'; +$lang['Installed Languages'] = 'Instaliuotos kalbos'; +$lang['Installed Themes'] = 'Instaliuotos temos'; +$lang['Instructions to use Piwigo'] = 'Instrukcijos, kaip naudoti Piwigo'; +$lang['High definition enabled'] = 'Didelė raiška įjungta'; +$lang['History'] = 'Istorija'; +$lang['Hit'] = 'Paspaudimai'; +$lang['Hour'] = 'Valanda'; +$lang['Hoverbox display'] = 'Hoverbox rodymas'; +$lang['I decide to update anyway'] = 'Aš nusprendžiau vistiek atnaujinti'; +$lang['IP'] = 'IP'; +$lang['Ignore All'] = 'Ignoruoti viską'; +$lang['Ignore selected anomalies'] = 'Ignoruoti pasirinktas anomalijas'; +$lang['Ignore this update'] = 'Ignoruoti atnaujinimą'; +$lang['Image Quality'] = 'Paveiksliuko kokybė'; +$lang['Image id'] = 'Paveiksliuko ID'; +$lang['Images manual order was saved'] = 'Paveiksliukų rankinis rūšiavimas išsaugotas'; +$lang['Impossible automatic correction'] = 'Automatiniai pataisymai neįmanomi'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ši tema negali būti aktyvuota, nes jai trūksta pagrindinės temos: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Šios kalbos išjungti neįmanoma, pirmiausia nustatykite kitą kalbą, kaip pagrindinę.'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Suteikite rašymo teises (chmod 777) "%s" katalogui šakniniame jūsų Piwigo instaliacijos kataloge'; +$lang['Go to'] = 'Eiti į'; +$lang['Go to %s or %s for more informations'] = 'Norėdami gauti daugiau informacijos eikite į %s arba %s'; +$lang['Graphics Library'] = 'Grafinė biblioteka'; +$lang['Group'] = 'Grupė'; +$lang['Group management'] = 'Grupės valdymas'; +$lang['Group name'] = 'Grupės pavadinimas'; +$lang['Groups'] = 'Grupės'; +$lang['Groups and users'] = 'Grupės ir vartotojai'; +$lang['Guest Settings'] = 'Svečio nustatymai'; +$lang['Guest cannot be deleted'] = 'Svečias negali būti ištrintas'; +$lang['Guests'] = 'Svečiai'; +$lang['Height'] = 'Aukštis'; +$lang['Hello'] = 'Labas'; +$lang['Hello,'] = 'Labas,'; +$lang['Help Me'] = 'Padėkite man'; +$lang['Hide'] = 'Paslėpti'; +$lang['High definition'] = 'Didelė raiška'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Naujovės leidžia galerijų naršymą, albumų kūrimą ir nuotraukų įkėlimą.'; +$lang['File'] = 'Failas'; +$lang['File upload stopped by extension'] = 'Priedas nutraukė failo atsiuntimą'; +$lang['File/directory read error'] = 'Failo/katalogo skaitymo klaida'; +$lang['Find a new representant by random'] = 'Rasti naują atsitiktinė albumo piktogramą'; +$lang['Follow Orientation'] = 'Srauto orientacija'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Toliau išvardinti priedai gali būti nesuderinami su nauja Piwigo versija:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Toliau išvardintos temos gali būti nesuderinamos su nauja Piwigo versija:'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Piwigo stengsis išsaugot interesų centro vietą nuotraukų dydžiams (pvz. tokiems, kaip "Kvadratas"), kuriems reikalingas apkarpymas.'; +$lang['Forbid this language to users'] = 'Uždrausti vartotojams naudoti šią kalbą.'; +$lang['Forbid this theme to users'] = 'Uždrausti vartotojams naudoti šią temą.'; +$lang['Forbidden'] = 'Draudžiama'; +$lang['Form'] = 'Nuo'; +$lang['GD library is missing'] = 'Trūksta GD bibliotekos'; +$lang['GD version'] = 'GD versija'; +$lang['Gallery title'] = 'Galerijos pavadinimas'; +$lang['Gallery unlocked'] = 'Galerija atrakinta'; +$lang['General statistics'] = 'Galerijos statistika'; +$lang['Generate multiple size images'] = 'Sukurti visų dydžių paveiksliukus'; +$lang['Get Support on Piwigo Forum'] = 'Gaukite pagalbą Piwigo diskusijų forume'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Vykdymo laikas baigėsi, apdirbimas turi būti tęsiamas [Numatomas laikas: %d sek.].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Vykdymo laikas viršytas, apdirbimas turi būti tęsiamas [Numatomas laikas: %d sek.].'; +$lang['Exif extension not available, admin should disable exif use'] = 'Nėra EXIF išplėtimo, administratorius turi išjungti EXIF naudojimą'; +$lang['Extend for templates'] = 'Išplėsti šablonus'; +$lang['Extensions Update'] = 'Plėtinių atnaujinimas'; +$lang['FTP + Synchronization'] = 'FTP + Sinchronizacija'; +$lang['Failed to write file to disk'] = 'Nepavyko įrašyti į diską'; +$lang['Everybody'] = 'Visi'; +$lang['Deny selected users'] = 'Drausti pasirinktus vartotojus'; +$lang['Edit album'] = 'Redaguoti albumą'; +$lang['Edit album permissions'] = 'Redaguoti albumo leidimus'; +$lang['Edit photo'] = 'Redaguoti nuotrauką'; +$lang['Edit photo information'] = 'Redaguoti nuotraukos informaciją'; +$lang['Edit ranks'] = 'Redaguoti reitingus'; +$lang['Edit selected tags'] = 'Redaguoti pasirinktas žymas'; +$lang['Edit tags'] = 'Redaguoti žymas'; +$lang['Element'] = 'Elementas'; +$lang['Element type'] = 'Elemento tipas'; +$lang['Email administrators when a comment is deleted'] = 'Siųsti el-laišką administratoriams, kai ištrinamas komentaras'; +$lang['Email administrators when a comment is modified'] = 'Siųsti el-laišką administratoriams, kai pakeičiamas komentaras'; +$lang['Email admins when a comment requires validation'] = 'Siųsti el-laišką administratoriams, kai komentaras reikalauja patvirtinimo'; +$lang['Email admins when a new user registers'] = 'Siųsti el-laišką administratoriams, kai užsiregistruoja naujas vartotojas'; +$lang['Email admins when a valid comment is entered'] = 'Siųsti el-laišką administratoriams, kai įrašomas tinkamas komentaras'; +$lang['Environment'] = 'Aplinka'; +$lang['Error list'] = 'Klaidų sąrašas'; +$lang['Error on file "%s" : %s'] = 'Failo "%s" klaidos: %s'; +$lang['Error when sending email to %s [%s].'] = 'Įvyko klaida siunčiant el-laišką adresu %s [%s]'; +$lang['Errors caption'] = 'Klaidų legendos'; +$lang['Discover album:'] = 'Atversti albumą'; +$lang['Dump Database'] = 'Duomenų bazės dump\'as'; +$lang['Directory'] = 'Katalogas'; +$lang['Directory does not exist'] = 'Katalogas neegzistuoja'; +$lang['Display options'] = 'Rodymo parinktys'; +$lang['Dissociate from album'] = 'Atskirti nuo albumo'; +$lang['Dissociated'] = 'Atskirta'; +$lang['Do you want to activate anyway?'] = 'Vistiek aktyvuoti ?'; +$lang['Documentation'] = 'Dokumentacija'; +$lang['Does not represent'] = 'Tai nėra piktograma skirta'; +$lang['Download,'] = 'Parsisiųsti,'; +$lang['Downloads'] = 'Parsisiuntimai'; +$lang['Drag to re-order'] = 'Norėdami perrūšiuoti - spauskite ir tempkite'; +$lang['Drop into album'] = 'Pasirinkite albumą'; +$lang['Duplicate'] = 'Dubliuoti'; +$lang['Duplicate selected tags'] = 'Dubliuoti pasirinktas žymas'; +$lang['Duplicates'] = 'Dublikatai'; +$lang['ERROR'] = 'KLAIDA'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'KLAIDA: ŠIS PRIEDAS NERASTAS, BET YRA INSTALIUOTAS! IŠINSTALIUOKITE JĮ DABAR.'; +$lang['Deleted on'] = 'Ištrinta'; +$lang['Deletions'] = 'Trynimai'; +$lang['Deactivate all'] = 'Išjungti viską'; +$lang['Default comments order'] = 'Numatyta komentarų tvarka'; +$lang['Default display'] = 'Numatytas vaizdas'; +$lang['Default photos order'] = 'Numatyta nuotraukų tvarka'; +$lang['Default user cannot be deleted'] = 'Numatytasis vartotojas negali būti pašalintas'; +$lang['Default user does not exist'] = 'Numatytasis vartotojas neegzistuoja'; +$lang['Delete Representant'] = 'Ištrinti albumo piktogramą'; +$lang['Delete multiple size images'] = 'Ištrinti kitų dydžių paveiksliukus'; +$lang['Delete orphan tags'] = 'Ištrinti nežinomas žymas'; +$lang['Delete selected photos'] = 'Ištrinti pažymėtas nuotraukas'; +$lang['Delete selected tags'] = 'Ištrinti pažymėtas žymes'; +$lang['Delete selected users'] = 'Ištrinti pažymėtus vartotojus'; +$lang['Delete this language'] = 'Ištrinti šią kalbą'; +$lang['Delete this theme'] = 'Ištrinti šią temą'; +$lang['Deny selected groups'] = 'Drausti pažymėtas grupes'; +$lang['Description'] = 'Aprašymas'; +$lang['Detailed informations'] = 'Detali informacija'; +$lang['Database'] = 'Duomenų bazė'; +$lang['Database synchronization with files'] = 'Duomenų bazės sinchronizavimas su failais'; +$lang['Date'] = 'Data'; +$lang['Day'] = 'Diena'; +$lang['Deactivate'] = 'Išjungti'; +$lang['Check automatic corrections'] = 'Tikrinti automatines korekcijas'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Atnaujinimo patikrinimas nepavyko dėl nežinomų priežasčių.'; +$lang['Check integrity'] = 'Vientisumo tikrinimas'; +$lang['Choose an action'] = 'Pasirinkite veiksmą'; +$lang['Choose an option'] = 'Pasirinkite variantą'; +$lang['Classic display'] = 'Klasikinis vaizdas'; +$lang['Comments for all'] = 'Komentarai visiems'; +$lang['Complementary mail content'] = 'Pridėti prie pranešimo'; +$lang['Configuration'] = 'Konfigūracija'; +$lang['Confirm merge'] = 'Patvirtini sujungimą'; +$lang['Continue processing treatment'] = 'Tęsti vykdomą apdorojimą'; +$lang['Correction'] = 'Koregavimas'; +$lang['Correction applied with error'] = 'Koregavimas įvykdytas su klaida'; +$lang['Correction applied with success'] = 'Koregavimas sėkmingai įvykdytas'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Pataisyta anomalija nebebus ignoruojama'; +$lang['Create'] = 'Sukurti'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Sukurkite "%s" katalogą pagrindiniame Piwigo instaliacijos kataloge'; +$lang['Create this site'] = 'Sukurti šį puslapį'; +$lang['Crop'] = 'Apkarpyti'; +$lang['Current name'] = 'Dabartinis pavadinimas'; +$lang['Plugin list'] = 'Priedų sąrašas'; +$lang['Plugins'] = 'Priedai'; +$lang['Plugins which need upgrade'] = 'Priedai, kurie bus atnaujinti'; +$lang['Portrait'] = 'Portretas'; +$lang['Position'] = 'Pozicija'; +$lang['Posted %s on %s'] = 'Paskelbta %s ant %s'; +$lang['Privacy level'] = 'Privatumo lygis'; +$lang['Privacy level set to "%s"'] = 'Privatumo lygis nustatytas į "%s"'; +$lang['Private'] = 'Privatu'; +$lang['Properties'] = 'Savybės'; +$lang['Public'] = 'Vieša'; +$lang['Public / Private'] = 'Vieša / Privatu'; +$lang['Purge compiled templates'] = 'Išvalyti parengtus šablonus'; +$lang['Purge history detail'] = 'Išvalyti istorijos detales'; +$lang['Purge history summary'] = 'Išvalyti istorijos suvestinę'; +$lang['Purge search history'] = 'Išvalyti paieškų istorija'; +$lang['Photos'] = 'Nuotraukos'; +$lang['Photos generation in progress...'] = 'Vyksta nuotraukų generavimas'; +$lang['Piwigo Administration'] = 'Piwigo administracija'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo naujienlaiškis'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish priedas - skirtas Lightroom'; +$lang['Piwigo Update'] = 'Piwigo atnaujinimas'; +$lang['Piwigo Uploader'] = 'Piwigo Uploader\'is'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo negali atsisiųsti atnaujinimo failo iš serverio'; +$lang['Piwigo configuration'] = 'Piwigo konfigūracija'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksportavimo priedas, skirtas Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksportavimo priedas, skirtas iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo Android\'ui'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS\'ui (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo skelbimo priedas, skirtas Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo skelbimo priedas, skirtas digiKam'; +$lang['Piwigo version'] = 'Piwigo versija'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Prašau patikrinti katalogo "plugins" ir jo subkatalogu leidimus (CHMOD).'; +$lang['Please select at least two groups'] = 'Prašome pasirinkti mažiausiai dvi grupes'; +$lang['Please wait...'] = 'Prašome palaukti...'; +$lang['Plugin has been successfully copied'] = 'Priedas sėkmingai nukopijuotas'; +$lang['Pending Comments'] = 'Nepatvirtinti komentarai'; +$lang['Permalink'] = 'Fikstuota nuoroda'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Fiksuotą nuorodą %s anksčiau naudojo albumas %s. Pirmiausia ištrinkite ją iš fiksuotu nuorodų istorijos.'; +$lang['Permalink %s is already used by album %s'] = 'Fiksuotą nuorodą %s jau naudoja albumas %s'; +$lang['Permalink history'] = 'Fiksuotų nuorodų istorija'; +$lang['Permalinks'] = 'Fiksuotos nuorodos'; +$lang['Permission denied'] = 'Nesuteiktas leidimas'; +$lang['Permission granted'] = 'Leidimas suteiktas'; +$lang['Permission granted for groups'] = 'Leidimas suteiktas grupėms'; +$lang['Permission granted for users'] = 'Leidimas suteiktas vartotojams'; +$lang['Permission granted thanks to a group'] = 'Leidimas suteiktas dėka grupės'; +$lang['Permission management'] = 'Leidimų tvarkymas'; +$lang['Permissions'] = 'Leidimai'; +$lang['Photo %s of %s'] = 'Nuotrauka %s iš %s'; +$lang['Photo Page'] = 'Nuotraukų puslapis'; +$lang['Photo Properties'] = 'Nuotraukų savybės'; +$lang['Photo informations updated'] = 'Nuotraukų informacijos atnaujintos'; +$lang['Photo name'] = 'Nuotraukos pavadinimas'; +$lang['Photo sizes with crop'] = 'Nuotraukų dydžiai su apkarpymu'; +$lang['Photo unreachable or no support'] = 'Nuotraukos nepasiekiamos arba nepalaikomas jų formatas'; +$lang['Optional URL keyword'] = 'Pasirinktinis URL raktažodis'; +$lang['Options'] = 'Parinktys'; +$lang['Order of menubar items has been updated successfully.'] = 'Meniu juostos tvarka sėkmingai atnaujinta.'; +$lang['Original Size'] = 'Originalus dydis'; +$lang['Original file : %s'] = 'Originalus failas: %s'; +$lang['Original templates'] = 'Originalūs šablonai'; +$lang['Orphan tags deleted'] = 'Nesusietos žymos buvo ištrintos'; +$lang['Other plugins'] = 'Yra kitų priedų'; +$lang['Other private albums'] = 'Kiti privatūs albumai'; +$lang['Overall'] = 'Apžvalga'; +$lang['Page banner'] = 'Puslapio banneris'; +$lang['Page end'] = 'Puslapio pabaiga'; +$lang['Pages seen'] = 'Peržiūrėti puslapiai'; +$lang['Panorama'] = 'Panorama'; +$lang['Parameter'] = 'Nustatymai'; +$lang['Parameters'] = 'Parametrai'; +$lang['Parent album'] = 'Pagrindinis albumas'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Nėra slaptažodžio patvirtinimo. Prašome pakartoti slaptažodį'; +$lang['Password is missing. Please enter the password.'] = 'Nėra slaptažodžio. Prašome įvesti slaptažodį'; +$lang['Path'] = 'Kelias'; +$lang['New photos were added'] = 'Naujos nuotrauos buvo įdėtos'; +$lang['No destination tag selected'] = 'Nepasirinkta paskirties žyma'; +$lang['No display'] = 'Nerodyti'; +$lang['No order field selected'] = 'Nepasirinkta laukelių tvarka'; +$lang['Not cropped correctly?'] = 'Blogai apipjaustyta?'; +$lang['Notification'] = 'Pranešimai'; +$lang['Notify administrators when a comment is'] = 'Informuoti adminstratorius, kai komentaras'; +$lang['Number of albums per page'] = 'Albumų skaičius puslapyje'; +$lang['Number of comments per page'] = 'Komentarų skaičius puslapyje'; +$lang['Number of downloads'] = 'Atsisiuntimų skaičius'; +$lang['Number of rates'] = 'Įvertinimų kiekis'; +$lang['Number of thumbnails to create'] = 'Sukurti piktogramų'; +$lang['Numeric identifier : %d'] = 'Skaitinis identifikatorius: %d'; +$lang['Obsolete Plugins'] = 'Pasenę priedai'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Linux\'e paketu menedžerio pagalba tiesiog instaliuokite Shotwell, tuomet aktyvuokite "Piwigo publishing" parinktį.'; +$lang['Only private albums are listed'] = 'Rodomi tik privatūs albumai'; +$lang['Opacity'] = 'Nepermatomumas'; +$lang['Operating system'] = 'Operacinė sistema'; +$lang['Operation in progress'] = 'Vyksta apdorojimas'; +$lang['Optimizations have been completed with some errors.'] = 'Optimizacijos buvo baigtos su keliomis klaidomis'; +$lang['New parent album'] = 'Naujas pagrindinis albumas'; +$lang['New photos added'] = 'Naujos nuotraukos įkeltos'; +$lang['New tag'] = 'Nauja žyma'; +$lang['No file was uploaded'] = 'Nebuvo įkeltas joks failas'; +$lang['No group is permitted to see this private album'] = 'Jokiai grupei neleidžiama žiūrėti šio privataus albumo'; +$lang['No group selected, no action possible.'] = 'Nepasirinkta jokia grupė, todėl jokių veiksmų vykdyti neįmanoma.'; +$lang['No mail to send.'] = 'Nebus siunčiamas joks laiškas'; +$lang['No members to manage'] = 'Nėra jokių narių, kuriuos galima būtų tvarkyti'; +$lang['No photo can be deleted'] = 'Jokios nuotraukos negali būti ištrintos'; +$lang['No photo in the current set.'] = 'Šiuo metu rinkinyje nėra nuotraukų.'; +$lang['No photo in this album'] = 'Šiame albume nėra nuotraukų'; +$lang['No photo selected, %d photos in current set'] = 'Nepasirinkta jokia nuotrauka, šiame rinkinyje nuotraukų: %d'; +$lang['No photo selected, no action possible.'] = 'Nepasirinkta jokia nuotrauka, neįmanomas joks veiksmas.'; +$lang['No results'] = 'Nėra rezultatų'; +$lang['No user to send notifications by mail.'] = 'Nėra vartotojų, kurie galėtų būti informuoti paštu.'; +$lang['None'] = 'Nėra'; +$lang['Merge selected tags'] = 'Sujungti pasirinktas žymas'; +$lang['Merge tags'] = 'Sujungti žymas'; +$lang['Metadata synchronization results'] = 'Metadata sinchronizacijos rezultatai'; +$lang['Metadata synchronized from file'] = 'Metadata sinchronizuota iš failo'; +$lang['Minimum height'] = 'Minimalus aukštis'; +$lang['Minimum privacy level'] = 'Minimalus privatumo lygis'; +$lang['Minimum width'] = 'Minimalus plotis'; +$lang['Miscellaneous'] = 'Ivairūs'; +$lang['Missing Plugins'] = 'Trūkstami priedai'; +$lang['Missing a temporary folder'] = 'Trūksta laikinų failų katalogo'; +$lang['Modify information'] = 'Keisti informaciją'; +$lang['Month'] = 'Mėnuo'; +$lang['Move'] = 'Perkelti'; +$lang['Move albums'] = 'Perkelti albumus'; +$lang['Move to album'] = 'Perkelti į albumą'; +$lang['Multiple Size'] = 'Ivairūs dydžiai'; +$lang['Name'] = 'Pavadinimas'; +$lang['Name of the duplicate'] = 'Dublikato vardas'; +$lang['New Version'] = 'Nauja versija'; +$lang['New name'] = 'Naujas vardas'; +$lang['List'] = 'Sąrašas'; +$lang['Make this language available to users'] = 'Padaryti šią kalbą prieinamą vartotojams'; +$lang['Make this theme available to users'] = 'Padaryti šią temą prieinamą vartotojams'; +$lang['Manage'] = 'Tvarkyti'; +$lang['Manage Permissions'] = 'Tvarkyti teises'; +$lang['Manage authorizations for selected albums'] = 'Tvarkyti pasirinktų vartotojų leidimus'; +$lang['Manage permissions for group "%s"'] = 'Tvarkyti grupės "%s" teises'; +$lang['Manage permissions for user "%s"'] = 'Tvarkyti vartotojo "%s" teises'; +$lang['Manage photo ranks'] = 'Nuotraukų rūšiavimo tvarka'; +$lang['Manage photos'] = 'Tvarkyti nuotraukas'; +$lang['Manage tags'] = 'Tvarkyti žymas'; +$lang['Manage the members'] = 'Tvarkyti narius'; +$lang['Manage this set of %d photos'] = 'Tvarkyti ši %d nuotraukų rinkinį'; +$lang['Manual order'] = 'Nustatyta tvarka'; +$lang['Maximum file size: %sB.'] = 'Maksimalus failo dydis: %sB.'; +$lang['Maximum height'] = 'Maksimalus aukštis'; +$lang['Maximum width'] = 'Maksimalus plotis'; +$lang['Members'] = 'Nariai'; +$lang['Menu Management'] = 'Meniu'; +$lang['Merge selected groups'] = 'Sujungti pasirinktas grupes'; +$lang['Last send'] = 'Paskutini siuntimas'; +$lang['Level 0'] = '---'; +$lang['Link all album photos to some existing albums'] = 'Susieti visas albumo nuotraukas su kokiu nors egzistuojančiu albumu'; +$lang['Linked albums'] = 'Susieti albumai'; +$lang['Local'] = 'Vietinis'; +$lang['Lock'] = 'Užrakinti'; +$lang['Lock albums'] = 'Užrakinti albumus'; +$lang['Lock gallery'] = 'Užrakinti galerijas'; +$lang['Locked'] = 'Užrakinta'; +$lang['Mail address is obligatory for all users'] = 'Pašto adresas privalomas visiems vartotojams'; +$lang['Mail content'] = 'Pranešimo turinys'; +$lang['Mail sent to %s [%s].'] = 'Pranešimas išsiųstas %s [%s].'; +$lang['Main "guest" user does not exist'] = 'Pagrindinis "guest" vartotojas neegzistuoja'; +$lang['Main "guest" user status is incorrect'] = 'Neteisingas pagrindinio "guest" vartotojo statusas'; +$lang['Main "webmaster" user does not exist'] = 'Pagrindinis "webmaster" vartotojas neegzistuoja'; +$lang['Main "webmaster" user status is incorrect'] = 'Neteisingas pagrindinio "webmaster" vartotojo statusas'; +$lang['Main Page'] = 'Pagrindinis puslapis'; +$lang['Maintenance'] = 'Priežiūra'; +$lang['Last revisions'] = 'Paskutiniai pakeitimai'; +$lang['Last import'] = 'Paskutinė įkrova'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Jei nėra HD kokybės nuotraukos, bet esamas dydis yra didesnis už kitų dydžių dimensijas, tai Piwigo ją perkels ir traktuos kaip HD kokybės. Taip pat iš jos bus sukurti mažesnio dydžio paveiksliukai.'; +$lang['If you encounter problems or have any question, please send a message to'] = 'jeigu iškilo problemų arba turite kokių nors klausimų - prašome rašykite adresu'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Jūsų php.ini faile upload_max_filesize (%sB) yra didesnis už post_max_size (%sB), reikėtų pakeisti šią nuostatą.'; +$lang['Include display of recent photos grouped by dates'] = 'Taip pat rodyti nesenas nuotraukas, surūšiuotas pagal datas'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Taip pat rodyti istorijos duomenis (Įspėjimas, gali būti viršytas serverio atminties limitas)'; +$lang['Information data registered in database'] = 'Informacija registruota duomenų bazėje'; +$lang['Install on your computer,'] = 'Įdiekite į savo kompiuterį,'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Likite su Piwigo projektu, užsisakykite Piwigo naujienlaiškį. Jums el. paštu bus atsiųstas pranešimas, kai bus išleista nauja versija (kartais su saugumo pataisymais, kuriuos būtina žinoti ir atnaujinti) ir kai projekte ivyksta svarbūs įvykiai. Paprastai - tik keletas laiškų per metus.'; +$lang['Landscape'] = 'Landscape'; +$lang['Language has been successfully installed'] = 'Kalba buvo sėkmingai instaliuota'; +$lang['Learn more'] = 'Sužinoti daugiau'; +$lang['Level 1'] = 'Kontaktai'; +$lang['Level 2'] = 'Draugai'; +$lang['Level 4'] = 'Šeima'; +$lang['Level 8'] = 'Administratoriai'; +$lang['Link all album photos to a new album'] = 'Susieti visas albumo nuotraukas į naują albumą'; +$lang['reduce to single existing albums'] = 'apriboti iki vieno egzistuojančio albumo'; +$lang['unit mode'] = 'Individualiai'; +$lang['the forum'] = 'forumas'; +$lang['the wiki'] = 'wiki'; +$lang['top left corner'] = 'viršutinis kairysis kampas'; +$lang['top right corner'] = 'viršutinis dešinysis kampas'; +$lang['total time'] = 'viso laiko'; +$lang['unknown'] = 'nežinomas'; +$lang['unset'] = 'nepažymėtas'; +$lang['update the database from files'] = 'atnaujinti duomenų bazę su failais'; +$lang['user "%s" added'] = 'vartotojas "%s" pridėtas'; +$lang['user_status_admin'] = 'Administratorius'; +$lang['user_status_generic'] = 'Bendro pobūdžio'; +$lang['user_status_guest'] = 'Svečias'; +$lang['user_status_normal'] = 'Vartotojas'; +$lang['user_status_webmaster'] = 'Webmasteris'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Vartotojai norėdami matyti šį albumą turi prisijungti ir turėti atitinkamus leidimus'; +$lang['width must be a number superior to'] = 'plotis turi būti didesnis už'; +$lang['wrong filename'] = 'blogas failo vardas'; +$lang['registered users'] = 'registruoti vartotojai'; +$lang['registration date'] = 'registracijos data'; +$lang['remove author'] = 'pašalinti autoriu'; +$lang['remove creation date'] = 'pašalinti sukūrimo datą'; +$lang['remove tags'] = 'pašalinti žymas'; +$lang['remove this filter'] = 'pašalinti šį filtrą'; +$lang['remove title'] = 'pašalinti pavadinimą'; +$lang['selection'] = 'rinkinys'; +$lang['set to'] = 'nustatyti į'; +$lang['show details'] = 'rodyti detales'; +$lang['simple visitors'] = 'paprasti lankytojai'; +$lang['singly represented'] = 'fiksuota albumo piktograma'; +$lang['status'] = 'būsena'; +$lang['sub-albums'] = 'vidiniai albumai'; +$lang['synchronize files metadata with database photos informations'] = 'sinchronizuoti duomenų bazės nuotraukas su failų metaduomenimis'; +$lang['synchronize files structure with database'] = 'sinchronizuoti failų struktūrą su duomenų baze'; +$lang['target'] = 'taikinys'; +$lang['test'] = 'bandyti'; +$lang['test this remote site'] = 'bandyti šią nutolusią svetainę'; +$lang['on'] = 'ant'; +$lang['on the %d selected photos'] = 'ant %d pasirinktų nuotraukų'; +$lang['only directories'] = 'tik katalogai'; +$lang['only perform a simulation (no change in database will be made)'] = 'tik simuliuoti (niekas nebus pakeista duomenų bazėje)'; +$lang['other'] = 'kitas'; +$lang['overrides existing values with empty ones'] = 'perrašyti esamas reikšmes tuščiomis'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader verčiamas kaip Piwigo Uploader. pLoader paruošia ir perkelia nuotraukas iš Jūsų kompiuterio į Jūsų Piwigo nuotraukų galeriją.'; +$lang['pending validation'] = 'laukia patvirtinimo'; +$lang['photos added in the database'] = 'nuotraukos pridėtos į duomenų bazę'; +$lang['photos candidates for metadata synchronization'] = 'nuotraukų kandidatai metaduomenų sinchronizacijai'; +$lang['photos deleted from the database'] = 'nuotraukos pašalintos iš duomenų bazės'; +$lang['photos informations synchronized with files metadata'] = 'nuotraukų informacija sinchronizuota su failų metaduomenimis'; +$lang['photos per page'] = 'nuotraukos į puslapį'; +$lang['photos updated in the database'] = 'nuotraukos atnaujintos duomenų bazėje'; +$lang['pixels'] = 'pikseliai'; +$lang['private'] = 'privatu'; +$lang['public'] = 'vieša'; +$lang['randomly represented'] = 'atsitiktinė albumo piktograma'; +$lang['ranks'] = 'vertinama'; +$lang['high'] = 'didelis'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto yra numatytoji nuotraukų tvarkymo programa MacOSX aplinkoje. Piwigo eksportavimo priedas leidžia kurti naujus albumus ir eksportuoti nuotraukas tiesiai iš iPhoto į jūsų Piwigo nuotraukų galeriją.'; +$lang['include child albums'] = 'įtraukti vidinius albumus'; +$lang['include photos with lower privacy level'] = 'įtraukti nuotraukas su mažesniu privatumo lygiu'; +$lang['jump to album'] = 'peršokti į albumą'; +$lang['jump to photo'] = 'peršokti į nuotrauką'; +$lang['leave'] = 'palikti'; +$lang['manage album photos'] = 'tvarkyti albumo nuotraukas'; +$lang['manage sub-albums'] = 'tvarkyti subalbumus'; +$lang['manual order'] = 'rankinė tvarka'; +$lang['middle'] = 'vidurys'; +$lang['modified'] = 'modifikuotas'; +$lang['new'] = 'nauja'; +$lang['no write access'] = 'nėra rašymo teisių'; +$lang['none'] = 'nė vienas'; +$lang['nothing'] = 'niekas'; +$lang['number of miniaturized photos'] = 'sukurta piktogramų'; +$lang['display'] = 'rodyti'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'rodyti maksimaliai informacijos (pridėti/pašalinti albumai ir nuotraukos)'; +$lang['dissociate from group'] = 'atskirti nuo grupės'; +$lang['errors during synchronization'] = 'klaidos sinchronizuojant'; +$lang['even already synchronized photos'] = 'netgi jau sinchronizuotas nuotraukas'; +$lang['existing album'] = 'egzistuojantis albumas'; +$lang['first photo added on %s'] = 'pirmoji nuotrauka pridėta %s'; +$lang['for the file format'] = 'failo formatui'; +$lang['for this file format'] = 'šiam failo formatui'; +$lang['global mode'] = 'globalus režimas'; +$lang['group "%s" added'] = 'grupė "%s" pridėta'; +$lang['group "%s" deleted'] = 'grupė "%s" pašalinta'; +$lang['group "%s" updated'] = 'grupė "%s" atnaujinta'; +$lang['guest'] = 'svečias'; +$lang['height must be a number superior to'] = 'aukštis turi būti skaičius, didesnis už'; +$lang['hide details'] = 'slėpti detales'; +$lang['bottom left corner'] = 'apatinis kairysis kampas'; +$lang['bottom right corner'] = 'apatinis dešinysis kampas'; +$lang['cancel manual order'] = 'atšaukti rankinį rūšiavimą'; +$lang['clean'] = 'apvalyti'; +$lang['confirm'] = 'patvirtinti'; +$lang['create a new album'] = 'sukurti naują albumą'; +$lang['create a new site'] = 'sukurti naują puslapį'; +$lang['created'] = 'sukurta'; +$lang['custom'] = 'Specialus'; +$lang['default'] = 'numatytasis'; +$lang['default values'] = 'numatytosios reikšmės'; +$lang['delete'] = 'pašalinti'; +$lang['delete album'] = 'pašalinti albumą'; +$lang['delete photo'] = 'pašalinti nuotrauką'; +$lang['delete this site and all its attached elements'] = 'pašalinti šį puslapį ir visą susijusią informaciją'; +$lang['deleted'] = 'pašalinta'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam yra pažangi ir nemokama nuotraukų tvarkymo programa skirta Linux, Windows ir MacOSX'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam skirta fotografams, kurie nori žiūrėti, tvarkyti, redaguoti, pagerinti, organizuoti ir dalintis nuotraukomis.'; +$lang['directories + files'] = 'katalogai + failai'; +$lang['You are running on development sources, no check possible.'] = 'Veikia iš kūrėjų kodo, patikrinimas neįmanomas.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Neįmanoma nustatyti numatytosios nuotraukų rūšiavimo tvarkos, nes tai padaryta jūsų vietinėje konfigūracijoje.'; +$lang['You cannot move an album in its own sub album'] = 'Negalima perkelti albumo į jo paties subalbumą'; +$lang['You have %d orphan tags: %s.'] = 'Jūs turite %d nepririštų žymų: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Jūs esate nurodęs $conf[\'order_by\'] savo konfigūraciniame faile, šis parametras yra pasenęs, prašome jį pašalinti arba pervardinti į $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Jūs esate užsisakęs pranešimų prenumeratą paštu.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Jūs neužsisakęs pranešimų prenumeratos paštu.'; +$lang['You might go to plugin list to install and activate it.'] = 'Eikite į priedų sąrašą, kad jį instaliuoti ir aktyvuoti '; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Norėdami naudotis visais programos privalumais jūs turėtumėte atnaujinti savo sistemą, kitaip ji gali veikti neteisingai arba neveikti išvis'; +$lang['Your configuration settings are saved'] = 'Jūsų konfigūracijos parametrai išsaugoti'; +$lang['[%s] Visit album %s'] = '[%s] Aplankyti albumą %s'; +$lang['[NBM] Problems or questions'] = '[NBM] Problemos ir klausimai'; +$lang['any visitor can see this album'] = 'visi lankytojai gali matyti šį albumą'; +$lang['apply automatic sort order'] = 'taikyti automatinę rūšiavimo tvarką'; +$lang['associate to group'] = 'priskirti prie grupės'; +$lang['automatic order'] = 'automatinė tvarka'; +$lang['average time'] = 'vidutinis laikas'; +$lang['between'] = 'tarp'; +$lang['between %.2f and %.2f'] = 'tarp %.2f ir %.2f'; +$lang['between %d and %d pixels'] = 'tarp %d ir %d pikselių'; +$lang['all'] = 'visi'; +$lang['an error happened'] = 'ivyko klaida'; +$lang['and'] = 'ir'; +$lang['You need to confirm deletion'] = 'Šalinimą Jūs turite patvirtinti'; +$lang['Zoom'] = 'Priartinti'; +$lang['add a new watermark'] = 'pridėti naują vandens ženklą'; +$lang['add new photos to caddie'] = 'pridėti naujus nuotraukų dydžius į krepšelį'; +$lang['added'] = 'pridėtas'; +$lang['administrators'] = 'administratoriai'; +$lang['albums added in the database'] = 'albumas pridėtas į duomenų bazę'; +$lang['albums deleted in the database'] = 'albumas pašalintas iš duomenų bazės'; +$lang['Week starts on'] = 'Savaitės pradžia yra'; +$lang['Who can see these photos?'] = 'Kas gali matyti šias nuotraukas?'; +$lang['Who can see this photo?'] = 'Kas gali matyti šią nuotrauką?'; +$lang['Width'] = 'Plotis'; +$lang['With blank value, gallery title will be used'] = 'Jei tuščia, tai bus panaudotas galerijos pavadinimas'; +$lang['With no album'] = 'Jokiame albume'; +$lang['With no tag'] = 'Be žymos'; +$lang['With no virtual album'] = 'Jokiam virtualiame albume'; +$lang['X Position'] = 'X pozicija'; +$lang['X Repeat'] = 'X kartojimas'; +$lang['Y Position'] = 'Y Pozicija'; +$lang['Year'] = 'Metai'; +$lang['You are running the latest version of Piwigo.'] = 'Jūs naudojate naujausią Piwigo versiją.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Jūs naudojate įkėlima per naršyklę. Pamėginkite įkėlimą per Flash.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Jūs naudojatės įkėlimu per Flash. Iškilo bėdų ? Pamėginkite įkėlima per naršyklę.'; +$lang['You can activate only one mobile theme.'] = 'Jūs galite aktyvuoti tik vieną mobilią temą.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Jūs galite atnaujinti tiesiai į Piwigo %s be atnaujinimo į Piwigo %s (rekomenduojama).'; +$lang['You cannot delete your account'] = 'Jūs negalite ištrinti savo paskyros'; +$lang['View in gallery'] = 'Žiūrėti galerijoje'; +$lang['Virtual Links'] = 'Virtualios nuorodos'; +$lang['Virtual album'] = 'Virtualus albumas'; +$lang['Virtual album added'] = 'Virtualus albumas sukurtas'; +$lang['Virtual album deleted'] = 'Virtualus albumas pašalintas'; +$lang['Virtual album name'] = 'Virtualaus albumo pavadinimas'; +$lang['Virtual albums to move'] = 'Virtualūs albumai, kuriuos reikia perkelti'; +$lang['Visit Gallery'] = 'Aplankyti galeriją'; +$lang['Visit Piwigo project website'] = 'Aplankyti Piwigo projekto svetainę'; +$lang['Visit language site'] = 'Aplankyti kalbų puslapį'; +$lang['Visit plugin site'] = 'Aplankyti priedų puslapį'; +$lang['Visit theme site'] = 'Aplankyti temų puslapį'; +$lang['Visited %d times'] = 'Aplankyta %d kart.'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'DĖMESIO! Nepanašu, kad šis priedas būtų suderinamas su šia Piwigo versija.'; +$lang['Waiting'] = 'Laukiama'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Dėmesio: prenumerata arba jos nutraukimas išsiųs pašto pranešimus vartotojams'; +$lang['Watermark'] = 'Vandens ženklas'; +$lang['Web Form'] = 'Puslapio forma'; +$lang['Webmaster cannot be deleted'] = 'Webmasteris negali būti ištrintas'; +$lang['Webmaster status is required.'] = 'Reikalingas webmasterio statusas'; +$lang['Updates'] = 'Atnaujinimai'; +$lang['Upload'] = 'Įkėlimas'; +$lang['Upload Photos'] = 'Įkelti nuotraukas'; +$lang['Uploaded Photos'] = 'Įkeltos nuotraukos'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Naudoti nuotraukų rūšiavimą pagal nutylėjimą (tokį, koks nustatytas konfigūraciniame faile)'; +$lang['Used metadata'] = 'Naudojami metaduomenys'; +$lang['User'] = 'Vartotojas'; +$lang['User "%s" created with "%s" like password'] = 'Sukurtas vartotojas "%s" su slaptažodžiu "%s"'; +$lang['User %s [%s] added.'] = 'Vartotojas %s [%s] pridėtas.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Vartotojas %s [%s] pridėtas į prenumeratorių sąrašą.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Vartotojas %s [%s] nebuvo pridėtas į prenumeratorių sąrašą.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Vartotojas %s [%s] nepašalintas iš prenumeratorių sąrašo.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Vartotojas %s [%s] pašalintas iš prenumeratorių sąrašo.'; +$lang['User comments validation'] = 'Vartotojų komentarų patvirtinimas'; +$lang['User list'] = 'Vartotojų sąrašas'; +$lang['User status'] = 'Vartotojo būsena'; +$lang['Users'] = 'Vartotojai'; +$lang['Validate'] = 'Patvirtinti'; +$lang['Validation'] = 'Patvirtinimas'; +$lang['Version'] = 'Versija'; +$lang['Toggle \'default group\' property'] = 'Atstatyti \'grupė pagal nutylėjima\' reikšmę'; +$lang['Type here the name of the new group'] = 'Įveskite naujos grupės pavadinima čia'; +$lang['Type here the title'] = 'Įveskite pavadinima čia'; +$lang['Type in a search term'] = 'Įveskite paieškos frazę'; +$lang['Unable to check for upgrade.'] = 'Neišeina patikrinti ar yra atnaujinimų.'; +$lang['Unable to dump database.'] = 'Neišeina eksportuoti duomenų bazės.'; +$lang['Uncheck all'] = 'Atžymėti viską'; +$lang['Uninstall'] = 'Išinstaliuoti'; +$lang['Uninstalled Plugins'] = 'Išinstaliuoti priedai'; +$lang['Unknown upload error'] = 'Nežinoma įkėlimo klaida'; +$lang['Unlock gallery'] = 'Atrakinti galeriją'; +$lang['Unlocked'] = 'Atrakinta'; +$lang['Unsubscribe from notification by mail'] = 'Nutraukti pranešimų prenumeratą paštu'; +$lang['Unsubscribed'] = 'Prenumerata nutraukta'; +$lang['Update All'] = 'Atnaujinti viską'; +$lang['Update Complete'] = 'Atnaujinimas baigtas'; +$lang['Update albums informations'] = 'Atnaujinti albumų informaciją'; +$lang['Update in progress... Please wait.'] = 'Vyksta atnaujinimas... Prašome palaukti.'; +$lang['Update photos information'] = 'Atnaujinti nuotraukų informaciją'; +$lang['Update to Piwigo %s'] = 'Atnaujinti iki Piwigo %s'; +$lang['This group will be set to default'] = 'Ši grupė bus naudojama pagal nutylėjima'; +$lang['This group will be unset to default'] = 'Ši grupė nebebus naudojama pagal nutylėjimą'; +$lang['This is a major update, with new exciting features.'] = 'Tai yra didelis atnaujinimas su naujomis ir idomiomis funkcijomis.'; +$lang['This is a minor update, with only bug corrections.'] = 'Tai yra nedidelis atnaujinimas su klaidų pataisymais.'; +$lang['This name is already used by another group.'] = 'Šis pavadinimas jau naudojamas kitos grupės.'; +$lang['This site already exists'] = 'Toks puslapis jau yra'; +$lang['This theme was not designed to be directly activated'] = 'Ši tema nebuvo sukurta tiesioginiam aktyvavimui'; +$lang['Thumbnail'] = 'Piktograma'; +$lang['Thumbnails generation in progress...'] = 'Vyksta piktogramų generavimas...'; +$lang['Time'] = 'Laikas'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Laikas išsiųsti paštą ribotas. Kiti laiškai buvo praleisti.'; +$lang['Title'] = 'Pavadinimas'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Norėdami eksportuoti nuotraukas iš digiKam į Piwigo - tiesiog instaliuokite digiKam ir Kipi priedus.'; +$lang['To send ?'] = 'Siųsti?'; +$lang['To subscribe'] = 'Prenumeruoti'; +$lang['To unsubscribe'] = 'Nutraukti prenumeratą'; +$lang['Tools'] = 'Įrankiai'; +$lang['Two updates are available'] = 'Yra du atnaujinimai'; +$lang['Type here the author name'] = 'Įveskite autoriaus varda čia'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Įkeltas failas viršija MAX_FILE_SIZE dydį, kuris nurodytas HTML formoje'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Įkeltas failas viršija upload_max_filesize dydį, nurodytą php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Įkelta tik dalis failo'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Įkelti failai viršija post_max_size dydį, nurodyta php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Instaliuota %s versija [%s] nesuderinama su reikalinga versija [%s]'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmasteris užprenumeravo jums pranešimus paštu.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmasteris jums nutraukė pranešimų paštu prenumeratą.'; +$lang['The whole page'] = 'Visas puslapis'; +$lang['The whole set'] = 'Visas rinkinys'; +$lang['Theme has been successfully installed'] = 'Tema sėkmingai instaliuota'; +$lang['Themes'] = 'Išvaizda'; +$lang['Themes which need upgrade'] = 'Temos, kurias reikėtų atnaujinti'; +$lang['There is no available subscribers to mail.'] = 'Nėra prenumeratorių, kuriuos informuoti paštu.'; +$lang['There is no group in this gallery.'] = 'Šioje galerijoje nėra grupių.'; +$lang['There is no other language available.'] = 'Daugiau kalbų nėra.'; +$lang['There is no other plugin available.'] = 'Daugiau priedų nėra.'; +$lang['There is no other theme available.'] = 'Daugiau galimų temų nėra.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Šis albumas turi %d nuotr., pridėtų tarp %s ir %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Šis albumas turi %d nuotr., kurios buvo pridėtos %s.'; +$lang['This album contains no photo.'] = 'Šiame albume nėra nuotraukų.'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Vartotojai rodomi tik tada, jei yra ka naujo jiems pranešti.'; +$lang['The original image quality must be a number between %d and %d'] = 'Originalo kokybė turi būti skaičius tarp %d ir %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Originalus maksimalus aukštis turi būti skaičius tarp %d ir %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Originalus maksimalus plotis turi būti skaičius tarp %d ir %d'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Fiksuotos nuorodos pavadinimas turi susidėti iš a-z, A-Z, "-", "_" ar "/". Jis neturi būti vien iš skaitmenų arba prasidėti skaičiumi su "-"'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Nuotraukos dydis bus sumažintas iki %dx%d pikselių.'; +$lang['Switch to clear or dark colors for administration'] = 'Administracijai rinktis šviesius arba tamsius tonus'; +$lang['The %d following tags were deleted'] = 'Sekančios %d žymos buvo ištrintos'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Failas arba katalogas nepasiekiamas (jis neegzistuoja arba nepakanka teisių)'; +$lang['The following tag was deleted'] = 'Sekanti žyma buvo ištrinta'; +$lang['The gallery URL is not valid.'] = 'Netinkama galerijos URL'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Grupės pavadinimas turi būti be kabučių " arba \', taip pat negali būti tuščias.'; +$lang['The name of an album must not be empty'] = 'Albumo pavadinimas negali būti tuščias'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Katalogų pavadinimai gali būti sudaromi tik iš raidžių, skaičių ir simbolių "-", "_", ar "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Komentarų skaičius puslapyje turi būti tarp 5 ir 50 imtinai.'; +$lang['Sum of rates'] = 'vertinimų suma'; +$lang['Summary'] = 'Apibendrinimas'; +$lang['Support'] = 'Palaikymas'; +$lang['Synchronize'] = 'Sinchronizuoti'; +$lang['Synchronize metadata'] = 'Sinchronizuoti metaduomenis'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ŠIS PRIEDAS YRA INTEGRUOTAS Į PIWIGO! NEDELSIANT JĮ IŠINSTALIUOKITE!'; +$lang['Tag "%s" already exists'] = 'Žyma "%s" jau egzistuoja'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Žyma "%s" dabar yra "%s" dublikatas'; +$lang['Tag "%s" was added'] = 'Žyma "%s" pridėta'; +$lang['Tag selection'] = 'Pasirinktos žymos'; +$lang['Tags %s merged into tag %s'] = 'Žymos %s apjungtos į žyma %s'; +$lang['Templates'] = 'Šablonai'; +$lang['Templates configuration has been recorded.'] = 'Šablonų konfigūracija irašyta.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export priedas leidžia jums kurti albumus ir eksportuoti nuotraukas.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish priedas leidžia jums eksportuoti ir sinchronizuoti nuotraukas iš Lightroom tiesiai į Jūsų Piwigo nuotraukų galeriją'; +$lang['The anomaly will be ignored until next application version'] = 'Anomalija bus ignoruojama iki sekančios programos versijos'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interesų centras yra reikšmingiausia nuotraukos sritis.'; +$lang['Show info'] = 'Rodyti informaciją'; +$lang['Show menubar'] = 'Rodyti meniu juostą'; +$lang['Simulation'] = 'Simuliacija'; +$lang['Site manager'] = 'Svetainės valdymas'; +$lang['Some themes and plugins may be not available yet.'] = 'Kai kurios temos ir priedai kol kas gali būti neprieinami.'; +$lang['Some upgrades are available for extensions.'] = 'Yra keletas išplėtimų atnaujinimų.'; +$lang['Source tag'] = 'Šaltinio žyma'; +$lang['Start Upload'] = 'Pradėti įkėlimą'; +$lang['Start pLoader and add your photos.'] = 'Paleiskite pLoader ir pradėkite įkelinėti savo nuotraukas.'; +$lang['Statistics'] = 'Statistika'; +$lang['Status'] = 'Būsena'; +$lang['Status of user "%s" updated'] = 'Atnaujintas vartotojo "%s" statusas'; +$lang['Storage album'] = 'Albumas saugojimui'; +$lang['Subscribe'] = 'Prenumeruoti'; +$lang['Subscribe %s'] = 'Prenumeruoti %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Užprenumeruoti %s Piwigo anonsų naujienlaiškį'; +$lang['Subscribe to notification by mail'] = 'Prenumeruoti pranešimus paštu'; +$lang['Subscribe/unsubscribe users'] = 'Valdyti vartotojų prenumeratą'; +$lang['Subscribed'] = 'Prenumeruota'; +$lang['Select groups...'] = 'Pasirinkite grupes'; +$lang['Select recipients'] = 'Pasirinkite gavėjus'; +$lang['Select the destination tag'] = 'Pasirinkite kitą žymą'; +$lang['Select users...'] = 'Pasirinkite vartotojus...'; +$lang['Select:'] = 'Pasirinkite:'; +$lang['Selection'] = 'Parinktys'; +$lang['Send'] = 'Siųsti'; +$lang['Send an information email to group members'] = 'Siųsti informacinį pranešimą grupės nariams'; +$lang['Send connection settings by email'] = 'Siųsti prisijungimo nuostatas el-paštu'; +$lang['Send mail as'] = 'Siųsti paštą kaip'; +$lang['Send mail on HTML format'] = 'Siųsti paštą HTML formatu'; +$lang['Send mail to users'] = 'Siųsti paštą vartotojams'; +$lang['Set as default language for unregistered and new users'] = 'Pasirinkite numatytąją kalbą neregistruotiems ir naujiems vartotojams.'; +$lang['Set as default theme for unregistered and new users'] = 'Pasirinkite numatytąją temą neregistruotiems ir naujiems vartotojams.'; +$lang['Set author'] = 'Nustatyti autorių'; +$lang['Set creation date'] = 'Nustatyti sukūrimo datą'; +$lang['Set title'] = 'Nustatyti pavadinimą'; +$lang['Settings'] = 'Nustatymai'; +$lang['Sharpen'] = 'Paaštrinti'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell yra atvirojo kodo skaitmeninių nuotraukų apdorojimo programa skirta Linux. Ji yra numatytasis nuotraukų menedžeris Ubuntu ir Fedora distribucijose.'; +$lang['Save Settings'] = 'Išsaugoti pakeitimus'; +$lang['Save Template Directory'] = 'Išsaugoti šablonų katalogą'; +$lang['Save manual order'] = 'Išsaugoti rankinį rikiavimą'; +$lang['Save order'] = 'Išsaugoti rikiavimą'; +$lang['Save to permalink history'] = 'Išsaugoti į fiksuotų nuorodų istoriją'; +$lang['Save visits in history for'] = 'Saugoti apsilankymus'; +$lang['Search for new images in the directories'] = 'Ieškoti naujų paveiksliukų kataloguose'; +$lang['Searching...'] = 'Ieškoma...'; +$lang['Section'] = 'Sekcija'; +$lang['See you soon,'] = 'Iki pasimatymo,'; +$lang['See you soon.'] = 'Iki pasimatymo.'; +$lang['Select a file'] = 'Pasirinkite failą'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Pele pažymėkite interesų centro zoną.'; +$lang['Select an album'] = 'Pasirinkite albumą'; +$lang['Select at least one album'] = 'Pasirinkite bent vieną albumą'; +$lang['Select at least one comment'] = 'Pasirinkite bent vieną komentarą'; +$lang['Select at least one photo'] = 'Pasirinkite bent vieną nuotrauką'; +$lang['Select at least one user'] = 'Pasirinkite bent vieną vartotoją'; +$lang['Select at least two tags for merging'] = 'Apjungimui pasirinkite bent dvi žymas'; +$lang['Select files'] = 'Pasirinkite failus'; +$lang['Predefined filter'] = 'Iš anksto nustatytas filtras'; +$lang['Preferences'] = 'Nustatymai'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Laikas paruošti vartotojų sąrašą, kuriems bus išsiųstas paštas yra apribotas. Kiti vartotojai nerodomi.'; +$lang['Released on'] = 'Išleista'; +$lang['Remote'] = 'Nutolęs'; +$lang['Remove all filters'] = 'Pašalinti visus filtrus'; +$lang['Remove from caddie'] = 'Pašalinti iš krepšelio'; +$lang['Rename'] = 'Pervardinti'; +$lang['Repair and optimize database'] = 'Remontuoti ir optimizuoti duomenų bazę'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Originalių šablonų keitimas individualizuotais iš template-extension pakatalogio'; +$lang['Replacers (customized templates)'] = 'Pakaitalai (individualizuoti šablonai)'; +$lang['Representant'] = 'Albumo piktograma'; +$lang['Representation of albums'] = 'Albumo piktograma'; +$lang['Representative'] = 'Albumo piktograma'; +$lang['Represents'] = 'Yra piktograma skirta'; +$lang['Reset ignored updates'] = 'Perkrauti ignoruotus atnaujinimus'; +$lang['Resize'] = 'Keisti dydį'; +$lang['Resize after upload'] = 'Keisti dydį po įkrovimo'; +$lang['Restore'] = 'Atstatyti'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Atstatyti į numatytąją konfigūraciją. Įskiepių parametrai bus prarasti!'; +$lang['Purge never used notification feeds'] = 'Išvalyti niekad nenaudotus pranešimų srautus'; +$lang['Purge sessions'] = 'Išvalyti sesijas'; +$lang['Purge user cache'] = 'Įšvalyti vartotojų kešą'; +$lang['Quick Local Synchronization'] = 'Greitoji vietinė sinchronizacija'; +$lang['Random photo'] = 'Atsitiktinė nuotrauka'; +$lang['Rate'] = 'Įvertinimas'; +$lang['Rate date'] = 'Įvertinimo data'; +$lang['Rated %d times, score : %.2f'] = 'Įvertinta %d kart., rezultatas: %.2f'; +$lang['Rating'] = 'Vertinimas'; +$lang['Rating by guests'] = 'Leisti vertinti svečiams'; +$lang['Ratio'] = 'Santykis'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klientas Android\'ui) yra atvirojo kodo (GPL v3) Piwigo klientas Android platformai.'; +$lang['Read Piwigo Documentation'] = 'Skaitykite Piwigo dokumentaciją'; +$lang['Refresh'] = 'Atnaujinti'; +$lang['Refresh photo set'] = 'Atnaujinti nuotraukų rinkinį'; +$lang['Reinitialize check integrity'] = 'Iš naujo pradėti vientisumo patikrinimą'; +$lang['Reject'] = 'Atmesti'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Dydžio keitimas po įkėlimo išjungtas dėl to, kad naudojate GD kaip grafinę biblioteką'; +$lang['Select at least one tag'] = 'Pasirinkite bent vieną žymą'; +$lang['Basic settings'] = 'Paprasti nustatymai'; +$lang['General'] = 'Bendra'; +$lang['Mail theme'] = 'Pašto tema'; +$lang['Last visit on %s, %s.'] = 'Paskutini karta aplankyta %s, %s.'; +$lang['Registered on %s, %s.'] = 'Registruota %s, %s.'; +$lang['Showing %s to %s of %s users'] = 'Rodoma nuo %s iki %s iš %s narių'; +$lang['Update user'] = 'Atnaujinti narį'; +$lang['on the %d selected users'] = 'iš %d pasirinktų narių'; +$lang['%d of %d users selected'] = 'pasirinkta %d iš %d narių'; +$lang['(filtered from %s total users)'] = '(filtruota iš %s narių)'; +$lang['All %d users are selected'] = 'Pasirinkti visi %d nariai'; +$lang['Change password'] = 'Keisti slaptažodį'; +$lang['Change username'] = 'Keisti username'; +$lang['Loading...'] = 'Kraunasi...'; +$lang['No matching user found'] = 'Narių, atitinkančių kriterijus, nerasta'; +$lang['No user selected of %d users'] = 'Nepasirinktas nė vienas iš %d narių'; +$lang['No user selected, no action possible.'] = 'Nepasirinktas narys, negaliu tęsti veiksmų.'; +$lang['Password updated'] = 'Slaptažodis atnaujintas'; +$lang['Show %s users'] = 'Rodyti %s vartotojus'; +$lang['User %s added'] = 'Vartotojas %s pridėtas'; +$lang['User %s updated'] = 'Vartotojo %s informacija atnaujinta'; +$lang['Users modified'] = 'Vartotojo informacija pakeista'; +$lang['Close user details'] = 'Užverti vartotojo detales'; +$lang['Open user details'] = 'Atverti vartotojo detales'; +$lang['close'] = 'uždaryti'; +?> \ No newline at end of file diff --git a/sources/language/lt_LT/common.lang.php b/sources/language/lt_LT/common.lang.php new file mode 100644 index 0000000..aa19092 --- /dev/null +++ b/sources/language/lt_LT/common.lang.php @@ -0,0 +1,435 @@ + \ No newline at end of file diff --git a/sources/language/lt_LT/help/cat_move.html b/sources/language/lt_LT/help/cat_move.html new file mode 100755 index 0000000..f2ce578 --- /dev/null +++ b/sources/language/lt_LT/help/cat_move.html @@ -0,0 +1,14 @@ +

                  Virtualiųjų albumų perkėlimas

                  + +

                  Tik virtualieji albumai gali turėti naują pagrindinį albumą.

                  + +

                  Kaip perkelti virtualius albumus

                  + +

                  Pasirinkite vieną ar kelis virtualius albumus, kuriuos norite perkelti. +Jei sąrašas tuščias, tai reiškia, kad jūs dar nesukūrėte nė vieno virtualaus albumo.

                  + +

                  Naujas pagrindinis albumas

                  + +

                  Pasirinkite naują pagrindinį albumą (virtualųjį arba tikrąjį). +Jei nepasirinksite jokio pagrindo, tuomet pasirinkti virtualieji albumai taps šakniniais. +Albumas negali būti perkeltas į save ar į viena iš savo šakų.

                  diff --git a/sources/language/lt_LT/help/cat_options.html b/sources/language/lt_LT/help/cat_options.html new file mode 100755 index 0000000..e732b2e --- /dev/null +++ b/sources/language/lt_LT/help/cat_options.html @@ -0,0 +1,22 @@ +

                  Albumo parinktys

                  + +

                  Parinkčių tvarkymas keliems albumams iškart.

                  + +
                  + +
                  Komentarai
                  +
                  Lankytojai gali komentuoti nuotraukas, jei jos priklauso albumams, kuriems komentarai yra įjungti.
                  + +
                  Užrakinti
                  +
                  Paprasti lankytojai nemato išjungtų albumų, juos galerijoje gali matyti tik administratoriai. Albumus galima užrakinti, kai reikia ką nors juose patvarkyti.
                  + +
                  Viešas / privatus
                  +
                  Kai albumas taps privatus, galėsite suteikti prieigos teises nariams ir grupėms.
                  + +
                  Reprezentacija
                  +
                  Ši parinktis galima, kuomet konfigūracijos parametras +allow_random_representative (žiūrėti include/config_defaults.inc.php) nustatytas į +true. Kiekvieną albumą gali atstovauti atsitiktinė arba pasirinkta nuotrauka iš jo.
                  + +
                  \ No newline at end of file diff --git a/sources/language/lt_LT/help/index.php b/sources/language/lt_LT/help/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/language/lt_LT/help/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/language/lt_LT/install.lang.php b/sources/language/lt_LT/install.lang.php new file mode 100755 index 0000000..f071681 --- /dev/null +++ b/sources/language/lt_LT/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Reikia pagalbos ? Užduokite klausimą Piwigo pranešimų lentoje.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Dėmesio, jūs galite pakeisti savo konfigūraciją pats ir tada perkrauti Piwigo.'; +$lang['PHP 5 is required'] = 'reikalingas PHP 5'; +$lang['Password ']['confirm'] = 'Slaptažodis [pakartoti]'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo gali pamėginti perjungti Jūsų konfigūraciją į PHP5 sukuriant, ar modifikuojant, .htaccess failą.'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo negalėjo sukonfigūruoti PHP 5'; +$lang['Sorry!'] = 'Apgailestaujame!'; +$lang['User'] = 'Vartotojas'; +$lang['Welcome to my photo gallery'] = 'Sveiki atvykę į mano foto galeriją'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Jūs galite atsisiųsti konfigūracinį failą ir padėti jį į local/config katalogą, prie Jūsų instaliacijos.'; +$lang['Admin configuration'] = 'Administracijos konfigūracija'; +$lang['Basic configuration'] = 'Pradinė konfigūracija'; +$lang['Can\'t connect to server'] = 'Neišeina prisijungti prie serverio'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'Prie serverio prisijungti pavyko, tačiau prie duomenų bazės ne.'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Nepavyko sukurti local/config/database.inc.php konfigūracinio failo.'; +$lang['Database configuration'] = 'Duomenų bazės konfigūracija'; +$lang['Database name'] = 'Duomenų bazės pavadinimas'; +$lang['Database table prefix'] = 'Duomenų bazės lentelių prefiksas'; +$lang['Default gallery language'] = 'Numatytoji galerijos kalba'; +$lang['Download the config file'] = 'Atsisiųsti konfigūracini failą'; +$lang['Host'] = 'Hostas'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Jūsų webhost\'as naudoja PHP %s.'; +$lang['It will be shown to the visitors. It is necessary for website administration'] = 'Tai bus rodoma lankytojams. Tai būtina puslapio administracijai'; +$lang['Just another Piwigo gallery'] = 'Tiesiog dar viena Piwigo galerija'; +$lang['Keep it confidential, it enables you to access administration panel'] = 'Saugokite tai slaptai, nes tai leidžia prisijungti prie administratoriaus valdymo skydo.'; +$lang['localhost or other, supplied by your host provider'] = 'localhost arba kitas, suteiktas jūsų paslaugų tiekėjo'; +?> \ No newline at end of file diff --git a/sources/language/lt_LT/iso.txt b/sources/language/lt_LT/iso.txt new file mode 100644 index 0000000..3711d7c --- /dev/null +++ b/sources/language/lt_LT/iso.txt @@ -0,0 +1 @@ +Lietuvių [LT] \ No newline at end of file diff --git a/sources/language/lt_LT/lt_LT.jpg b/sources/language/lt_LT/lt_LT.jpg new file mode 100644 index 0000000..a853f1e Binary files /dev/null and b/sources/language/lt_LT/lt_LT.jpg differ diff --git a/sources/language/lt_LT/upgrade.lang.php b/sources/language/lt_LT/upgrade.lang.php new file mode 100755 index 0000000..409323b --- /dev/null +++ b/sources/language/lt_LT/upgrade.lang.php @@ -0,0 +1,40 @@ +release %s (or equivalent).'] = 'Šis puslapis siųlo atnaujinti duomenų bazę iš senosios Piwigo versijos į naująją. Atnaujinimo asistentas mano, kad Jūs dabar naudojate leidimą %s (arba analogišką).'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Profilaktiškai peržiūrėkite [Administration>Tools>Maintenance], jei atsirado kokių nors netikėtumų.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Iš buvusios konfigūracijos išsaugoti tik miniatiūrų prefiksai ir webmasterio el-pašto adresas'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Tik administratorius gali pradėti atnaujinimą - prašome prisijungti žemiau.'; +$lang['In %s, before ?>, insert:'] = '%s viduje, prieš ?>, įterpkite:'; +$lang['All sub-albums of private albums become private'] = 'Visi privačių albumų subalbumai tampa privatūs'; +$lang['total upgrade time'] = 'bendras atnaujinimo laikas'; +$lang['total SQL time'] = 'bendras SQL laikas'; +$lang['You do not have access rights to run upgrade'] = 'Jūs neturite leidimo pradėti atnaujinimo'; +$lang['User permissions and group permissions have been erased'] = 'Vartotojų ir grupių leidimai buvo ištrinti'; +$lang['Upgrade informations'] = 'Atnaujinimo informacija'; +$lang['Upgrade from version %s to %s'] = 'Atnaujinti iš %s versijos į %s'; +$lang['Upgrade'] = 'Atnaujinimas'; +$lang['Statistics'] = 'Statistika'; +$lang['SQL queries'] = 'SQL Užklausos'; +?> \ No newline at end of file diff --git a/sources/language/lv_LV/about.html b/sources/language/lv_LV/about.html new file mode 100644 index 0000000..95a9720 --- /dev/null +++ b/sources/language/lv_LV/about.html @@ -0,0 +1,7 @@ +
                • Piwigo - tas ir skripts, kas ļauj viegli uzbūvēt online galeriju.
                • + +
                • Piwigo galerija ir radīta ar PHP (elePHPant) izmantojot MySQL (SQuirreL) datu bāzi.
                • + +
                • Ja jums ir ierosinājumi vai vēlējumi skripta sakarā, adresējiet to Piwigo, vai atstājiet forumā.
                • + diff --git a/sources/language/lv_LV/admin.lang.php b/sources/language/lv_LV/admin.lang.php new file mode 100644 index 0000000..50ce8b9 --- /dev/null +++ b/sources/language/lv_LV/admin.lang.php @@ -0,0 +1,973 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader aizvieto Piwigo Augšupielādētāju.Ar PLoader jūsu lokāli sagatavos attēlus var pārvietot uz jūsu Piwigo foto galeriju.'; +$lang['Guest Settings'] = 'Lietotāja Viesis iestatījumi'; +$lang['Main Page'] = 'Galvenā Lapa'; +$lang['Photo Page'] = 'Attēla Lapa'; +$lang['Activate Navigation Bar'] = 'Aktivēt Navigācijas Paneli'; +$lang['Activate Navigation Thumbnails'] = 'Aktivēt navigāciju pēc piktogrammām'; +$lang['Activate icon "%s"'] = 'Aktivēt ikonu "%s"'; +$lang['Photo Properties'] = 'Attēla raksturīgās īpašības'; +$lang['Allow user customization'] = 'Atļaut lietotājiem pielāgot galerijas izskatu'; +$lang['Languages'] = 'Valodas'; +$lang['Installed Languages'] = 'Instalēt Valodas'; +$lang['Add New Language'] = 'Pievienot Jaunu Valodu'; +$lang['Language has been successfully installed'] = 'Valoda sekmīgi uzinstalēta'; +$lang['Select:'] = 'Izvēlieties:'; +$lang['None'] = 'Neviens'; +$lang['Invert'] = 'Apvērst'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Neiespējams deaktivēt šo Tēmu, nepieciešams, lai paliek vismaz viena Tēma.'; +$lang['Webmaster status is required.'] = 'Nepieciešams Webmāstera statuss.'; +$lang['Bound Theme'] = 'Piesaistītā Tēma'; +$lang['Allow rating'] = 'Atļaut novērtēt'; +$lang['Select at least one comment'] = 'Izvēlieties vismaz vienu komentāru'; +$lang['Active Plugins'] = 'Aktīvie Spraudņi'; +$lang['Inactive Plugins'] = 'Neaktīvie Spraudņi'; +$lang['Missing Plugins'] = 'Trūkstošie Spraudņi'; +$lang['Uninstalled Plugins'] = 'Atinstalētie Spraudņi'; +$lang['By %s'] = ' %s'; +$lang['Visit plugin site'] = 'Apmeklēt spraudņu mājas lapu'; +$lang['Active Languages'] = 'Aktivēt Valodas'; +$lang['Delete this language'] = 'Izdzēst šo valodu'; +$lang['Forbid this language to users'] = 'Aizliegt šo valodu lietotājiem'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Neiespējams deaktivēt šo valodu, vispirms iestatiet kā noklusējumu citu valodu.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Neiespējams deaktivēt šo valodu, nepieciešama vismaz viena valoda.'; +$lang['Inactive Languages'] = 'Deaktivizēt Valodas'; +$lang['Make this language available to users'] = 'Padarīt šo valodu pieejamu lietotājiem'; +$lang['Set as default language for unregistered and new users'] = 'Iestatīt kā noklusējuma valodu nereģistrētiem un jauniem lietotājiem'; +$lang['Add Photos'] = 'Pievienot attēlus'; +$lang['The following tag was deleted'] = 'Izdzēsta sekojošas iezīme'; +$lang['Miscellaneous'] = 'Dažāds'; +$lang['Virtual Links'] = 'Virtuālās saites'; +$lang['There is no other language available.'] = 'Cita valoda nav pieejama.'; +$lang['There is no other plugin available.'] = 'Cits spraudnis nav pieejams.'; +$lang['There is no other theme available.'] = 'Cita tēma nav pieejama.'; +$lang['Add another set of photos'] = 'Pievienot citu attēlu kopumu'; +$lang['Order of menubar items has been updated successfully.'] = 'Izvēlnes rīku kārtība atjaunināta sekmīgi'; +$lang['This theme was not designed to be directly activated'] = 'Šo tēmu nevar aktivet tieši'; +$lang['Pending Comments'] = 'Komentaŗu pārbaude'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Jūsu php.ini faila upload_max_filesize (%sB) ir lielāks par post_max_size (%sB), jums jāizmaina šis iestatījums'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif paplašinājums nav iespējams, adminam jāaizliedz exif lietošana'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Augšupielādētais fails pārsniedz upload_max_filesize direktīvu php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Augšupielādētie faili pārsniedz post_max_size direktīvu php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Augšuplādējamais fails pārsniedz MAX_FILE_SIZE direktīvu, kas noteikta HTML formā'; +$lang['The uploaded file was only partially uploaded'] = 'Augšuplādētais fails tikai daļēji augšupielādēts'; +$lang['No file was uploaded'] = 'Fails netika augšupielādēts'; +$lang['Missing a temporary folder'] = 'Pazudusi pagaidu mape'; +$lang['Failed to write file to disk'] = 'Kļūda ierakstot failu diskā'; +$lang['File upload stopped by extension'] = 'Faila augšupielāde apturēta dēļ paplašinājuma'; +$lang['Unknown upload error'] = 'Nezināma augšupielādes kļūda'; +$lang['Error on file "%s" : %s'] = 'Kļūda failā "%s" : %s'; +$lang['Menu Management'] = 'Izvēlnes Pārvalde'; +$lang['automatic order'] = 'automātiskais kārtojums'; +$lang['manual order'] = 'manuālais kārtojums'; +$lang['Albums automatically sorted'] = 'Albūmi ir automātiski sakārtoti'; +$lang['Batch Manager'] = 'Sērijveida failu pārvaldnieks'; +$lang['include child albums'] = 'ietvert radniecīgos albūmus'; +$lang['Selection'] = 'Izvēle'; +$lang['Action'] = 'Darbība'; +$lang['Set author'] = 'Ievadīt autoru'; +$lang['Set title'] = 'Ievadīt virsrakstu'; +$lang['Set creation date'] = 'Ievadīt izveides datumu'; +$lang['Apply action'] = 'Veikt darbību'; +$lang['on the %d selected photos'] = 'uz %d atlasītajiem fotoattēliem'; +$lang['%d of %d photos selected'] = '%d no %d atlasītajiem fotoattēliem'; +$lang['No photo selected, %d photos in current set'] = 'Nav atlasītu foto, %d fotoattēli tekošajā sērijā'; +$lang['All %d photos are selected'] = 'Visi %d foto ir atlasīti'; +$lang['remove this filter'] = 'noņemt šo filtru'; +$lang['Duplicates'] = 'dublikāti'; +$lang['Add a filter'] = 'Pievienot filtru'; +$lang['Remove all filters'] = 'Noņemt visus filtrus'; +$lang['Refresh photo set'] = 'Atjaunināt foto sēriju'; +$lang['The whole page'] = 'Visa lapa'; +$lang['The whole set'] = 'Visa sērija'; +$lang['No photo in the current set.'] = 'Nav fotoattēlu esošajā sērijā.'; +$lang['No photo selected, no action possible.'] = 'Nav atlasītu fotoattēlu, nekādas darbības nav iespējamas.'; +$lang['Choose an action'] = 'Izvēlēties darbību'; +$lang['remove author'] = 'izdzēst autoru'; +$lang['Type here the author name'] = 'Ievadīt autora vārdu šeit'; +$lang['remove title'] = 'dzēst nosaukumu'; +$lang['Type here the title'] = 'Ievadīt nosaukumu šeit'; +$lang['remove creation date'] = 'dzēst izveides datumu'; +$lang['Album photos associated to the following albums: %s'] = 'Albūma fotoattēli saistīti ar sekojošiem albūmiem: %s'; +$lang['Delete orphan tags'] = 'Dzēst nepiesaistītās cilnes (iezīmes)'; +$lang['delete photo'] = 'Dzēst fotoattēlu'; +$lang['Orphan tags deleted'] = 'Nepiesaistītās cilnes izdzēstas'; +$lang['Week starts on'] = 'Nedēļa sākas ar'; +$lang['You have %d orphan tags: %s.'] = 'Jums ir %d nepiesaistīto cilņu: %s.'; +$lang['Remove from caddie'] = 'Izņemt no groza'; +$lang['Themes which need upgrade'] = 'Tēmas, kurām nepieciešami jauninājumi'; +$lang['Languages which need upgrade'] = 'Valodas, kurām nepieciešami jauninājumi'; +$lang['All themes are up to date.'] = 'Visas tēmas ir atjauninātas.'; +$lang['All plugins are up to date.'] = 'Visi spraudņi ir atjaunināti.'; +$lang['All languages are up to date.'] = 'Visas valodas ir atjauninātas.'; +$lang['Visit theme site'] = 'Apmeklēt tēmu vietni'; +$lang['Visit language site'] = 'Apmeklēt valodu vietni'; +$lang['New Version'] = 'Jauna Versija'; +$lang['Obsolete Plugins'] = 'Nepiesaistītie Spraudņi'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UZMANĪBU! Šķiet, ka šis spraudnis nav saderīgs ar šo Piwigo versiju.'; +$lang['Do you want to activate anyway?'] = 'Vai vēlaties aktivēt jebkurā gadījumā?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TAGAD ŠIS SPRAUDNIS IR PIWIGO KODOLA SASTĀVDAĻA! VAI NOINSTALĒT TO!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'KĻŪDA: ŠIS SPRAUDNIS IZTRŪKST, BET TAS IR INSTALĒTS! VAI NOINSTALĒT TO'; +$lang['display'] = 'attēlot'; +$lang['Thumbnails generation in progress...'] = 'Notiek sīkbilžu ģenerēšanas (veidošanas) process...'; +$lang['Photos generation in progress...'] = 'Notiek foto izveide...'; +$lang['%s photos have been regenerated'] = 'izveidotas %s fotogrāfijas'; +$lang['%s photos can not be regenerated'] = '%s fotogrāfijas nav iespējams reģenerēt'; +$lang['new'] = 'jauns'; +$lang['No results'] = 'Nav rezultātu'; +$lang['Searching...'] = 'Meklē...'; +$lang['Type in a search term'] = 'Ierakstiet meklējamo vārdu'; +$lang['Deactivate all'] = 'Deaktivēt visu'; +$lang['Default photos order'] = 'Foto kārtojums pēc noklusējuma'; +$lang['Restore'] = 'Atjaunot'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Atjaunot noklusējuma konfigurāciju. Jūs zaudēsit savus spraudņa iestatījumus!'; +$lang['Show menubar'] = 'Rādīt izvēles joslu'; +$lang['Updates'] = 'Jauninājumi'; +$lang['Update in progress... Please wait.'] = 'Notiek jaunināšana... Lūdzu uzgaidiet.'; +$lang['Ignore this update'] = 'Ignorēt šo jauninājumu'; +$lang['Reset ignored updates'] = 'Atjaunot ignorētos jauninājumus'; +$lang['Update All'] = 'Jaunināt visu'; +$lang['ERROR'] = 'KĻŪDA'; +$lang['Update Complete'] = 'Jauninājums Paveikts'; +$lang['Piwigo Update'] = 'Piwigo Jauninājums'; +$lang['Extensions Update'] = 'Paplašinājumu Jauninājums'; +$lang['All extensions are up to date.'] = 'Visi paplašinājumi ir atjaunināti.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Sekojoši spraudņi var nesaderēt ar jauno Piwigo versiju:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Sekojošas tēmas var nesaderēt ar jauno Piwigo versiju:'; +$lang['I decide to update anyway'] = 'Esmu izlēmis veikt jauninājumu jebkurā gadījumā'; +$lang['Update to Piwigo %s'] = 'Jaunināt uz Piwigo %s'; +$lang['Two updates are available'] = 'Pieejami divi jauninājumi'; +$lang['This is a minor update, with only bug corrections.'] = 'Šis ir nenozīmīgs jauninājums, tikai daži defektu labojumi.'; +$lang['This is a major update, with new exciting features.'] = 'Šis ir svarīgs jauninājums, ar jaunām svarīgām iespējām.'; +$lang['Some themes and plugins may be not available yet.'] = 'Dažas tēmas un spraudņi vēl var būt nav pieejami.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Jūs varat jaunināt uz Piwigo %s tieši, neuzlabojot uz Piwigo %s (ieteicams).'; +$lang['Save Template Directory'] = 'Saglabāt veidņu mapi'; +$lang['Dump Database'] = 'Izgāzt Datubāzi'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Ietvert datu vēsturi (Brīdinājums: servera atmiņas limits var tikt pārsniegts)'; +$lang['Unable to dump database.'] = 'Neiespējami izgāzt (dump) datubāzi.'; +$lang['Some upgrades are available for extensions.'] = 'Paplašinājumiem pieejami daži uzlabojumi.'; +$lang['Ignore All'] = 'Ignorēt Visu'; +$lang['Crop'] = 'Apgriezt'; +$lang['Width'] = 'Platums'; +$lang['Height'] = 'Augstums'; +$lang['Follow Orientation'] = 'Sekot Orientācijai'; +$lang['Graphics Library'] = 'Grafikas Bibliotēka'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivēt ikonu "new" (jauns) blakus albūmiem un attēliem'; +$lang['Add a criteria'] = 'Pievienot kritēriju'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nav iespējams izveidot foto kārtošanas secību pēc noklusējuma, jo jūsu izveidotajā lokālajā konfigurācijā ir jūsu pielāgotie iestatījumi.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Jūs savā lokālajā konfigurācijas failā esat iestatīts $conf[\'order_by\'], šis parametrs ir novecojis, lūdzu izdzēšiet to vai pārdēvējiet to sekojoši : $conf[\'order_by_custom\'] !'; +$lang['Average rate'] = "Vidējais novērtejums"; +$lang['Rate'] = "Vērtējums"; +$lang['Learn more'] = 'Uzzini vairak'; +$lang['... or '] = '... vai '; +$lang['Create'] = 'Izveidot'; +$lang['Start Upload'] = 'Sākt augšupielādi'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Jūs lietojat Flash augšuplādētāju. Problēmas? Tā vietā mēģiniet Pārlūka augšuplādētāju.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Jūs lietojat Pārlūka augšuplādētāju. Tā vietā mēģiniet Flash augšuplādētāju.'; +$lang['Maximum file size: %sB.'] = 'Faila maksimālais izmērs: %sB.'; +$lang['Allowed file types: %s.'] = 'Atļautie failu tipi: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Aptuvenā maksimālā izšķirtspēja: %dM pixeļi (tas ir %dx%d pixeļi).'; +$lang['Manage Permissions'] = 'Pārvaldīt Piekļuves Atļaujas'; +$lang['Photo %s of %s'] = ' %s foto no %s'; +$lang['show details'] = 'rādīt detaļas'; +$lang['hide details'] = 'paslēpt detaļas'; +$lang['Merge tags'] = 'Apvienot (sapludināt) cilnes (tags)'; +$lang['Select the destination tag'] = 'Izvēlēties mērķa cilni'; +$lang['(this tag will be deleted)'] = '(šī cilne (tag) tiks izdzēsta)'; +$lang['Confirm merge'] = 'Apstiprināt apvienošanu'; +$lang['Merge selected tags'] = 'Apvienot izvēlētās cilnes'; +$lang['No destination tag selected'] = 'Nav izvēlēta mērķa cilne'; +$lang['Tags %s merged into tag %s'] = 'Cilnes (tags) %s apvienotas cilnē %s'; +$lang['Select at least two tags for merging'] = 'Izvēlaties vismaz divas cilnes apvienošanai'; +$lang['Select an album'] = 'Izvēlaties albūmu'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Pēc noklusēšanas Piwigo izveidos jaunu foto webizmēru jūsējai HD (augstas izšķirtspējas) attēla versijai.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ja nav neviena HD un, ja esošais webizmērs ir lielāks par atļautajiem izmēriem, Piwigo to uzskata par HD attēlu un no šī attēla izveidos atbilsoša webizmēra attēlu.'; +$lang['An error has occured during upgrade.'] = 'Atjauninot notikusi kļūme.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'Atpakošanas laikā notikusi kļūme. Pārbaudiet Jūsu piwigo instalācijas failu atļaujas.
                  Spiest te, lai redzētu log kļūdas.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nevar ielādēt jauninājuma failu no servera'; +$lang['Zoom'] = 'Tālummaiņa'; +$lang['%s has been successfully updated.'] = '%s ir sekmīgi atjaunināts.'; +$lang['Add tags'] = 'Pievienot tagus (birkas)'; +$lang['Add to caddie'] = 'Pievienot grozam'; +$lang['Last import'] = 'Pēdējais imports'; +$lang['Predefined filter'] = 'Definēts filtrs'; +$lang['With no album'] = 'Bez albūma'; +$lang['With no tag'] = 'Bez taga'; +$lang['With no virtual album'] = 'Bez virtuālā albūma'; +$lang['Activate comments'] = 'Aktivizēt komenārus'; +$lang['Default comments order'] = 'Komentāru kārtojums pēc noklusējuma'; +$lang['Photo name'] = 'Foto nosaukums'; +$lang['Send connection settings by email'] = 'Nosūtīt konekcijas iestatījumus ar e-pastu'; +$lang['The original image quality must be a number between %d and %d'] = 'Oriģinālā attēla kvalitātei jābūt skaitlim diapazonā starp %d un %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Oriģināla maksimālajam augstumam jābūt skaitlim starp %d un %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Oriģināla maksimālajam platumam jābūt skaitlim starp %d un %d'; +$lang['Resize after upload'] = 'Mainīt izmērus pēc augšupielāde'; +$lang['Original Size'] = 'Oriģinālie Izmēri'; +$lang['A locked gallery is only visible to administrators'] = 'Bloķētā galerija ir redzama tikai administratoriem'; +$lang['Unlock gallery'] = 'Atbloķēt galeriju'; +$lang['Gallery unlocked'] = 'Galerija ir atbloķēta'; +$lang['Notify administrators when a comment is'] = 'Ziņot administratoriem, kad komentārs ir'; +$lang['modified'] = 'modificēts'; +$lang['pending validation'] = 'gaida validāciju'; +$lang['Save visits in history for'] = 'Ieglabāt vēsturē apmeklējumus priekš'; +$lang['simple visitors'] = 'parastiem apmeklētājiem'; +$lang['registered users'] = 'reģistrētiem lietotājiem'; +$lang['administrators'] = 'administratoriem'; +$lang['This album contains %d photos, added on %s.'] = 'Šinī albūmā ir %d fotogrāfiju, kas pievienotas %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Šinī albūmā ir %d fotogrāfiju, kas pievienotas laikā starp %s un %s.'; +$lang['This album contains no photo.'] = 'Šinī albūmā nav fotogrāfiju.'; +$lang['Not cropped correctly?'] = 'Nav korekti apgriezts?'; +$lang['Center of interest'] = 'Interešu centrs'; +$lang['Move to album'] = 'Pārvietot uz albūmu'; +$lang['You can activate only one mobile theme.'] = 'Jūs varat aktivēt tikai vienu mobilo tēmu.'; +$lang['Automatic sort order'] = 'Automātiskās kārtošanas režīms'; +$lang['apply automatic sort order'] = 'pielietot automātiskās kārtošanas režīmu'; +$lang['Save manual order'] = 'Saglabāt manis veidoto kārtojumu'; +$lang['cancel manual order'] = 'atcelt manis veidoto kārtojumu'; +$lang['Cancel'] = 'Atcelt'; +$lang['List'] = 'Saraksts'; +$lang['Web Form'] = 'Web Forma'; +$lang['Applications'] = 'Aplikācijas'; +$lang['Available versions for'] = 'Pieejamās versijas priekš'; +$lang['Available on'] = 'Pieejams uz'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo priekš iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo priekš iOS aplikācijas, kas ļauj piekļūt jūsu Piwigo galerijai no iPhone, iPad vai iPod Touch, un bez pūlēm izveidot jaunus albūmus un ielādēt jaunas fotogrāfijas.'; +$lang['Piwigo for Android'] = 'Piwigo priekš Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo priekš Android aplikācija dod jums iespēju savienot savu Android telefonu vai iekārtu ar jūsu Piwigo galeriju, bez pūlēm izveidot jaunus albūmus un ielādēt jaunas fotogrāfijas.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publicēšanas spraudnis priekš Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom ir fotoredaktora programmatūra, kas domāta liela apjoma digitālu attēlu pārvaldīšanai un pirmsproducēšanas darbu veikšanai.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publicēšanas spraudnis ļauj jums eksportēt un sinhronizēt attēlus Lightroom aplikācijā ar jūsu Piwigo foto galeriju.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publicēšanas spraudnis priekš Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell ir atvērtā koda foto organizators, kas darbojas Linux vidē. Tas ir Ubuntu and Fedora fotoredaktors pēc noklusēšanas.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Savā Linux vienkārši instalējiet Shotwell, izmantojot savu instalācijas menedžeri un aktivējiet Piwigo publicēšanas opciju.'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publicēšanas spraudnis priekš digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam ir bezmaksas advancēta digitālo foto apstrādes aplikācija priekš Linux, Windows, and MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam radīta priekš fotogrāfiem, kas grib pārraudzīt, pārvaldīt, rediģēt, uzlabot, organizēt, iezīmēt un dalīties ar savām fotogrāfijām.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Lai eksportētu savus attēlus no digiKam uz Piwigo, vienkārši instalējiet digiKam un Kipi-spraudņus.'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksporta spraudnis priekš iPhoto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto ir foto menedžeris pēc noklusēšanas MacOSX vidē. Piwigo eksporta spraudnis ļauj jums izveidot jaunus albūmus un eksportēt jūsu fotogrāfijas pa taisno no iPhoto uz jūsu Piwigo foto galeriju.'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksporta spraudnis priekš Aperture'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture ir jaudīgs rīks attēlu šķirošanai un masīvu bibliotēku pārvaldīšanai Mac vidē.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture ir domāts profesionāliem fotogrāfiem ar iPhoto vienkāršību.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksporta spraudnis ļauj jums veidot albūmus un eksportēt fotogrāfijas.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Android AttālinātāsGalerijs klients) ir atvērtā koda (GPL v3) Piwigo klients priekš Android platformas.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Iespējas sevī ietver galeriju pārlūkošanu, albūmu veidošanu un fotogrāfiju augšupielādi.'; +$lang['Generate multiple size images'] = 'Ģenerēt dažādu izmēru attēlus'; +$lang['Delete multiple size images'] = 'Dzēst dažādu izmēru attēlus'; +$lang['any visitor can see this album'] = 'jebkurš apmeklētājs var redzēt šo albūmu'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'apmeklētājiem jāielogojas un jābūt attiecīgām atļaujām, lai redzētu šo albūmu'; +$lang['Groups and users'] = 'Grupas un lietotāji'; +$lang['Permission granted for groups'] = 'Atļauja piešķirta grupām'; +$lang['Select groups...'] = 'Atlasīt grupas...'; +$lang['There is no group in this gallery.'] = 'Šajā galerijā nav grupu.'; +$lang['Permission granted for users'] = 'Atļauja piešķirta lietotājiem'; +$lang['Select users...'] = 'Atlasīt lietotājus...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u lietotājiem ir automātiskās piekļuves tiesības, jo tie pieder pie privileģētās grupas.'; +$lang['include photos with lower privacy level'] = 'iekļaut fotogrāfijas ar zemāku privātuma līmeni'; +$lang['custom'] = 'Lietotāja'; +$lang['No group is permitted to see this private album'] = 'Grupai nav atļauts skatīt šo privāto albūmu'; +$lang['Permission management'] = 'Atļauju pārvaldīšana'; +$lang['Photo sizes with crop'] = 'Foto izmēri pēc apgriešanas'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interešu centrs ir visnozīmīgākā zona fotogrāfijā.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Priekš apgriezto foto izmēriem, tādiem kā “Kvadrāts”, Piwigo paveic to vislabāko iekļaujot interešu centru.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Pēc noklusējuma interešu centrs atrodas fotogrāfijas vidū.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Ar peles palīdzību izvēlieties jaunu interešu centru.'; +$lang['X Position'] = 'X Pozīcija'; +$lang['Y Position'] = 'Y Pozīcija'; +$lang['X Repeat'] = 'X Atkārtot'; +$lang['Opacity'] = 'Caurspīdīgums'; +$lang['top left corner'] = 'augšējais kreisais stūris'; +$lang['top right corner'] = 'augšējais labais stūris'; +$lang['middle'] = 'vidus'; +$lang['bottom left corner'] = 'apakšējais kreisais stūris'; +$lang['bottom right corner'] = 'apakšējais labais stūris'; +$lang['Select a file'] = 'Izvēlēties failu'; +$lang['add a new watermark'] = 'pievienot jaunu ūdenszīmi'; +$lang['Apply watermark if width is bigger than'] = 'Lietot ūdenszīmi, ja platums ir lielāks par'; +$lang['Apply watermark if height is bigger than'] = 'Lietot ūdenszīmi, ja augstums ir lielāks par'; +$lang['Multiple Size'] = 'Vairāki izmēri'; +$lang['Watermark'] = 'Ūdenszīme'; +$lang['Original file : %s'] = 'Oriģinālais fails : %s'; +$lang['Posted %s on %s'] = 'Publicēts %s uz %s'; +$lang['Added by %s'] = 'Pievienojis %s'; +$lang['Visited %d times'] = 'Apmeklēts %d reizes'; +$lang['Numeric identifier : %d'] = 'Ciparveida identifikators : %d'; +$lang['%s ago'] = '%s atpakaļ'; +$lang['%s in the future'] = '%s nākotnē'; +$lang['Rated %d times, score : %.2f'] = 'Vērtēts %d reizes, vērtējums : %.2f'; +$lang['%d year'] = '%d gads'; +$lang['%d years'] = '%d gadi'; +$lang['%d month'] = '%d mēnesis'; +$lang['%d months'] = '%d mēneši'; +$lang['%d day'] = '%d diena'; +$lang['%d days'] = '%d dienas'; +$lang['%d hour'] = '%d stunda'; +$lang['%d hours'] = '%d stundas'; +$lang['%d minute'] = '%d minūte'; +$lang['%d minutes'] = '%d minūtes'; +$lang['%d second'] = '%d sekunde'; +$lang['%d seconds'] = '%d sekundes'; +$lang['Sharpen'] = 'Uzspicēts'; +$lang['%d week'] = '%d nedēļa'; +$lang['%d weeks'] = '%d nedēļas'; +$lang['Edit photo'] = 'Rediģēt foto'; +$lang['create a new site'] = 'izveidot jaunu web lapu'; +$lang['No order field selected'] = 'Nv izvēlēts kārtošanas lauks'; +$lang['Duplicate selected tags'] = 'Dublēt atlasītās cilnes'; +$lang['Name of the duplicate'] = 'Dublikāta nosaukums'; +$lang['Source tag'] = 'Avota cilne'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Cilne "%s" tagad ir "%s" dublikāts'; +$lang['Portrait'] = 'Portrets'; +$lang['Panorama'] = 'Panorāma'; +$lang['Minimum width'] = 'Minimālais platums'; +$lang['Minimum height'] = 'Minimālais augstums'; +$lang['Landscape'] = 'Ainava'; +$lang['Number of albums per page'] = 'Albumu skaits lapā'; +$lang['View in gallery'] = 'Ieskatīties galarijā'; +$lang['Manage photos'] = 'Pārvaldīt fotogrāfijas'; +$lang['Ratio'] = 'Attiecība'; +$lang['between %d and %d pixels'] = 'starp %d un %d pikseļiem'; +$lang['between %.2f and %.2f'] = 'starp %.2f un %.2f'; +$lang['Type here the name of the new group'] = 'Rakstiet šeit jaunās grupas nosaukumu'; +$lang['This group will be unset to default'] = 'Šī grupa vairs netiks izmantota pēc noklusējuma'; +$lang['This group will be set to default'] = 'Šī grupa tiks izmantots pēc noklusējuma'; +$lang['Rename'] = 'Pārdēvēt'; +$lang['Please select at least two groups'] = 'Lūdzu atlasiet vismaz divas grupas'; +$lang['No members to manage'] = 'Nav biedru, ko pārvaldīt'; +$lang['No group selected, no action possible.'] = 'Nav izvēlēta neviena grupa, nekādas darbības nav iespējamas.'; +$lang['Manage the members'] = 'Pārvaldīt biedrus'; +$lang['Merge selected groups'] = 'Sapludināt atlasītās grupas'; +$lang['Duplicate'] = 'Dublikāts'; +$lang['Purge user cache'] = 'Iztīrīt lietotāja kešatmiņu'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Attēla izmēri tiks samazināti uz %dx%d pikseļiem. '; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Sakarā ar GD kā grafiskās bibliotēkas izmantošanu, attēla izmēra mainīšana pēc augšupielādes ir atslēgta'; +$lang['Select at least one tag'] = 'Atlasiet vismaz vienu tagu'; +$lang['Basic settings'] = 'Pamata iestījumi'; +$lang['General'] = 'Vispārīgi'; +$lang['Mail theme'] = 'Pasta tēma'; +$lang['on the %d selected users'] = ' %d atlasītiem lietotājiem'; +$lang['Showing %s to %s of %s users'] = 'Parāda no %s līdz %s no %s lietotājiem'; +$lang['Registered on %s, %s.'] = 'Reģistrēts %s, %s.'; +$lang['User %s updated'] = '%s lietotājs atjaunināts'; +$lang['Update user'] = 'Atjaunināt lietotāju'; +$lang['Show %s users'] = 'Parādīt %s lietotājus'; +$lang['No user selected, no action possible.'] = 'Neviens lietotāja nav atlasīts, darbība nav iespējama.'; +$lang['No user selected of %d users'] = 'Neviens no %d lietotājiem nav atlasīts'; +$lang['No matching user found'] = 'Nav atrasti atbilstoši lietotāji'; +$lang['Users modified'] = 'Lietotāji modoficēti'; +$lang['User %s added'] = '%s lietotājs pievienots'; +$lang['Password updated'] = 'Parole atjaunināta'; +$lang['%d of %d users selected'] = '%d no %d lietotājiem atlasīti'; +$lang['(filtered from %s total users)'] = '(izfiltrēti no %s kopējiem lietotājiem)'; +$lang['All %d users are selected'] = 'Visi %d lietotāji ir atlasīti'; +$lang['Last visit on %s, %s.'] = 'Pēdējais apmeklējums %s, %s.'; +$lang['Loading...'] = 'Ielādējas'; +$lang['Change username'] = 'Nomainīt lietotājvārdu'; +$lang['Change password'] = 'Nomainīt paroli'; +$lang['Open user details'] = 'Atvērt lietotāja informāciju'; +$lang['Close user details'] = 'Aizvērt lietotāja informāciju'; +$lang['close'] = 'aizvērt'; +?> \ No newline at end of file diff --git a/sources/language/lv_LV/common.lang.php b/sources/language/lv_LV/common.lang.php new file mode 100644 index 0000000..4132cbb --- /dev/null +++ b/sources/language/lv_LV/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/lv_LV/help/cat_modify.html b/sources/language/lv_LV/help/cat_modify.html new file mode 100644 index 0000000..7bf5fc9 --- /dev/null +++ b/sources/language/lv_LV/help/cat_modify.html @@ -0,0 +1,45 @@ +

                  Regiģēt albūmu

                  +

                  Informācija

                  +
                  • nosaukums: pārsaukt albūmu (virtuāla pārsaukšana fiziska albūma gadījumā).
                  • +
                  • apraksts: īss skaidrojošs teksts, kas raksturo satura pamatideju, šis teksts tiek rādīts sīkbilžu lapas apakšpusē.
                  • +
                  +

                  Pārvietošana

                  +

                  Ja albūms ir virtuāls, to iespējams pārvietot. Albūma pārvietošana nozīmē tā pamatalbūma (parent album) izmaiņas.

                  +

                  Izvēles iespējas

                  +
                  • Piekļuves veids: Atļauju pārvaldīšana. Ja padarāt albūmu privātu, visi tam pakļautie (child) albūmi kļūst privāti. Ja padarāt albūmu publisku, visi tā pamatalbūmi (parent) publiski.
                  • +
                  • Bloķēšana: Albūms un visi tā apakšalbūmi uz laiku tiek slēgti apkalpošanas pasākumiem.
                  • +
                  • Komentāri: Autorizē lietotājus šī albūma fotogrāfiju komentēšanai.
                  • +
                  +

                  Jūs varat pārvaldīt šīs opcijas arī no "Properties" (rekvizīti) pārvaldīšanas loga (logi Komentāri, Slēgt, Publisks/Privāts, Pārstāvim pieejams no Administrāšana » Albūmi » Rekvizīti).

                  +

                  Kārtošanas secība

                  +

                  Lietot attēlu kārtošanas secību pēc noklusējuma.

                  +

                  Norādiet, vai šī kārtošanas secība attiecināma arī uz apakšalbumiem.

                  +

                  Izvēlēties noteiktus kārtošanas kritērijus, kas būtu jāizmanto šim albūmam.

                  +
                  • Izveides datums: Fotogrāfijas uzņemšanas datums
                  • +
                  • Iesniegšanas datums: Sinhronizācijas datums
                  • +
                  • Vidējais vērtējums (*): Vidējais vērtējums var tikt izmainīts pēc apmeklētāju vērtējuma
                  • +
                  • Visvairāk apmeklētie (*): Tekošais vērtējums var izmainīt visvairāk apmeklēto secību
                  • +
                  • Faila nosaukums: Nosaukums, kas dots informācijas laukā
                  • +
                  • Id: Iekšējais Id (tekošajām kategorijām ir lielāks id, kā iepriekšējām).
                  • +
                  +

                  (*)Brīdinājums: Pārliecinieties par šo kārtošanas secību darbības pareizību pats, jo pretējā gadījumā tas var dot neparedzētus rezultātus.

                  +

                  Pārstāvība

                  +

                  Albūma pārstāvis ir galvenajā lapā attēlotais sīktēls (category.php), lai pārstāvētu to, kad tajā ir tikai apakšalbūmi un tajā nav neviena attēla (glauži kā saknes albūma gadījumā).

                  + albūma foto :

                  +
                  • Foto lapa: viena no darbības pogām ļauj iestatīt pašreizējo fotoattēlu kā attēlojamā albūma pārstāvi. Šī poga pieejama tikai administratoriem.
                  • +
                  • Modificēt informāciju par foto pārvaldē. Šajā logā var nonākt no picture.php vai no Grupas (batch) vadības, kas atrodas unit mode vienības režīmā. Detaļām, skatīt palīdzībā par šī loga izmantošanu.
                  • +
                  • Administrēšana » Albūmi » Rekvizīti, Pārstāvis. Detaļas skatīt palīdzībā par šī loga izmantošanu.
                  • +
                  • Rediģēt albūmu (šajā logā).
                  • +
                  +

                  Pārstāvja izvēle ir atkarīga no allow_random_representative konfigurācijas parametra (skatīt include/config_default.inc.php).

                  +

                  Noklusēšanas režīmā (allow_random_representative ir iestatīts false), katrs albūms, kurā ir vismaz viens elements, ir pārstāvēts ar fiksētu elemntu. Reiz istatīts (pie albūma izveides), pārstāvi maina tikai tad, ja administrators to pieprasa. Ja pārstāvis ir neatbilstošs situācijai, jūs varat vaicāt pēc jauna pārstāvja - Atrast jaunu pārstāvi, izmantojot nejaušu izvēli.

                  Ja allow_random_representative konfigurācijas parametrs ir iestatīts stāvoklī true, fotogrāfijas saturošai kategorijai var būt nefiksēts pārstāvis. Lietojiet pogu Dzēst pārstāvi.

                  +

                  Ja albūmā ir tikai apakšalbūmi un nav neviena foto, tomēr, pateicoties Modificēyai informācijai par foto ekrānu, to var pārstāvēt jebkurš elements. Vienīgā izvēlne uz šī ekrāna ir poga Dzēst pārstāvi.

                  +

                  Sasaistīt visas albūma fotogrāfijas ar jaunu albūmu

                  • Virtuālā albūma nosaukums: Jaunizveidotajā un jaunnosauktajā albūmā visas pašreizējās kategorijas fotogrāfijas būs sasaistītas ar jaunoizveidoto.
                  • +
                  • Pamatalbūms: Atstājiet tukšu vietu, kur paredzēts izveidot jauno albūmu, lai to izveidotu saknē.
                  +

                  Sasaistīt visas albūma fotogrāfijas ar eksistējošu albūmu

                  • Albums: Izvēlieties mērķalbūmu..
                  +

                  Nosūtīt informāciju uz e-pastu grupas dalībniekiem

                  • Grupa: saņēmēju grupa
                  • +
                  • Pasta saturs: Viņiem brīvā formā nosūtāmais teksta ziņojums
                  --------------------- Actual LV Version ------------------- +

                  Rediģēt kategoriju

                  Informācija

                  • nosaukums: pārdēvē kategoriju (virtuāla pārdēvēšana fiziskas kategorijas gadījumā).
                  • +
                  • apraksts: īss apraksts, kas sniedz galveno informāciju par saturu, šis teksts izvietots sīkbilžu lapas apakšā.

                  Pārvietot

                  Ja kategorija ir virtuāla to var pārvietot. Pārvietot kategoriju nozīmē izmainīt tās pamatkategoriju.

                  Izvēles iespējas

                  • Piekļuves tips: Piekļuves atļauju pārvaldība. Ja padarāt kategoriju privātu, visas tai radniecīgās apakškategorijas kļūst privātas.Ja padarāt kategoriju publiski pieejamu, tad arī visas tai radniecīgās apakškategorijas kļūst pieejamas.
                  • Bloķēšana: Kategorija un tās apakškategorijas uz profilakses laiku tiks slēgtas piekļuvei.
                  • Komentāri: Ļauj lietotājiem komentēt šīs kategorijas elementus.
                  • Atļauja augšupielādēt: Atļauj lietotājiem augšupielādēt attēlu failus. Šī iespēja dota tikai fiziskām (nevis virtuālām) kategorijām.

                  Šīs iespējas pieejamas arī no "Properties" (rekvizītu) pārvaldes loga (logi Augšuplāde, Komentāri, Boķēšana, Publisks/Privāts, Pārstāvis pieejams no Administrēšana, Kategorijas, Rekvizīti).

                  Kārtošanas secība

                  Lieto attēlu kārtošanas secību pēc noklusējuma.

                  Norāda vai šī lietu kārtošanas secība attiecas arī uz apakškategorijām.

                  Izvēlas atbilstošus kārtošanas kritērijus šai kategorijai.

                  • Izveides datums: Attēla uzņemšanas datums
                  • Iesūtīšanas datums: Sinhronizācijas datums
                  • Vidējai vērtējums (*): Apmeklētāja novērtējums var izmainīt vidējo vērtējumu
                  • Visvairāk apmeklētais (*): Tekošais apmeklējums var izmainīt visvairāk apmeklēto secību
                  • Faila nosaukums: Vārds, kas piešķirts informācijas laukā
                  • Id: Iekšējais Id (tekošajām kategorijām ir augstāks id kā vecākajām

                  (*)Brīdinājums: ieteikums izmēģināt šos kārtošanas kritērijus, jo tie var dod arī neparedzamus rezultātus.

                  Pārstāvība

                  Kategoriju pārstāv sīkbilde galvenajā lapā (category.php) lai pārstāvētu kategoriju, kad tajā ir tikai apakškategorijas un neviena tieša elementa (tāpat kā pamatkategorija).

                  Ir 4 dažādi veidi kā noformēt kategoriju pārstāvošo attēlu :

                  • Attēla lapa: viena no pogām ļauj Jums iestatīt patlabanējo attēlu kā šo kategoriju reprezentējošo attēlu. Šī darbība pieejama tikai administratoriem.
                  • Informācijas par attēlu modificēšana administrācijā. Šis logs pieejams no picture.php vai Grupas vadības vienības režīmā . Detaļas skatiet šī loga palīgā.
                  • Administrēšana, Kategorijas, Rekvizīti, Pārstāvība. Detaļas skatiet šī loga palīgā.
                  • Kategorijas rediģēšana (esošais logs).

                  Pārstāvniecības izvēle atkarīga no allow_random_representative konfigurācijas parametriem failā (see include/config_default.inc.php).

                  +

                  Noklusēšanas režīmā (allow_random_representative set to false), katra kategorija, kas satur vismaz vienu elementu, ir pārstāvēta ar fiksētu elementu. Kad pārstāvība noteikta (pie kategorijas izveides), to var nomainīt tikai administrators. Gadījuma, ja pārstāvība nav atbilstoša, Jūs varat mēģināt Atrast jaunu pārstāvi, izmantojot nejaušu izvēli.

                  Ja allow_random_representative konfigurācijas parametrs ir patiesā (true) stāvoklī, elementus saturošajai kategorijai var nebūt fiksētas pārstāvības. Vienkārši lietojiet Dzēst pārstāvi pogu.

                  Ja kategorijā ir tikai apakškategorijas un neviena elementa, to tik un tā var pārstāvēt jebkurš elements ņemts no Informācijas par attēlu modificēšanas loga. Vienīgā aktīvā iespēja esošajā logā ir Dzēst pārstāvi poga.

                  Sasaistīt visus kategorijas elementus ar jaunu kategoriju

                  • Virtuālās kategorijas nosaukums: Jaunizveidojamās kategorijas nosaukumā, visi esošās kategorijas attēli tiks sasaistīti ar jaunizveidoto kategoriju.
                  • Pamatkategorija: Vieta, kur tiks veidota jauna kategorija, atstājiet tukšu, lai izveidotu to saknes mapē.

                  Sasaistīt visu kategoriju elementus ar esošajām kategorijām

                  • Kategorijas: Izvēlieties mērķa kategoriju.

                  Informācijas nosūtīšana ar e-pastu grupas biedriem

                  • Grupa: saņēmēju grupa
                  • +
                  • Pasta saturs: Viņiem brīvā formā nosūtāmais teksta ziņojums
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/cat_move.html b/sources/language/lv_LV/help/cat_move.html new file mode 100644 index 0000000..25b740f --- /dev/null +++ b/sources/language/lv_LV/help/cat_move.html @@ -0,0 +1,14 @@ +

                  Virtuālo albūmu pārvietošana

                  + +

                  Tikai virtuālajiem albūmiem var būt jauns (parent) pamatalbūms.

                  + +

                  Pārvietošanai paredzētie albūmi

                  + +

                  Atlasiet vienu vai vairākus virtuālos albūmus, ko vēlaties pārvietot. +Ja saraksts ir tukšs, tas nozīmē, ka vēl nevienu neesat izveidojis.

                  + +

                  Jauns pamatalbūms

                  + +

                  Atlasīt jaunu pamatalbūmu (virtuālu vai fizisku). +Ja neesat atlasījis nevienu pamatalbūmu, virtuāli atlasītie albūmi tiks pārvietoti uz saknes mapi. +Albūmu nevar pārvietot sevī paša vai kādā no tā atvasinājumiem (child).

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/cat_options.html b/sources/language/lv_LV/help/cat_options.html new file mode 100644 index 0000000..f35ee83 --- /dev/null +++ b/sources/language/lv_LV/help/cat_options.html @@ -0,0 +1,16 @@ +

                  Albūma iespējas

                  +

                  Vairāku albūmu iespēju pārvaldīšana vienlaicīgi.

                  +
                  +
                  Komentāri
                  +
                  Foto var saņemt komentārus no jūsu apmeklētājiem, ja tas ir no albūma, kura komentāru režīms ir aktivēts.
                  + +
                  Bloķēt
                  +
                  Bloķētie albūmi ir noņemti no apkalpošanas. Tikai administratoram ir iespēja tos aplūkot galerijā.
                  + +
                  Publisks / privāts
                  +
                  Kad albūms kļūst privāts, dod piekļuves tiesības lietotājiem un grupām
                  + +
                  Pārstāvis
                  +
                  Šī iespēja kļūst pieejama, kad konfigurācijas iestatījumos iestatījuma vērtība allow_random_representative (skat. include/config_defaults.inc.php) ir patiesa ( true). Katru albūmu var pārstāvēt gadījuma fotoattēls vai fotoattēls, kas izvēlēts kā unikāls pārstāvis.
                  + +
                  diff --git a/sources/language/lv_LV/help/cat_perm.html b/sources/language/lv_LV/help/cat_perm.html new file mode 100644 index 0000000..e2c0ad6 --- /dev/null +++ b/sources/language/lv_LV/help/cat_perm.html @@ -0,0 +1,11 @@ +

                  Rediģēt albūmu piekļuves atļaujas

                  + +

                  Šis logs pieejams tikai privātajiem albūmiem. Šeit varat izvēlēties albūmam autorizētus lietotājus un grupas.

                  + +

                  Grupas

                  + +

                  Jūs varat liegt vai atļaut grupas piekļuvi tekošajam albūmam. Modificējot grupu piekļuves tiesības, lietotājiem piekrītošiem šai grupai, tiks liegta vai atļauta piekļuve albūmam.

                  + +

                  Lietotāji

                  + +

                  Jūs varat liegt vai atļaut piekļuves tiesības atsevišķiem lietotājiem. Lietotājiem, kam ir grupas piekļuves tiesības, tās var atņemt izņēmuma kārtā.

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/configuration.html b/sources/language/lv_LV/help/configuration.html new file mode 100644 index 0000000..ad974f7 --- /dev/null +++ b/sources/language/lv_LV/help/configuration.html @@ -0,0 +1,108 @@ +

                  Konfigurācija

                  + +

                  Šajā logā administrators var veikt sistēmas pamatkonfigurāciju. Patiešām, šis logs dod piekļuvi tikai vienkāršākajiem konfigurācijas parametriem, kas ir gluži pietiekami lielākajam administratoru skaitam. Ja vēlaties vairāk (modernizētus) konfigurācijas parametrus, lasiet failu include/config_default.inc.php.

                  + +

                  Šis logs ir sadalīts vairākās sekcijās, sagrupējot konfigurācijas parametrus pēc tēmām.

                  + + +

                  Galvenais

                  +
                    +
                  • Galerijas virsraksts: izmantots RSS padevē un e-pasta paziņojumos.
                  • + +
                  • Lapas baneris: tiek atainots katras publiskās lapas augšā.
                  • + +
                  • Galerijas URL: izmantots RSS padevē.
                  • + +
                  • Bloķēt galeriju: Bloķē visu galeriju uz apkopes laiku. Tikai lietotāji ar administratora tiesībām var piekļūt galerijai.
                  • + +
                  • Novērtējums: Attēla novērtēšanas funkcija ir iespējota.
                  • + +
                  • Viesu veiktais novērtējums: Pat nepiereģistrēti lietotāji var vērtēt attēlus.
                  • + +
                  • Atļauj lietotāja reģistrāciju: Ikviens var reģistrēties.
                  • + +
                  • Visiem lietotājiem nepieciešama pasta adrese: pasta adrese tiks pārbaudīta reģistrējoties vai pie profila atjaunināšanas, izņemot, ja attiecīgās darbības veic administrators.
                  • + +
                  • Izsūta e-pastu administratoram, kad reģistrējas jauns lietotājs: +par katru jauna lietotāja reģistrēšanos ar e-pastu tiks paziņots administratoram.
                  • + +
                  + +

                  Vēsture

                  + +

                  Lapas apmeklējumu skaits category.php un picture.php tiks saglabāts history tabulā.

                  + +

                  Apmeklējumi tiks parādīti Administrēšanā, Speciālos, Vēsturē.

                  + +
                    +
                  • Saglabāt viesu lapu apmeklējumus: viesu veiktais lapu apmeklējumu skaits tiks ierakstīts.
                  • + +
                  • Saglabāt lietotāju veiktos lapu apmeklējumus: reģistrēto lietotāju veiktais lapu apmeklējumu skaits tiks ierakstīts.
                  • + +
                  • Saglabāt administratoru lapu apmeklējumus: administratoru veiktais lapu apmeklējumu skaits tiks ierakstīts.
                  • + +
                  + +

                  Komentāri

                  +
                    + +
                  • Komentāri visiem: Pat nereģistrēts viesis var komentēt.
                  • + +
                  • Komentāru skaits lapā.
                  • + +
                  • Apstiprināšana: administratoram jāapstiprina lietotāju komentāri pirms tie kļūst redzami web lapā. Lietotāju komentāru apstiprināšana notiek logā Administrēšana, Attēli, Komentāri.
                  • + +
                  • Izsūta e-pastu administratoram, kad ievadīts derīgs komentārs: +Izsūta e-pastu administratoram, kad lietotājs ievada komentāru un tas tiek pārbaudīts.
                  • + +
                  • Izsūta e-pastu administratoram, kad komentāram nepieciešama apstiprināšana: +Izsūta e-pastu administratoram , kad administratoram jāpārbauda un jāakceptē lietotāja ievadītais komentārs. +Lietotāju komentāru apstiprināšana notiek logā Administrēšana, Attēli, Komentāri.
                  • + +
                  + +

                  Augšupielāde

                  +
                    +
                  • Rāda augšupielādes saiti katru reizi: ja eksistē augšuplādējamas kategorijas, augšupielādes saite tiek rādīta katrai kategorijai.
                  • +
                  • Lietotāja piekļuves līmenis augšupielādei: +Aizliedz augšupielādi dažām lietotāju kategorijām.
                  • +
                  • Izsūta e-pastu administratoram, kad tiek augšuplādēts attēls : +Administratoram ar e-pastu paziņo katru reizi, kad lietotājs augšupielādē attēlu.
                  • +
                  + +

                  Attēlošana pēc noklusējuma

                  + +

                  Šeit Jūs varat mainīt attēlošanas iespējas, ko lieto viesis, lietotājs pēc noklusēšanas, kas nav iekonektējies. Kad iekonektējas, tiek lietoti lietotāja paša istatījumi (modificējami profilā).

                  + +

                  Iespējams izmainīt atainošanas iespējas visiem eksistējošiem lietotājiem, jāieiet Administrēšana, Identifikācija, Lietotāji logā, kur var izvēlēties lietotāju sarakstu.

                  + +
                    + +
                  • Valoda: pielietojams tikai Piwigo etiķetēm. Kategoriju un attēlu nosaukumi, kā arī visi aprakstošie komentāru lauki nav lokalizējami (tulkojami).
                  • + +
                  • Attēlu skaits rindā
                  • + +
                  • Rindu skaits lapā
                  • + +
                  • Interfeisa tēma
                  • + +
                  • Tekošais periods: Dienās. Laika sprīdis, kurā attēls tiek rādīts kā jauns. Jābūt lielākam par 1 dienu.
                  • + +
                  • Izvērst visas kategorijas: Pēc noklusējuma izvērst visas kategorijas izvēlnē Brīdinājums: šī darbība ir resursietilpīga un, ja Jūsu kategoriju koks satur daudz kategoriju, var tikt ģenerēts liels skaits izvēlņu.
                  • + +
                  • Rāda komentāru skaitu: Sīkbilžu lapā rāda komentāru skaitu katram attēlam. Resursu patērējošs.
                  • + +
                  • Rāda apmeklējumu skaitu: sīkbilžu lapā zem attiecīgās sīkbildes rāda cik reižu katrs attēls apskatīts. + Tikai tad, kad papildus konfigurācijas parametrs ir:
                    + $conf['show_nb_hits'] = true;
                    +Zināšanai: false ir pēc noklusējuma.
                  • + +
                  • Attēlu maksimālais platums: maksimālais attēlojamais platums. Attēli, kas pārsniedz šo lielumu, tiks pārveidoti, lai tos var parādīt. Labāk apsverat iespēju modificēt attēla platumu pašiem, nekā izmantot šo noklusējuma variantu.
                  • + +
                  • Attēlu maksimālais augstums: attiecināms tas pats, kas pieminēts attēlu maksimālajā platumā.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/extend_for_templates.html b/sources/language/lv_LV/help/extend_for_templates.html new file mode 100644 index 0000000..3690efa --- /dev/null +++ b/sources/language/lv_LV/help/extend_for_templates.html @@ -0,0 +1,85 @@ +

                  Plašāk par veidņu konfigurēšanu

                  + +

                  Mērķis

                  +

                  Definē aizvietošanas apstākļus katrai veidnei, ņemot vērā veidnes paplašinājumu (veidne saukta "replacer" - aizvietotājs).

                  + +

                  "original template" no ./template/yoga (vai jebkura cita, kā yoga) + tiks aizvietota ar "replacer", ja šī aizvietotājveidne ir sasaistīta ar "original template" (un izvēles kārtā, kad pieprasītais URL satur "optional URL keyword").

                  + +

                  "Optional URL keywords" (papildus URL atslēgvārdi) ir tie, pēc kuriem var atrast moduļa nosaukumu iekš URL.

                  + +

                  TādēlTherefore "Optional URL keywords" var darboties kā aktīvas pastāvīgās saites "permalink" (skatīt informāciju par pastāvīgajām saitēm permalinkiem mūsu dokumentācijā).

                  + +

                  Nolasīt: `Warning` lietošanas apstākļus.

                  + +

                  Kādi ir veidņu paplašinājumi?

                  + +

                  Šis konfigurēšanas rīks ir pietiekami jaudīgs priekš iesācējiem un arī priekš zinošiem lietotājiem. +Izmantojot FTP, veidņu-paplašinājumu mapē, Webmāsters var nodublēt lielu daudzumu izplatīto .tpl failu ("original template") ar dažādiem nosaukumiem ("replacer"). + + "Original templates", patrreizējās oriģinālās atbalstītās veidnes ir:

                  +
                    +
                  • index.tpl
                  • +
                  • mainpage_categories.tpl un/vai thumbnails.tpl
                  • +
                  • menubar.tpl
                  • +
                  • header.tpl un/vai footer.tpl
                  • +
                  • picture_content.tpl un/vai picture.tpl
                  • + +
                  • profile.tpl un/vai profile_content.tpl
                  • +
                  • tags.tpl
                  • +
                  • upload.tpl
                  • +
                  • about.tpl
                  • +
                  • popuphelp.tpl
                  • +
                  • search.tpl un/vai search_rules.tpl
                  • +
                  • nbm.tpl un/vai notification.tpl
                  • +
                  • identification.tpl un/vai register.tpl
                  • +
                  • redirect.tpl
                  • +
                  + +

                  Kur var atrast veidņu pirmavotus "original templates"?

                  + +

                  Izdalēmās oriģinālās veidnes ir atrodamas template/yoga/ +(nerediģējiet tās šai vietnē). Tādējādi lietojot "original templates", jebkurš webmāsters var izveidot savas "replacers (customized templates)" veidnes.

                  + +

                  Kur var ieglabāt aizvietotājveidnes "replacers"?

                  + +

                  aizvietotājveidnes Replacers (pielāgotās veidnes) jāizvieto veidņu-paplašinājumu (template-extension) mapē (vai tās apakšmapēs). +Aizvietotājveidnes nosaukums var būt jebkāds bet ar .tpl paplašinājumu. Piemēram: template-extension/my-extension/video.tpl.

                  + + +

                  Kā aktivizēt savas aizvietotājveidnes "replacers"?

                  +

                  Lai aktivizētu radniecīgāsaizvietotājveidnes (pielāgotās veidnes) tām katrai jābūt piesaistītai oriģinājajai veidnei. + Šis ir "Extend for templates" uzdevums Konfigurēšanas Administrēšanas izvēlnē.

                  + +

                  Ja esta izvēlējies papildus URL atslēgvārdu, tad aizvietošanas notiks tikai lapās, kas sakritīs ar šo atslēgvārdu. Piemēram: index.php?/most_visited

                  + +

                  Pieredzējuši lietotāji kā papildus URL atslēgvārdu var lietot permalinkus – pastāvīgās saites.

                  + +

                  Ja esat izvēlējies Saistīto veidni tad aizvietošanas notiks tikai šajā veidnē.

                  + +

                  Kā var deaktivizēt savas aizvietotājveidnes "replacers"?

                  +
                    +
                  • Atselektējiet radniecīgās "Original templates".
                  • +
                  • Izmantojot FTP, izdzēšat aizstājējvaidnes "replacers".
                  • +
                  + +

                  Brīdinājumi

                  +
                    + +
                  • Oriģinālajām veidnēm ir jābūt "original" veidnēm, pretējā gadījumā sagaidāmi neparedzami rezultāti!
                  • + +
                  • No dažāmaizstājējveidnēm (pielāgotām veidnēm) ar to pašuOriģinālo veidni un to pašu papildus URL atslēgvārdu aktīva ir tikai pēdējā aizstājējveidne.
                  • + +
                  • Atselektētais papildus URL atslēgvārds aktivizēs aizstājējveidni jebkurā veidnes lietošanas gadījumā. Kā iepriekšējā punktā, jaunākā aizstājējveidne izpildās pirmā, ignorējot pārējās rindā esošās.
                  • + +
                  • Apakšmapes: +Apakšmapes tiek ignorētas, bet tās ir lietderīgas veicot izmaiņas patrreizējā rindā.
                    +izplatāmās-veidnes: tiek izplatītas testēšanas nolūkos! +Nerediģējiet tās izveidojiet paši savas. +
                  • + +
                  • Izdzēšot aizstājējveidni Oriģinālā veidne nekavējoties tiek no jauna aktivizēta.
                  • + +
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/group_list.html b/sources/language/lv_LV/help/group_list.html new file mode 100644 index 0000000..b9edd41 --- /dev/null +++ b/sources/language/lv_LV/help/group_list.html @@ -0,0 +1,22 @@ +

                  Grupu saraksts

                  + +

                  Šeit Jūs varat pārvaldīt grupas.

                  + +

                  Pievienot grupu

                  + +

                  Administrators var pievienot grupas.

                  + +

                  Grupu saraksts

                  + +

                  Katram elementam saraksts atļauj:

                  + + +
                    +
                  • pārvietories uz biedru sarakstu
                  • +
                  • pārvietoties uz atļauju pārvaldīšanas logu
                  • +
                  • dzēst grupu (nepieciešams apstiprinājums)
                  • +
                  • pārslēgt statusu "default" (nepieciešams apstiprinājums)
                  • +
                  + +

                  Grupas pēc noklusējuma

                  +

                  Grupas pēc noklusējuma ir tās, kuras administrators automātiski sasaistīta ar katru jaunu lietotāju tā reģistrācijas vai izveides gaitā.

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/help_add_photos.html b/sources/language/lv_LV/help/help_add_photos.html new file mode 100644 index 0000000..cfaf6a2 --- /dev/null +++ b/sources/language/lv_LV/help/help_add_photos.html @@ -0,0 +1,22 @@ +

                  Vairaki veidi ka pievienot attelus Jusu galerijai:

                  + +
                    +
                  • Tieša augšupielade izmantojot web parluku ir vienkaršakais un atrakais veids. To nosaka Jusu parluka iespejas un Jusu web serveris. Ja nepieciešams augšupieladet loti daudz attelu un ja, rodas problemas, ir citi veidi ka to izdarit!
                  • +
                  + + + +
                    +
                  • pLoader ir aplikacija, kas jaieinstale Jusu datora. Ievelciet & nolieciet attelus pLoader loga, uzklikškiniet uz "Augšupieladet Piwigo" un laujiet pLoaderim padarit darbu. Ir pieejamas ari citas aplikacijas, piemeram, WinToPiwigo vai Digikam spraudni attelu ieladešanai Piwigo.
                  • +
                  + + + +
                  +
                    +
                  • Ielade ar FTP ir ieteicamakais variants lielu attelu kolekciju augšupieladei ar minimalu darbibu skaitu. Sekojiet celvedim, lai sekmigi sagatavotu Jusu attelus. FTP ielades metode lauj pilniba kontrolet Jusu attelu organizaciju uz servera.
                  • +
                  + + +
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/help_groups.html b/sources/language/lv_LV/help/help_groups.html new file mode 100644 index 0000000..b9371de --- /dev/null +++ b/sources/language/lv_LV/help/help_groups.html @@ -0,0 +1,5 @@ +

                  Grupas ir ērts veids kā piešķirt atļaujas lietotāju sarakstam.

                  + +

                  Izveidot grupas Administrēšanas » Lietotāja » Grupas un piesaistīt lietotājus šai grupai Administrēšanas » Lietotāja » Pārvaldīt.

                  + +

                  Lietotājs var vienlaicīgi piederēt vairākām grupām. Autorizācijai ir priekšroka pār aizliegumu: ja lietotājs "jack" pieder grupām "family" un "friends", un tikai grupa "family" var redzēt kategoriju "Christmas 2003" kategoriju, tad arī grupa "jack" redzēs "Christmas 2003".

                  diff --git a/sources/language/lv_LV/help/help_misc.html b/sources/language/lv_LV/help/help_misc.html new file mode 100644 index 0000000..45eb74b --- /dev/null +++ b/sources/language/lv_LV/help/help_misc.html @@ -0,0 +1,9 @@ +

                  Tiklīdz esat izveidojis savu galeriju, varat to konfigurēt priekš apmeklētājiem +

                    +
                  • Atainojums pēc noklusējuma kā gribējāt iekšAdministrēšana » Konfigurācija » Iespējas iezīme Viesa Iestatījumi
                  • +
                  • Tēma pēc noklusējuma iekšAdministrēšana » Konfigurācija » Tēmas
                  • +
                  • Valoda pēc noklusējuma iekš Administrēšana » Konfigurācija » Valodas
                  • +
                  + Pēc noklusējuma, katrs jaunais lietotājs manto šīs īpašības, tiklīdz reģistrējies. +

                  +

                  Ja rodas jautājumi, Piwigo komūna laipni aicina Jūs savā forumā.

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/help_permissions.html b/sources/language/lv_LV/help/help_permissions.html new file mode 100644 index 0000000..619592b --- /dev/null +++ b/sources/language/lv_LV/help/help_permissions.html @@ -0,0 +1,56 @@ +
                  +Atļaujas attēliem + +

                  Katram attēlam ir konfidencialitātes līmenis (atslēga). Katram lietotājam arī ir konfidencialitātes līmenis (slēdzene). Ir 5 konfidencialitātes līmeņi:

                  +
                    +
                  1. Neviens
                  2. +
                  3. Kontakti
                  4. +
                  5. Draugi (augstāks par kontaktiem)
                  6. +
                  7. Ģimene (augstāks par draugiem)
                  8. +
                  9. Administrators (augstāks par visiem līmeņiem)
                  10. +
                  + +

                  Augstākam līmenim ir atļauja lietot zemākos līmeņus. Jo lietotāja konfidencialitātes līmenis ir augstāks, jo vairāk attēlus tas redz.

                  + +

                  Piemēram, ja attēlam "peter_wedding-0024.jpg" ir "Ģimenes" +konfidencialitātes līmenis, tad:

                  +
                    +
                  • Pēteris (kas ir "Administrators") redz attēlu, jo "Adminstrators" var redzēt visus attēlus
                  • +
                  • Beta (kas ir "Ģimenes" biedrs) arī redzēs attēlu
                  • +
                  • Marija (kas ir tikai "Draugs") attēlu neredzēs
                  • +
                  + +

                  Lietotājs, kam nav tiesību redzēt kategorijas saturu, neredzēs pat kategorijas nosaukumu. Tas pats attiecas arī uz iezīmēm.

                  + +

                  Jūs varat iestādīt lietotāja konfidencialitātes līmeni izmantojot Administrācijas » Lietotāja » Pārvaldnieka +ekrānu.

                  + +
                  + +
                  +Atļaujas kategorijām + +

                  Ja konfidencialitātes līmeņi Jūs neapmierina, iespējams izmantot lietotāja vai grupas atļaujas uz kategorijām. Jūs varat izmantot atļaujas uz attēliem un kategorijām vienlaikus bez konfliktiem.

                  + +

                  Jūs varat aizliegt piekļuvi kategorijām. Varat izmainīt piekļuves tipu kategorijai uz "privāto", ja nepieciešams pārvaldīt piekļuves atļaujas.

                  + +

                  Jūs varat iestatīt kategoriju uz privāto rediģējot vienu kategoriju izmantojot (Administratora » Kategoriju » Pārvaldnieku +» edit) vai veicot izvēles visā kategoriju kokā izmantojot +(Administrācijas » Kategoriju » +Rekvizītus » Publisks / Privāts).

                  + +

                  Ja kategorija ir privāta, iespējams pārvaldīt grupu un lietotāju atļaujas uzreiz 3 ekrānos:

                  + +
                    + +
                  • Administratora » Lietotāja » Pārvaldnieka +» darbības atļauja ( viena saite uz lietotāju)
                  • + +
                  • Administratora » Lietotāja » Grupu +» darbības atļauja (viena saite uz grupu)
                  • + +
                  • Administratora » Kategorijas » +Pārvaldnieka » kategoriju piekļuves rediģēšanas atļauja (viena saite uz kategoriju)
                  • + +
                  +
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/help_virtual_links.html b/sources/language/lv_LV/help/help_virtual_links.html new file mode 100644 index 0000000..2596688 --- /dev/null +++ b/sources/language/lv_LV/help/help_virtual_links.html @@ -0,0 +1,5 @@ +

                  Attēli tiek rādīti kategorijās atbilstoši to failu mapei.

                  + +

                  Iespējams parādīt attēlu vairākās kategorijās nedublējot tā failu uz web servera. Sasaistiet attēlu ar jebkuru kategoriju, izmantojot attēlu rediģēšanas logu (tas pieejams katram administratoram no attēla lapas galerijas pusē).

                  + +

                  Virtuālās kategorijas ir balstītas uz sekojoša koncepta: tām nav atbilstošu fizisku mapju. Veidojiet virtuālās kategorijas izmantojot Administrēšanas » Kategoriju » Pārvaldnieku.

                  diff --git a/sources/language/lv_LV/help/history.html b/sources/language/lv_LV/help/history.html new file mode 100644 index 0000000..60ccfb0 --- /dev/null +++ b/sources/language/lv_LV/help/history.html @@ -0,0 +1,32 @@ +

                  Vēsture

                  + +

                  Šajos logos, saskaņā ar izvēlētajām iespējām panelī Administrēšana – Vispārējais – Vēstures indekss, Jūs varat kontrolēt savas galerijas apmeklējumu vēsturi.

                  + +

                  Statistika

                  +
                    +

                    Ja esat izvēlējies ierakstīt (index.php un picture.php) apmeklētās lapas tabulā history, Jūs varat to kontrolēt no šejienes.

                    + +
                  • Vispārējā statistika: apmeklējumu skaits gada laikā.
                  • + +
                  • Gada statistika: apmeklējumu skaits mēnesī izvēlētajā gadā.
                  • + +
                  • Mēneša statistika: apmeklējumu skaits dienā izvēklētajā mēnesī.
                  • + +
                  • Dienas statistika: apmeklējumu skaits stundā izvēlētajā dienā.
                  • + +
                  + +

                  Meklēšana

                  +
                    +

                    Ja esat nolēmis ierakstīt (index.php un picture.php) apmeklētās lapas tabulā history. , tad, izmantojot šo iezīmi ar dažādu filtru palīdzību, varat aplūkot apmeklēto lapu detaļas.

                    + +
                  • Filrēšana pēc datuma : izvēlieties datumu intervālu, kurā vēlaties vērot apmeklējumu aktivitāti.
                  • + +
                  • Filtrēšana pēc elementa tipa : lai aplūkotu noteikta elementa tipa apmeklējumu aktivitāti, izvēlieties tā tipu.
                  • + +
                  • Filtrēšana pēc lietotāja : izvēlieties lietotāju, kura apmeklējumu aktivitāti vēlaties redzēt.
                  • + +
                  • Filtrēšana pēc faila nosaukuma : izvēlieties faila nosaukumu, kura apmeklējumu aktivitāti vēlaties redzēt.
                  • + +
                  • Filtrēšana pēc attēla identifikatora : izvēlieties attēlu pēc tā identifikatora, kura apmeklējumu aktivitāti vēlaties redzēt.
                  • +
                  diff --git a/sources/language/lv_LV/help/maintenance.html b/sources/language/lv_LV/help/maintenance.html new file mode 100644 index 0000000..fe8e33f --- /dev/null +++ b/sources/language/lv_LV/help/maintenance.html @@ -0,0 +1,45 @@ +

                  Apkalpošana

                  + +

                  Lai optimizētu lapas ģenerēšanas laiku, Piwigo izmanto kešatmiņu kā informācijas starpnieku. Piemēram, tā vietā, lai katru reizi ielādējot lapu skaitītu cik attēlu ir attiecīgajā kategorijā, šī informācija tiek glabāta datu bāzē. Teorētiski šai informācijai parasti būtu jābūt korektai, bet dažreiz gadās, ka kešatmiņā esošā informācija ir kļūdaina.

                  + +

                  Laikam ejot, daļa informācijas kļūst nevajadzīga. Izdzēšot nevajadzīgo informāciju no datu bāzes, ietaupīsiet savu diska telpu.

                  + +
                    + +
                  • +Nesasaistītie elementi: + Tiek rādīti attēli, kuri nav sasaistīti ne ar vienu virtuālo kategoriju. +
                  • +
                  • +Faili ar vienādiem nosaukumiem vairāk kā vienā fiziskā kategorijā: + Parāda attēlus vai failus, kuri atrasti vairākās kategorijās ar vienādiem faila vārdiem. +
                  • + +
                  + +
                    + +
                  • Atjaunina informāciju par kategoriju: Katru kategoriju raksturojošo informāciju pārbauda un, ja nepieciešams atjaunina: pamata kategoriju sarakstu, attēlu skaitu, pēdējo attēla datumu, vietu starp radniecīgām kategorijām, atrašanās vietu starp visām kategorijām. Šī darbība pārbauda arī pārstāvēto attēlu pastāvību.
                  • + +
                  • Atjaunina informāciju par attēlu: Par katru attēlu atjaunināmā informācija ir: pilns ceļš līdz failam, vidējais novērtējums. Brīdinājums, nesajauciet: metadatu informācija ir jāsinhronizē no Administrēšanas, Kategorijas, Sinchronizācijas, vai izmantojot katra attēla modifikācijas ekrānu (līdz Attēlam piemēram).
                  • + +
                  • Salabo un optimizē datu bāzi: + Veic pārkārtošanas, labošanas un optimizācijas operācijas katrai datu bāzes tabulai. +
                  • +
                  + +
                    +
                  • Dzēš vecos datus: Dzēš visas rindas no +vēstures tabulas. Logs Administratēšana, + Speciālais, Vēsture vairāk nerādīs informāciju par pagājušo vēsturi. Brīdinājums: visi dati neatgriezeniski tiks pazaudēti.
                  • + +
                  • Izdēš vēstures kopsavilkumu: Dzēš informācijas kopsavilkumu par apmeklējumu vēsturi. Šā kopsavilkuma pamatā vēsturiskās detaļas.
                  • + +
                  • Dzēš sesijas: Dzēš lietotāju izbeigušās sesijas.
                  • + +
                  • Dzēš neizmantotās paziņojumu plūsmas
                  • + +
                  • Dzēš meklēšanas vēsturi
                  • + +
                  • Dzēš izveidotās paraugveidnes
                  • +
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/notification_by_mail.html b/sources/language/lv_LV/help/notification_by_mail.html new file mode 100644 index 0000000..97bb53e --- /dev/null +++ b/sources/language/lv_LV/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                  E-pasta paziņojumi

                  + +

                  Šis logs ļauj konfigurēt un izsūtīt e-pastu lietotājiem, lai paziņotu par viņu web lapās veiktajām izmaiņām.

                  + +

                  Šis logs sastāv no trīs raksturiezīmēm:

                  + +

                  Parameteri

                  +

                  Pieejams tikai webmāsteriem, ar šīs iezīmes palīdzību iestāda e-pasta paziņojuma parametrus.

                  + +

                  Abonēšana

                  +

                  Pieejams tikai webmāsteriem, ar šīs iezīmes palīdzību pārvalda lietotāju reģistrēšanās/izrakstīšanās informācijas nosūtīšanu ar e-pastu.

                  + +

                  Aģents

                  +

                  Pieejams tikai webmāsteriem un administratoriem, šī iezīme ļauj izsūtīt e-pasta paziņojumus, lai informētu par veiktajām izmaiņām.

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/permalinks.html b/sources/language/lv_LV/help/permalinks.html new file mode 100644 index 0000000..74141af --- /dev/null +++ b/sources/language/lv_LV/help/permalinks.html @@ -0,0 +1,7 @@ +

                  Pastāvīgās saites - permalinki

                  + +

                  Pastāvīgās saites izmanto, lai padarītu kategoriju url glītākus. Kad kategorija definēta ar pstāvīgo saiti, kategorijas id urlā vairs nav nepieciešama.

                  + +

                  Kad pastāvīgā saite ir izdzēsta, Jūs to varat saglabāt pastāvīgo saišu vēsturē, tādējādi ārējas saites uz Piwigo lapām darbosies. Pastāvīgo saišu vēstures tabulā iespējams atrast datumu, kad šī saite ir izdzēsta, kad ši saite pēdējo reizi lietota un cik reizes tā ir lietota.

                  + +

                  Svarīgi, ka katrai kategorijai ir jābūt unikālai pastāvīgai saitei. Arī pastāvīgo saišu vēsturē nevar būt divu vienādu pastāvīgo saišu.

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/photos_add_ftp.html b/sources/language/lv_LV/help/photos_add_ftp.html new file mode 100644 index 0000000..3f380df --- /dev/null +++ b/sources/language/lv_LV/help/photos_add_ftp.html @@ -0,0 +1,98 @@ +
                  +Ātrais Starts + +
                    +
                  1. Izveidot mapi Jūsu datorā.
                  2. + +
                  3. Kopēt dažus attēlus šīs mapes iekšienē, piemērot tos rādīšanai internetā. +Brīdinājums: mapju un failu nosaukumi jāveido tikai no burtiem, cipariem, "-", "_" vai ".". Nav pieļaujami tukšumi vai apakšsvītras.
                  4. + +
                  5. Izmantojot FTP klientu, iekopējiet Jūsu mapi Piwigo instalācijas "galleries" mapē.
                  6. + +
                  7. Ielogojaties Jūsu galerijā un ejiet uz Administrēšanu +» Attēlu » Sīkbildēm, lai izveidotu trūkstošās sīkbildes.
                  8. + +
                  9. Ejiet uz Administrēšanu un klikšķiniet uz lielās Sinhronizācijas pogas.
                  10. +
                  Apsveicam! Jūs esat sekmīgi izveidojis Jūsu fotogalerijas pirmo kategoriju. +
                  + +
                  +Mapju un failu organizācija + +
                    + +
                  • + +

                    Kategoriju mapes atrodas Piwigo mapē "galleries". Tālāk seko ļoti mazas (bet ar ļoti daudz iespējām) galerijas mapju koks: + +

                    +.
                    +|-- admin
                    +|-- doc
                    +|-- galleries
                    +|   |-- category-1
                    +|   |   |-- category-1.1
                    +|   |   |   |-- category-1.1.1
                    +|   |   |   |   |-- category-1.1.1.1
                    +|   |   |   |   |   |-- pwg_high
                    +|   |   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   |   |-- thumbnail
                    +|   |   |   |   |   |   +-- TN-wedding.jpg
                    +|   |   |   |   |   +-- wedding.jpg
                    +|   |   |   |   +-- category-1.1.1.2
                    +|   |   |   +-- category-1.1.2
                    +|   |   |-- category-1.2
                    +|   |   |   |-- pookie.jpg
                    +|   |   |   +-- thumbnail
                    +|   |   |       +-- TN-pookie.jpg
                    +|   |   +-- category-1.3
                    +|   +-- category-2
                    +|       |-- piglet.gif
                    +|       |-- pwg_representative
                    +|       |   +-- video.jpg
                    +|       |-- thumbnail
                    +|       |   +-- TN-piglet.jpg
                    +|       +-- video.avi
                    +|-- include
                    +|-- install
                    +|-- language
                    +|-- template
                    ++-- tool
                    + +
                  • + +
                  • Izņemot ar nosaukumu "thumbnail", "pwg_high" vai "pwg_representative" (skatīt skaidrojumu zemāk), katra mape zem "galleries" veido kategoriju. To dziļumam nav ierobežojumu.
                  • + +
                  • Pamatā elementu pārstāv fails. Fails var būt Piwigo elements, ja tā paplašinājums ir starp file_ext konfigurācijas parametru iespējām (skatīt include/config_default.inc.php failu). Fails var būt attēls, ja tā paplašinājums ir starp picture_ext konfigurācijas parametru iespējām.
                  • + +
                  • Attēliem jābūt asociētiem ar savām sīkbildēm (skatīt sīkbilžu sekciju zemāk)
                  • + +
                  • Attēli var būt asociēti ar liela izmēra failiem augstai izšķirtsējai. Kā, piemēram, attēlam wedding.jpg augstāk. Bez prefiksa augstas izšķirtsējas attēlam.
                  • + +
                  • Pēc noklusējuma ikonai, kas pārstāv faila nosaukuma paplašinājumu, nav nekādu papildus attēla elementu (video, skaņu, tekstu, jebkas...) . Ar papildus izvēli, Jūs varat sasaistīt sīkbildi un pārstāvošo failu (skatīt video.avi augstāk piemērā).
                  • + +
                  • Brīdinājums: mapju un failu nosaukumi jāveido tikai no burtiem, cipariem, "-", "_" vai ".". Nav pieļaujami tukšumi vai apakšsvītras.
                  • + +
                  • Kolīdz faili, sīkbildes un pārstāvības ir korekti saliktas mapēs, ejam uz: Administrēšanu » Kategorijām » Sinchronizšānu
                  • + +
                  +
                  + +
                  +Sīkbildes +
                    + +
                  • Katram attēkam ir jābūt savai sīkbildei.
                  • + +
                  • Sīkbildes glabājas "thumbnail" kategorijas mapes apakšmapē. Sīkbildei ir tāds pats faila nosaukums kā tās pārstāvētajam attēlam, ar konfigurācijas parametriem prefix_thumbnail kā prefikss (skatīt include/config.inc.php).
                  • + +
                  • Sīkbilžu failiem nav jābūt ar tādu pašu paplašinājumu kā to pārstāvētajiem attēliem (piem. ".jpg" attēlam var būt ".GIF" paplašinājums).
                  • + +
                  • Sīkbilžu izveidošanai ieteicams izmantot ārējo moduli.
                  • + +
                  • Nav ieteicams izmantot Piwigo integrēto sīkbilžu veidošanas instrumentu, jo ar to veidoto sīkbilžu kvalitāte ir zema un tas stipri noslogo serveri ( tas rada nopietnas problēmas šārētiem serveriem). + +
                  • Ja sīkbilžu veidošanai esat nolēmis izmantot webserveri, Jums jāatļauj rakstīšanas tiesības visām mapēm.
                  • + +
                  +
                  diff --git a/sources/language/lv_LV/help/search.html b/sources/language/lv_LV/help/search.html new file mode 100644 index 0000000..6a3e1dc --- /dev/null +++ b/sources/language/lv_LV/help/search.html @@ -0,0 +1,19 @@ +

                  Meklēt

                  + +

                  Šeit Jūs varat meklēt attēlus visā galerijā.

                  + +
                  + +
                  Meklēt pēc vārdiem
                  +
                  Meklē pēc viena vai vairākiem vārdiem starp ar galeriju saistīto attēlu atribūtiem. Lietojiet * kā aizstājējzīmi nepilnam meklējumvārdam.
                  + +
                  Meklēt pēc autora
                  +
                  Lietojiet * aizstājējzīmi nepilnam meklējumvārdam.
                  + +
                  Meklēt pēc datuma
                  +
                  Izvēlieties datumu un/vai beigu datumu jūsu meklējumam. Atstājiet datuma lauku tukšu, ja vēlaties izveidot "before" meklējumu. Gadu beidzamajā lauciņa jāievada sekojošā formātā: AAAA (t.i. 2004)
                  + +
                  Meklēt Kategorijās
                  +
                  Izvēlietits kategoriju vai kategorijas, kurās vēlaties meklēt. Meklēts tiks arī visās apakškategorijās, ja izvēlēsities pamatkategoriju un iestatīsit atļauju meklēt apakškategorijās.
                  + +
                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/synchronize.html b/sources/language/lv_LV/help/synchronize.html new file mode 100644 index 0000000..3c81881 --- /dev/null +++ b/sources/language/lv_LV/help/synchronize.html @@ -0,0 +1,7 @@ +

                  Sinhrionizēšana

                  + +

                  Ir divi dažādi sinhronizēšanas varianti: pēc mapēm/failiem un failu metadatiem. Variants Mapes/faili sinhronizē Jūsu mapju koku ar kategoriju koku datu bāzē. Sinhronizācija pēc Metadatiem atjaunina informāciju par elementiem: faila izmērs, dimensijas pikseļos, EXIF vai IPTC informāciju.

                  + +

                  Pirmoreiz sinhronizējot ir jāsinhronizē pēc mapēm/failiem varianta.

                  + +

                  Sinhronizācijas process var stipri ieilgt (viss atkarīgs no servera noslodzes un sinhronizējamo elementu daudzuma) tā, ka ieteicams to darīt pakāpeniski, kategoriju pēc kategorijas.

                  \ No newline at end of file diff --git a/sources/language/lv_LV/help/user_list.html b/sources/language/lv_LV/help/user_list.html new file mode 100644 index 0000000..a62b7e4 --- /dev/null +++ b/sources/language/lv_LV/help/user_list.html @@ -0,0 +1,31 @@ +

                  Lietotāju saraksts

                  + +

                  Šeit var pārvaldīt reģistrēto lietotāju rekvizītus, izņemot atļaujas, kas tiek pārvaldītas no citurienes.

                  + +

                  Pievienot lietotāju

                  + +

                  Administrators var pašrocīgi pievienot lietotājus.

                  + +

                  Lietotāju saraksts

                  + +

                  Sarakstu var filtrēt pēc lietotājvārda (lietot * kā aizstājējzīmi), grupas vai statusa. To var sakārtot pēc reģistrēšanas datuma vai lietotājvārda gan augošā, gan dilstošā kārtībā.

                  + +

                  Šis logs, izmantojot dažādas darbības, ļauj pārvaldīt vairākus lietotājus vienlaicīgi:

                  + +
                    + +
                  • dzēst lietotājus (nepieciešams apstiprinājums)
                  • +
                  • izmainīt statusu
                  • +
                  • piesaistīt vai atsaistīt no grupām
                  • +
                  • modificēt rādīšanas rekvizītus
                  • +
                  • modificēt papildus rekvizītus
                  • + +
                  + +

                  Mērķis ir atlasītie lietotāji (pēc noklusēšanas) vai visi lietotāji, kas uzrādas izfiltrētajā sarakstā.

                  + +

                  Padomdevējs

                  +

                  Padomdevēja definīcija: lietotājs, kas izlasa visu viņam pieejamo informāciju simulācijas režīmā.

                  + +

                  Padomdevēja režīmu var iestādīt ar mainīgo $conf['allow_adviser'].

                  +

                  Ja šī mainīgā vērtība ir 'true', jebkurš lietotājs iegūst padomdevēja statusu

                  diff --git a/sources/language/lv_LV/index.php b/sources/language/lv_LV/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/lv_LV/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/lv_LV/install.lang.php b/sources/language/lv_LV/install.lang.php new file mode 100644 index 0000000..094ce46 --- /dev/null +++ b/sources/language/lv_LV/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = "Vajag palidzibu? Uzdodiet savu jautajumu Piwigo sludinajumos."; +$lang['Visitors will be able to contact site administrator with this mail'] = "Apmekletaji vares izmantot šo e-pastu, lai sazinatos ar lapas administratoru"; +$lang['PHP 5 is required'] = "nepieciešams PHP 5 "; +$lang['It appears your webhost is currently running PHP %s.'] = "Jusu webhosts patlaban izmanto PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo var meginat parslegt Jusu konfiguraciju uz PHP 5 izveidojot vai modificejot a .htaccess failu."; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "Jus varat izmanit savu konfiguraciju pats un pec tam parstartet Piwigo."; +$lang['Try to configure PHP 5'] = "Meginiet nokonfiguret PHP 5"; +$lang['Sorry!'] = "Atvainojiet!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo nevar nokonfiguret PHP 5."; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "Jums javeršas pie Jusu hostinga pakalpojuma sniedzeja pec palidzibas un pašam jamegina parslegties uz PHP 5 atbalstu."; +$lang['Hope to see you back soon.'] = "Ceram Jus redzet atkal."; +$lang['Congratulations, Piwigo installation is completed'] = 'Apsveicam, Piwigo instalacija ir pabeigta'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = ' Alternativa ir iekopet tekstu lodzina augšpuse un ielimet to faila "local/config/database.inc.php" (Uzmanibu : database.inc.php drikst saturet tikai to kas ir teksta lodzina, ne enter ne tukšumus)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Konfigurācijas faila local/config/database.inc.php izveide ir nesekmīga.'; +$lang['Download the config file'] = 'Lejupladet config failu'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Jums jalejupielade configuracijas fails un jaielade tas Jusu instalacijas local/config mape.'; +$lang['Just another Piwigo gallery'] = 'Vēl viena Piwigo galerija'; +$lang['Welcome to my photo gallery'] = 'Laipni lūgti manā foto galerijā'; +$lang['Welcome to your new installation of Piwigo!'] = 'Laipni lūgti Jūsu Piwigo jaunajā instalācijā!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Nevilcinieties izmantot mūsu forumu palīdzību: %s'; +$lang['localhost or other, supplied by your host provider'] = 'vietējais pakalpojuma sniedzējs vai cits, tas ko atbalsta vietējais pakalpojuma sniedzējs'; +?> \ No newline at end of file diff --git a/sources/language/lv_LV/iso.txt b/sources/language/lv_LV/iso.txt new file mode 100644 index 0000000..3d3099a --- /dev/null +++ b/sources/language/lv_LV/iso.txt @@ -0,0 +1 @@ +Latviešu [LV] \ No newline at end of file diff --git a/sources/language/lv_LV/lv_LV.jpg b/sources/language/lv_LV/lv_LV.jpg new file mode 100644 index 0000000..9079b42 Binary files /dev/null and b/sources/language/lv_LV/lv_LV.jpg differ diff --git a/sources/language/lv_LV/upgrade.lang.php b/sources/language/lv_LV/upgrade.lang.php new file mode 100644 index 0000000..0bbd253 --- /dev/null +++ b/sources/language/lv_LV/upgrade.lang.php @@ -0,0 +1,43 @@ +release %s (or equivalent).'] = "Šī lapa piedāvā uzlabot Jūsu Piwigo veco datu bāzi uz jaunāko versiju. Uzlabošanas asistents domā, ka Jūs patlaban lietojat release %s ( vai ekvivalentu)."; +$lang['Upgrade from version %s to %s'] = "Uzlabojums no %s versijas uz %s"; +$lang['Statistics'] = "Statistika"; +$lang['total upgrade time'] = "kopējais uzlabošanas procesa laiks"; +$lang['total SQL time'] = "kopējais SQL laiks"; +$lang['SQL queries'] = "SQL rindas"; +$lang['Upgrade informations'] = "Informācija par uzlabojumu"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Veiciet profilakses pārbaudi [Administrēšana>Rīki>Profilakse] , ja ir gadījusies kāda kļūme."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Piesardzības nolūkos tiek atslēgti sekojoši spraudņi. Pirms tos atkal pieslēgt, pārbaudiet vai nav pieejami to uzlabojumi:"; +$lang['Only administrator can run upgrade: please sign in below.'] = "Uzlabojumu var veikt tikai administrators: lūdzu veiciet pierakstīšanos zemāk."; +$lang['You do not have access rights to run upgrade'] = "Jums nav pieejas tiesību, lai veiktu uzlabojumu"; +$lang['All sub-albums of private albums become private'] = 'Visi privātā albūma apakšalbūmi kļūst privāti'; +$lang['User permissions and group permissions have been erased'] = "Lietotāju un grupu piekļuves tiesības ir izdzēstas"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "No iepriekšējās konfigurācijas ir saglabāti tikai sīkbilžu prefiksi un webmāstera e-pasta adreses"; +$lang['In %s, before ?>, insert:'] = 'Iekš %s, pirms ?>,ievietot:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Piesardzības pasākumu dēļ, sekojošas tēmas ir deaktivētas. Pirms atkal tās aktivēt, jums jāpārbauda, vai nav pieejami šo tēmu jauninājumi:'; +?> \ No newline at end of file diff --git a/sources/language/mk_MK/admin.lang.php b/sources/language/mk_MK/admin.lang.php new file mode 100644 index 0000000..2650bb1 --- /dev/null +++ b/sources/language/mk_MK/admin.lang.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/language/mk_MK/common.lang.php b/sources/language/mk_MK/common.lang.php new file mode 100644 index 0000000..c6503b4 --- /dev/null +++ b/sources/language/mk_MK/common.lang.php @@ -0,0 +1,395 @@ +Побарај помош тука.'; +$lang['Create a new account'] = 'Зачлени се'; +$lang['Created on'] = 'Фотографирана во'; +$lang['Creation date'] = 'дата на создавање'; +$lang['Current password is wrong'] = 'Сегашната лозинка е погрешна'; +$lang['Dimensions'] = 'Димензии'; +$lang['Display'] = 'Преглед'; +$lang['Each listed rule must be satisfied.'] = 'Секое наведено правило мора да биде исполнето.'; +$lang['Email address is missing. Please specify an email address.'] = 'Email адресата недостасува.'; +$lang['Email address'] = 'Email адреса'; +$lang['Enter your personnal informations'] = 'Внесете ги вашите лични податоци'; +$lang['Error sending email'] = 'Грешка при испраќањето email.'; +$lang['File name'] = 'име на датотека'; +$lang['File'] = 'Датотека'; +$lang['Filesize'] = 'Големина'; +$lang['Filter and display'] = 'Пребарај и покажи ми'; +$lang['Filter'] = 'Филтер на пребарување'; +$lang['Forgot your password?'] = 'Ја заборави лозинката?'; +$lang['Go through the gallery as a visitor'] = 'Почетна страница'; +$lang['Help'] = 'Help'; +$lang['Identification'] = 'Корисник'; +$lang['Photos only RSS feed'] = 'Парцијален RSS feed (фотографии)'; +$lang['Keyword'] = 'Клучен збор'; +$lang['Links'] = 'Линкови'; +$lang['N/A'] = 'Не е познат'; +$lang['New on %s'] = 'Нова на %s'; +$lang['Notification'] = 'RSS'; +$lang['Number of items'] = 'Број на елементи'; +$lang['Original dimensions'] = 'Оригинални димензии'; +$lang['Password forgotten'] = 'Заборавена лозинка'; +$lang['Password'] = 'Лозинка'; +$lang['Piwigo Help'] = 'Често поставувани прашања'; +$lang['Post date'] = 'дата на испраќање'; +$lang['Posted on'] = 'Објавена во'; +$lang['Profile'] = 'Профил'; +$lang['Quick connect'] = 'Брзо најавување'; +$lang['RSS feed'] = 'RSS feed'; +$lang['Register'] = 'Зачлени се'; +$lang['Registration'] = 'Регистрирање на нов корисник'; +$lang['Related tags'] = 'Соодветни етикети'; +$lang['Reset'] = 'Избриши'; +$lang['Retrieve password'] = 'Врати ја лозинката'; +$lang['Search rules'] = 'Правила на пребарување'; +$lang['Search tags'] = 'Барај етикети'; +$lang['Search'] = 'Пребарување'; +$lang['display available tags'] = 'Погледни ги етикетите'; +$lang['Since'] = 'Од'; +$lang['Sort by'] = 'Подреди ги по'; +$lang['Sort order'] = 'Подредување по'; +$lang['Tag'] = 'Етикета'; +$lang['Tags'] = 'Етикети'; +$lang['The RSS notification feed provides notification on news from this website : new photos, updated albums, new comments. Use a RSS feed reader.'] = 'Really Simple Syndication функцијата обезбедува известувања кога се прикачуваат нови фотографии и пишуваат нови коментари. Потребно е да имате RSS feed reader. Повеќе информации може да најдете тука.'; +$lang['Unknown feed identifier'] = 'Непознат feed.'; +$lang['User comments'] = 'Коментари од корисниците'; +$lang['Username'] = 'Член'; +$lang['Visits'] = 'Погледи'; +$lang['Webmaster'] = 'Webmaster'; +$lang['Week %d'] = 'Недела %d'; +$lang['About Piwigo'] = 'Помош за користење на галеријата'; +$lang['You are not authorized to access the requested page'] = 'You are not authorized to access the requested page'; +$lang['add this photo to your favorites'] = 'Додај ја фотографијата во твоите омилени'; +$lang['Administration'] = 'Администрација'; +$lang['all'] = 'сите'; +$lang['ascending'] = 'хоризонтален ред'; +$lang['author(s) : %s'] = 'автор(и) : %s'; +$lang['Expand all albums'] = 'Отвори ги сите категории на насловната'; +$lang['posted after %s (%s)'] = 'објавено по %s (%s)'; +$lang['posted before %s (%s)'] = 'објавено пред %s (%s)'; +$lang['posted between %s (%s) and %s (%s)'] = 'објавено помеѓу %s (%s) и %s (%s)'; +$lang['posted on %s'] = 'објавено на %s'; +$lang['Best rated'] = 'Најдобро рангирани'; +$lang['display best rated photos'] = 'Ги покажува најдобро рангираните фотографии'; +$lang['Calendar'] = 'Календар'; +$lang['All'] = 'Сите'; +$lang['display each day with photos, month per month'] = 'Ги покажува фотографиите сортирани по ден, недела и месец'; +$lang['View'] = 'Преглед'; +$lang['chronology_monthly_calendar'] = 'Месечен календар'; +$lang['chronology_monthly_list'] = 'Месечна листа'; +$lang['chronology_weekly_list'] = 'Неделна листа'; +$lang['Click here if your browser does not automatically forward you'] = 'Кликнете тука доколку не сакате вашиот прелистувач автоматски да ве пренасочи'; +$lang['comment date'] = 'дата на коментар'; +$lang['Comment'] = 'Коментар'; +$lang['Your comment has been registered'] = 'Вашиот коментар е додаден.'; +$lang['Anti-flood system : please wait for a moment before trying to post another comment'] = 'Се обидовте да додадете премногу коментари. Почекајте 30 секунди и обидете се повторно.'; +$lang['Your comment has NOT been registered because it did not pass the validation rules'] = 'Твојот коментар не беше додаден по прегледувањето од администрацијата.'; +$lang['An administrator must authorize your comment before it is visible.'] = 'Твојот коментар мора да биде прегледан од администрацијата пред да биде објавен.'; +$lang['This login is already used by another user'] = 'Корисничкото име веќе се користи. Обиди се со друго.'; +$lang['Comments'] = 'Коментари'; +$lang['Add a comment'] = 'Додај коментар'; +$lang['created after %s (%s)'] = 'создадена по %s (%s)'; +$lang['created before %s (%s)'] = 'создадена пред %s (%s)'; +$lang['created between %s (%s) and %s (%s)'] = 'создадена помеѓу %s (%s) и %s (%s)'; +$lang['created on %s'] = 'создадена на %s'; +$lang['Customize'] = 'Кориснички панел'; +$lang['Your Gallery Customization'] = 'Твои подесувања во корисничкиот панел'; +$lang['day'][0] = 'недела'; +$lang['day'][1] = 'понеделник'; +$lang['day'][2] = 'вторник'; +$lang['day'][3] = 'среда'; +$lang['day'][4] = 'четврток'; +$lang['day'][5] = 'петок'; +$lang['day'][6] = 'сабота'; +$lang['Default'] = 'основа'; +$lang['delete this photo from your favorites'] = 'Избриши ја фотографијата од твоите омилени'; +$lang['Delete'] = 'Избриши'; +$lang['descending'] = 'вертикален ред'; +$lang['Download'] = 'зачувај'; +$lang['Download this file'] = 'зачувај ја оваа датотека'; +$lang['edit'] = 'уреди'; +$lang['wrong date'] = 'погрешна дата'; +$lang['excluded'] = 'исклучено'; +$lang['Your favorites'] = 'Мои омилени'; +$lang['display your favorites photos'] = 'Ги покажува твоите омилени фотографии'; +$lang['Favorites'] = 'Омилени фотографии'; +$lang['First'] = 'Прва'; +$lang['The gallery is locked for maintenance. Please, come back later.'] = 'Прикачувањето на галерија моментално е оневозможено, поради обнова. Во меѓувреме прегледувањето е дозволено.'; +$lang['Page generated in'] = 'Страницата беше генерирана за'; +$lang['guest'] = 'гостин'; +$lang['Hello'] = 'Здраво'; +$lang['available for administrators only'] = 'Пристапот не е дозволен.'; +$lang['display this album'] = 'Покажи фотографии од коренот на оваа категорија'; +$lang['display last user comments'] = 'Погледни ги последните коментари од членовите'; +$lang['customize the appareance of the gallery'] = 'Промени ги твоите лични подесувања'; +$lang['search'] = 'барај'; +$lang['Home'] = 'Почетна'; +$lang['Identification'] = 'Профил'; +$lang['in this album'] = 'во оваа категорија'; +$lang['in %d sub-album'] = 'во %d подкатегорија'; +$lang['in %d sub-albums'] = 'во %d подкатегории'; +$lang['included'] = 'вклучено'; +$lang['Invalid password!'] = 'Лозинката е погрешна!'; +$lang['Language']='Јазик'; +$lang['last %d days'] = 'последните %d дена'; +$lang['Last'] = 'Последна'; +$lang['Logout'] = 'Одјави се'; +$lang['obligatory'] = 'Полињата обележани со звездичка се задолжителни за пополнување'; +$lang['Maximum photo height'] = 'Максимална висина на фотографиите'; +$lang['Maximum height must be a number superior to 50'] = 'Максималната висина мора да е број поголем од 50'; +$lang['Maximum photo width'] = 'Максимална ширина на фотографиите'; +$lang['Maximum width must be a number superior to 50'] = 'Максималната ширина мора да е број поголем од 50'; +$lang['display a calendar by creation date'] = 'Го покажува календарот по дата на создавање'; +$lang['display all photos in all sub-albums'] = 'Ги покажува сите елементи во сите подкатегории'; +$lang['return to normal view mode'] = 'Врати се кон нормалниот преглед'; +$lang['display a calendar by posted date'] = 'Го покажува календарот по дата на испраќање'; +$lang['month'][10] = 'октомври'; +$lang['month'][11] = 'ноември'; +$lang['month'][12] = 'декември'; +$lang['month'][1] = 'јануари'; +$lang['month'][2] = 'февруари'; +$lang['month'][3] = 'март'; +$lang['month'][4] = 'април'; +$lang['month'][5] = 'мај'; +$lang['month'][6] = 'јуни'; +$lang['month'][7] = 'јули'; +$lang['month'][8] = 'август'; +$lang['month'][9] = 'септември'; +$lang['Most visited'] = 'Најпосетени'; +$lang['display most visited photos'] = 'Ги покажува најпосетените фотографии'; +$lang['Unknown identifier'] = 'Unknown identifier'; +$lang['New password'] = 'Нова лозинка'; +$lang['Rate this photo'] = 'Оцени ја фотографијата'; +$lang['Next'] = 'Следна'; +$lang['no rate'] = 'Никој не ја оценал досега'; +$lang['Photos posted within the last %d day.'] = 'Се прикажуваат само фотографии испратени во последниот %s ден.'; +$lang['Photos posted within the last %d days.'] = 'Се прикажуваат само фотографии испратени во последните %s дена.'; +$lang['password updated'] = 'лозинката е обновена'; +$lang['Recent period must be a positive integer value'] = 'Мора да внесеш позитивен број.'; +$lang['photo'] = 'фотографија'; +$lang['Click on the photo to see it in high definition'] = 'Кликни на фотографијата за поголема димензија'; +$lang['Show file metadata'] = 'Покажи метадата за датотеката'; +$lang['Powered by'] = 'Powered by'; +$lang['Preferences'] = 'Подесувања'; +$lang['Previous'] = 'Претходна'; +$lang['Random photos'] = 'Случајни фотографии'; +$lang['display a set of random photos'] = 'Ги покажува случајните фотографии'; +$lang['Recent albums'] = 'Нови категории'; +$lang['display recently updated albums'] = 'Ги покажува најновите категории'; +$lang['Recent period'] = 'До колку денови фотографиите ги сметате за "нови"?'; +$lang['Recent photos'] = 'Нови фотографии'; +$lang['display most recent photos'] = 'Ги покажува најновите фотографии'; +$lang['Redirection...'] = 'Префрлувам...'; +$lang['Please, enter a login'] = 'Внесете корисничко име'; +$lang['login mustn\'t end with a space character'] = 'Корисничкото име не може да завршува со space место'; +$lang['login mustn\'t start with a space character'] = 'Корисничкото име не може да започнува со space место'; +$lang['this login is already used'] = 'Корисничкото име веќе постои. Ве молиме одберете друго.'; +$lang['mail address must be like xxx@yyy.eee (example : jack@altern.org)'] = 'e-mail адресата мора да изгледа вака xxx@yyy.eee (пример: pero@makedonija.com.mk)'; +$lang['Auto login'] = 'Логирај ме автоматски на секоја моја посета'; +$lang['remove this tag from the list'] = 'избриши ја оваа етикета од листата'; +$lang['representative'] = 'главна икона'; +$lang['search'] = 'Пребарување'; +$lang['Search for Author'] = 'Барај по автор'; +$lang['Search in albums'] = 'Барај по категории'; +$lang['Search by date'] = 'Барај по дата'; +$lang['Date'] = 'Почетна дата'; +$lang['End-Date'] = 'Крајна дата'; +$lang['Kind of date'] = 'Барај по'; +$lang['Search for words'] = 'Барај по зборови'; +$lang['Search for all terms'] = 'Барај по сите термини '; +$lang['Search for any term'] = 'Барај по било кој термин'; +$lang['Empty query. No criteria has been entered.'] = 'Не внесовте ниту еден збор.'; +$lang['Search results'] = 'Резултати од пребарувањето'; +$lang['Search in sub-albums'] = 'Барај по подкатегории'; +$lang['searched words : %s'] = 'барани зборови : %s'; +$lang['Contact'] = 'Контакт'; +$lang['set as album representative'] = 'Намести ја како главна икона за категорија'; +$lang['Show number of comments'] = 'Покажи го бројот на коментарите?'; +$lang['Show number of hits'] = 'Покажи го бројот на прегледи?'; +$lang['slideshow'] = 'Презентација'; +$lang['stop the slideshow'] = 'Стопирај ја презентацијата'; +$lang['Specials'] = 'Функции'; +$lang['SQL queries in'] = 'SQL queries in'; +$lang['display only recently posted photos'] = 'Прикажи ги само новите фотографии'; +$lang['return to the display of all photos'] = 'Врати се кон прикажување на сите фотографии'; +$lang['the beginning'] = 'почетокот'; +$lang['Thumbnails'] = 'Сликички'; +$lang['Menu'] = 'Систем'; +$lang['A comment on your site'] = 'Коментар на твојата страна'; +$lang['today'] = 'денес'; +$lang['Update your rating'] = 'Обнови ја твојата оценка'; +$lang['the username must be given'] = 'корисничкото име мора да биде наведено'; +$lang['useful when password forgotten'] = 'Внесете постоечка и валидна e-mail адреса'; +$lang['Quick search'] = 'Брзо пребарување'; +$lang['Connected user: %s'] = 'Приклучен корисник: %s'; +$lang['IP: %s'] = 'IP: %s'; +$lang['Browser: %s'] = 'Прелистувач: %s'; +$lang['Author: %s'] = 'Автор: %s'; +$lang['Comment by %s'] = 'Коментар од %s'; +$lang['User: %s'] = 'Корисник: %s'; +$lang['Email: %s'] = 'Email: %s'; +$lang['Admin: %s'] = 'Admin: %s'; +$lang['Registration of %s'] = 'Registration of %s'; +$lang['Album: %s'] = 'Категорија: %s'; +$lang['Bad status for user "guest", using default status. Please notify the webmaster.'] = 'Грешка при најавувањето како гостин.'; +$lang['Submit'] = 'Поднесува'; +$lang['Yes'] = 'Да'; +$lang['No'] = 'Не'; +$lang['Comment: %s'] = 'Коментар: %s'; +$lang['Album results for'] = 'Резултат на Албуми за'; +$lang['Tag results for'] = 'Таг резултати за'; +$lang['from %s to %s'] = 'од %s до %s'; +$lang['Play of slideshow'] = 'Пушти ја проекцијата'; +$lang['Pause of slideshow'] = 'Паузирај ја проекцијата'; +$lang['Repeat the slideshow'] = 'Повтори ја проекцијата'; +$lang['Not repeat the slideshow'] = 'Не ја повторувај проекцијата'; +$lang['Reduce diaporama speed'] = 'Намали ја брзината на проекцијата'; +$lang['Accelerate diaporama speed'] = 'Забрзај ја брзината на проекцијата'; +$lang['Rank'] = 'Оцени'; +$lang['group by letters'] = 'групирај по букви'; +$lang['letters'] = 'букви'; +$lang['show tag cloud'] = 'прикажи го облакот на тагови'; +$lang['cloud'] = 'Облак'; +$lang['Reset to default values'] = 'Врати на оригинални вредности'; +$lang['delete all photos from your favorites'] = 'Избриши ги сите слики од Омилени'; +$lang['Sent by'] = 'Прати по'; +$lang['Cookies are blocked or not supported by your browser. You must enable cookies to connect.'] = 'Колачиња се блокирани или не се подржани од вашиот прелистувач. Мора да овозможите колачиња за да се логирате.'; +$lang['Edit a comment'] = 'Промени коментар'; +$lang['Are you sure?'] = 'Дали сте сигурни?'; +$lang['(!) This comment requires validation'] = '(!) Потребна е валидација за овој коментар'; +$lang['Welcome'] = 'Дојбедојдовте'; +$lang['Welcome to your Piwigo photo gallery!'] = 'Дојбедојдовте во вашата Piwigo фото галерија!'; +$lang['... or browse your empty gallery'] = '... или прелистајте ја вашата празна галерија'; +$lang['... or please deactivate this message, I will find my way by myself'] = '... или ве молам деактивирајте ја оваа порака, сам ќе се снајдам'; +$lang['Hello %s, your Piwigo photo gallery is empty!'] = 'Hello %s, your Piwigo photo gallery is empty!'; +$lang['I want to add photos'] = 'Сакам да додадам слики'; +$lang['Manage this user comment: %s'] = 'Раководи со коментарот на овој корисник: %s'; +$lang['This author modified following comment:'] = 'Овој автор го променил следниов коментар:'; +$lang['This author removed the comment with id %d'] = 'Овој автор го отстранил коментарот со бројот %d'; +$lang['photos posted during the last %d days'] = 'слики објавени во последните %d денови'; +$lang['this email address is already in use'] = 'Друг корисник ја користи постоечката е-пошта'; +$lang['display photos linked to this tag'] = 'Поглед кон слики поврзани само со овој таг'; + +$lang['Change my password'] = 'Промени ја мојата лозинка'; +$lang['Check your email for the confirmation link'] = 'Проверете ја електронската пошта каде што ке најдеш link за потврда'; +$lang['Edit'] = 'Промени'; +$lang['Enter your new password below.'] = 'Внесете ја новата лозинка подолу.'; +$lang['Hello %s,'] = 'Здраво %s,'; +$lang['Here are your connection settings'] = 'Еве ги вашите поднесувања за поврзување'; +$lang['If this was a mistake, just ignore this email and nothing will happen.'] = 'Ако ова беше грешка, ништо нема да се случи едноставно игнорирајте је пораката.'; +$lang['Invalid key'] = 'Погрешен клуч'; +$lang['Invalid username or email'] = 'Погрешно корисничко име или електронска адреса'; +$lang['Manual sort order'] = 'Рачно наместен распоред'; +$lang['Mobile'] = 'Мобилен'; +$lang['Number of photos per page'] = 'Број на слики по страна'; +$lang['Original'] = 'Оригинал'; +$lang['Password Reset'] = 'Ресетирање на лозинката'; +$lang['Password reset is not allowed for this user'] = 'За овој корисник е забрането ресетирање на лозинката'; +$lang['Password: %s'] = 'Лозинка: %s'; +$lang['Photo sizes'] = 'Големина на сликата'; +$lang['Please enter your username or email address.'] = 'Ве молам внесете го корисничкото име или електронската адреса.'; +$lang['Return to home page'] = 'Назад на домашната страна'; +$lang['Send my connection settings by email'] = 'Пратете ми ги поврзувачките поднесувања преку електронска пошта'; +$lang['Show latest comments first'] = 'Првин покажи го последниот коментар'; +$lang['Show oldest comments first'] = 'Првин покажи ги постарите коментари'; +$lang['Thank you for registering at %s!'] = 'Ви благодариме за регистрирањето во %s!'; +$lang['The passwords do not match'] = 'Лозинките не се совпаѓаат'; +$lang['To reset your password, visit the following address:'] = 'За да ја промеените лозинката, посетете ја следнава адреса:'; +$lang['User "%s" has no email address, password reset is not possible'] = 'Корисникот "%s" нема електронска адреса, затоа не е возможна промената на лозинката'; +$lang['Username "%s" on gallery %s'] = 'Корисничко име "%s" на галерија %s'; +$lang['Username modification'] = 'Промена на корисничко име'; +$lang['Username or email'] = 'Корисничко име или електронска пошта'; +$lang['View in'] = 'Види во'; +$lang['You will receive a link to create a new password via email.'] = 'Преку електронска пошта ке добиете линк каде што ке треирате нова лозинка.'; +$lang['Your password has been reset'] = 'Вашата лозинка беше променета'; +$lang['Your username has been successfully changed to : %s'] = 'Вашето корисничко име успешно е променето во : %s'; +$lang['large'] = 'L - големо'; +$lang['medium'] = 'M - Средно'; +$lang['small'] = 'S - мало'; +$lang['square'] = 'Квадрат'; +$lang['xlarge'] = 'XL - екстра големо'; +$lang['xsmall'] = 'XS - екстра мало'; +$lang['xxlarge'] = 'XXL - огромно'; +$lang['2small'] = 'XXS - ситно.'; +$lang['Date created, new → old'] = 'Дата на креирање, ново →старо'; +$lang['Date created, old → new'] = 'Дата на крирање, старо →ново '; +$lang['Date posted, new → old'] = 'Дата на поставување, ново →старо'; +$lang['Desktop'] = 'Работна површина'; +$lang['EXIF Metadata'] = 'EXIF Metadata'; +$lang['IPTC Metadata'] = 'IPTC Metadata'; +$lang['If you think you\'ve received this email in error, please contact us at %s'] = 'Ако сметате дека по грешка сте ја добиле пораката, Ве молиме контактирајте не на %s'; +$lang['Rating score'] = 'Рејтинг листа'; +$lang['Someone requested that the password be reset for the following user account:'] = 'Некој побара да се промени лозинката за следново корисничко име:'; +$lang['Successfully registered, you will soon receive an email with your connection settings. Welcome!'] = 'Успешно се регистриравте, наскоро ке добиете електронска пошта со вашите поднесувања за поврзување. Добродојдовте!'; +$lang['The number of photos per page must be a not null scalar'] = 'Броевите на фотографиите по страна треба да бидат nonzero integer'; +$lang['Username: %s'] = 'Корисничко име: %s'; +$lang['html tags are not allowed in login'] = 'со логирање не се дозволени html тагови'; +?> \ No newline at end of file diff --git a/sources/language/mk_MK/index.php b/sources/language/mk_MK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/mk_MK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/mk_MK/install.lang.php b/sources/language/mk_MK/install.lang.php new file mode 100755 index 0000000..02b43ab --- /dev/null +++ b/sources/language/mk_MK/install.lang.php @@ -0,0 +1,36 @@ + \ No newline at end of file diff --git a/sources/language/mk_MK/iso.txt b/sources/language/mk_MK/iso.txt new file mode 100644 index 0000000..7b934be --- /dev/null +++ b/sources/language/mk_MK/iso.txt @@ -0,0 +1 @@ +Македонски [MK] \ No newline at end of file diff --git a/sources/language/mk_MK/mk_MK.jpg b/sources/language/mk_MK/mk_MK.jpg new file mode 100644 index 0000000..30e7456 Binary files /dev/null and b/sources/language/mk_MK/mk_MK.jpg differ diff --git a/sources/language/mn_MN/about.html b/sources/language/mn_MN/about.html new file mode 100644 index 0000000..c336988 --- /dev/null +++ b/sources/language/mn_MN/about.html @@ -0,0 +1,16 @@ +

                  Энэхүү гэрэл зургын галерей нь Piwigo дээр суурилсан болно.

                  + +

                  Piwigo - энэ бол гэрэл зургын вэб галерей бүтээхэд зориулсан программ +бөгөөд идэвхтэй хэрэглэгчид болон программ хөгжүүлэгчдийн хамтын бүтээл юм. +Төрөл бүрийн нэмэлт өргөтгөлүүд нь Piwigo-г илүү уян хатан, олон төрлийн өөрчлөлт хийх боломжийг олгодог. +Piwigo-н хамгийн гол үнэ цэнэ нь нээлттэй эх кодтой, үнэгүй программ гэдэгтээ байдаг билээ.

                  + +

                  Piwigo-н вэб сайт

                  + +

                  Монгол хэл уруу орчуулж хувь нэмэрээ оруулсан хүмүүс (цагаан толгойн дарааллаар): + +

                  + Орчуулга хийж хувь нэмэрээ оруулсан хүн бүхэнд талархал илэрхийлье!

                  diff --git a/sources/language/mn_MN/admin.lang.php b/sources/language/mn_MN/admin.lang.php new file mode 100755 index 0000000..ae198d1 --- /dev/null +++ b/sources/language/mn_MN/admin.lang.php @@ -0,0 +1,742 @@ +%s merged into tag %s'] = '%s гэсэн түлхүүр үгсийг нэгтгэж %s болголоо'; +$lang['Select at least two tags for merging'] = 'Нэгтгэхийн тулд дор хаяж хоёр үг сонгоно уу'; +$lang['New tag'] = 'Шинэ түлхүүр үг'; +$lang['Merge tags'] = 'Түлхүүр үгсийг нэгтгэх'; +$lang['Maximum height'] = 'Өндөр'; +$lang['Maximum width'] = 'Өргөн'; +$lang['Rated %d times, score : %.2f'] = '%d удаа үнэлсэн, оноо: %.2f'; +$lang['Rate date'] = 'Үнэлгээ өгсөн огноо'; +$lang['Private'] = 'Хувийн'; +$lang['Please wait...'] = 'Түр хүлээнэ үү...'; +$lang['Piwigo version'] = 'Piwigo-н хувилбар'; +$lang['No file was uploaded'] = 'Ямар ч файл хуулагдсангүй'; +$lang['General statistics'] = 'Ерөнхий байдал'; +$lang['Hit'] = 'Үзсэн'; +$lang['Guest Settings'] = 'Зочины тохиргоо'; +$lang['Help Me'] = 'Тусламж'; +$lang['IP'] = 'IP хаяг'; +$lang['Forbid this language to users'] = 'Хэрэглэгчид энэ хэлийг ашиглахыг хориглох'; +$lang['Edit album permissions'] = 'Цомогын тохиргоог засах'; +$lang['Edit ranks'] = 'Үнэлгээг засах'; +$lang['X Position'] = 'X-н байршил'; +$lang['Y Position'] = 'Y-н байршил'; +$lang['Year'] = 'Он'; +$lang['Width'] = 'Өргөн'; +$lang['Week starts on'] = 'Долоо хоног эхлэх өдөр'; +$lang['Webmaster cannot be deleted'] = 'Вебмастерийн бүртгэлийг устгах боломжгүй'; +$lang['Webmaster status is required.'] = 'Вебмастерийн эрх шаардлагатай'; +$lang['Who can see these photos?'] = 'Зургийг үзэх эрхтэй бүлэг?'; +$lang['Who can see this photo?'] = 'Зургийг үзэх эрхтэй бүлэг?'; +$lang['Manage tags'] = 'Түлхүүр үгийг цэгцлэх'; +$lang['%d tags'] = '%d түлхүүр үг'; +$lang['The %d following tags were deleted'] = 'Дараахь %d түлхүүр үгсийг устгалаа'; +$lang['All %d photos are selected'] = 'Нийт %d зураг сонгосон байна'; +$lang['Duplicate selected tags'] = 'Хувилах'; +$lang['Merge selected tags'] = 'Нэгтгэх'; +$lang['selection'] = 'сонголт'; +$lang['Select at least one album'] = 'Дор хаяж нэг цомог сонгоно уу'; +$lang['Select at least one comment'] = 'Дор хаяж нэг сэтгэгдэл сонгоно уу'; +$lang['Select at least one photo'] = 'Дор хаяж нэг зураг сонгоно уу'; +$lang['Select:'] = 'Сонгох:'; +$lang['leave'] = 'байгаагаар нь үлдээх'; +$lang['You need to confirm deletion'] = 'Устгана гэдэгээ баталгаажуулах шаардлагатай'; +$lang['confirm'] = 'баталгаажуулах'; +$lang['Deletions'] = 'Устгах'; +$lang['set to'] = 'өөрчлөх'; +$lang['You have %d orphan tags: %s.'] = 'Нийт %d-н ашиглагдаагүй түлхүүр үгс байна: %s.'; +$lang['Delete orphan tags'] = 'Ашиглагдаагүй түлхүүр үгийг устгах'; +$lang['Orphan tags deleted'] = 'Ашиглагдаагүй түлхүүр үгийг устгалаа'; +$lang['Inactive Languages'] = 'Идэвхжүүлээгүй байгаа хэл'; +$lang['Album "%s" has been added'] = '"%s" цомгийг амжилттай нэмлээ'; +$lang['Album "%s" now contains %d photos'] = '"%s" цомогт нийт %d зураг байна'; +$lang['Level 1'] = 'Танилууд'; +$lang['Image id'] = 'Зургийн ID'; +$lang['Email administrators when a comment is deleted'] = 'Сэтгэгдэлийг устгахад админд мэйлээр мэдэгдэх'; +$lang['Email admins when a new user registers'] = 'Шинээр хэрэглэгч бүртгүүлэхэд зохицуулагчид и-мэйлээр мэдэгдэх'; +$lang['Documentation'] = 'Баримт бичиг'; +$lang['Add another set of photos'] = 'Өөр зурагнууд нэмэх'; +$lang['Uploaded Photos'] = 'Нэмэгдсэн зурагнууд'; +$lang['Upload Photos'] = 'Зураг нэмэх'; +$lang['%d albums including'] = 'Нийт %d цомог '; +$lang['first photo added on %s'] = 'анхны зураг оруулсан огноо: %s'; +$lang['Version'] = 'Хувилбар'; +$lang['Time'] = 'Хугацаа'; +$lang['Status'] = 'Төлөв'; +$lang['Resize'] = 'Хэмжээг өөрчлөх'; +$lang['Rate'] = 'Үнэлэх'; +$lang['Level 0'] = '---'; +$lang['Lock'] = 'Түгжэх'; +$lang['Crop'] = 'Тасдах'; +$lang['An error has occured during upgrade.'] = 'Шинэчлэх явцад алдаа гарлаа.'; +$lang['Add a filter'] = 'Сонгох'; +$lang['Activate'] = 'Идэвхжүүлэх'; +$lang['Watermark'] = 'Усан хээ'; +$lang['Rename'] = 'Нэрийг солих'; +$lang['Position'] = 'Байршил'; +$lang['Number of comments per page'] = 'Нэг хуудасанд харуулах сэтгэгдэлийн тоо'; +$lang['Number of albums per page'] = 'Нэг хуудасанд харуулах цомгийн тоо'; +$lang['Number of rates'] = 'Үнэлсэн тоо'; +$lang['Main Page'] = 'Үндсэн хуудас'; +$lang['Activate comments'] = 'Сэтгэгдэлийг идэвхжүүлэх'; +$lang['Description'] = 'Тайлбар'; +$lang['Comments for all'] = 'Бүх сэтгэгдэлүүд'; +$lang['Manage permissions for user "%s"'] = '"%s" хэрэглэгчийн эрхийг зохицуулах'; +$lang['Manage permissions for group "%s"'] = '"%s" бүлгийн эрхийг зохицуулах'; +$lang['Mail content'] = 'Имэйлийн агуулга'; +$lang['Mail sent to %s [%s].'] = 'Имэйлийг %s [%s] уруу амжилттай илгээлээ.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Энэ цомогт %s-с %s-ний хооронд оруулсан нийт %d зураг байна.'; +$lang['This album contains %d photos, added on %s.'] = 'Энэ цомогт %s-нд оруулсан нийт %d зураг байна.'; +$lang['Site manager'] = 'Сайтийн зохицуулагч'; +$lang['Set as default language for unregistered and new users'] = 'Шинэ, бүртгүүлээгүй хэрэглэгчид ашиглах үндсэн хэл болгон тохируулах'; +$lang['Send connection settings by email'] = 'Холболтын тохиргоог имэйлээр илгээх'; +$lang['Selection'] = 'Сонголт'; +$lang['Save order'] = 'Эрэмбийг хадгалах'; +$lang['Restore'] = 'Сэргээх'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Үндсэн тохиргоог сэргээх. Тохиргоонууд алдагдах болно.'; +$lang['Repair and optimize database'] = 'Мэдээллийн санг засаж, цэгцэлэх'; +$lang['Piwigo for Android'] = 'Android-д зориулсан Piwigo'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch)-д зориулсан Piwigo'; +$lang['Permalink'] = 'Холбоос хаяг (permalink)'; +$lang['Permalinks'] = 'Холбоос хаяг (permalink)'; +$lang['Allow users to delete their own comments'] = 'Хэрэглэгчид сэтгэгдэлээ устгаж болно'; +$lang['Allow users to edit their own comments'] = 'Хэрэглэгчид сэтгэгдэлээ засаж болно'; +$lang['Cannot delete the old permalink !'] = 'Хуучин холбоосыг устгах боломжгүй байна.'; +$lang['Center of interest'] = 'Сонирхол татах хэсэг'; +$lang['Visited %d times'] = 'Үзсэн тоо: %d'; +$lang['Posted %s on %s'] = 'Нэмсэн огноо: %s (%s)'; +$lang['Added by %s'] = 'Зургыг оруулсан: %s'; +$lang['Set title'] = 'Нэр өгөх'; +$lang['Title'] = 'Нэр'; +$lang['Type here the title'] = 'Нэрээ оруулна уу'; +$lang['remove title'] = 'нэрийг устгах'; +$lang['Numeric identifier : %d'] = 'Дугаар: %d'; +$lang['%d photos uploaded'] = '%d зураг орууллаа'; +$lang['%d physical'] = ' %d бодит'; +$lang['%d physicals'] = ' %d бодит'; +$lang['Environment'] = 'Серверийн орчин'; +$lang['Theme has been successfully installed'] = 'Загварыг амжилттай суулгалаа'; +$lang['Delete this theme'] = 'Тухайн загварыг устгах'; +$lang['Add New Theme'] = 'Шинэ загвар нэмэх'; +$lang['Themes which need upgrade'] = 'Шинэчлэх шаардлагатай загварууд'; +$lang['Themes'] = 'Загварууд'; +$lang['Inactive Themes'] = 'Идэвхгүй загварууд'; +$lang['Installed Themes'] = 'Суусан загварууд'; +$lang['Active Themes'] = 'Идэвхтэй загварууд'; +$lang['There is no other language available.'] = 'Шинээр суулгах өөр хэл байхгүй байна'; +$lang['Updates'] = 'Шинэчлэлт'; +$lang['All languages are up to date.'] = 'Хэлний бүх файл шинэчлэгдсэн байна'; +$lang['Check for updates'] = 'Шинэ хувилбар шалгах'; +$lang['Default comments order'] = 'Сэтгэгдэлийн дараалал'; +$lang['pending validation'] = 'баталгаажуулалт хүлээж буй үед'; +$lang['Notify administrators when a comment is'] = 'Зохицуулагчид мэдэгдэх:'; +$lang['added'] = 'сэтгэгдэл оруулсан үед'; +$lang['User comments validation'] = 'Сэтгэгдэлийг баталгаажуулах'; +$lang['Validation'] = 'Баталгаажуулах'; +$lang['Photo Properties'] = 'Зургийн шинж чанарууд'; +$lang['Photo Page'] = 'Зургийн хуудас'; +$lang['Activate icon "new" next to albums and pictures'] = 'Цомог, зурагны хажууд "шинэ" гэсэн тэмдэгийг харуулах'; +$lang['Activate icon "%s"'] = '"%s" сонголтыг идэвхжүүлэх'; +$lang['X Repeat'] = 'Давтах тоо'; +$lang['middle'] = 'голд'; +$lang['Sharpen'] = 'Дүрсний тодролт'; +$lang['Delete multiple size images'] = 'Төрөл бүрийн хэмжээтэй зургийг устгах'; +$lang['Generate multiple size images'] = 'Төрөл бүрийн хэмжээтэй зураг үүсгэх'; +$lang['Multiple Size'] = 'Төрөл бүрийн хэмжээ'; +$lang['show details'] = 'дэлгэрэнгүй мэдээлэл'; +$lang['Options'] = 'Сонголтууд'; +$lang['Your configuration settings are saved'] = 'Тохиргоог амжилттай хадгаллаа'; +$lang['Resize after upload'] = 'Оруулсаны дараа хэмжээг шинэчлэх'; +$lang['Piwigo configuration'] = 'Тохиргооны талбар'; +$lang['simple visitors'] = 'энгийн зочид'; +$lang['administrators'] = 'зохицуулагчид'; +$lang['Save visits in history for'] = 'Сайтад зочилсон бичлэгийг нь хадгалах бүлэг:'; +$lang['Add a criteria'] = 'Шинэ нөхцөл нэмэх'; +$lang['Default photos order'] = 'Зургийн дараалал'; +$lang['Information data registered in database'] = 'Тохиргоог амжилттай шинэчлэн хадгаллаа'; +$lang['Mail address is obligatory for all users'] = 'Бүх хэрэглэгчид и-мэйл хаягаа оруулах ёстой'; +$lang['Allow user customization'] = 'Хэрэглэгчид тохиргоогоо засаж болно'; +$lang['Allow user registration'] = 'Бүртгэлийг идэвхжүүлэх'; +$lang['Rating by guests'] = 'Зочид үнэлгээ өгч болно'; +$lang['Allow rating'] = 'Үнэлгээг идэвхжүүлэх'; +$lang['Page banner'] = 'Нүүр хуудасны баннер'; +$lang['Gallery title'] = 'Галерейн нэр'; +$lang['With blank value, gallery title will be used'] = 'Хоосон бол галерейн нэрийг ашиглах болно'; +$lang['Add to caddie'] = 'Устгах жагсаалтанд нэмэх'; +$lang['Caddie'] = 'Устгах'; +$lang['Remove from caddie'] = 'Устгах жагсаалтаас хасах'; +$lang['add new photos to caddie'] = '"устгах жагсаалт"-д зураг нэмэх'; +$lang['Duplicates'] = 'Давхардсан'; +$lang['With no album'] = 'Цомогт ороогүй'; +$lang['With no tag'] = 'Түлхүүр үг байхгүй'; +$lang['With no virtual album'] = 'Виртуаль цомогт ороогүй'; +$lang['Last import'] = 'Сүүлд оруулсан'; +$lang['Predefined filter'] = 'Сонголт'; +$lang['Sum of rates'] = 'Үнэлгээний дүн'; +$lang['The whole set'] = 'Бүх цомгийг'; +$lang['include child albums'] = 'дэд цомгийг хамруулах'; +$lang['Visit Gallery'] = 'Галерейг харах'; +$lang['Switch to clear or dark colors for administration'] = 'Удирдлагын талбарыг бараан болон цайвар өнгөөр солих'; +$lang['Change Admin Colors'] = 'Өнгийг солих'; +$lang['Piwigo Administration'] = 'Удирдлагын талбар'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Piwigo-н шинэ мэдээний эмхэтгэлд %s -г бүртгүүлэх'; +$lang['Show info'] = 'Мэдээллийг харах'; +$lang['Graphics Library'] = 'Зургийн программ'; +$lang['%d associations'] = 'нийт %d холбоотой зураг'; +$lang[' and %d virtual'] = ' ба %d хийсвэр'; +$lang[' and %d virtuals'] = ' ба %d хийсвэр'; +$lang['%d album including'] = 'Нийт %d цомог '; +$lang['Check for upgrade'] = 'Шинэ хувилбар шалгах'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Шинэ хувилбарыг шалгах үед үлмэдэгдэх алдаа гарлаа.'; +$lang['Unable to check for upgrade.'] = 'Шинэ хувилбарыг шалгах боломжгүй байна.'; +$lang['Applications'] = 'Программууд'; +$lang['+ Add an upload box'] = '+ Зураг оруулах талбар нэмэх'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Та Browser uploader-г ашиглан зураг оруулж байна. Flash uploader-г бас ашиглаад үзээрэй.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Та Flash uploader-г ашиглан зураг оруулж байна. Хэрвээ асуудал гараад байвал Browser uploader-г ашиглаж үзээрэй.'; +$lang['Maximum file size: %sB.'] = 'Файлын дээд хэмжээ: %sB.'; +$lang['Start Upload'] = 'Оруулах'; +$lang['Allowed file types: %s.'] = 'Зөвшөөрөгдөх зургийн төрлүүд: %s.'; +$lang['Select files'] = 'Файлаа сонгоно уу'; +$lang['... or '] = '...эсвэл '; +$lang['unit mode'] = 'дэлгэрэнгүй хэсэг'; +$lang['unset'] = 'өөрчлөөгүй'; +$lang['Display options'] = 'Харагдах байдал'; +$lang['display'] = 'Сонгоно уу'; +$lang['global mode'] = 'ерөнхий хэсэг'; +$lang['Support'] = 'Тусламж дэмжлэг'; +$lang['Choose an action'] = 'Үйлдэлээ сонгоно уу'; +$lang['Action'] = 'Үйлдэл'; +$lang['No user selected, no action possible.'] = 'Хэрэглэгч сонгоогүй байна'; +$lang['No photo selected, no action possible.'] = 'Зураг огт сонгоогүй байна'; +$lang['Remove all filters'] = 'Бүх сонголтыг цуцлах'; +$lang['Refresh photo set'] = 'Сэргээх'; +$lang['No photo selected, %d photos in current set'] = 'Зураг огт сонгоогүй байна, энэ хэсэгт нийт %d зураг байна.'; +$lang['None'] = 'Нэгийг ч биш'; +$lang['Permalink history'] = 'Холбоос хаягийн түүх'; +$lang['Add/delete a permalink'] = 'Холбоос хаяг нэмэх/засах'; +$lang['You cannot move an album in its own sub album'] = 'Уучлаарай, цомгийг өөр дотор нь зөөх боломжгүй'; +$lang['New parent album'] = 'Хамруулах шинэ цомог'; +$lang['Virtual albums to move'] = 'Зөөх боломжтой цомогууд'; +$lang['Purge history detail'] = 'Түүхийн дэлгэрэнгүй бичлэгийг цэвэрлэх'; +$lang['Purge history summary'] = 'Товч түүхийг цэвэрлэх'; +$lang['Purge search history'] = 'Хайлтын түүхийг цэвэрлэх'; +$lang['Purge user cache'] = 'Хэрэглэгчийн cache-г цэвэрлэх'; +$lang['Deny selected groups'] = 'Сонгосон бүлгийг цуцлах'; +$lang['Deny selected users'] = 'Сонгосон хэрэглэгчийг цуцлах'; +$lang['%d of %d users selected'] = '%d (нийт %d-с) хэрэглэгч сонгосон байна'; +$lang['on the %d selected users'] = '(сонгосон %d хэрэглэгчид хэрэгжүүлэх)'; +$lang['on the %d selected photos'] = '(сонгосон %d зурагт хэрэгжүүлэх)'; +$lang['Apply action'] = 'Гүйцэтгэх'; +$lang['Actions'] = 'Үйлдэл'; +$lang['An error occured during extraction (%s).'] = 'Файлыг (%s) задлах үед алдаа гарлаа.'; +$lang['No group selected, no action possible.'] = 'Нэг ч бүлэг сонгоогүй байна'; +$lang['Pages seen'] = 'Үзсэн хуудас'; +$lang['hide details'] = 'товч мэдээлэл'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Уучлаарай, Тухайн хэлийг идэвхгүй болгохын тулд өөр хэлийг үндсэн хэлээр сонгоно уу'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Уучлаарай, Танд дор хаяж нэг хэл хэрэгтэй тул тухайн хэлийг идэвхгүй болгох боломжгүй '; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Уучлаарай, Танд дор хаяж нэг загвар хэрэгтэй тул тухайн загварыг идэвхгүй болгох боломжгүй '; +$lang['Deactivate'] = 'Идэвхгүй болгох'; +$lang['Deactivate all'] = 'Бүгдийг идэвхгүй болгох'; +$lang['Missing Plugins'] = 'Дутаж буй өргөтгөлүүд'; +$lang['All plugins are up to date.'] = 'Бүх өргөтгөлүүд шинэчлэгдсэн байна'; +$lang['Uninstalled Plugins'] = 'Өргөтгөлийг устгах'; +$lang['Other plugins'] = 'Боломжтой бусад өргөтгөл'; +$lang['Inactive Plugins'] = 'Идэвхгүй өргөтгөлүүд'; +$lang['Plugin list'] = 'Нэмэлт өргөтгөл'; +$lang['Plugins'] = 'Өргөтгөл'; +$lang['Plugins which need upgrade'] = 'Шинэчлэх шаардлагатай өргөтгөл'; +$lang['Manage'] = 'Цэгцлэх'; +$lang['Guest cannot be deleted'] = 'Зочны бүртгэлийг устгах боломжгүй'; +$lang['Privacy level set to "%s"'] = 'Хандах эрхийг "%s" болголоо'; +$lang['Privacy level'] = 'Хандах эрх'; +$lang['Maintenance'] = 'Засвар үйлчилгээ'; +$lang['Pending Comments'] = 'Cэтгэгдэлүүд'; +$lang['%s has been successfully updated.'] = '%s амжилттай шинэчиллээ.'; +$lang['%d user was not updated.'] = '%d хэрэглэгчийн мэдээллийг шинэчилж чадсангүй.'; +$lang['%d user was updated.'] = '%d хэрэглэгчийн мэдээллийг амжилттай шинэчиллээ.'; +$lang['%d users were not updated.'] = '%d хэрэглэгчийн мэдээллийг шинэчилж чадсангүй.'; +$lang['%d users were updated.'] = '%d хэрэглэгчийн мэдээллийг амжилттай шинэчиллээ.'; +$lang['%d parameter was updated.'] = '%d тохиргоог шинэчиллээ.'; +$lang['modified'] = 'зассан үед'; +$lang['Subscribe to notification by mail'] = 'Бүртгэлд амжилттай нэмлээ'; +$lang['Unsubscribe from notification by mail'] = 'Бүртгэлээс хаслаа'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Таны и-мэйл хаягыг шинэ мэдээ, мэдээллийн эмхэтгэлийн бүртгэлд амжилттай нэмлээ.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Таны и-мэйл хаягыг шинэ мэдээ, мэдээллийн эмхэтгэлийн бүртгэлээс хаслаа.'; +$lang['See you soon,'] = 'Танд амжилт хүсье,'; +$lang['See you soon.'] = 'Танд амжилт хүсье.'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Манай вэбмастер Таны и-мэйл хаягийг шинэ мэдээ, мэдээллийн эмхэтгэлийн бүртгэлд нэмж орууллаа.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Манай вэбмастер Таны и-мэйл хаягийг шинэ мэдээ, мэдээллийн эмхэтгэлийн бүртгэлээс хаслаа.'; +$lang['Subscribe'] = 'Бүртгүүлэх'; +$lang['Subscribed'] = 'Бүртгүүлсэн'; +$lang['To subscribe'] = 'Мэдээллийн эмхэтгэлд бүртгүүлэхийг хүсвэл '; +$lang['To unsubscribe'] = 'Мэдээллийн эмхэтгэлээс хасуулахыг хүсвэл '; +$lang[', click on'] = 'дараахь холбоосыг ашиглана уу'; +$lang['Uncheck all'] = 'Бүх сонголтыг цуцлах'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Хэрэв Танд асуух зүйл байгаа бол дараахь хаягаар холбоо барина уу.'; +$lang['Error when sending email to %s [%s].'] = '%s [%s] хаяг уруу и-мэйл илгээхэд алдаа гарлаа.'; +$lang['To send ?'] = 'И-мэйл илгээх эсэх?'; +$lang['Send'] = 'Илгээх'; +$lang['Go to'] = 'Дараахь холбоосоор хандана уу...'; +$lang['Password updated'] = 'Нууц үгийг шинэчиллээ'; +$lang['Photo informations updated'] = 'Зургийн мэдээллийг шинэчиллээ'; +$lang['Status of user "%s" updated'] = 'Хэрэглэгч "%s"-н мэдээллийг амжилттай шинэчиллээ'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Хэрэглэгч %s [%s]-г шинэ мэдээний сангаас хасаж чадсангүй.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Хэрэглэгч %s [%s]-г шинэ мэдээний сангаас хаслаа.'; +$lang['User %s added'] = 'Хэрэглэгч %s-г амжилттай нэмлээ'; +$lang['user "%s" added'] = 'Хэрэглэгч "%s"-г амжилттай нэмлээ'; +$lang['albums added in the database'] = 'цомгийг мэдээллийн санд амжилттай нэмлээ'; +$lang['photos added in the database'] = 'зургийг мэдээллийн санд нэмлээ'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Хэрэглэгч %s [%s]-г шинэ мэдээний санд бүртгэж чадсангүй.'; +$lang['User %s [%s] added.'] = 'Хэрэглэгч %s [%s]-г амжилттай нэмлээ'; +$lang['User %s [%s] was added to the subscription list.'] = 'Хэрэглэгч %s [%s]-г шинэ мэдээний санд амжилттай бүртгэлээ.'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Анхаар: Бүртгэлд(ээс) нэмэх/хасах бүрт хэрэглэгч уруу и-мэйл илгээх болно. '; +$lang['Send mail to users'] = 'Хэрэглэгчдэд и-мэйл илгээх'; +$lang['Complementary mail content'] = 'Нэмэлт мэдээлэл'; +$lang['Add detailed content'] = 'Нэмэлт мэдээлэл оруулах'; +$lang['Send mail as'] = 'И-мэйлийн гарчиг'; +$lang['%d parameters were updated.'] = '%d тохиргоог шинэчиллээ.'; +$lang['Parameters'] = 'Тохиргоо'; +$lang['User list'] = 'Хэрэглэгчдийн жагсаалт'; +$lang['Album list management'] = 'Цомогын дарааллыг зохицуулах'; +$lang['Apply to sub-albums'] = 'дэд цомгийг хамруулах'; +$lang['manage sub-albums'] = 'дэд цомгийг цэгцлэх'; +$lang['Albums automatically sorted'] = 'Цомогуудыг амжилттай эрэмбэллээ'; +$lang['Automatic sort order'] = 'Эрэмблэх'; +$lang['apply automatic sort order'] = 'автоматаар эрэмблэх'; +$lang['Order of menubar items has been updated successfully.'] = 'Цэсний дарааллыг амжилттай шинэчиллээ.'; +$lang['Menu Management'] = 'Цэс'; +$lang['Show menubar'] = 'Цэсийг харуулах'; +$lang['You are running the latest version of Piwigo.'] = 'Та Piwigo-н хамгийн сүүлийн хувилбарыг ашиглаж байна.'; +$lang['Update albums informations'] = 'Цомогний мэдээллийг шинэчлэх'; +$lang['Update Complete'] = 'Шинэчлэлт амжилттай хийгдлээ'; +$lang['User %s updated'] = '%s хэрэглэгчийн мэдээллийг амжилттай шинэчиллээ'; +$lang['Update user'] = 'Мэдээллийг шинэчлэх'; +$lang['Reset ignored updates'] = 'Цуцалсан шинэчлэлийг сэргээх'; +$lang['Update All'] = 'Бүгдийг шинэчлэх'; +$lang['Update in progress... Please wait.'] = 'Шинэчлэлт хийгдэж байна... Түр хүлээнэ үү.'; +$lang['Update photos information'] = 'Зурагны мэдээллийг шинэчлэх'; +$lang['Update to Piwigo %s'] = 'Piwigo %s хувилбар болгож шинэчлэх'; +$lang['Caddie management'] = 'Устгах жагсаалтын зохицуулалт'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'дэлгэрэнгүй мэдээллийг харуулах (нэмж, хассан цомог болон зурагнууд)'; +$lang['directories + files'] = 'хавтас + файлуудыг'; +$lang['only directories'] = 'зөвхөн хавтасуудыг'; +$lang['synchronize files structure with database'] = 'Файлийн бүтцийг мэдээллийн сантай давхцуулж тулгах'; +$lang['Choose an option'] = 'Сонголтоо хийнэ үү'; +$lang['%d user comment rejected'] = '%d хэрэглэгчийн сэтгэгдэлийг цуцаллаа'; +$lang['%d user comment validated'] = '%d хэрэглэгчийн сэтгэгдэлийг идэвхжүүллээ'; +$lang['%d user comments rejected'] = '%d хэрэглэгчийн сэтгэгдэлийг цуцаллаа'; +$lang['%d user comments validated'] = '%d хэрэглэгчийн сэтгэгдэлийг идэвхжүүллээ'; +$lang['default'] = 'үндсэн'; +$lang['Default display'] = 'харуулна'; +$lang['No display'] = 'харуулахгүй'; +$lang['Element'] = 'Зүйл'; +$lang['Element type'] = 'Төрөл'; +$lang['Section'] = 'Хэсэг'; +$lang['The anomaly will be ignored until next application version'] = 'Дараагын шинэ хувилбар гартал тухайг алдааг хэрэгсэхгүй орхино.'; +$lang['%d anomaly has been ignored.'] = '%d алдааг хэрэгсэхгүй орхив.'; +$lang['Anomaly'] = 'Алдаа'; +$lang['photos deleted from the database'] = 'зургуудийг мэдээллийн сангаас устаглаа'; +$lang['Dissociate from album'] = 'Цомогоос хасах'; +$lang['Set author'] = 'Зураг авагч'; +$lang['Type here the author name'] = 'Зураг авсан хүний нэрийг энд оруулна уу'; +$lang['Set as default theme for unregistered and new users'] = 'Бүртгүүлээгүй болон шинэ хэрэглэгчдэд харагдах үндсэн загвар болгон тохируулах'; +$lang['Set creation date'] = 'Оруулсан огноог засах'; +$lang['No user selected of %d users'] = 'Хэрэглэгч сонгоогүй байна (нийт %d хэрэглэгч) '; +$lang['Invert'] = 'Эсрэгээр нь'; +$lang['none'] = 'нэгийг ч биш'; +$lang['No photo in the current set.'] = 'Тухайн хэсэгт зураг байхгүй байна.'; +$lang['No matching user found'] = 'Ийм хэрэглэгч олдсонгүй'; +$lang['Manage photos'] = 'Зургуудийг цэгцлэх'; +$lang['Manage this set of %d photos'] = 'Энэ %d зургийг цэгцлэх'; +$lang['Miscellaneous'] = 'Бусад'; +$lang['No mail to send.'] = 'Илгээх и-мэйл байхгүй байна.'; +$lang['Loading...'] = 'Ачаалж байна...'; +$lang['GD library is missing'] = 'GD library байхгүй байна'; +$lang['Failed to write file to disk'] = 'Файлыг бичэхэд алдаа гарлаа'; +$lang['File/directory read error'] = 'Файл/хавтасыг уншихад алдаа гарлаа'; +$lang['Error on file "%s" : %s'] = '"%s" файлд алдаа илэрлээ: %s'; +$lang['Email administrators when a comment is modified'] = 'Сэтгэгдэлийг засах үед зохицуулагчид и-мэйлээр мэдэгдэх'; +$lang['Email admins when a comment requires validation'] = 'Сэтгэгдэлийг идэвхжүүлэх шаардлагатай үед зохицуулагчид и-мэйлээр мэдэгдэх'; +$lang['Email admins when a valid comment is entered'] = 'Сэтгэгдэлийг оруулсан үед зохицуулагчид и-мэйлээр мэдэгдэх'; +$lang['Create this site'] = 'Энэ сайтыг үүсгэх'; +$lang['Default user cannot be deleted'] = 'Үндсэн хэрэглэгчийг устгах боломжгүй'; +$lang['Default user does not exist'] = 'Үндсэн хэрэглэгчийг оруулаагүй байна'; +$lang['Deleted on'] = 'Устгасан огноо'; +$lang['Detailed informations'] = 'Дэлгэрэнүй мэдээлэл'; +$lang['Directory'] = 'Хавтас'; +$lang['Directory does not exist'] = 'Ийм хавтас байхгүй байна'; +$lang['Duplicate'] = 'Давхардал'; +$lang['Correction applied with error'] = 'Засах үед алдаа гарлаа'; +$lang['Correction applied with success'] = 'Амжилттай заслаа'; +$lang['Change password'] = 'Нууц үг солих'; +$lang['Change username'] = 'Хэрэглэгчийн нэр солих'; +$lang['Available only with HTML format'] = 'Зөвхөн HTML хэлбэрээр боломжтой'; +$lang['Batch Manager'] = 'Цэгцлэх'; +$lang['Basic settings'] = 'Үндсэн тохиргоо'; +$lang['Apply watermark if height is bigger than'] = 'Усан хээг ашиглаж эхлэх өндөр'; +$lang['Apply watermark if width is bigger than'] = 'Усан хээг ашиглаж эхлэх өргөн'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Бусад (%s) загварууд тухайн загвараас хамаарч байгаа учир устгах боломжгүй байна.'; +$lang['All themes are up to date.'] = 'Шинэчлэх шаардлагатай загвар байхгүй байна'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Дараахь загварууд Piwigo-н шинэ гарсан хувилбартай зохицохгүй байх магадлалтай:'; +$lang['Make this language available to users'] = 'Тухайн хэлийг хэрэглэгчид ашиглах боломжтой болгох'; +$lang['Visit language site'] = 'Тухайн хэлний вэб хуудсанд зочилох'; +$lang['Extend for templates'] = 'Темплетийг засах'; +$lang['Optional URL keyword'] = 'Нэмэлт URL түлхүүр үг'; +$lang['Original templates'] = 'Эх загвар'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Эх загварыг өргөтгөл хавтасан дахь нэмэлт загваруудаас солих'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'GD-г ашиглаж байгаа учир "Оруулсаны дараа хэмжээг шинэчлэх" функцыг идэвхгүй болголоо'; +$lang['A locked gallery is only visible to administrators'] = 'Нууцалсан цомог зөвхөн Зохицуулагчид харагдана'; +$lang['High definition enabled'] = 'Өндөр нарийвчлал идэвхтэй'; +$lang['Ignore this update'] = 'Тухайн шинэчлэлийг үл хэрэгсэх'; +$lang['Ignore All'] = 'Бүгдийг үл хэрэгсэх'; +$lang['Gallery unlocked'] = 'Цомогны түгжээг гаргалаа'; +$lang['Manage Permissions'] = 'Эрхийг зохицуулах'; +$lang['Unsubscribed'] = 'Бүртгүүлээгүй'; +$lang['Other private albums'] = 'Бусад хувийн цомгууд'; +$lang['%s photos can not be regenerated'] = '%s зураг үүсгэж чадсангүй'; +$lang['%s photos have been regenerated'] = '%s-н зураг амжилттай үүсгэлээ'; +$lang['All %d users are selected'] = 'Бүх %d хэрэглэгчийг сонгосон байна'; +$lang['Advanced features'] = 'Нэмэлт боломжууд'; +$lang['Album manual order was saved'] = 'Цомогны дарааллыг хадгаллаа'; +$lang['manage album photos'] = 'цомгийн зургийг цэгцлэх'; +$lang['pixels'] = 'пиксель'; +$lang['cancel manual order'] = 'эрэмбийг цуцлах'; +$lang['close'] = 'хаах'; +$lang['delete this site and all its attached elements'] = 'энэ сайт болон холбоотой мэдээллийг устгах'; +$lang['an error happened'] = 'алдаа гарлаа'; +$lang['automatic order'] = 'автоматаар эрэмблэх'; +$lang['between %.2f and %.2f'] = '%.2f-с %.2f-н хооронд'; +$lang['between %d and %d pixels'] = '%d-с %d пикселийн хооронд'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Зургийн хэмжээ %dx%d пиксель болж багсана.'; +$lang['Summary'] = 'Дүгнэлт'; +$lang['Show %s users'] = '%s хэрэглэгчдийг харуулах'; +$lang['Random photo'] = 'Дурын зураг'; +$lang['Name of the duplicate'] = 'Давхардсан нэр'; +$lang['Manage the members'] = 'Гишүүдийг зохицуулах'; +$lang['Locked'] = 'Түгжээтэй'; +$lang['Images manual order was saved'] = 'Зургийн дарааллыг хадгаллаа'; +$lang['Impossible automatic correction'] = 'Автоматаар засах боломжгүй'; +$lang['private'] = 'хувийн'; +$lang['public'] = 'нийтийн'; +$lang['Number of thumbnails to create'] = 'Үүсгэх дүрс зургийн тоо'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Уучлаарай. Нууц үгээ баталгаажуулж, давтан оруулна уу.'; +$lang['Operation in progress'] = 'Засаж байна.'; +$lang['Only private albums are listed'] = 'Зөвхөн хувийн цомгуудийг жагсаав'; +$lang['existing album'] = 'одоо байгаа цомог'; +$lang['You cannot delete your account'] = 'Та өөрийнхөө бүртгэлийг устгах боломжгүй'; +$lang['albums deleted in the database'] = 'мэдээллийн сангаас цомгийг устаглаа'; +$lang['Waiting'] = 'Хүлээгдэж буй'; +$lang['Validate'] = 'Бататгах'; +$lang['Virtual Links'] = 'Хийсвэр холбоос'; +$lang['Virtual album name'] = 'Хийсвэр цомогын нэр'; +$lang['Visit Piwigo project website'] = 'Piwigo-н вэбсайтад зочилох'; +$lang['Virtual album'] = 'Хийсвэр цомог'; +$lang['Virtual album added'] = 'Хийсвэр цомог нэмлээ'; +$lang['Virtual album deleted'] = 'Хийсвэр цомгийг устаглаа'; +$lang['Tools'] = 'Хэрэгслүүд'; +$lang['View in gallery'] = 'Бодитоор харах'; +$lang['This site already exists'] = 'Ийм нэртэй сайт үүссэн байна'; +$lang['Two updates are available'] = 'Хоёр шинэчлэлт олдлоо'; +$lang['There is no other plugin available.'] = 'Өөр нэмэлт өргөтгөл байхгүй байна.'; +$lang['There is no other theme available.'] = 'Өөр нэмэлт загвар байхгүй байна.'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Нэг хуудсанд харагдах сэтгэгдэлийн тоо 5-с 50-н хооронд байх ёстой.'; +$lang['The original image quality must be a number between %d and %d'] = 'Үндсэн зургийн чанарын утга %d-с %d-н хооронд байх ёстой'; +$lang['The original maximum height must be a number between %d and %d'] = 'Өндөрийн хамгийн их утга %d-с %d-н хооронд байх ёстой'; +$lang['The original maximum width must be a number between %d and %d'] = 'Өргөний хамгийн их утга %d-с %d-н хооронд байх ёстой'; +$lang['Save manual order'] = 'Хадгалах'; +$lang['Select at least one tag'] = 'Доод тал нь нэг түлхүүр үг сонгоно уу'; +$lang['Ratio'] = 'Харьцаа хэмжээ'; +$lang['Public'] = 'Нийтийн'; +$lang['Public / Private'] = 'Нийтийн/Хувийн'; +$lang['Photos generation in progress...'] = 'Зургийг боловсруулж байна...'; +$lang['Overall'] = 'Ерөнхий байдал'; +$lang['Open user details'] = 'Хэрэглэгчийн мэдээллийг харах'; +$lang['Main "guest" user status is incorrect'] = '"Зочин" гэсэн үндсэн хэрэглэгчийн төлөв буруу байна'; +$lang['Main "webmaster" user status is incorrect'] = '"Вэбмастер" гэсэн үндсэн хэрэглэгчийн төлөв буруу байна'; +$lang['Main "webmaster" user does not exist'] = '"Вэбмастер" гэсэн үндсэн хэрэглэгч бүртгэгдээгүй байна'; +$lang['Main "guest" user does not exist'] = '"Зочин" гэсэн үндсэн хэрэглэгч бүртгэгдээгүй байна'; +$lang['Grant selected groups'] = 'Сонгосон бүлэгт зөвшөөрөх'; +$lang['Grant selected users'] = 'Сонгосон хэрэглэгчдэд зөвшөөрөх'; +$lang['Errors caption'] = 'Алдааны бүртгэл'; +$lang['Linked albums'] = 'Холбоотой цомог'; +$lang['Last hit'] = 'Сүүлд үзсэн'; +$lang['Instructions to use Piwigo'] = 'Piwigo-г ашиглах заавар'; +$lang['Showing %s to %s of %s users'] = '%s-с %s хэрэглэгчийг харуулж байна. Нийт %s хэрэглэгч'; +$lang['Manage authorizations for selected albums'] = 'Цомогын төлөв байдлыг сонгох'; +$lang['Authorize users to add comments on selected albums'] = 'Хэрэглэгчид сэтгэгдэл бичэх эрхийг зохицуулах'; +$lang['Authorized'] = 'Зөвшөөрөгдсөн'; +$lang['Lock albums'] = 'Цомогийг түгжэх'; +$lang['Unlocked'] = 'Түгжээгүй'; +$lang['Permissions'] = 'Зөвшөөрөл'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'цомогийг үзэхийн тулд хэрэглэгч болгон бүртгүүлж зөвшөөрөл авах ёстой'; +$lang['any visitor can see this album'] = 'энэ цомгийг дурийн хүн үзэх боломжтой'; +$lang['Manual order'] = 'Гараараа эрэмблэх'; +$lang['manual order'] = 'гараараа эрэмблэх'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'үндсэн тохиргоог ашиглах'; +$lang['Add a virtual album'] = 'Хийсвэр цомог нэмэх'; +$lang['%d line filtered'] = '%d мөр мэдээлэл'; +$lang['%d lines filtered'] = '%d мөр мэдээлэл'; +$lang['%d waiting for validation'] = 'Баталгаажуулалт хүлээж буй %d'; +$lang['Last visit on %s, %s.'] = 'Хамгийн сүүлд зочилсон огноо %s, %s.'; +$lang['Registered on %s, %s.'] = 'Бүртгүүлсэн огноо %s, %s.'; +$lang['Select recipients'] = 'Хүлээн авагчаа сонгоно уу'; +$lang['Include display of recent photos grouped by dates'] = 'Шинэ зургуудийг огноогоор нь нэгтгэн хавсаргах'; +$lang['Notification'] = 'Мэдээлэл'; +$lang['Associate to album'] = 'Цомогт хамруулах'; +$lang['Activate it now'] = 'Одоо идэвхжүүлэх'; +$lang['I decide to update anyway'] = 'Ямар ч байсан шинэчилье.'; +$lang['Properties'] = 'Төлөв байдал'; +$lang['Close user details'] = 'Хаах'; +$lang['%d tag'] = '%d түлхүүр үг'; +$lang['Can\'t download archive.'] = 'Архив файлыг татаж авах боломжгүй'; +$lang['created'] = 'үүсгэсэн'; +$lang['Upload'] = 'Оруулах'; +$lang['Unlock gallery'] = 'Галерейн түгжээг гаргах'; +$lang['Unable to dump database.'] = 'Мэдээллийн санг устгах боломжгүй байна'; +$lang['Search for new images in the directories'] = 'Хавтас дотор шинэ зурагнууд хайх'; +$lang['Photo %s of %s'] = 'Нийт %s зурагны %s нь'; +$lang['Minimum height'] = 'Өндөрийн доод хэмжээ'; +$lang['Minimum width'] = 'Өргөний доод хэмжээ'; +$lang['Lock gallery'] = 'Галерейг түгжих'; +$lang['Last send'] = 'Сүүлд илгээсэн'; +$lang['Learn more'] = 'Цааш нь үзэх'; +?> \ No newline at end of file diff --git a/sources/language/mn_MN/common.lang.php b/sources/language/mn_MN/common.lang.php new file mode 100644 index 0000000..9ae000a --- /dev/null +++ b/sources/language/mn_MN/common.lang.php @@ -0,0 +1,420 @@ + \ No newline at end of file diff --git a/sources/language/mn_MN/install.lang.php b/sources/language/mn_MN/install.lang.php new file mode 100755 index 0000000..c9b3792 --- /dev/null +++ b/sources/language/mn_MN/install.lang.php @@ -0,0 +1,63 @@ +Piwigo message board.'] = 'Тусламж хэрэгтэй бол Piwigo message board хаягаар хандаж асуултаа асуугаарай.'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Тохиргооны файл local/config/database.inc.php-г үүсгэж чадсангүй'; +$lang['Keep it confidential, it enables you to access administration panel'] = 'Удирдлагын талбарт хандах эрхийг нээх тул энэ мэдээллийг нууцлан хадгална уу'; +$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'Мэдээллийн сангийн талбаруудад энэ утгыг угтвар хэсэг болгон ашиглах болно. Ингэснээр талбаруудыг удирдаж зохицуулахад илүү хялбар болдог.'; +$lang['localhost or other, supplied by your host provider'] = 'localhost эсвэл веб байршуулж буй компаниас өгсөн нэр'; +$lang['user login given by your host provider'] = 'веб байршуулж буй компаниас өгсөн хэрэглэгчийн нэр'; +$lang['user password given by your host provider'] = 'веб байршуулж буй компаниас өгсөн нууц үг'; +$lang['Database table prefix'] = 'Мэдээллийн сангийн талбарийн угтвар утга'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Тохиргооны файлыг татан авч өөрчлөөд local/config хавтас уруу буцаан хуулаах боломжтой.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Тохиргоогоо өөрөө өөрчлөөд Piwigo-г дахин ачаалж болно гэдгийг санаарай.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Тусламж хэрэгтэй бол манай онлайн форумд хандаарай: %s'; +$lang['Host'] = 'Байршуулах компьютер'; +$lang['Installation'] = 'Суулгац'; +?> \ No newline at end of file diff --git a/sources/language/mn_MN/iso.txt b/sources/language/mn_MN/iso.txt new file mode 100644 index 0000000..78c9604 --- /dev/null +++ b/sources/language/mn_MN/iso.txt @@ -0,0 +1 @@ +Монгол [MN] \ No newline at end of file diff --git a/sources/language/mn_MN/mn_MN.jpg b/sources/language/mn_MN/mn_MN.jpg new file mode 100644 index 0000000..5a9b898 Binary files /dev/null and b/sources/language/mn_MN/mn_MN.jpg differ diff --git a/sources/language/mn_MN/upgrade.lang.php b/sources/language/mn_MN/upgrade.lang.php new file mode 100755 index 0000000..eb3f3ca --- /dev/null +++ b/sources/language/mn_MN/upgrade.lang.php @@ -0,0 +1,40 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Хэрвээ ямар нэгэн асуудал гарвал [Удирдлага>Tools>Засвар үйлчилгээ] хэсэгээс шалгаж үзнэ үү'; +$lang['User permissions and group permissions have been erased'] = 'Хэрэглэгч болон бүлгүүдийн эрхийг цуцаллаа'; +$lang['All sub-albums of private albums become private'] = 'Хувийн цомогт хамаарагдах дэд цомогууд мөн "хувийн" байх болно'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Алдаа гарахаас сэргийлж дараахь нэмэлт өргөтгөлүүдийг идэвхгүй болголоо. Дахин идэвхжүүлэхээсээ өмнө тохирох эсэхийг нь нягталж шалгана уу.'; +$lang['In %s, before ?>, insert:'] = '%s дотор, before ?>-н урд дараахь утгыг оруулах:'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Өмнөх тохиргооноос зөвхөн вэбмастерийн и-мэйл хаягыг л хадгалж үлдээлээ.'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Энэхүү хуудас Танд Piwigo-н мэдээллийн сангаа шинэ хувилбараар сайжруулахад тань туслах болно. Та одоо %s (буюу түүнтэй адилтгах) хувилбарыг ашиглаж байна.'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Алдаа гарахаас сэргийлж дараахь загвар (theme)-г идэвхгүй болголоо. Дахин идэвхжүүлэхийн өмнө сайжруулсан хувилбар нь гарсан эсэхийг шалгана уу:'; +?> \ No newline at end of file diff --git a/sources/language/ms_MY/common.lang.php b/sources/language/ms_MY/common.lang.php new file mode 100644 index 0000000..ccaaad6 --- /dev/null +++ b/sources/language/ms_MY/common.lang.php @@ -0,0 +1,163 @@ + \ No newline at end of file diff --git a/sources/language/ms_MY/iso.txt b/sources/language/ms_MY/iso.txt new file mode 100644 index 0000000..946d546 --- /dev/null +++ b/sources/language/ms_MY/iso.txt @@ -0,0 +1 @@ +Malay [MY] \ No newline at end of file diff --git a/sources/language/ms_MY/ms_MY.jpg b/sources/language/ms_MY/ms_MY.jpg new file mode 100644 index 0000000..919506f Binary files /dev/null and b/sources/language/ms_MY/ms_MY.jpg differ diff --git a/sources/language/nb_NO/about.html b/sources/language/nb_NO/about.html new file mode 100644 index 0000000..48318ed --- /dev/null +++ b/sources/language/nb_NO/about.html @@ -0,0 +1,16 @@ +

                  Dette fotogalleriet er basert på Piwigo.

                  + +

                  Piwigo er et fotogalleri program for web, laget av et aktivt miljø av +brukere og utviklere. Tilleggsverktøy gjør at Piwigo lett kan skreddersys +etter eget ønske. Og på toppen av det hele, Piwigo er gratis og har åpen +kildekode.

                  + +

                  Besøk Piwigo webside

                  + +

                  Den norske oversettelsen blir vedlikeholdt av (i alfabetisk rekkefølge): +

                  + .... mange takk til deg

                  diff --git a/sources/language/nb_NO/admin.lang.php b/sources/language/nb_NO/admin.lang.php new file mode 100644 index 0000000..4c1d814 --- /dev/null +++ b/sources/language/nb_NO/admin.lang.php @@ -0,0 +1,974 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står for Piwigo Opplaster. Fra din maskin, pLoader klargjør dine bilder og overfører demtil ditt Piwigo photo galleri.'; +$lang['Guest Settings'] = 'Instillinger for gjester'; +$lang['Main Page'] = 'Hovedside'; +$lang['Photo Page'] = 'Bilde side'; +$lang['Activate Navigation Bar'] = 'Aktiver navigasjon bar'; +$lang['Activate Navigation Thumbnails'] = 'Aktiver navigasjon miniatyrbilder'; +$lang['Activate icon "%s"'] = 'Aktiver icon "%s"'; +$lang['Photo Properties'] = 'Bilde egenskaper'; +$lang['Allow user customization'] = 'Godkjenn brukers egne instillinger'; +$lang['Languages'] = 'Språk'; +$lang['Installed Languages'] = 'Installerte språk'; +$lang['Add New Language'] = 'Legg til nytt språk'; +$lang['Language has been successfully installed'] = 'Språkpakke har blitt installert'; +$lang['Select:'] = 'Velg:'; +$lang['None'] = 'Ingen'; +$lang['Invert'] = 'Inverter'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Umulig å deaktivere dette tema, du må minst et tema aktivt.'; +$lang['Webmaster status is required.'] = 'Webmaster status er nødvendig.'; +$lang['Bound Theme'] = 'Bundet tema'; +$lang['Allow rating'] = 'Godta gradering'; +$lang['Select at least one comment'] = 'Velg minst 1 kommentar'; +$lang['Active Plugins'] = 'Aktive tilleggsprogram'; +$lang['Inactive Plugins'] = 'Inaktive tilleggsprogram'; +$lang['Missing Plugins'] = 'Manglende tilleggsprogram'; +$lang['Uninstalled Plugins'] = 'Avinstallerte tilleggsprogram'; +$lang['By %s'] = 'Av %s'; +$lang['Visit plugin site'] = 'Besøk tilleggsprogram side'; +$lang['Active Languages'] = 'Aktive språk'; +$lang['Delete this language'] = 'Slett denne språkpakken'; +$lang['Forbid this language to users'] = 'Forby dette språket for brukere'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Umulig å deaktivere dette språket, sett et annet språk som standard først.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Umulig å deaktivere dette språket, du trenger minst et språk.'; +$lang['Inactive Languages'] = 'Inaktive språk'; +$lang['Make this language available to users'] = 'Gjør dette språket tilgjengelig for brukere'; +$lang['Set as default language for unregistered and new users'] = 'Sett som standard språk for uregistrerte og nye brukerer'; +$lang['Add Photos'] = 'Legg til bilder'; +$lang['The following tag was deleted'] = 'Følgende tag er slettet'; +$lang['Miscellaneous'] = 'Diverse'; +$lang['Virtual Links'] = 'Virtuelle Linker'; +$lang['There is no other language available.'] = 'Det er ingen andre språk tilgjengelig.'; +$lang['There is no other plugin available.'] = 'Det er ingen andre tilleggsprogrammer tilgjengelig.'; +$lang['There is no other theme available.'] = 'Det er ingen andre temaer tilgjengelig.'; +$lang['Add another set of photos'] = 'Legg til et annet sett med bilder'; +$lang['Order of menubar items has been updated successfully.'] = 'Sorteringen av meny elementer har blitt opppdatert.'; +$lang['This theme was not designed to be directly activated'] = 'Dette tema er ikke laget for å bli direkte aktivert'; +$lang['Pending Comments'] = 'Ventende kommentarer'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I din php.ini fil, om upload_max_filesize (%sB) er større en post_max_size (%sB), bør du endre denne instillingen'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif tillegg ikke tilgjengelig, administrator bør gjøre bruk av exif utilgjengelig'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den opplastede filen overgår upload_max_filesize direktivet i php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den opplastede filen overgår post_max_size direktivet i php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Den opplastede filen overgår MAX_FILE_SIZE direktivetsom er spesifisert i HTML skjemaet'; +$lang['The uploaded file was only partially uploaded'] = 'Filen ble bare delvis opplastet'; +$lang['No file was uploaded'] = 'Ingen filer ble lastet opp'; +$lang['Missing a temporary folder'] = 'Mangler en midlertidig mappe'; +$lang['Failed to write file to disk'] = 'Feilet i å skrive til disk'; +$lang['File upload stopped by extension'] = 'Fil| opplastingen stoppet av tillegg'; +$lang['Unknown upload error'] = 'Ukjent opplastings feil'; +$lang['Error on file "%s" : %s'] = 'Feil på fil "%s" : %s'; +$lang['Menu Management'] = 'Menyer'; +$lang['automatic order'] = 'automatisk sortering'; +$lang['manual order'] = 'manuell sortering'; +$lang['Albums automatically sorted'] = 'Album automatisk sortert'; +$lang['Batch Manager'] = 'Batch Behandler'; +$lang['include child albums'] = 'inkluder under album'; +$lang['Selection'] = 'Utvalg'; +$lang['Action'] = 'Tiltak'; +$lang['Set author'] = 'Sett forfatter'; +$lang['Set title'] = 'Sett tittel'; +$lang['Set creation date'] = 'Sett opprettelses dato'; +$lang['Apply action'] = 'Aktiver handlinger'; +$lang['on the %d selected photos'] = 'på de %d valgte bildene'; +$lang['%d of %d photos selected'] = '%d av %d bilder valgt'; +$lang['No photo selected, %d photos in current set'] = 'Ingen foto valgt, %d foto i forrige sett'; +$lang['All %d photos are selected'] = 'Alle %d bilder er valgt'; +$lang['remove this filter'] = 'fjern filter'; +$lang['Predefined filter'] = 'Redefiner filter'; +$lang['Last import'] = 'Siste importering'; +$lang['With no virtual album'] = 'Uten virtuelle album'; +$lang['Duplicates'] = 'duplikater'; +$lang['Add a filter'] = 'Legg inn filter'; +$lang['Remove all filters'] = 'Fjern alle filtere'; +$lang['Refresh photo set'] = 'Oppdater bilde sesjonen'; +$lang['The whole page'] = 'Hele siden'; +$lang['The whole set'] = 'Hele sesjonen'; +$lang['No photo in the current set.'] = 'Ingen foto i gjeldende sesjon.'; +$lang['No photo selected, no action possible.'] = 'Ingne bilder valgt, ingen tilltak mulig.'; +$lang['Choose an action'] = 'Velg et tilltak'; +$lang['remove author'] = 'fjern forfatter'; +$lang['Type here the author name'] = 'Skriv forfatter navn her'; +$lang['remove title'] = 'fjern tittel'; +$lang['Type here the title'] = 'Skriv tittel her'; +$lang['remove creation date'] = 'fjern opprettelse dato'; +$lang['With no album'] = 'Uten album'; +$lang['With no tag'] = 'Uten tag'; +$lang['Album photos associated to the following albums: %s'] = 'Album bilder assosiert til følgende album: %s'; +$lang['Delete orphan tags'] = 'Slett foreldreløse tagger'; +$lang['delete photo'] = 'slett bilde'; +$lang['Orphan tags deleted'] = 'Foreldreløse tagger slettet'; +$lang['Week starts on'] = 'Uke starter på'; +$lang['You have %d orphan tags: %s.'] = 'Du har %d foreldreløse tagger: %s.'; +$lang['Remove from caddie'] = 'Fjern fra kurv'; +$lang['Themes which need upgrade'] = 'Temaer som trenger oppgradering'; +$lang['Languages which need upgrade'] = 'Språk som trenger oppgradering'; +$lang['All themes are up to date.'] = 'Alle temaer er oppdaterte.'; +$lang['All plugins are up to date.'] = 'Alle plugginene er oppdaterte.'; +$lang['All languages are up to date.'] = 'Alle språk er oppdaterte.'; +$lang['Visit theme site'] = 'Besøk tema side'; +$lang['Visit language site'] = 'Besøk språk side'; +$lang['New Version'] = 'Ny versjon'; +$lang['Learn more'] = 'Lær mer'; +$lang['Rate'] = 'Rangere'; +$lang['Average rate'] = 'Gjennomsnittlig rate'; +$lang['An error has occured during upgrade.'] = 'En feil oppstod under oppgraderingen.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                  Click here to show log error.'] = 'En feil oppstod under utpakkingen. Vennligst sjekk fil rettigheter i din piwigo installasjon.
                  Klikk her for å vise feil loggen.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan ikke motta oppgraderingsfilen fra serveren'; +$lang['Update in progress... Please wait.'] = 'Oppgradering pågår... Vennligst vent.'; +$lang['Update to Piwigo %s'] = 'Oppgrader til Piwigo %s'; +$lang['Two updates are available'] = 'To oppgraderinger er tilgjengelige'; +$lang['This is a minor update, with only bug corrections.'] = 'Dette er en mindre oppgradering, kun med noen interne feilrettinger.'; +$lang['This is a major update, with new exciting features.'] = 'Dette er en omfattende oppgradering, med nye spennende funksjoner.'; +$lang['Some themes and plugins may be not available yet.'] = 'Noen temaer og tilleggsverktøy er muligens ikke tilgjengelig foreløpig.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan oppgradere til Piwigo %s direkte, uten å oppgradere til Piwigo %s (anbefalt).'; +$lang['Save Template Directory'] = 'Lagre mal (template) mappe'; +$lang['Dump Database'] = 'Tøm Database'; +$lang['ERROR'] = 'FEIL'; +$lang['Update Complete'] = 'Oppgradering fullført'; +$lang['Piwigo Update'] = 'Piwigo-oppgradering'; +$lang['Extensions Update'] = 'Tilleggsprogram-oppgradering'; +$lang['All extensions are up to date.'] = 'Alle tilleggsprogram er oppdaterte.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Følgende tilleggsprogram er muligens ikke kompatible med den nye utgaven av Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Følgende temaer er muligens ikke kompatible med den nye utgaven av Piwigo:'; +$lang['Height'] = 'Høyde'; +$lang['Width'] = 'Bredde'; +$lang['display'] = 'Vis'; +$lang['Zoom'] = 'Zoom'; +$lang['Add to caddie'] = 'legg i kurv'; + +$lang['... or '] = '... eller'; +$lang['Allowed file types: %s.'] = 'Tillatte filtyper: %s.'; +$lang['%s has been successfully updated.'] = '%s har blitt oppdatert'; +$lang['%s photos can not be regenerated'] = '%s bilder kan ikke bli regenerert'; +$lang['%s photos have been regenerated'] = '%s bilder har blitt regenerert'; +$lang['(this tag will be deleted)'] = '(tilleggsinfo om bilde vil bli slettet)'; +$lang['Activate comments'] = 'Aktiver kommentarer'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktiver knappen "ny" ved siden av album og bilder'; +$lang['Add a criteria'] = 'Legg til kriterier'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ca. max oppløsning: %dM piksler (dvs. %dx%d piksler).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo vil automatisk lage ny størrelse på bilde tilpasset web på dine HD bilder.'; +$lang['Confirm merge'] = 'Bekreft fletting'; +$lang['Create'] = 'Lag'; +$lang['Crop'] = 'Beskjær'; +$lang['Deactivate all'] = 'Deaktivere alt'; +$lang['Default comments order'] = 'Standard rekkefølge på kommentarer'; +$lang['Default photos order'] = 'Standard rekkefølge på bilder'; +$lang['Do you want to activate anyway?'] = 'Vil du aktivere allikevel?'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEIL: DETTE TILLEGGET MANGLER, MEN ER INSTALLERT! AVINSTALLER NÅ.'; +$lang['Graphics Library'] = 'Grafikkbibliotek'; +$lang['hide details'] = 'skjul detaljer'; +$lang['I decide to update anyway'] = 'Jeg vil oppgradere allikevel'; +$lang['Ignore All'] = 'Ignorer alle'; +$lang['Ignore this update'] = 'Ignorer denne oppdatering'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkluder historisk data (Advarsel: serverens minne kan overstiges)'; +$lang['Manage Permissions'] = 'Behandle rettigheter'; +$lang['Maximum file size: %sB.'] = 'Maksimal filstørrelse: %sB.'; +$lang['Merge selected tags'] = 'Flett merkede bildetags'; +$lang['Merge tags'] = 'Flett bildetags'; +$lang['new'] = 'ny'; +$lang['No results'] = 'Ingen resultater'; +$lang['Photo %s of %s'] = 'Bilde %s av %s'; +$lang['Photo name'] = 'Bildenavn'; +$lang['Reset ignored updates'] = 'Nullstill ignorerte uppdateringer'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Gjenopprett standard konfigurasjon. Du vil miste innstillingene til tilleggene.'; +$lang['Restore'] = 'Gjenopprett'; +$lang['Searching...'] = 'Søker...'; +$lang['Select an album'] = 'Velg et album'; +$lang['show details'] = 'Vis detaljer'; +$lang['Show menubar'] = 'Vis menyer'; +$lang['Start Upload'] = 'Start opplasting'; +$lang['Type in a search term'] = 'Skriv inn et søkeord'; +$lang['Update All'] = 'Oppdater alt'; +$lang['Updates'] = 'Oppdateringer'; +$lang['A locked gallery is only visible to administrators'] = 'Et lukket galleri er kun synlig for administratorer'; +$lang['administrators'] = 'administrator'; +$lang['apply automatic sort order'] = 'Sett automatisk rekkefølge'; +$lang['Automatic sort order'] = 'Automatisk rekkefølge'; +$lang['cancel manual order'] = 'avbryt manuell rekkefølge'; +$lang['Cancel'] = 'Avbryt'; +$lang['Gallery unlocked'] = 'Galleri låst opp'; +$lang['modified'] = 'endret'; +$lang['Move to album'] = 'Flytt til album'; +$lang['No destination tag selected'] = 'Ingen mål tag valgt'; +$lang['Obsolete Plugins'] = 'Foreldet tillegg.'; +$lang['Original Size'] = 'Original størrelse'; +$lang['pending validation'] = 'venter på bekreftelse'; +$lang['Photos generation in progress...'] = 'Generering av bilder foregår...'; +$lang['registered users'] = 'registrert bruker'; +$lang['Resize after upload'] = 'Endre størrelse etter opplasting'; +$lang['Save manual order'] = 'Lagre manuell rekkefølge'; +$lang['Select at least two tags for merging'] = 'Velg minst to tagger for fletting'; +$lang['Select the destination tag'] = 'Velg mål tag'; +$lang['Send connection settings by email'] = 'Send tilkoblingsinfo på epost'; +$lang['Some upgrades are available for extensions.'] = 'Oppgraderinger er tilgjengelig for tillegg.'; +$lang['Tags %s merged into tag %s'] = 'Tag %s er flettet med tag %s'; +$lang['The original image quality must be a number between %d and %d'] = 'Opprinnelig bildekvalitet må være et tall mellom %d og %d.'; +$lang['The original maximum height must be a number between %d and %d'] = 'Opprinnelig maksimale bildehøyde må være et tall mellom %d og %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Opprinnelig maksimale bildebredde må være et tall mellom %d og %d'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Dette albumet inneholder %s bilder, lagt til mellom %s og %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Dette albumet inneholder %d bilder, lag til %s.'; +$lang['This album contains no photo.'] = 'Dette albumet er tomt.'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DETTE TILLEGGET ER NÅ EN DEL AV PIWIGO! AVINSTALLER DET NÅ! '; +$lang['Thumbnails generation in progress...'] = 'Generering av miniatyrbilder er i gang.'; +$lang['Unlock gallery'] = 'Lås opp galleri'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ADVARSEL! Dette tillegge ser ikke ut til å være kompatibelt med denne versjonen av Piwigo.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Du bruker nettleseropplasting. Prøv Flashopplasting isteden.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Du bruker Flashopplasting. Prøv Nettleseropplasting isteden.'; +$lang['Available on'] = 'Tilgjengelig på'; +$lang['Available versions for'] = 'Tilgjengelig versjon for'; +$lang['List'] = 'Vis'; +$lang['Not cropped correctly?'] = 'Ikke beskåret riktig?'; +$lang['Notify administrators when a comment is'] = 'Gi beskjed til administrator når en kommentar er'; +$lang['Piwigo for Android'] = 'Piwigo for Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)'; +$lang['Save visits in history for'] = 'Lagre besøkshistorie for '; +$lang['Unable to dump database.'] = 'Kan ikke dumpe databasen'; +$lang['You can activate only one mobile theme.'] = 'Du kan kun aktivere et mobilt tema.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan ikke definere standard bilderekkefølge, fordi du har eget oppsett i din lokale konfigurasjon.'; +$lang['simple visitors'] = 'vanlig besøkende'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u brukere har automatisk rettigheter fordi de tilhører en gruppe som allerede har rettigheter.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo for Android applikasjonen gjør at du kan koble til ditt Piwigo-galleri fra din Android-telefon, opprette album og laste opp flere bilder samtidig.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo for iOS applikasjonen gjør at du kan koble til ditt Piwigo-galleri fra din iPhone, iPad eller iPod Touch, opprette album og laste opp flere bilder samtidig.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom et et bildebehandlingsprogram, lagd for å å organisere svært mange bilder, samt etterbehandling av bilder.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture er et kraftig verktøy for å avgrense bilder, og for å behandle store bildebibliotek på Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture er lagd for profesjonelle fotografer med iPhoto enkelhet.'; +$lang['Applications'] = 'Applikasjoner'; +$lang['Apply watermark if height is bigger than'] = 'Legg på vannmerke hvis høyden er større enn'; +$lang['Apply watermark if width is bigger than'] = 'Legg på vannmerke hvis bredden er større enn'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard, midten av fokus er plassert i midten av bilde.'; +$lang['Center of interest'] = 'Midten av fokus'; +$lang['Delete multiple size images'] = 'Slett bilder med flere størrelser'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funksjoner inkluderer å bla i gallerier, opprette album og laste opp bilder.'; +$lang['Follow Orientation'] = 'Følg retning'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For beskårede bilder, som feks. "kvadratiske", vil Piwigo på best mulig måte prøve å inkludere midten av fokus.'; +$lang['Generate multiple size images'] = 'Lag bilder med flere størrelser'; +$lang['Groups and users'] = 'Grupper og brukere'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Hvis ikke HD er tilgjengelig, og hvis aktuell webstørrelse er større enn ny størrelse, vil Piwigo flytte bildet som HD, og opprette nedskalert webstrørrelse bilde. '; +$lang['No group is permitted to see this private album'] = 'Ingen grupper har rettigheter til å se dette private album'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'I Linux kan du enkelt installere Shortwell i programvaresenteret, og deretter aktivere Piwigo publisering.'; +$lang['Opacity'] = 'Opasitet'; +$lang['Permission granted for groups'] = 'Rettigheter satt for grupper'; +$lang['Permission granted for users'] = 'Rettigheter satt for brukere.'; +$lang['Permission management'] = 'Administrere rettigheter'; +$lang['Photo sizes with crop'] = 'Bildestørrelse med beskjæring'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo publiseringstillegg for Lightroom'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo eksporteringstillegg for Aperture.'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo eksporteringstillegg for iPhone.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publiseringstillegg for Shortwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publiseringstillegg for digiKam'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Ekstern galleriklient for Android) er en åpen-kildekode (GPL v3) Piwigo klient for Android.'; +$lang['Select a file'] = 'Velg en fil'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Velg et område med musa for å definere nytt fokus.'; +$lang['Select groups...'] = 'Velg grupper...'; +$lang['Select users...'] = 'Velg brukere...'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shortwell er et Linux åpen-kildekode program for å organisere bilder. Det er standard bildebehandlingsprogram i Ubuntu og Fedora.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksporteringstillegg gjør at du kan opprette album og eksportere bilder.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publiseringstillegg muliggjør eksport og synkronisering av bilder fra Lightroom direkte til ditt Piwigo galleri.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Midten av fokus er det mest meningsfulle delen av bilde.'; +$lang['There is no group in this gallery.'] = 'Ingen grupper i dette galleriet.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'For å eksportere dine bilder fra digiKam til Piwigo, må du installere digiKam og Kipi-tillegg.'; +$lang['Web Form'] = 'Web-skjema'; +$lang['X Position'] = 'X posisjon'; +$lang['X Repeat'] = 'X repetering'; +$lang['Y Position'] = 'Y posisjon'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Parameteren $conf[\'order_by\'] du har spesifisert i din lokale konfigurasjonsfil er foreldet. Vennligst fjern den, eller skift navn på den til $conf[\'order_by_custom\']!'; +$lang['add a new watermark'] = 'legg til vannmerke'; +$lang['any visitor can see this album'] = 'alle besøkende kan se dette album'; +$lang['bottom left corner'] = 'nedre venstre hjørne'; +$lang['bottom right corner'] = 'nedre høyre hjørne'; +$lang['custom'] = 'Egendefinert'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam er et gratis avansert digital bildebehandlingsprogram for Linux, Windows og MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam er lagd for fotografer som ønsker å se, behandle, redigere, forbedre, organisere, tagge og dele bilder.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto er standard bildebehandler på MacOSX. Piwigo eksporteringstillegg lar deg lage nye album og eksportere dine bilder direkte fra iPhoto til ditt Piwigo galleri.'; +$lang['include photos with lower privacy level'] = 'ta med bilder av lavere rettighetsnivå'; +$lang['middle'] = 'senter'; +$lang['top left corner'] = 'øvre venstre hjørne'; +$lang['top right corner'] = 'øvre høyre hjørne'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besøkende må logge inn for å se dette album'; +$lang['Multiple Size'] = 'Flere størrelser'; +$lang['%d day'] = '%d dag'; +$lang['%d days'] = '%d dager'; +$lang['%d hour'] = '%d time'; +$lang['%d hours'] = '%d timer'; +$lang['%d minute'] = '%d minutt'; +$lang['%d minutes'] = '%d minutter'; +$lang['%d month'] = '%d måned'; +$lang['%d months'] = '%d måneder'; +$lang['%d second'] = '%d sekund'; +$lang['%d seconds'] = '%d sekunder'; +$lang['%d year'] = '%d år'; +$lang['%d years'] = '%d år'; +$lang['%s ago'] = '%s siden'; +$lang['%s in the future'] = '%s i framtiden'; +$lang['Added by %s'] = 'Lagt til av %s'; +$lang['Numeric identifier : %d'] = 'Numerisk identifikasjon: %d'; +$lang['Original file : %s'] = 'Orginal fil: %s'; +$lang['Posted %s on %s'] = 'Postet %s den %s'; +$lang['Rated %d times, score : %.2f'] = 'Vurdert %d ganger, poeng: %.2f'; +$lang['Sharpen'] = 'Gjør skarpere'; +$lang['Visited %d times'] = 'Sett %s ganger'; +$lang['Watermark'] = 'Vannmerke'; +$lang[' and %d virtuals'] = 'og %d virtuell'; +$lang['%d physicals'] = '%d fysisk'; +$lang['%d week'] = '%d uke'; +$lang['%d weeks'] = '%d uker'; +$lang['Edit photo'] = 'Endre bilde'; +$lang['create a new site'] = 'lag en ny side'; +$lang['No order field selected'] = 'Ingen rekkefølgefelt er valgt'; +$lang['Duplicate selected tags'] = 'Flere tagger valgt'; +$lang['Name of the duplicate'] = 'Navn på duplikater'; +$lang['Source tag'] = 'Kildetagg'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tagg "%s" er nå en duplikat av "%s"'; +$lang['Landscape'] = 'Liggende'; +$lang['Manage photos'] = 'Behandle bilder'; +$lang['Minimum height'] = 'Minimum høyde'; +$lang['Minimum width'] = 'Minimum bredde'; +$lang['Number of albums per page'] = 'Antall album pr side'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Portrett'; +$lang['View in gallery'] = 'Se i galleri'; +$lang['Ratio'] = 'Ratio'; +$lang['Duplicate'] = 'Duplikat'; +$lang['Manage the members'] = 'Behandle medlemmene'; +$lang['Merge selected groups'] = 'Flett markerte grupper'; +$lang['No group selected, no action possible.'] = 'Ingen gruppe markert, kan ikke gjøre noe.'; +$lang['No members to manage'] = 'Ingen medlemmer å behandle'; +$lang['Please select at least two groups'] = 'Vennligst marker minst to grupper'; +$lang['Rename'] = 'Gi nytt navn'; +$lang['This group will be set to default'] = 'Denne gruppen bli satt til standard'; +$lang['This group will be unset to default'] = 'Denne gruppen mister merket standard'; +$lang['Type here the name of the new group'] = 'Skriv her navnet på den nye gruppen'; +$lang['between %.2f and %.2f'] = 'mellom %.2f og %.2f'; +$lang['between %d and %d pixels'] = 'mellom %d og %d piksler'; +$lang['Purge user cache'] = 'Rens bruker cache'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Endring av bildestørrelse er slått av, siden du bruker GD som grafikkgalleri.'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Bildets dimensjoner vil bli redusert til %dx%d piksler.'; +$lang['Select at least one tag'] = 'Velg minst en tag'; +$lang['Basic settings'] = 'Generelle innstillinger'; +$lang['General'] = 'Genrelt'; +$lang['Mail theme'] = 'Eposttema'; +$lang['Last visit on %s, %s.'] = 'Forrige besøk den %s, %s'; +$lang['%d of %d users selected'] = '%d av %d brukere valgt'; +$lang['(filtered from %s total users)'] = '(filtrert fra %s brukere totalt)'; +$lang['All %d users are selected'] = 'Alle %d brukere valgt'; +$lang['Change password'] = 'Bytt passord'; +$lang['Change username'] = 'Bytt brukernavn'; +$lang['Loading...'] = 'Laster...'; +$lang['No matching user found'] = 'Ingen treff'; +$lang['No user selected of %d users'] = 'Ingen av %d brukere valgt'; +$lang['No user selected, no action possible.'] = 'Ingen bruker valgt, kan ikke gjøre noe.'; +$lang['Password updated'] = 'Passord oppdatert'; +$lang['Registered on %s, %s.'] = 'Registrert den %s, %s.'; +$lang['Show %s users'] = 'Vis %s brukere'; +$lang['Showing %s to %s of %s users'] = 'Viser %s til %s av %s brukere'; +$lang['Update user'] = 'Oppdater bruker'; +$lang['User %s added'] = 'Lagt til bruker %s'; +$lang['User %s updated'] = 'Bruker %s oppdatert'; +$lang['Users modified'] = 'Brukermodifisert'; +$lang['on the %d selected users'] = 'av de %d valgte brukere'; +$lang['Close user details'] = 'Lukk brukeropplysninger'; +$lang['Open user details'] = 'Åpne brukeropplysninger'; +$lang['close'] = 'lukk'; +?> \ No newline at end of file diff --git a/sources/language/nb_NO/common.lang.php b/sources/language/nb_NO/common.lang.php new file mode 100644 index 0000000..b1d1d75 --- /dev/null +++ b/sources/language/nb_NO/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/nb_NO/help/cat_modify.html b/sources/language/nb_NO/help/cat_modify.html new file mode 100644 index 0000000..9872ab4 --- /dev/null +++ b/sources/language/nb_NO/help/cat_modify.html @@ -0,0 +1,134 @@ +

                  Rediger album

                  + +

                  Informasjon

                  + +
                    + +
                  • navn: gi nytt navn til album (en virtuell navneendring om dette er et fysisk album).
                  • + +
                  • Beskrivelse: kort tekst som gir en ide om innholdet, + denne teksten vil vises i bunnen av miniatyr bildene.
                  • + +
                  + +

                  Flytte

                  + +

                  Om albumet er virtuelt, kan du flytte det. Flytting av album betyr å endre dets tillhørende mappe/album.

                  + +

                  Alternativer

                  + +
                    + +
                  • Tilgangstype type: Rettighets behandler. Om du gjør et album privat, vil alle dens under albums også bli + +private. + Om du gjør et album tilgjengelig for alle, vil alle bundne album bli tilgjengelig for alle.
                  • + +
                  • Lås: Albumet og dets under-album vil bli midlertidig utilgjengelig for vedlikehold .
                  • + +
                  • Comments: Autoriser brukere for å kunne kommentere dette albumet.
                  • + +
                  • Autoriser opplastinger: Autoriser brukere til å laste opp bilde filer. Dette alternativet er kun + +tilgjengelig for fysiske (ikke virtuelle) album.
                  • + +
                  + +

                  Du kan også redigere disse alternativene via "egenskaper" i +Album menyen (Arkfane Last opp, Kommentarer, Lås, +Offentlig/Privat, Alternativer tilgjengelig fra Administrasjon » Album » Egenskaper).

                  + +

                  Sorterings rekkefølge

                  + +

                  Bruk standard bilde sorterings rekkefølge.

                  + +

                  Indikerer om denne sortering rekkefølgen vil gjelde under album også.

                  + +

                  Velg spesifiserte sorterings rekkefølge på disse album.

                  +
                    +
                  • Opprettelses dato: Dato for når bilder er tatt
                  • +
                  • Post dato: Synkroniserings dato
                  • +
                  • Gjennomsnittlige rangering (*): Gjennomsittlig rangering kan bli endret av besøkendes rangering
                  • +
                  • Mest besøkte (*): Det forrige besøket kan endre mest besøkte rekkefølgen
                  • +
                  • Fil navn: Navn som er satt i informasjons feltet
                  • +
                  • Id: Intern Id (siste album har en høyere id en den før der igjen.
                  • + +
                  +

                  (*)Advarsel: Vær nøye med å test dise sorterings rekkefølgene selv da de kan gi uventede resultater.

                  + + +

                  Representanter

                  + +

                  Albumets representat er miniatyr bildet som vises på hoved siden (category.php) for å + +representere albumet når det kun består av under album og ingen bilder direkte(akkurat som et grunn album).

                  +Bilder fra et album :

                  + +
                    + +
                  • Bilde side: en av knappene lar deg sette gjeldende bilde som representant for gjeldende + +vist album. Knappen er kun synlig for administratorer.
                  • + +
                  • Endre informasjon om et bilde i + administrasjon. Dette skjermbildet kan nåes fra bilder.php eller Batch + behandler i unit modus. Se hjelpefilen på dette skjermbildet for detaljer.
                  • + +
                  • Administrasjon » Album » Egenskaper, + Representanter. Se hjelpefilen på dette skjermbildet for detaljer.
                  • + +
                  • Rediger album (forrige skjermbilde).
                  • + +
                  + +

                  Valget for en representant avhenger av allow_random_representative konfigurasjons parametere (se include/config_default.inc.php).

                  + +

                  I standard modus (godkjenn_tilfeldig_representativer satt til usant(false)), +vil hvert album som inneholder minst et element bli representert av et satt +ellement. Når dette er satt (ved album opprettelse), vil representanten kun endres når en administrator ber om det. +Om det representative bildet ikke passer, +kan du få et nytt bilde iFinn en ny tilfeldig representant.

                  + +

                  Om godkjenn_tilfeldig-representant konfigurasjons parametere er sat til sant, kan en kategori bestående av + +bilder ikke ha noen satt representant. Bare bruk Slett representant knappen.

                  + +

                  Om albumet består av kun under album og ingen bilder, kan det alikevell bli representert av hvilket som helst element takket + +være Endre informasjon om bildet skjermbildet. Det eneste alterantivet på gjeldende skjermbilde + +er Slett representant knappen.Link alle album elementer til et nytt album

                  + +
                    + +
                  • Virtuelle album navn: Navnet på det nye albumet som blir laget, +alle bilder i det forrige albumet vil bli linket til det nye.
                  • + +
                  • Forrige album: Hvor det nye albumet vil være, +La dette være tomt for å legge den på root.
                  • + +
                  + +

                  Link alle album bilder til eksisterende albums

                  + +
                    + +
                  • Album: Velg hvor albumet skal ligge.
                  • + +
                  + +

                  Send en informasjons email til gruppe medlemmer

                  + +
                    + +
                  • Gruppe: tilgjengelige grupper
                  • + +
                  • Mail innhold: Fri tekst som skal sendes.
                  • \ No newline at end of file diff --git a/sources/language/nb_NO/help/cat_move.html b/sources/language/nb_NO/help/cat_move.html new file mode 100644 index 0000000..7f55984 --- /dev/null +++ b/sources/language/nb_NO/help/cat_move.html @@ -0,0 +1,14 @@ +

                    Flytte virtuelle album

                    + +

                    Kun virtuelle album kan ha et nytt side album.

                    + +

                    Virtuelle album å flytte

                    + +

                    Velg et eller flere virtuelle albumsom du vil flytte. +Om listen er tom, betyr det at ingen er oprettet enda.

                    + +

                    Nytt side album

                    + +

                    Velg et nytt side album (virtuelt eller fysisk). +Om du ikke velger et side album, Vil det valgte virtuelle bli flyttet til root. +Et album kan ikke bli flyttet inn i seg selv eller til noen av sine egne undermapper.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/cat_options.html b/sources/language/nb_NO/help/cat_options.html new file mode 100644 index 0000000..ae7d77e --- /dev/null +++ b/sources/language/nb_NO/help/cat_options.html @@ -0,0 +1,22 @@ +

                    Album alternativer

                    + +

                    Alternativ behandling av flere album sammtidig.

                    + +
                    + +
                    Kommentarer
                    +
                    Et bilde kan motta kommentarer fra besøkende om det tillhører et album som har kommentarer aktivert.
                    + +
                    Lås
                    +
                    Låste album er utilgjengelige grunnet vedlikehold. Kun administratorer kan se de i galleriet.
                    + +
                    Offentlig / privat
                    +
                    Når et album blir privat, må det gies rettigheter til brukere og grupper
                    + +
                    Representative
                    +
                    Dette alternativet er tilgjengelig når du setter konfigurasjons instillingene +allow_random_representative (see include/config_defaults.inc.php) til +true. Hvert album kan være representert av et tilfeldig bilde, eller et bilde valgt som en unik representant.
                    + +
                    diff --git a/sources/language/nb_NO/help/cat_perm.html b/sources/language/nb_NO/help/cat_perm.html new file mode 100644 index 0000000..4c15d64 --- /dev/null +++ b/sources/language/nb_NO/help/cat_perm.html @@ -0,0 +1,11 @@ +

                    Rediger album rettigheter

                    + +

                    Dette skjmbildet er kun tilgjengelig for private album. Her kan du velge brukere og grupper autorisert for et album.

                    + +

                    Grupper

                    + +

                    Du kan nekte eller gi tilgang for grupper til gjeldende album. Ved å modifisere gruppe rettigheter, vil brukerens gruppetillhørighet bestemme om de blir nektet eller gitt tilgang til albumet.

                    + +

                    Brukere

                    + +

                    Du kan nekte eller gi tilgang til individuelle brukere. Brukere som har tilgang gjennom en gruppe kan bli nektet tilgang ved å sette unntak.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/configuration.html b/sources/language/nb_NO/help/configuration.html new file mode 100644 index 0000000..9c9b2a9 --- /dev/null +++ b/sources/language/nb_NO/help/configuration.html @@ -0,0 +1,117 @@ +

                    Konfigurasjon

                    + +

                    Dette skjermbildet lar administratorer gjøre standard konfigurasjon. Men, dette bildet viser bare de enkle konfigurasjons +parametrene som bør være nok for de fleste administratorer. +Om du ønsker å se flere (og avanserte) konfigurasjons parametere, les filen include/config_default.inc.php.

                    + +

                    Dette skjermbildet er delt opp i flere seksjoner, omgrupper konfigurasjons +parametere etter temaer.

                    + + +

                    Hovedside

                    +
                      +
                    • Galleri tittel: brukt i RSS mating og nyhetsbrev via email.
                    • + +
                    • Side banner: Vises på toppen av hver offentlige side.
                    • + +
                    • Galleri URL: brukes til RSS mating.
                    • + +
                    • Lås gallery: Låser hele galleriet for vedlikehold. + Kun administratorer brukere vil kunne nå galleriet.
                    • + +
                    • Stemming: Bilde avstemming er aktiv.
                    • + +
                    • Stemmer fra gjester: Selv uregistrerte brukere kan gi stemmer på bilder.
                    • + +
                    • Tillat bruker registrering: Alle kan registrere seg.
                    • + +
                    • Mail addresse er et krav for alle brukere: mail addresse blir sjekket ved registrering eller ved profil oppdatering, + unntak er om dette blir gjort av en administrator.
                    • + +
                    • Mailer administrator når en ny bruker registrerer seg: administratorer vil bli kontaktet via mail for hver registrering.
                    • + +
                    + +

                    Historie

                    + +

                    Besøk på sider Album.php og bilde.php vil bli lagret i + historie tabellen.

                    + +

                    Besøk vil vises i Administrasjon, verktøy, Historie.

                    + +
                      +
                    • Lagre sider besøkt av gjester: sider besøkt av gjester vil bli logget.
                    • + +
                    • Lagre sider besøkt av brukere: sider besøkt av brukere vil bli logget.
                    • + +
                    • Lagre sider besøk besøkt av administratorer: sider besøkt av administratorer vil bli logget.
                    • + +
                    + +

                    Kommentarer

                    +
                      + +
                    • Kommentarer for alle: Selv uregistrerte gjester kan poste kommentarer.
                    • + +
                    • Antall kommentarer per side.
                    • + +
                    • Validering: en administrator må validere brukeres kommentarer før de blir synlige på siden. Brukers kommentar validering gjøres i skjermbilde Administrasjon, Verktøy, + Ventende kommentarer.
                    • + +
                    • Email administrator når en reell kommentar blir lagt til: +Sender en email til administratorer når en bruker legger inn en kommentar.
                    • + +
                    • Email administratorer når en kommentar trenger godkjenning: +Sender en email til administratorer når en bruker legger inn en kommentar som krever godkjenning fra en administrator. +Brukers kommentar godkjenning gjøres i skjermbildet Administrasjon, Verktøy, Ventende kommentarer.
                    • + +
                    + +

                    Last opp

                    +
                      +
                    • Viser opplastings link hver gang: Om opplastede album eksisterer, en opplasting link vil vises for hvert album.
                    • +
                    • Brukers tilgangsnivå for opplasting: Begrenser opplasting til noen album til brukere
                    • +
                    • Email administratorer når et bilde er lastet: Administratorer blir informert via mail hver gang et bilde blir + lastet opp av en bruker.
                    • +
                    + +

                    Instillinger for gjester

                    + +

                    Her kan du endre visnings alternativene brukt av gjester, standad bruker som ikke er innlogget. Ved innlogging, blir disse alternativene overstyrt av brukerens egne alternativer (redigerbare i profil).

                    + +

                    Det er mulig å endre visningsalternativene for alle eksisterende brukere, gjøres via Administrasjon » +Brukere » Behandle skjermbildet, hvor du kan velge en liste av brukere.

                    + + +
                      + +
                    • Språk: Endrer kun tekst i Piwigo programmet. Album navn, bilde navn og alle beskrivende felt er ikke berørt.
                    • + +
                    • Antall bilder per rad
                    • + +
                    • Antall rader per side
                    • + +
                    • Siste periode: Etter dager. Periode et bilde sakl vises som nytt. Må være mer en 1 dag.
                    • + + +
                    • Vis alle album: Viser alle album som standard i menyen Advarsel: dette alternativet er ressurskrevende og kan generere en lang meny om ditt album tre inneholder mange album.
                    • + +
                    • Vis antall kommentarer: Viser antall kommentarer for hvert bilde i miniatyrbilde siden. Ressurs krevende.
                    • + +
                    • Vis antall hit : viser antall treff på bilder like under miniatyrbildet i miniatyrbilde siden. + Kun når avansert konfigurasjons parameter er satt til:
                      + $conf['show_nb_hits'] = true;
                      + Noter: false er standard.
                    • + +
                    • Bildets maksimum bredde: maksimum vist bredde. Bilder større en denne instillingen vil bli tilpasset ved visning. + Heller en å velge dette alternativet, bør du overveie å modifisere bredden på dine bilder; Det vil være en mye bedre kjøre regel.
                    • + +
                    • Bildets maksimum høyde: samme kjøre regler som for maksimium bredde instillinger.
                    • + +
                    • Grensesnitt tema
                    • + +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/extend_for_templates.html b/sources/language/nb_NO/help/extend_for_templates.html new file mode 100644 index 0000000..f9bd67d --- /dev/null +++ b/sources/language/nb_NO/help/extend_for_templates.html @@ -0,0 +1,92 @@ + +

                    Utvidelse for mal konfigurasjon

                    + +

                    Mål

                    +

                    Definere erstatnings status for hver malfra mal utvidelesen (mal kalt "replacer").

                    + +

                    "orginal mal" fra ./themes/default/template (eller hvilken som helst annet tema) +vil bli erstattet av en "erstatter" om erstatteren er linket til denne "orginal malen" +(eller, når den ønskede URL´en består av "valgfri URL nøkkelord").

                    + +

                    "Alternativ URL nøkkelord" er de du kan finne etter modilnavnets i URL´er.

                    + +

                    Derfor kan "Alternativ URL nøkkelord" være en aktiv "permalink" +(se permalinker i vår dokumentasjon for videre forklaring).

                    + +

                    Les: `Advarsel` bruker tilrettelegginger.

                    + +

                    Hva er mal utvidelser?

                    + +

                    Dette konfigurasjons verktøyet er kraftfult både for nybegynnere og viderkommende brukere. +Med FTP, i mal-utvideles mappen, kan web masteren duplikere en rekke av de distribuerte .tpl filene ("orginal male") med et annet navn +("erstatter"). + +"Orginal maler", tidligere orginalt støttede maler er:

                    +
                      +
                    • index.tpl
                    • +
                    • mainpage_categories.tpl and/or thumbnails.tpl
                    • +
                    • menubar.tpl
                    • +
                    • header.tpl and/or footer.tpl
                    • +
                    • picture_content.tpl and/or picture.tpl
                    • + +
                    • profile.tpl and/or profile_content.tpl
                    • +
                    • tags.tpl
                    • +
                    • upload.tpl
                    • +
                    • about.tpl
                    • +
                    • popuphelp.tpl
                    • +
                    • search.tpl and/or search_rules.tpl
                    • +
                    • nbm.tpl and/or notification.tpl
                    • +
                    • identification.tpl and/or register.tpl
                    • +
                    • redirect.tpl
                    • +
                    + +

                    Hvor kan jeg finne "orginal maler"?

                    + +

                    Distribuerte orginal maler er i /themes/default/template/ +(ikke rediger dem med tanke på opggradering). Så med "orginal maler", +hvilken som helst webmaster kan lage sin "erstatter (modifiserte maler)".

                    + +

                    Hvor bør jeg lagre "erstattere"?

                    + +

                    Erstattere (modifiserte maler) mæ ligge i template-extension mappenr (eller i sine under mapper). +Erstattere kan ha hvilket som helst navn med .tpl ending. For eksempel: template-extension/my-extension/video.tpl.

                    + + +

                    Hvordan kan jeg aktivere min "erstatter"?

                    +

                    An orginal mal bør være knyttet til hver erstatter (egendefinert mal) for å aktivere de relaterte erstatningene. +Dette er målet til "utvidelse for maler" i konfigurasjon administrasjons menyen.

                    + +

                    Du kan velge et alternativ URL nøkkel ord da vil erstatteren gjelde kun på de sidene med dette nøkkelordet. For eksempel: index.php?/mest_besøkte

                    + +

                    Avanserte brukere vil bruke permalinker som alternative URL nøkkel ord.

                    + +

                    Om du velger en Bundet mal vil erstatningen kun gjelde på denne malen.

                    + +

                    Hvordan kan jeg deaktivere min "erstatter"?

                    +
                      +
                    • Velg bort relaterte "orginal maler".
                    • +
                    • Med FTP slett "erstattere".
                    • +
                    + +

                    Advarsler

                    +
                      + +
                    • Orginal mal må være den "orginale" malen ellers kan du få uventede resultater!
                    • + +
                    • På flere erstattere (modifiserte maler) med sammeOrginal mal og den samme valgfrie URL + nøkkel ord vil kun den siste erstatteren være aktiv.
                    • + +
                    • Velg bort alternativ URL nøkkel ord vil aktivere erstatteren på hvem som helst mal i bruk. Som i forrige punkt, + rekkefølge kan overkjøre forrige valgte erstatter.
                    • + +
                    • Undermapper: +Undermapper blir ignorert men de er nyttige for å endre gjeldende rekkefølge.
                      +distribuerte-eksempler: Disse er sendt med for utprøving! +Ikke rediger dem Lag dine egne. +
                    • + +
                    • Ved sletting av en erstatter blir denOrginale malen umiddelbart reaktivert.
                    • + +
                    diff --git a/sources/language/nb_NO/help/group_list.html b/sources/language/nb_NO/help/group_list.html new file mode 100644 index 0000000..d858e4d --- /dev/null +++ b/sources/language/nb_NO/help/group_list.html @@ -0,0 +1,22 @@ +

                    Gruppe liste

                    + +

                    Dette er stedet hvor du kan behandle grupper.

                    + +

                    Legg til en gruppe

                    + +

                    Administrator kan legge til grupper.

                    + +

                    Gruppe lister

                    + +

                    For hvert element, gir listen tilgang til:

                    + + +
                      +
                    • gå til medlem lister
                    • +
                    • gå til rettighetbehandlings skjermvindu
                    • +
                    • slette gruppe (krever en bekreftelse)
                    • +
                    • endre status "standard" (krever en bekreftelse)
                    • +
                    + +

                    Standard grupper

                    +

                    Standard grupper er grupper som automatisk blir assosiert til hver ny bruker ved registrering eller ved oprettelse av en administrator.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/help_add_photos.html b/sources/language/nb_NO/help/help_add_photos.html new file mode 100644 index 0000000..e07d7d1 --- /dev/null +++ b/sources/language/nb_NO/help/help_add_photos.html @@ -0,0 +1,28 @@ +

                    Flere måter å legge til foto i ditt galleri:

                    + +
                      +
                    • Direkte opplasting i din netleser er den enkleste og raskeste måten. Det avhenger av noe av din nettleser og servers kapasitet. For en stor mengde + +bilder eller om du støter på problemer, bare venter de andre løsningene på deg!
                    • +
                    + + + +
                      +
                    • pLoader er en lokal applikasjon som skal installeres på din maskin. Dra & slipp bilder inn i pLoader vinduet, klikk på "Last opp til + +Piwigo" og la pLoader gjøre jobben. Du kan finne andre lokale applikasjoner som WinToPiwigo eller Digikam eksporteringsverktøy til + +Piwigo.
                    • +
                    + + + +
                    +
                      +
                    • FTP opplasting er den best anbefalte måten å legge til store samlinger av bilder med et minimum av klikk. +Følg guiden for å klargjøre dine bilder. FTP metoden gir deg full kontroll over organiseringen av dine bilder på serveren.
                    • +
                    + + +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/help_groups.html b/sources/language/nb_NO/help/help_groups.html new file mode 100644 index 0000000..f56ade8 --- /dev/null +++ b/sources/language/nb_NO/help/help_groups.html @@ -0,0 +1,8 @@ +

                    Via grupper kan man på en fornuftig måte sette rettigheter på en rad brukere.

                    + +

                    Lag grupper i Administrasjon » Brukere +» Gupper og assosier brukere til denne gruppen i Administrasjon » Brukere » +Behandle.

                    + +

                    En bruker kan tillhøre flere grupper. Autorisasjon gir tillatelser over flere mapper : om bruker "jack" hører til gruppen +"familie" og "venner", og den eneste gruppen "familie" kan se kategori "Jul 2003" kategory vil "jack" kunne se "jul 2003".

                    diff --git a/sources/language/nb_NO/help/help_misc.html b/sources/language/nb_NO/help/help_misc.html new file mode 100644 index 0000000..254f1b9 --- /dev/null +++ b/sources/language/nb_NO/help/help_misc.html @@ -0,0 +1,9 @@ +

                    Når du har laget ditt galleri kan du konfigurere det for besøkende +

                      +
                    • Standard visning du vil ha i Administrasjon » Konfigurasjon » Alternativ tab Gjeste instillinger
                    • +
                    • Standard tema i Administrasjon » konfigurasjon » Temaer
                    • +
                    • Standard språk i Administration » Konfigurasjon » Språk
                    • +
                    +Som standard, hver ny bruker vil arve disse egenskapene ved registrering. +

                    +

                    Om du har noen spørsmål, ønsker Piwigo samfunnet deg velkommen på forumet.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/help_permissions.html b/sources/language/nb_NO/help/help_permissions.html new file mode 100644 index 0000000..9904641 --- /dev/null +++ b/sources/language/nb_NO/help/help_permissions.html @@ -0,0 +1,57 @@ +
                    +Rettigheter på bilder + +

                    Hvert bilde har et tilgangs nivå (en lås). Hver bruker har også et tilgangs nivå (en nøkkel). Det er 5 private nivåer:

                    +
                      +
                    1. Ingen
                    2. +
                    3. Kontakter
                    4. +
                    5. Venner (som er høyere en en kontakt)
                    6. +
                    7. Familie (som er høyere en en venn)
                    8. +
                    9. Administrator (som er høyere en alle andre nivåer)
                    10. +
                    + +

                    Høyere nivåer har rettigheter på lavere nivåer. For en gitt bruker, jo høyere tilgangs nivå, jo fler bilder kan han se.

                    + +

                    For eksempel, om bildet "peter_bryllup-0024.jpg" har "Familie" tilgangs nivå, vil:

                    +
                      +
                    • Peter (som er en "Administrator") kunne se bildet fordi "Administratorer" kan se alle bilder
                    • +
                    • Beth (som er "Familie" medlem) vil også kunne se bildet
                    • +
                    • Mary (som kun er "venn") vil ikke kunne se bildet
                    • +
                    + +

                    En bruker som ikke har noen rettigheter til å se innholdet i en kategori vil heller ikke se selve kategorien, selv ikke tittelen. Samme prinsipp gjelder Tagger. Om + +ingen rettigheter, vil de ikke synes.

                    + +

                    Du kan sette rettighets nivå på en bruker i Administrasjon » Brukere » Behandle Bildet.

                    + +
                    + +
                    +Rettigheter på kategorier + +

                    Om private nivåer ikke oppfyller dine behov, kan du også behandle rettigheter på kategorier for en bruker eller en gruppe. Du kan behandle rettigheter på foto og + +kategorier samtidig, uten at dette gir konflikter.

                    + +

                    Du kan nekte tilgang til kategorier. Bytt kategori tillgangs type til "privat" om du ønsker å behandle rettigheter.

                    + +

                    Du kan sette en kategori til privat ved å redigere en enkel kategori (Administrasjon » kategorier » Behandle » + +redigere) eller ved å endre alternativer for hele kategori strukturen (treet)(Administrasjon » Kategori » +Egenskaper » Offentlig / Privat).

                    + +

                    Når kategorien er privat, kan du behandle rettigheter for grupper og brukere i 3 vinduer:

                    + +
                      + +
                    • Administrasjon » Brukere » Behandle » + Under tiltak -> tillatelser (en link per bruker)
                    • + +
                    • Administrasjon » Bruker » Grupper » + Under tiltak -> tillatelser (en link per gruppe)
                    • + +
                    • Administrasjon » Album » Behandle » rediger kategori rettigheter action (en link per kategori)
                    • + +
                    +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/help_virtual_links.html b/sources/language/nb_NO/help/help_virtual_links.html new file mode 100644 index 0000000..8540d68 --- /dev/null +++ b/sources/language/nb_NO/help/help_virtual_links.html @@ -0,0 +1,5 @@ +

                    Bilder vises i det album som stemmer overens med deres filmapper.

                    + +

                    Du kan også vise et bilde i flere album, uten å duplikere filen på web serveren. Assosier bildet til vilket som helst album fra bilde redigerings vinduet (som alle administratorer når fra bilde siden i gallerier).

                    + +

                    Virtuelle mapper er basert på dette konseptet: De har ingen tillhørende mapper. Lag virtuelle album fra Administrasjon » Album » Behandle.

                    diff --git a/sources/language/nb_NO/help/history.html b/sources/language/nb_NO/help/history.html new file mode 100644 index 0000000..986d064 --- /dev/null +++ b/sources/language/nb_NO/help/history.html @@ -0,0 +1,37 @@ +

                    Historik

                    + +

                    På disse skjermbildene kan du monitorere ditt galleris besøks historie opp i mot de valg du har valgt i - Administrasjon » Konfigurasjon » Alternativer » Historik indeks.

                    + +

                    Statistik

                    +
                      +

                      Om du har valgt å overvåke(index.php og picture.php) sider besøkt i tabellen historik, +kan du overvåke dem fra denne siden.

                      + +
                    • Global statistics: besøk per år.
                    • + +
                    • Yearly statistics: besøk per måned i valgt år.
                    • + +
                    • Monthly statistics: besøk per dag i valgte måned.
                    • + +
                    • Daily statistics: besøk per time på valgt dag.
                    • + +
                    + +

                    Søk

                    +
                      +

                      Om du har valgt å overvåke (index.php og picture.php) sider besøkt i tabellen historik. , kan du utforske detaljene på de besøkte sidene fra denne siden ved hjelp av forskjellige filtre.

                      + +
                    • Filtrer per dato : velg dato perioden du ønsker å se aktiviteten over.
                    • + +
                    • Filtrer per type element : velg hvilken type element du ønsker å observere aktiviteten over.
                    • + +
                    • Filtrer per bruker : velg brukeren du ønsker å observere aktiviteten på.
                    • + +
                    • Filtrer per navn på fil : velg fil navn du ønsker å observere aktiviteten på.
                    • + +
                    • Filtrer per bilde identifikator : velg bilde identifiaktoren du ønsker å observere aktiviteten til.
                    • +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/maintenance.html b/sources/language/nb_NO/help/maintenance.html new file mode 100644 index 0000000..79aca68 --- /dev/null +++ b/sources/language/nb_NO/help/maintenance.html @@ -0,0 +1,63 @@ +

                    Vedlikehold

                    + +

                    For å optimalisere side genererings tiden, bruker Piwigo mellomlagret informasjon. For eksempel, i stedet for å telle antall bilder i hvert + +album hver gang siden relastes, blir denne informasjonen lagret i databasen. I teorien bør denne infomasjonen alltid være korrekt, men ved noen + +anledninger kan en feil oppstå og den lagrede informasjonen blir feil.

                    + +

                    Noe informasjon blir ubrukelig ettersom tiden går. Sletting av disse unødige dataene vil frigjøre mere diskplass.

                    + +
                      + +
                    • + Ulinkede bilder: + Vis bilder som ikke er assosiert til noen virtuelle album. +
                    • +
                    • + Filer med samme navn i mer en et fysisk album: + Vis bilder eller filer som er funnet med samme filnavn i flere album. +
                    • + +
                    + +
                      + +
                    • Oppdater album informasjon: For hvert album, + følgende informasjon blir sjekket og oppdatert ved behov: liste over hoved album, antall bilder, siste bilde dato, posisjon rundt relaterte + +album, posisjon iblandt alle album. Dette tiltaket sjekker også representative bilders ektehet.
                    • + +
                    • Oppdater bilde informasjon: For hvert bilde, + oppdatert informasjon er: full sti til filen, gjennomsnittlige stemmer. Advarsel, må ikke blandes med: metadata informasjon + må synkroniseres fra Administrasjon » + Verktøy » Synkronisering, eller i modifikasjons skjerm bildet til et enkelt bilde (gjennom Bilder + +for + eksempel).
                    • + +
                    • Reprer og optimaliser databasen: + Gjennomfør reorganisering, reparer og optimaliser rutiner i hver tabell i databasen. +
                    • +
                    + +
                      +
                    • Tøm historikk detaljer: Slett alle linjer fra historik tabellen. Skjermvindu Administrasjon » + Verktøy » Historik vil ikkke lenger vise informasjon for tidligere historikk. Advarsel: alle data vil bli borte uten + +noen mulighet for å få de tilbake.
                    • + +
                    • Tøm historikk sammendrag: Slett all informasjons historik om alle besøk. Dette sammendraget er kalkulert fra historikk + +detaljene.
                    • + +
                    • Tøm sesjon: Slett utgåtte bruker sesjoner.
                    • + +
                    • Tøm informasjons matinger som aldrig er brukt
                    • + +
                    • Tøm søke historikk
                    • + +
                    • Tøm kompilerte maler
                    • +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/notification_by_mail.html b/sources/language/nb_NO/help/notification_by_mail.html new file mode 100644 index 0000000..dbf3963 --- /dev/null +++ b/sources/language/nb_NO/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                    Beskjeder via mail

                    + +

                    Dette skjermbildet lar deg konfigurere og behandle mail brukeres, for å sende melding om endringer på siden din.

                    + +

                    Dette skjermbildet består av 3 alternativer:

                    + +

                    Parametere

                    +

                    Tilgjengelig kun for webmaster, dette alternativet setter parametrene på meldinger via mail.

                    + +

                    Abonner

                    +

                    Tilgjengelig kun for webmaster, dette alternativet behandler brukeres abonnenter påmelding/avmelding for email beskjeder.

                    + +

                    Envoi

                    +

                    Tilgjengelig kun for webmaster og administratorer, dette alternativet tillater å sende mail for å varsle endringer.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/permalinks.html b/sources/language/nb_NO/help/permalinks.html new file mode 100644 index 0000000..1544837 --- /dev/null +++ b/sources/language/nb_NO/help/permalinks.html @@ -0,0 +1,7 @@ +

                    Permalinker

                    + +

                    Permalinker blir brukt for å gjøre album adresser mer brukervennlig. Når et album har en permalink definert, vil ikke albumets ID lengre være påkrevd i url´en.

                    + +

                    Når en permalink er slettet, kan den lagres i permalink historikken, da vil den eksterne linken til Piwigo sidene fortsatt virke. I permalink historikk skjermbildet kan du se når linken har blitt slettet, siste gang den var i brukt og antall ganger linken har blitt brukt.

                    + +

                    Noter at permalinker må være unike for hvert album. Heller ikke i permalink historikken kan du ha samme permalink definert mer en en gang.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/photos_add_ftp.html b/sources/language/nb_NO/help/photos_add_ftp.html new file mode 100644 index 0000000..50028f0 --- /dev/null +++ b/sources/language/nb_NO/help/photos_add_ftp.html @@ -0,0 +1,143 @@ +
                    + Hurtig veiledning + +
                      +
                    1. Lag en mappe på din datamaskin.
                    2. + +
                    3. Kopier noen bilder inn i denne mappen, endre størrelse til web visning. Advarsel: + +Navnet til mapper og filer må kun inneholde bokstaver, figurer, "-", "_" eller ".". Ingen blanke + +mellomrom, ei heller opphøyde karakterer.
                    4. + +
                    5. Med en ftp klient, kopier mappen din inn i "galleries" mappen i din Piwigo installasjon.
                    6. + +
                    7. Logg inn i ditt glleri og gå til Administrasjon » Verktøy + +» Miniatyr bilder for å lage manglende miniatyr bilder.
                    8. + +
                    9. Gå til Administrasjon og klikk på den store synkroniserings + +knappen.
                    10. +
                    + +Gratulerer! Du har nå laget ditt første album i ditt foto galleri. +
                    + +
                    + Mapper og fil organisering + +
                      + +
                    • + +

                      Album mapper er i Piwigo mappen "galleries". Her følger mappestrukturen til et veldig lite + +galleri (men bruker mange muligheter):

                      + +
                      +.
                      +|-- admin
                      +|-- doc
                      +|-- gallerier
                      +|   |-- album-1
                      +|   |   |-- album-1.1
                      +|   |   |   |-- album-1.1.1
                      +|   |   |   |   |-- album-1.1.1.1
                      +|   |   |   |   |   |-- pwg_high
                      +|   |   |   |   |   |   +-- wedding.jpg
                      +|   |   |   |   |   |-- miniatyrbilder
                      +|   |   |   |   |   |   +-- TN-wedding.jpg
                      +|   |   |   |   |   +-- wedding.jpg
                      +|   |   |   |   +-- album-1.1.1.2
                      +|   |   |   +-- album-1.1.2
                      +|   |   |-- album-1.2
                      +|   |   |   |-- pookie.jpg
                      +|   |   |   +-- miniatyrbilder
                      +|   |   |       +-- TN-pookie.jpg
                      +|   |   +-- album-1.3
                      +|   +-- album-2
                      +|       |-- piglet.gif
                      +|       |-- pwg_representative
                      +|       |   +-- video.jpg
                      +|       |-- miniatyrbilder
                      +|       |   +-- TN-piglet.jpg
                      +|       +-- video.avi
                      +|-- include
                      +|-- install
                      +|-- language
                      +|-- template
                      ++-- tool
                      + +
                    • + +
                    • Untagen de med navnet "miniatyrbilder", "pwg_high" eller "pwg_representative" (se forklaring + +under), vil hver mappe under "gallerier" representerer et album. Det er ingen begrensning på dybden + +i strukturen.
                    • + +
                    • Hovedsakelig, et element er representert av en fil. En fil kan være et Piwigo element om dets + +fil endelse er iblandt file_ext + konfigurasjons parametres muligheter(se inkluder/config_default.inc.php file). En fil kan være et bilde om dets + +fil endelse er blandt picture_ext + konfigurasjons parametres muligheter.
                    • + +
                    • Bilde elementer må ha et assosiert miniatyr bilde (se seksjonen under om miniatyr bilder)
                    • + +
                    • Bilde elementer kan ha høy kvalitets filer assosiert. Som for eks wedding.jpg i eksempelet + +over. Ingen prefix på høy kvalitets bildet.
                    • + +
                    • Ingen bilde elementer (video, lyder, fil tekster, hva du måtte ønske...) er representert som + +standard med et icon tillhørende fil endelsen. Valgfritt, kan du assosiere et miniatyr bilde + +og en representativ fil (se video.avi i eksempelet over).
                    • + +
                    • Advarsel: navnet på mapper og filer må kun inneholde bokstaver, figurer, "-", "_" + +eller ".". Ingen tomme mellomrom, ei heller opphøyde karakterer.
                    • + +
                    • Når så filer, miniatyr bilder og representativer er korrekt plassert i mappene, gå til: Administrasjon » Verktøy » + Synkroniser
                    • + +
                    +
                    + +
                    + Miniatyr bilder +
                      + +
                    • Hvert bilde må ha sitt miniatyr bilde.
                    • + +
                    • Miniatyr bilde blir lagret i "miniatyrbilde " under mappe i album + mappen. Miniatyr bildene har det samme filnavnet som bildet det passer opp mot, med konfigurasjons + +parametrene prefix_thumbnail som prefix (se inkluder/config.inc.php).
                    • + +
                    • Miniatyr bilde filer bør ikke nødvendigvis ha samme fil endelse som det assosierte bildet (Eks + +".jpg" bilde kan ha ".GIF" endelse).
                    • + +
                    • Det anbefales å bruker en ekstern modul for å lage miniatyr bilder.
                    • + +
                    • Bruken av miniatyr bilde oprettelses verktøyet integrert i Piwigo er ikke anbefalt, Dette + +fordi den resulterte kvaliteten kan være skuffende og den vil bruke mye server ressurser (Dette kan + +være et stort problem på en delt server). + +
                    • Om du vleger å bruker web serveren til å lage miniatyr bilder, må du gi skrive rettigheter på + +alle album mappene.
                    • + +
                    +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/search.html b/sources/language/nb_NO/help/search.html new file mode 100644 index 0000000..e5da82e --- /dev/null +++ b/sources/language/nb_NO/help/search.html @@ -0,0 +1,19 @@ +

                    Søk

                    + +

                    Denne siden lar deg søke på bilder i hele galleriet.

                    + +
                    + +
                    Søk etter ord
                    +
                    Søk etter et eller flere ord iblandt atributtene relatert til bilder i galleriet. Bruk * som en ukjent for flere treff.
                    + +
                    Søk etter en forfatter
                    +
                    Bruk * som en ukjent for flere treff.
                    + +
                    Søk etter dato
                    +
                    Velg en dato og /eller en slutt dato for ditt søk. La dato feltet stå tomt om du ønsker å gjøre et "før" søk. Året i det siste feltet må ha følgende format: AAAA (feks 2004)
                    + +
                    Søk i album
                    +
                    Velg album eller flere album du vil søke i. Alle under album kan også bli søkt i ved å velge hele hovedalbumet og sette søk i under album til enable.
                    + +
                    \ No newline at end of file diff --git a/sources/language/nb_NO/help/synchronize.html b/sources/language/nb_NO/help/synchronize.html new file mode 100644 index 0000000..780d09e --- /dev/null +++ b/sources/language/nb_NO/help/synchronize.html @@ -0,0 +1,12 @@ +

                    Synkroniser

                    + +

                    Set er 2 forskjellige synkroniserings typer: mapper/filer og fil metadata. Mapper/filer handler om å synkronisere mappe strukturen mot album + +strukturen i databasen. Metadata handler om å oppdatere bilde informasjon som filstørrelse, dimensjoner i piksler, EXIF eller IPTC +informasjon.

                    + +

                    Første synkronisering må være mapper / filer.

                    + +

                    Synkroniseringen kan ta noe tid (avhengig av din server belastning og mengden data å behandle) så det er mulig å gjøre dette album etter + +album.

                    diff --git a/sources/language/nb_NO/help/user_list.html b/sources/language/nb_NO/help/user_list.html new file mode 100644 index 0000000..c38587f --- /dev/null +++ b/sources/language/nb_NO/help/user_list.html @@ -0,0 +1,25 @@ +

                    Bruker liste

                    + +

                    Dette er stedet for behandling av registrerte bruker egenskaper, untagen rettigheter som gjøres fra et annet skjermbilde.

                    + +

                    Legg til en bruker

                    + +

                    Administratorer kan legge til brukere manuelt.

                    + +

                    Bruker liste

                    + +

                    Listen kan filtreres etter brukernavn (bruk * som ukjent), gruppe eller status. Du kan organisere etter registreringsdato eller brukernavn, i stigende eller synkende rekkefølge.

                    + +

                    Dette skjermbildet tillater å behandle flere brukere samtidig, ved bruk av flere tilltak:

                    + +
                      + +
                    • slett bruker (krever bekreftelse)
                    • +
                    • endre status
                    • +
                    • assosier eller ikke assosier med grupper
                    • +
                    • endre visnings egenskaper
                    • +
                    • endre lignende egenskaper
                    • + +
                    + +

                    Målet er den valgte brukeren (som standard) eller alle brukere vist i den filtrerte listen.

                    \ No newline at end of file diff --git a/sources/language/nb_NO/index.php b/sources/language/nb_NO/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/nb_NO/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/nb_NO/install.lang.php b/sources/language/nb_NO/install.lang.php new file mode 100644 index 0000000..57f4c8c --- /dev/null +++ b/sources/language/nb_NO/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Trenger du hjelp? Still et spørsmål på Piwigo message board.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Besøkende vil kunne bruke denne mailen for å kontakte side administrator.'; +$lang['PHP 5 is required'] = 'PHP 5 er nødvendig'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Det kan se ut som om din leverandør kjører PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan prøve å endre din konfigurasjon til PHP 5 ved å lage eller modifisere en .htaccess fil.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Merk, du kan endre din konfigurasjon selv og restarte Piwigo etter dette.'; +$lang['Try to configure PHP 5'] = 'Prøve å konfigurere PHP 5'; +$lang['Sorry!'] = 'Beklager!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo var ikke i stand til å konfigurere PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Du kan sjekke din web tilbyder\'e support og se om du kan endre til PHP 5 selv.'; +$lang['Hope to see you back soon.'] = 'Håper vi sees snart.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulerer, Piwigo installasjonen er ferdig'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'En alternativ løsning er å kopiere teksten fra tekst boksen over og lime det inn i filen "local/config/database.inc.php" (Advarsel: database.inc.php må kun inneholde hva som ligger i tekstområdet, ingen ny linje eller mellomrom)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Opprettelse av konfig fil local/config/database.inc.php feilet.'; +$lang['Download the config file'] = 'Last ned konfig fil'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan laste ned konfig filen og laste den opp til local/config mappen i din installasjon.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ikke nøl med å sjekke vårt forum for hjelp: %s'; +$lang['Just another Piwigo gallery'] = 'Enda et Piwigo bildegalleri'; +$lang['Welcome to my photo gallery'] = 'Velkommen til mitt bildegalleri'; +$lang['Welcome to your new installation of Piwigo!'] = 'Velkommen til din nye installasjon av Piwigo!'; +$lang['localhost or other, supplied by your host provider'] = 'lokal tjener eller annen tjenesteleverandør'; +?> \ No newline at end of file diff --git a/sources/language/nb_NO/iso.txt b/sources/language/nb_NO/iso.txt new file mode 100644 index 0000000..7f8e8f5 --- /dev/null +++ b/sources/language/nb_NO/iso.txt @@ -0,0 +1 @@ +Norsk bokmål [NO] \ No newline at end of file diff --git a/sources/language/nb_NO/nb_NO.jpg b/sources/language/nb_NO/nb_NO.jpg new file mode 100644 index 0000000..68a8c09 Binary files /dev/null and b/sources/language/nb_NO/nb_NO.jpg differ diff --git a/sources/language/nb_NO/upgrade.lang.php b/sources/language/nb_NO/upgrade.lang.php new file mode 100644 index 0000000..7d053af --- /dev/null +++ b/sources/language/nb_NO/upgrade.lang.php @@ -0,0 +1,42 @@ +release %s (or equivalent).'] = 'Denne siden tilbyr oppgradere databasen fra din gamle Piwigo versjonen til den gjeldende versjonen. Oppgraderings assistenten mener at du for tiden kjrer Versjon %s (eller lignende).'; +$lang['Upgrade from version %s to %s'] = 'Oppgrader fra versjon %s til %s'; +$lang['Statistics'] = 'Statistisk'; +$lang['total upgrade time'] = 'total oppgraderings tid'; +$lang['total SQL time'] = 'total SQL tid'; +$lang['SQL queries'] = 'SQL sprringer'; +$lang['Upgrade informations'] = 'oppgraderings informasjon'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Gjennomfr en vedlikeholds sjekk i [Administration>Tools>Maintenance] om du mter p problemer.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'For vre sikker, flgende tilleggsprogrammer har blitt deaktivert. Du m sjekke for oppgradering p dine tilleggsverkty fr du reaktiverer dem:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'kun en administrator kan oppgradere: .Vennligst logg inn under'; +$lang['You do not have access rights to run upgrade'] = 'Du har ikke tilgangs rettigheter for kunne oppgradere'; +$lang['All sub-albums of private albums become private'] = 'Alle grunn-album i privat album blir private'; +$lang['User permissions and group permissions have been erased'] = 'Bruker og gruppe rettigheter har blitt slettet'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Kun miniatyr bliders prefix and webmasters mail addresse har blitt lagret fra forrige konfigurasjon'; +$lang['In %s, before ?>, insert:'] = 'I %s, fr ?>, sett inn:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Som en sikkerhet har flgende temaer blitt deaktivert. Du m sjekke om det finnes oppgraderinger til dem fr aktivering:'; + +?> \ No newline at end of file diff --git a/sources/language/nl_NL/about.html b/sources/language/nl_NL/about.html new file mode 100644 index 0000000..b29ba50 --- /dev/null +++ b/sources/language/nl_NL/about.html @@ -0,0 +1,22 @@ +

                    Deze fotogalerie is gemaakt met Piwigo.

                    + +

                    Piwigo is programmatuur voor het publiceren van uw fotogalerieën op het +web. Het wordt ontwikkeld en onderhouden door een actieve groep gebruikers +en ontwikkelaars. Met behulp van vele uitbreidingen kunt u Piwigo naar uw +wensen aanpassen. En niet onbelangrijk: Piwigo is gratis en opensource.

                    + +

                    Bezoek de Piwigo +website

                    + +

                    De Nederlandse vertaling wordt verzorgd door (in alfabetische volgorde): +

                    + .... waarvoor hartelijke dank

                    \ No newline at end of file diff --git a/sources/language/nl_NL/admin.lang.php b/sources/language/nl_NL/admin.lang.php new file mode 100644 index 0000000..f468297 --- /dev/null +++ b/sources/language/nl_NL/admin.lang.php @@ -0,0 +1,978 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader is een afkorting van Piwigo Uploader. pLoader maakt uw foto\'s op uw computer klaar en zet ze dan over naar uw Piwigo fotogalerie.'; +$lang['Guest Settings'] = 'Bezoeker/Guest-Instellingen'; +$lang['Main Page'] = 'Hoofd-pagina'; +$lang['Photo Page'] = 'Foto-pagina'; +$lang['Activate Navigation Bar'] = 'Activeer de Navigatie-balk'; +$lang['Activate Navigation Thumbnails'] = 'Activeer de navigatie-klikplaatjes'; +$lang['Activate icon "%s"'] = 'Activeer icoon "%s"'; +$lang['Photo Properties'] = 'Foto-eigenschappen'; +$lang['Allow user customization'] = 'Sta gebruikers-aanpassingen toe'; +$lang['Languages'] = 'Talen'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Uitvoerings-tijd overschreden, de afhandeling moet verder gaan [Geschatte tijd: %d seconden].'; +$lang['Installed Languages'] = 'Geïnstalleerde talen'; +$lang['Add New Language'] = 'Voeg een nieuwe taal toe'; +$lang['Language has been successfully installed'] = 'Taal is succesvol geïnstalleerd'; +$lang['Select:'] = 'Selecteer:'; +$lang['None'] = 'Geen'; +$lang['Invert'] = 'Inverteer'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Dit thema kan niet gedeactiveerd worden. Er moet minstens één thema geactiveerd zijn.'; +$lang['Webmaster status is required.'] = 'De status van de webbeheerder is noodzakelijk.'; +$lang['Bound Theme'] = 'Gebonden Thema'; +$lang['Allow rating'] = 'Waardering toestaan'; +$lang['Select at least one comment'] = 'Minstens een commentaar selecteren'; +$lang['Active Plugins'] = 'Actieve Plugins'; +$lang['Inactive Plugins'] = 'Niet actieve Plugins'; +$lang['Missing Plugins'] = 'Missende Plugins'; +$lang['Uninstalled Plugins'] = 'Niet geïnstalleerde Plugins'; +$lang['By %s'] = 'Door %s'; +$lang['Visit plugin site'] = 'Bezoek de plugin site'; +$lang['Active Languages'] = 'Actieve talen'; +$lang['Delete this language'] = 'Verwijder deze taal'; +$lang['Forbid this language to users'] = 'Stel deze taal niet beschikbaar aan gebruikers'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Niet mogelijk om deze taal te deactiveren, stel eerst een andere taal in als standaardtaal.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Niet mogelijk om deze taal te deactiveren, er moet minstens één taal actief zijn.'; +$lang['Inactive Languages'] = 'Niet actieve talen'; +$lang['Make this language available to users'] = 'Stel deze taal beschikbaar aan gebruikers'; +$lang['Set as default language for unregistered and new users'] = 'Stel in als standaardtaal voor niet geregistreerde en nieuwe gebruikers'; +$lang['Miscellaneous'] = 'Diverse'; +$lang['Virtual Links'] = 'Virtuele Links'; +$lang['Add Photos'] = 'Foto\'s toevoegen'; +$lang['The following tag was deleted'] = 'Het volgende label werd verwijderd'; +$lang['There is no other language available.'] = 'Er is geen andere taal beschikbaar.'; +$lang['There is no other plugin available.'] = 'Er is geen andere plugin beschikbaar.'; +$lang['There is no other theme available.'] = 'Er is geen andere thema beschikbaar.'; +$lang['Add another set of photos'] = 'Een andere set foto\'s toevoegen'; +$lang['By rank'] = 'Op rang'; +$lang['Manual order'] = 'Handmatige volgorde'; +$lang['Order of menubar items has been updated successfully.'] = 'De volgorde van menu-items is succesvol aangepast.'; +$lang['This theme was not designed to be directly activated'] = 'Dit thema is niet ontworpen om direct geactiveerd te worden'; +$lang['Who can see this photo?'] = 'Wie mag deze foto zien?'; +$lang['Pending Comments'] = 'Nog niet goedgekeurde commentaren'; +$lang['Menu Management'] = 'Menu'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'In uw php.ini bestand, de upload_max_filesize (%sB) is groter dan post_max_size (%sB), moet u deze instelling wijzigen'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension not available, admin should disable exif use'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Het geuploade bestand is groter dan de upload_max_filesize richtlijn in php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Het geuploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in het HTML formulier'; +$lang['The uploaded file was only partially uploaded'] = 'Het geuploade bestand is slechts gedeeltelijk geupload'; +$lang['No file was uploaded'] = 'Er is geen bestand geupload'; +$lang['Missing a temporary folder'] = 'Er ontbreekt een tijdelijke map'; +$lang['Failed to write file to disk'] = 'Kan bestand niet naar schijf schrijven'; +$lang['File upload stopped by extension'] = 'Bestand upload gestopt door bestandsextensie'; +$lang['Unknown upload error'] = 'Onbekende upload fout'; +$lang['Error on file "%s" : %s'] = 'Fout in het bestand "%s" : %s'; +$lang['automatic order'] = 'automatische volgorde'; +$lang['manual order'] = 'handmatige volgorde'; +$lang['Albums automatically sorted'] = 'Albums automatisch gesorteerd'; +$lang['Batch Manager'] = 'Bulk beheerder'; +$lang['include child albums'] = 'include child albums'; +$lang['Selection'] = 'Selectie'; +$lang['Action'] = 'Actie'; +$lang['Set author'] = 'Stel auteur in'; +$lang['Set title'] = 'Stel titel in'; +$lang['Set creation date'] = 'Stel aanmaakdatum in'; +$lang['Apply action'] = 'Toepassen'; +$lang['on the %d selected photos'] = 'op de %d geselecteerde foto\'s'; +$lang['%d of %d photos selected'] = '%d van %d foto\'s geselecteerd'; +$lang['No photo selected, %d photos in current set'] = 'Geen foto geselecteerd, %d foto\'s in de huidige set'; +$lang['All %d photos are selected'] = 'Alle %d foto\'s zijn geselecteerd'; +$lang['remove this filter'] = 'Verwijder dit filter'; +$lang['Duplicates'] = 'duplicaten'; +$lang['Add a filter'] = 'Voeg een filter toe'; +$lang['Remove all filters'] = 'Verwijder alle filters'; +$lang['Refresh photo set'] = 'Vernieuwen foto set'; +$lang['The whole page'] = 'De hele pagina'; +$lang['The whole set'] = 'De hele set'; +$lang['No photo in the current set.'] = 'Geen foto in de huidige reeks.'; +$lang['No photo selected, no action possible.'] = 'Geen foto geselecteerd, geen actie mogelijk.'; +$lang['Choose an action'] = 'Kies een actie'; +$lang['remove author'] = 'Verwijder auteur'; +$lang['Type here the author name'] = 'Typ hier de naam van de auteur'; +$lang['remove title'] = 'Verwijder titel'; +$lang['Type here the title'] = 'Typ hier de titel'; +$lang['remove creation date'] = 'Verwijder aanmaakdatum'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif extensie is niet beschikbaar, de administrator moet exif gebruik uitsluiten'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Het geuploade bestand is groter dan upload_max_filesize instelling in php.ini: %sB'; +$lang['include child albums'] = 'inclusief sub albums'; +$lang['Album photos associated to the following albums: %s'] = 'Album-foto\'s verbonden met de volgende albums: %s'; +$lang['Delete orphan tags'] = 'Verwijder niet gebruikte labels'; +$lang['delete photo'] = 'verwijder foto'; +$lang['Orphan tags deleted'] = 'Niet gebruikte labels verwijderd'; +$lang['Remove from caddie'] = 'Verwijder uit verzamelmandje'; +$lang['Week starts on'] = 'De week begint op'; +$lang['You have %d orphan tags: %s.'] = 'U heeft %d niet gebruikte labels: %s.'; +$lang['Themes which need upgrade'] = 'Thema\'s die bijgewerkt moeten worden'; +$lang['Languages which need upgrade'] = 'Talen die bijgewerkt moeten worden'; +$lang['All themes are up to date.'] = 'Alle thema\'s zijn bijgewerkt.'; +$lang['All plugins are up to date.'] = 'Alle plugins zijn bijgewerkt.'; +$lang['All languages are up to date.'] = 'Alle talen zijn bijgewerkt.'; +$lang['Visit theme site'] = 'Bezoek de thema-webpagina'; +$lang['Visit language site'] = 'Bezoek de talen-webpagina'; +$lang['New Version'] = 'Nieuwe versie'; +$lang['Obsolete Plugins'] = 'Verouderde Plugins'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'WAARSCHUWING! Deze plugin lijkt niet compatibel met deze versie van Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Wilt u desondanks activeren?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DEZE PLUGIN IS NU ONDERDEEL VAN PIWIGO CORE! VERWIJDER DE PLUGIN NU.'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FOUT: DEZE PLUGIN MIST MAAR IS GEINSTALEERD! DEINSTALLEER DE PLUGIN NU.'; +$lang['Thumbnails generation in progress...'] = 'Bezig met genereren van klikplaatjes...'; +$lang['Photos generation in progress...'] = 'Bezig met genereren foto\'s...'; +$lang['%s photos have been regenerated'] = '%s foto\'s zijn opnieuw gegenereerd.'; +$lang['%s photos can not be regenerated'] = '%s foto\'s kunnen niet opnieuw gegenereerd worden'; +$lang['display'] = 'toon'; +$lang['new'] = 'nieuw'; +$lang['No results'] = 'Geen resultaten'; +$lang['Searching...'] = 'Bezig met zoeken...'; +$lang['Type in a search term'] = 'Type een zoekterm in'; +$lang['Activate icon "new" next to albums and pictures'] = 'Activeer "nieuw" icoon naast albums en afbeeldingen'; +$lang['Deactivate all'] = 'Deactiveer alles'; +$lang['Default photos order'] = 'Standaard foto volgorde'; +$lang['Restore'] = 'Herstel'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Herstel de standaard instellingen. U zult alle plugin instellingen kwijtraken!'; +$lang['Show menubar'] = 'Toon menubalk'; +$lang['Updates'] = 'Updates'; +$lang['Update in progress... Please wait.'] = 'Bezig met updaten... Even geduld aub'; +$lang['Ignore this update'] = 'Negeer deze update'; +$lang['Reset ignored updates'] = 'Reset genegeerde updates'; +$lang['Update All'] = 'Update Alles'; +$lang['ERROR'] = 'ERROR'; +$lang['Update Complete'] = 'Update klaar'; +$lang['Piwigo Update'] = 'Piwigo Update'; +$lang['Extensions Update'] = 'Uitbreidingen Update'; +$lang['All extensions are up to date.'] = 'Alle uitbreidingen zijn bijgewerkt.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'De volgende plugins zouden niet compatibel kunnen zijn met de nieuwe versie van Piwigo:'; +$lang['Add a criteria'] = 'Voeg een criterium toe'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'U kunt geen standaard foto volgorde definiëren in verband met aangepaste instelling in uw persoonlijke configuratie'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'U heeft $conf[\'order_by\'] in uw lokale configuratie bestand gespecificeerd. Deze parameter is verouderd, verwijder het of hernoem het naar $conf[\'order_by_custom\'] !'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'De volgende thema\'s zijn mogelijk niet compatibel met de nieuwe versie van Piwigo:'; +$lang['I decide to update anyway'] = 'Ik besluit om alsnog te updaten'; +$lang['Update to Piwigo %s'] = 'Update naar Piwigo %s'; +$lang['Two updates are available'] = 'Twee updates zijn beschikbaar'; +$lang['This is a minor update, with only bug corrections.'] = 'Dit is een kleine update, met alleen wat gerepareerde foutjes.'; +$lang['This is a major update, with new exciting features.'] = 'Dit is een grote update, met allerlei nieuwe mogelijkheden.'; +$lang['Some themes and plugins may be not available yet.'] = 'Sommige thema\'s en plugins zijn mogelijk nog niet beschikbaar.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'U kunt gelijk naar Piwigo %s updaten, zonder eerst up te daten naar Piwigo %s (aanbevolen).'; +$lang['Save Template Directory'] = 'Sla sjabloon direcotry op'; +$lang['Dump Database'] = 'Dump Database'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Gebruik geschiedenis data (Waarschuwing: het geheugen limiet van de server kan overschreden worden).'; +$lang['Unable to dump database.'] = 'Kan de database niet dumpen.'; +$lang['Some upgrades are available for extensions.'] = 'Er zijn enkele plugin-updates beschikbaar.'; +$lang['Ignore All'] = 'Negeer alles'; +$lang['Crop'] = 'Inkorten'; +$lang['Width'] = 'Breedte'; +$lang['Height'] = 'Hoogte'; +$lang['Follow Orientation'] = 'Volg orientatie'; +$lang['Graphics Library'] = 'Afbeeldingen bibliotheek'; +$lang['Average rate'] = 'Gemiddelde waardering'; +$lang['Rate'] = 'Waardering'; +$lang['Learn more'] = 'Leer meer'; +$lang['An error has occured during upgrade.'] = 'Er is iets foutgegaan bij het bijwerken van Piwigo naar de nieuwste versie.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                    Click here to show log error.'] = 'Er is iets foutgegaan bij het uitpakken. Controleer de bestands-rechten/attributen van uw Piwigo installatie.
                    Klik hier om de fout-logging weer te geven.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan het upgrade-bestand niet van de server verkrijgen'; +$lang['... or '] = '... of '; +$lang['Create'] = 'Aanmaken'; +$lang['Start Upload'] = 'Start Upload'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'U gebruikt de Flash uploader. Problemen? Probeer de Browser uploader inplaats.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'U gebruikt de Browser uploader. Problemen? Probeer de Flash uploader inplaats.'; +$lang['Maximum file size: %sB.'] = 'Maximum bestands omvang: %sB.'; +$lang['Allowed file types: %s.'] = 'Toegestane bestands typen: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Geschatte maximale resolutie: %dM pixels (dat is %dx%d pixels).'; +$lang['Manage Permissions'] = 'Beheer Rechten'; +$lang['Photo %s of %s'] = 'Foto %s of %s'; +$lang['show details'] = 'Toon details'; +$lang['hide details'] = 'Verberg details'; +$lang['Merge tags'] = 'Voeg labels samen'; +$lang['Select the destination tag'] = 'Kies het bestemmings-label'; +$lang['(this tag will be deleted)'] = '(Dit label wordt verwijderd)'; +$lang['Confirm merge'] = 'Bevestig samenvoegen'; +$lang['Merge selected tags'] = 'Voeg de geselecteerde labels samen'; +$lang['No destination tag selected'] = 'Geen bestemmings-label geselecteerd'; +$lang['Tags %s merged into tag %s'] = 'Labels %s samengevoegd in label %s'; +$lang['Select at least two tags for merging'] = 'Selecteer ten minste twee labels om samen te voegen'; +$lang['Select an album'] = 'Kies een album'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Standaard zal Piwigo een nieuwe web formaat foto aanmaken van de HD (high definition / originele) versie van uw foto.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Als geen HD beschikbaar is en de huidige web formaat foto is groter dan de nieuwe afmetingen, dan zal Piwigo het als HD gebruiken en daar een web formaat foto van maken.'; +$lang['Zoom'] = 'Zoom'; +$lang['%s has been successfully updated.'] = '%s is geupdated.'; +$lang['Add tags'] = 'Voeg labels toe'; +$lang['Add to caddie'] = 'Voeg toe aan het verzamelmandje'; +$lang['Last import'] = 'Laatste import'; +$lang['Predefined filter'] = 'Voorgedefinieerd filter'; +$lang['With no album'] = 'Zonder album'; +$lang['With no tag'] = 'Zonder label'; +$lang['With no virtual album'] = 'Zonder virtueel album'; +$lang['Photo name'] = 'Foto-naam'; +$lang['Activate comments'] = 'Activeer commentaar'; +$lang['Default comments order'] = 'Standaard commentaar volgorde'; +$lang['Send connection settings by email'] = 'Verstuur verbindings-instellingen per email'; +$lang['The original image quality must be a number between %d and %d'] = 'De originele foto-kwaliteit moet een nummer zijn tussen %d en %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'De originele maximum grootte moet een nummer zijn tussen %d en %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'De originele maximum breedte moet een nummer zijn tussen %d en %d'; +$lang['Resize after upload'] = 'Wijzig het formaat na uploaden'; +$lang['Original Size'] = 'Originele formaat'; +$lang['A locked gallery is only visible to administrators'] = 'Een gesloten galerie is alleen zichtbaar voor administrators'; +$lang['Unlock gallery'] = 'Open galerie'; +$lang['Gallery unlocked'] = 'Galerie geopend'; +$lang['Notify administrators when a comment is'] = 'Informeer administrators indien een commentaar'; +$lang['modified'] = 'gewijzigd is'; +$lang['pending validation'] = 'wacht op validatie'; +$lang['Save visits in history for'] = 'Sla bezoeken op in geschiedenis voor'; +$lang['simple visitors'] = 'gewone bezoekers'; +$lang['registered users'] = 'geregistreerde gebruikers'; +$lang['administrators'] = 'Administrators'; +$lang['This album contains %d photos, added on %s.'] = 'Dit album bevat %d foto\'s, toegevoegd op %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Dit album bevat %d foto\'s, toegevoegd tussen %s en %s.'; +$lang['This album contains no photo.'] = 'Dit album bevat geen afbeeldingen.'; +$lang['Not cropped correctly?'] = 'Niet goed bijgesneden?'; +$lang['Center of interest'] = 'Middelpunt van belangstelling'; +$lang['Move to album'] = 'Verplaats naar album'; +$lang['You can activate only one mobile theme.'] = 'U kunt slechts een mobiel thema activeren.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'De Piwigo voor Android applicatie stelt u in staat uw Piwigo galerie te openen vanaf uw Android-telefoon of tablet, een aantal albums aan te maken en meerdere foto\'s tegelijk te uploaden.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo voor IOS applicatie stelt u in staat uw Piwigo galerie te openen vanaf uw iPhone, iPad of iPod Touch, een aantal albums aan te maken en meerdere foto\'s tegelijk te uploaden.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom is fotografie-software ontworpen om grote hoeveelheden digitale foto\'s te verwerken en voor het verrichten van post-productie werk.'; +$lang['Applications'] = 'Via toepassingen'; +$lang['apply automatic sort order'] = 'Automatische sorteervolgorde toepassen'; +$lang['Automatic sort order'] = 'Automatische sorteervolgorde'; +$lang['Available on'] = 'Beschikbaar voor'; +$lang['Available versions for'] = 'Beschikbare versies voor'; +$lang['cancel manual order'] = 'Annuleer handmatige volgorde'; +$lang['Cancel'] = 'Annuleer'; +$lang['List'] = 'Lijst'; +$lang['Piwigo for Android'] = 'Piwigo voor Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo voor iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish plugin voor Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo Publish plugin voor Shotwell'; +$lang['Save manual order'] = 'Bewaar handmatige volgorde'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell is een open source digitale foto organizer die draait op Linux. Het is de standaard foto-manager in Ubuntu en Fedora.'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Het bestand of de map kan niet worden geopend (of het bestaat niet of de toegang wordt geweigerd)'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Met de Piwigo Publish plugin kunt u foto\'s direct vanuit Lightroom naar uw Piwigo fotogalerie exporteren en synchroniseren.'; +$lang['Web Form'] = 'Via webformulier'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u gebruikers hebben automatisch recht, omdat ze tot een groep behoren die dit recht is verleend'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture is een krachtig gereedschap om grote hoeveelheden foto\'s te beheren en te verbeteren op een Mac .'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture is gemaakt voor professionele fotografen met iPhoto gemak.'; +$lang['Apply watermark if height is bigger than'] = 'Breng watermerk aan, als de hoogte groter is dan'; +$lang['Apply watermark if width is bigger than'] = 'Breng watermerk aan, als de breedte groter is dan'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Standaard is het centrum van belangstelling in het midden van de foto geplaatst'; +$lang['Delete multiple size images'] = 'Verwijder meerdere formaat plaatjes'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Kenmerken omvatten galerie browsen, album maken en foto\'s uploaden.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Voor bijgesneden fotoformaten, probeert Piwigo het centrum van belangstelling in te voegen. '; +$lang['Generate multiple size images'] = 'Genereer meerdere formaat plaatjes'; +$lang['Groups and users'] = 'Groepen en gebruikers'; +$lang['No group is permitted to see this private album'] = 'Geen enkele groep heeft rechten om dit album te zien'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Onder Linux, installeer Shotwell met de package manager, en activeer de Piwigo publicatie optie.'; +$lang['Opacity'] = 'Transparantie'; +$lang['Permission granted for groups'] = 'Rechten verleend voor groepen'; +$lang['Permission granted for users'] = 'Rechten verleend voor gebruikers'; +$lang['Permission management'] = 'Rechten-beheer'; +$lang['Photo sizes with crop'] = 'Bijgesneden foto formaten'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo export plugin voor Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export plugin voor iPhoto'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publicatie plugin voor digiKam'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) is een open source (GPL v3) Piwigo client voor Android.'; +$lang['Select a file'] = 'Kies een bestand'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selecteer met de muis een gebied als nieuw centrum van belangstelling.'; +$lang['Select groups...'] = 'Selecteer groepen...'; +$lang['Select users...'] = 'Kies gebruikers...'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'De Piwigo export plugin maakt het mogelijk om albums te maken en foto\'s te exporteren.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Het centrum van belangstelling is het belangrijkste gedeelte van de foto.'; +$lang['There is no group in this gallery.'] = 'Er is geen groep in deze galerie'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Om foto\'s van digiKam naar Piwigo te exporteren, installeer de digiKam en Kipi-plugins.'; +$lang['X Position'] = 'X positie'; +$lang['X Repeat'] = 'X herhalen'; +$lang['Y Position'] = 'Y positie'; +$lang['add a new watermark'] = 'Voeg een nieuw watermerk toe'; +$lang['any visitor can see this album'] = 'elke bezoeker kan dit album zien'; +$lang['bottom left corner'] = 'hoek links onder'; +$lang['bottom right corner'] = 'hoek rechts onder'; +$lang['custom'] = 'Aangepast'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam is een gratis geavanceerde digitale foto beheersoftware voor Linux, Windows en MacOSX. '; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam is voor fotografen die foto\'s willen bekijken, beheren, bewerken, labelen en delen. '; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto is de standaard foto-manager onder MacOSX. De Piwigo export plugin maakt het aanmaken van albums en het exporteren van foto\'s mogelijk, van iPhoto naar de Piwigo galerie'; +$lang['include photos with lower privacy level'] = 'Inclusief foto\'s met een lager rechten niveau '; +$lang['middle'] = 'midden'; +$lang['top left corner'] = 'hoek links boven'; +$lang['top right corner'] = 'hoek rechts boven'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Bezoekers moeten zich aanmelden en dienen de juiste rechten te hebben om dit album te kunnen zien'; +$lang['Multiple Size'] = 'Verschillende formaten'; +$lang['%d day'] = '%d dag'; +$lang['%d days'] = '%d dagen'; +$lang['%d hour'] = '%d uur'; +$lang['%d hours'] = '%d uren'; +$lang['%d minute'] = '%d minuut'; +$lang['%d minutes'] = '%d minuten'; +$lang['%d month'] = '%d maand'; +$lang['%d months'] = '%d maanden'; +$lang['%d second'] = '%d seconde'; +$lang['%d seconds'] = '%d seconden'; +$lang['%d year'] = '%d jaar'; +$lang['%d years'] = '%d jaren'; +$lang['%s ago'] = '%s geleden'; +$lang['%s in the future'] = '%s in de toekomst'; +$lang['Added by %s'] = 'toegevoegd door %s'; +$lang['Numeric identifier : %d'] = 'Numerieke aanduiding : %d'; +$lang['Original file : %s'] = 'Origineel bestand : %s'; +$lang['Posted %s on %s'] = 'Geplaatst %s om %s'; +$lang['Rated %d times, score : %.2f'] = 'Gewaardeerd %d keer, score : %.2f'; +$lang['Sharpen'] = 'Verscherp'; +$lang['Visited %d times'] = '%d keer bezocht'; +$lang['Watermark'] = 'Watermerk'; +$lang[' and %d virtuals'] = 'en %d virtueel'; +$lang['%d physicals'] = '%d fysiek'; +$lang['%d week'] = '%d week'; +$lang['%d weeks'] = '%d weken'; +$lang['Edit photo'] = 'Foto aanpassen'; +$lang['create a new site'] = 'Maak een nieuwe site'; +$lang['No order field selected'] = 'Geen volgordeveld geselecteerd'; +$lang['Duplicate selected tags'] = 'Dupliceer de geselecteerde labels'; +$lang['Name of the duplicate'] = 'Naam van het duplicaat'; +$lang['Source tag'] = 'Bron-label'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Label "%s" is nu een duplicaat van "%s"'; +$lang['Manage photos'] = 'Foto\'s beheren'; +$lang['View in gallery'] = 'Bekijk in galerie'; +$lang['Ratio'] = 'Verhouding'; +$lang['Landscape'] = 'Landschap'; +$lang['Minimum height'] = 'Minimum hoogte'; +$lang['Minimum width'] = 'Minimum breedte'; +$lang['Number of albums per page'] = 'Aantal albums per pagina'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Portret'; +$lang['between %.2f and %.2f'] = 'tussen %.2f en %.2f'; +$lang['between %d and %d pixels'] = 'tussen %d en %d pixels'; +$lang['Duplicate'] = 'Kopieer'; +$lang['Manage the members'] = 'Beheer de gebruikers'; +$lang['Merge selected groups'] = 'Voeg de geselecteerde groepen samen'; +$lang['No group selected, no action possible.'] = 'Geen groep geselecteerd, handeling niet mogelijk'; +$lang['No members to manage'] = 'Geen gebruikers te beheren'; +$lang['Please select at least two groups'] = 'Selecteer tenminste 2 groepen'; +$lang['Rename'] = 'Hernoem'; +$lang['This group will be set to default'] = 'Deze groep zal standaard worden gebruikt'; +$lang['This group will be unset to default'] = 'Deze groep zal niet langer als standaard worden gebruikt'; +$lang['Type here the name of the new group'] = 'Voer de naam in van de nieuwe groep'; +$lang['Purge user cache'] = 'Verwijder gebruikers-cache'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'De afmetingen van de afbeelding zullen worden verlaagd naar %dx%d pixels.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Omdat GD als grafische bibliotheek (graphic library) wordt gebruikt, is het formatteren van afbeeldingen na het uploaden geblokkeerd'; +$lang['Basic settings'] = 'Basisinstellingen'; +$lang['General'] = 'Algemeen'; +$lang['Mail theme'] = 'Mail-thema'; +$lang['Select at least one tag'] = 'Op zijn minst één label kiezen'; +$lang['Loading...'] = 'Wordt geladen...'; +$lang['(filtered from %s total users)'] = '(gefilterd van %s totaal aantal gebruikers)'; +$lang['User %s added'] = 'Gebruiker %s toegevoegd'; +$lang['User %s updated'] = 'Gebruiker %s gwijzigd'; +$lang['on the %d selected users'] = 'aan de %d geselecteerde gebruikers'; +$lang['Users modified'] = 'Gebruikers veranderd'; +$lang['Showing %s to %s of %s users'] = 'Geef %s weer aan %s van de %s gebruikers'; +$lang['Update user'] = 'Werk de gebruiker bij'; +$lang['No matching user found'] = 'Geen overeenkomende gebruikers gevonden'; +$lang['No user selected of %d users'] = 'Geen gebruiker geselecteerd van de %d gebruikers'; +$lang['No user selected, no action possible.'] = 'Geen gebruiker geselecteerd, geen actie mogelijk'; +$lang['Registered on %s, %s.'] = 'Geregistreerd op %s, %s.'; +$lang['Show %s users'] = 'Geef %s gebruikers weer'; +$lang['Change username'] = 'Verander gebruikersnaam'; +$lang['Last visit on %s, %s.'] = 'Laatste bezoek op %s, %s.'; +$lang['Password updated'] = 'Wachtwoord aangepast'; +$lang['%d of %d users selected'] = '%d van %d gebruikers geselecteerd'; +$lang['All %d users are selected'] = 'Alle %d gebruikers zijn geselecteerd'; +$lang['Change password'] = 'Verander wachtwoord'; +$lang['Close user details'] = 'Sluit gebruikersdetails'; +$lang['Open user details'] = 'Open gebruikersdetails'; +$lang['close'] = 'Sluit'; +?> \ No newline at end of file diff --git a/sources/language/nl_NL/common.lang.php b/sources/language/nl_NL/common.lang.php new file mode 100644 index 0000000..d055cf5 --- /dev/null +++ b/sources/language/nl_NL/common.lang.php @@ -0,0 +1,429 @@ + \ No newline at end of file diff --git a/sources/language/nl_NL/help/cat_modify.html b/sources/language/nl_NL/help/cat_modify.html new file mode 100644 index 0000000..41a848c --- /dev/null +++ b/sources/language/nl_NL/help/cat_modify.html @@ -0,0 +1,128 @@ +

                    Een categorie bewerken

                    + +

                    Informatie

                    + +
                      + +
                    • naam: hernoem de categorie (een virtuele hernoeming in het geval van een physieke categorie).
                    • + +
                    • omschrijving: geef informatie over de inhoud die getoond word in de categorie, + deze tekst word onder de thumbnail.
                    • + +
                    + +

                    Verplaatsen

                    + +

                    Als het een virtuele categorie is, dan kun je hem verplaatssen. Het verplaatsen van een categorie houd in dat je het ouderschap veranderd.

                    + +

                    Opties

                    + +
                      + +
                    • Toegangs type: Rechten beheren. Als je een + categorie private maakt, worden alle daaronderliggende (kinder)categorieën worden dan ook private.
                      + Als je een categorie publiek maakt, worden alle ouder categorieën zullen dan ook publiek worden.
                    • + +
                    • Sluiten: De categorie en zijn sub-categorieë zijn + tijdelijk uitgeschakeld voor onderhoud.
                    • + +
                    • Commentaar: Machtig gebruikers om commentaar te geven op de elementen in deze categorie.
                    • + +
                    • Machtiging tot upload: Machtig gebruikers om bestanden te-uploaden. Deze optie is alleen beschikbaar als de categorie physiek is (niet + virtueel).
                    • + +
                    + +

                    Je kan de opties ook beheren via "Eigenschappen" beheer schermen (scherm Upload, Commentaar, Sluiten, +Publiek/Private, Vertegewoordiging beschikbaar via Administratie, Categorieën, Eigenschappen).

                    + +

                    Sorteer volgorde

                    + +

                    Kies als de standaard sortering word gebruikt.

                    + +

                    Indicatie dat de sortering wort toegepast op de sub-categorieën.

                    + +

                    Gebruik specifieke sorteren middels de kolommen in deze categorie.

                    +
                      +
                    • Aanmaak datum: Aanmaak datum foto
                    • +
                    • Plaatings datum: Synchronizatie datum
                    • +
                    • Gemiddelde waardering(*): Gemiddelde waardering kan gewijzigt worden door een bezoeker
                    • +
                    • Most visited (*): The current visit change the most visited order
                    • +
                    • Bestandsnaam: Gekozen naam in het informatie veld
                    • +
                    • Id: Interne Id (recente categorieën hoger id dan vorige id's.
                    • + +
                    +

                    (*)Neem zorg en test het voor uw zelf aangezien het onvoorspelbare resultaten kan geven.

                    + + +

                    Vertegenwoordiging

                    + +

                    De vertegenwoordiging van de categorie is een indexplaatje "thumbnail" welke getoond word +om de categorie te tonen op de hoofdpagina (category.php) wanneer een +categorie alleen sub-categorieieën bevat (alleen als root categorie).

                    + +

                    Er zijn 4 manieren om een indexplaatje te tonen als weergavevan een categoie :

                    + +
                      + +
                    • Picture page: in het aktiemenu, + met een van de knoppen is het mogelijk om een plaatje te kiezen als + vertegenwoordiging van een categorie. Deze knop is alleen beschikbaar voor administrators.
                    • + +
                    • Verander informatie over een plaatje via de administratie. + Je kunt bij dit scherm komen via picture.php of + Batch management in unit mode. Kijk voor meer info in de documentatie voor meer details.
                    • + +
                    • Administratie, Categorieën, Eigenschappen, Thumbnails. Kijk voor meer info in de documentatie voor meer details.
                    • + +
                    • Bewerk een categorie (dit scherm).
                    • + +
                    + +

                    De indexafbeelding is afhankelijk van de configuratie parameter allow_random_representative (zie include/config_default.inc.php).

                    + +

                    Standaard is allow_random_representative ingesteld op false (onwaar) +elke categorie die tenminste 1 element bevat is vertegenwoordigd door een vastgestelde afbeelding. +Eenmaal ingesteld (Bij het maken van de categorie), kan deze alleen veranderd worden door administrator + die daar dan om verzoekt it. Als de indexafbeelding niet meer bestaat kun je er willekeurig een nieuwe aan toewijzen.

                    + +

                    Als de configuratie parameter allow_random_representative is +ingesteld op true (waar), dan is eer geen vaste indexafbeelding. Gebruik gewoon Verwijder indexafbeelding knop.

                    + +

                    Als de categorie geen elementen bevat (maar alleen sub-categorieën) kan het +vertegenwoordigt worden dankzij het scherm verander informatie over een afbeelding. De enigste optie +op het huidige scherm is Verwijder vertegenwoordigingsafbeelding knop, na deze optie te hebben gebruikt is er geen +afbeeldingsafbeeldings optie meer om te veranderen.

                    + +

                    Link alle categorie elementen aan een nieuwe categorie

                    + +
                      + +
                    • Virtuele categorie naam: Nieuwe categorie naam aanmaaken, +alle afbeeldingen van de huidige categorie zullen gekoppeld worden aan de nieuwecategorie.
                    • + +
                    • Ouder categorie: Waar de nieuwe moet komen, laat dit leeg om deze in de root te maken.
                    • + +
                    + +

                    Link alle categorie elementen aan bestaande categorieën

                    + +
                      + +
                    • Categorieën: Kies de doelcategorie.
                    • + +
                    + +

                    Stuur een informatie email naar de groepsleden

                    + +
                      + +
                    • Groep: Geadresseerden groep
                    • + +
                    • Email inhoud: Vrije tekst om mee te sturen.
                    • + +
                    \ No newline at end of file diff --git a/sources/language/nl_NL/help/cat_move.html b/sources/language/nl_NL/help/cat_move.html new file mode 100644 index 0000000..9ff2ca3 --- /dev/null +++ b/sources/language/nl_NL/help/cat_move.html @@ -0,0 +1,15 @@ +

                    Verplaatsen virtuele categorieën

                    + +

                    Allen virtuele categorieën kunnen een nieuwe ouder-categorie hebben.

                    + +

                    Virtuele categorieën verplaatsen

                    + +

                    Selecteer een virtuele categorie die je wilt verplaatsen. +Als de lijst leeg is, wil dat zeggen dat je er geen gemaakt hebt.

                    + +

                    Nieuwe ouder categorie

                    + +

                    Selecteer de nieuwe ouder (virtueel of physiek). +Als je het niet doet zullen de geselecteerde categorieën verplaatst worden +naar het begin van de map (root). Categorieën kunnen niet verplaatst worden +naar zichzelf of een kind van de categorie.

                    \ No newline at end of file diff --git a/sources/language/nl_NL/help/cat_options.html b/sources/language/nl_NL/help/cat_options.html new file mode 100644 index 0000000..5fcd1fa --- /dev/null +++ b/sources/language/nl_NL/help/cat_options.html @@ -0,0 +1,30 @@ +

                    Categorie opties

                    + +

                    Dit scherm geeft administrators de mogelijkheid om categorie opties te beheren voor meerde categorieën in één keer.

                    + +
                    + +
                    Upload
                    +
                    Maak categorieën benaderbaar voor bezoekers om er bestanden in te plaatsen. Alleen niet virtuele en externe categorieën worden getoond.
                    + +
                    Commentaar
                    +
                    Geef gebruikers rechten om commentaar te plaatsen in de geselecteerde categorieën. + Selecteer de categorie waarop commentaar gegeven kan worden. + Op een afbeelding kan alleen commentaar gegeven worden als deze behoord tot een categorie waar dit is toegestaan.
                    + +
                    sluiten
                    +
                    Geselecteerde categorieën zijn op dit moment gesloten voor onderhoud. + Als je een categorie sluit, alle daaronder liggende categorieën zijn dan ook gesloten. Als je een categorie + weer opent, alle ouder categorieën worden dan ook weer geopend.
                    + +
                    Publiek / private
                    +
                    Beheer rechten voor de geselecteerde categorieën. Geselecteerde categorieën zijn private : je moet gebruikers/groepen rechten geven op deze categorieën. + Als je een categorie private maakt, alle daaronderliggende categorieën worden dan ook private. + Als je eeen categorie publiek maakt, alle ouder categorieën worden dan ook publiek
                    + +
                    Vertegenwoordiging
                    +
                    Deze opties kunnen alleen beheerd worden als de configuratie parameter allow_random_representative + is ingesteld op true.(zie include/config_defaults.inc.php) + Elke categorie kan vertegenwoordigd worden door een willekeurige of afzonderlijke vertegenwoordiging (door een unieke afbeelding).
                    + +
                    diff --git a/sources/language/nl_NL/help/cat_perm.html b/sources/language/nl_NL/help/cat_perm.html new file mode 100644 index 0000000..08e5f9c --- /dev/null +++ b/sources/language/nl_NL/help/cat_perm.html @@ -0,0 +1,14 @@ +

                    Beheer rechten voor een categorie

                    + +

                    Dit scherm is allen beschikbaar voor private categorën. Hier kun je gebruikers en groepn toegang geven voor deze categorie.

                    + +

                    Groepen

                    + +

                    Je kan groepen toegang geven of toegang weigeren op de huidige categorie. Door het aanpassen van de groepsrechten kun je dat +
                    bereiken. Je zal de lijst met gebruikers die toegang hebben tot deze categorie moeten wijzigen +op basis van groepsrechten.

                    + +

                    Gebruikers

                    + +

                    Je kan een individuele gebruiker toegang geven of weigeren. +Gebruikers die behoren tot een groep kunnen ook toegang gegeven of geweigerd worden.

                    diff --git a/sources/language/nl_NL/help/configuration.html b/sources/language/nl_NL/help/configuration.html new file mode 100644 index 0000000..51b72ed --- /dev/null +++ b/sources/language/nl_NL/help/configuration.html @@ -0,0 +1,106 @@ +

                    Configuratie

                    + +

                    Dit scherm geeft de administrator de mogenlijkheid tot basisconfiguratie. Dit scherm toont namelijk slechts eenvoudige +configuratieparameters die zouden moeten zijn genoeg voor de overgrote meerderheid van beheerders. Als je de andere mogelijkheden wilt zien +(geavanceerde) over de configuratie parameters, lees dan include/config_default.inc.php.

                    + +

                    Dit scherm wordt verdeeld in verscheidene secties, hergroeperend configuratieparameters per thema.

                    + + +

                    Begin

                    +
                      +
                    • Gallerie titel: word gebruikt in RSS meldingen en meldingen per email.
                    • + +
                    • Pagina banner: word getoond op elke publieke pagina.
                    • + +
                    • Gallerie URL: word gebruikt voor de RSS meldingen.
                    • + +
                    • Sluit gallery: Sluit de hele gallerie voor onderhoud. Alleen administrators kunnen de gallerie nog bereiken.
                    • + +
                    • Waardering: Waarderings optie is ingeschakeld.
                    • + +
                    • Waardering door gasten: Niet geregisteerde gebruikers kunnen ook hun waardering geven aan afbeeldingen.
                    • + +
                    • Sta registratie toe: Registratie is gratis voor iedereen.
                    • + +
                    • Email adres is verplicht voor alle gebruikers: Email adres word gecontroleerd bij registratie of profiel update uitgezonderd als de actie word uitgevoerd op de administratie scherm.
                    • + +
                    • Email admins wanneer een nieuwe gebruiker zich registreerd: Administrators ontvangen een mailtje bij elke registratie.
                    • + +
                    + +

                    Geschiedenis

                    + +

                    Bezoek op de pagina's category.php en picture.php worden opgeslagen in de history tabel.

                    + +

                    Bezoek word getoond in Administratie, Speciaal, Geschiedenis.

                    + +
                      +
                    • Bewaar pagina bezoek door gasten: pagina bezoek van gasten wordt opgeslagen.
                    • + +
                    • Bewaar pagina bezoek door gebruikers: pagina bezoek van geregistreerde gebruikers wordt opgeslagen.
                    • + +
                    • Bewaar pagina bezoek door administrators: pagina bezoek van administrators wordt opgeslagen.
                    • + +
                    + +

                    Commentaar

                    +
                      + +
                    • Commentaar door iedereen: Ook gasten kunnen commentaar plaatsen.
                    • + +
                    • Aantal commentaren per per pagina.
                    • + +
                    • Validatie: een administrator valideerd de door gebruikers geplaatste commentaren voordat deze zichtbaar wordt op de website. + Valideren van gebruikers commentaar gebeurd via het scherm Administratie, Afbeeldingen, Commentaar.
                    • + +
                    • Email admins when a valid comment is entered: +Sends an email to the administrators when a user enters a comment and this comment is validated.
                    • + +
                    • Email admins wanneer een commentaar validatie nodig heeft: +Stuurt de administrator een bericht dat een gebruiker een p[merking heeft geplaatst die nog gevalideerd moet worden door de administrator. +Gebruikers commentaar valideren gaat via het scherm Administratie, Afbeeldingen, Commentaren.
                    • + +
                    + +

                    Upload

                    +
                      +
                    • Show upload link every time: If exists uploadeable categories, add link will be show for each categoy.
                    • +
                    • User access level to upload: Allows to restrict upload by users
                    • +
                    • Email admins wanneer een afbeelding is ge-upload: Administrators ontvangen een mailtje voor elke ge-uploade bestand door gebruikers.
                    • +
                    + +

                    Standaard weergave

                    + +

                    Hier kan je de weergave aan passen die als standaard worden ingesteld, die je gast ziet als hij zich niet heeft aangemeld. Eenmaal aangemeld worden deze +opties overschreven door de gebruikers eigen opties (aanpasbaar in profiel).

                    + +

                    Het is mogelijk om de weergave opties voor alle gebruikers aan te passen, via scherm Administratie, Identificatie, Gebruikers, waar de opties voor de geslecteerde lijst van gebruikers word getoond.

                    + +
                      + +
                    • Talen: betreft slechts Piwigo labels. De namen van de categorie, de bestandsnamen en alle beschrijvingen vallen hier buiten.
                    • + +
                    • Aantal afbeeldingen per rij
                    • + +
                    • Aantal afbeeldingen per pagina
                    • + +
                    • aangezichts thema
                    • + +
                    • Recente periode: per dag. Periode waarin de foto aangeduid moet worden als nieuw. Moet meer dan 1 dag zijn.
                    • + +
                    • Toon alle categorieën: Toon standaard alle categorieën in het menu? Warning: deze optie is een server belastende optie +en toont mogelijk een erg groot menu als je categorie erg veel sub categorieën bevat.
                    • + +
                    • Aantal commentaren tonen: Het aantal commentaren zichtbaar bij een afbeelding op de thumbnails pagina. Zware belasting.
                    • + +
                    • Toon aantal hits: Toon het aantal keren dat een afbeelding bekeken is, onder de afbeelding op de thumbnails pagina. + Allen mogelijk als de geavanceerde configuratie parameter is:
                      $conf['show_nb_hits'] = true;
                      + Opmerking: standaars is dit false.
                    • + +
                    • Maximale breedte van de afbeeldingen: maximale toonbare breedte. Als de afbeeldingen groter zijn dan deze instelling, worden ze verkleind op het scherm. Als je deze optie gebruikt, denk er dan over na om de afbeelding aan te passen voor je ze plaatst op je gallery.
                    • + +
                    • Maximale hoogte van de afbeeldingen: Zelfde als hierboven.
                    • + +
                    + diff --git a/sources/language/nl_NL/help/extend_for_templates.html b/sources/language/nl_NL/help/extend_for_templates.html new file mode 100644 index 0000000..dfe1246 --- /dev/null +++ b/sources/language/nl_NL/help/extend_for_templates.html @@ -0,0 +1,100 @@ +

                    Extend for templates configuration

                    + +

                    Goal

                    +

                    Define replacement conditions for each template from template-extension +(template called "replacer").

                    + +

                    "original template" from ./template/yoga (or any other than yoga) + will be replaced by a "replacer" if the replacer is linked to this "original template" + (and optionally, when the requested URL contains an "optional URL keyword").

                    + +

                    "Optional URL keywords" are those you can find after the module name in URLs.

                    + +

                    Therefore "Optional URL keywords" can be an active "permalink" +(see permalinks in our documentation for further explanation).

                    + +

                    Read: `Warning` usage conditions.

                    + +

                    What are template extensions?

                    + +

                    This configuration tool is powerfull for beginners and advanced users. +By FTP, in the template-extension folder, the Webmaster can duplicate a lot of + the distributed .tpl files ("original template") with a different name + ("replacer"). + + "Original templates", current original supported templates are:

                    +
                      +
                    • index.tpl
                    • +
                    • mainpage_categories.tpl and/or thumbnails.tpl
                    • +
                    • menubar.tpl
                    • +
                    • header.tpl and/or footer.tpl
                    • +
                    • picture_content.tpl and/or picture.tpl
                    • + +
                    • profile.tpl and/or profile_content.tpl
                    • +
                    • tags.tpl
                    • +
                    • upload.tpl
                    • +
                    • about.tpl
                    • +
                    • popuphelp.tpl
                    • +
                    • search.tpl and/or search_rules.tpl
                    • +
                    • nbm.tpl and/or notification.tpl
                    • +
                    • identification.tpl and/or register.tpl
                    • +
                    • redirect.tpl
                    • +
                    + +

                    Where can I find "original templates"?

                    + +

                    Distributed original templates are in template/yoga/ +(don't edit them in place for upgrade perspectives). So with "original templates", +any webmaster can create his "replacers (customized templates)".

                    + +

                    Where should I save "replacers"?

                    + +

                    Replacers (customized templates) must be placed in the +template-extension folder (or its subfolders). +Replacers can have any filename with the .tpl extension. For example: template-extension/my-extension/video.tpl.

                    + + +

                    How can I activate my "replacers"?

                    +

                    An original template should be assigned to each + replacer (customized templates) to activate the related replacements. + This is the goal of "Extend for templates" in the Configuration Administration menu.

                    + +

                    If you select an optional URL keyword then replacements +will be operate only on pages with this keyword. For example: index.php?/most_visited

                    + +

                    Advanced users will use permalinks as optional URL keyword.

                    + +

                    If you select a Bound template then replacements will be operate only on this template.

                    + +

                    How can I deactivate my "replacers"?

                    +
                      +
                    • Unselect related "Original templates".
                    • +
                    • By FTP delete of "replacers".
                    • +
                    + +

                    Warnings

                    +
                      + +
                    • Original template must be the "original" template + otherwise you could have unpredictable results!
                    • + +
                    • On several replacers (customized templates) with the + sameOriginal template and the same optional URL + keyword only the last replacer is active.
                    • + +
                    • Unselected optional URL keyword will active the replacer + on any template usage. As previous point, order can override previous + selected replacers.
                    • + +
                    • Subfolders: +Subfolders are ignored but they are usefull to change current order.
                      +distributed-samples: for test purpose are distributed! +Don't edit them create your own ones. +
                    • + +
                    • On delete of a replacer the Original template is + immediately reactivated.
                    • + +
                    \ No newline at end of file diff --git a/sources/language/nl_NL/help/group_list.html b/sources/language/nl_NL/help/group_list.html new file mode 100644 index 0000000..44a7e5c --- /dev/null +++ b/sources/language/nl_NL/help/group_list.html @@ -0,0 +1,22 @@ +

                    Groepen lijst

                    + +

                    Hier kan je de gedefinieerde groepen beheren.

                    + +

                    Voeg een groep toe

                    + +

                    Een administrator kan groepen toevoegen.

                    + +

                    Groeps lijst

                    + +

                    De lijst staat voor elk element toe:

                    + + +
                      +
                    • naar de ledenlijst gaan
                    • +
                    • naar rechten gaan
                    • +
                    • een groep verwijderen (vereist een bevestiging)
                    • +
                    • stel de staus in als "standaard" (vereist een bevestiging)
                    • +
                    + +

                    Standaard groepen

                    +

                    Standaard groepen zijn groepen waar nieuwe gebruikers automatisch lid van worden.

                    \ No newline at end of file diff --git a/sources/language/nl_NL/help/help_add_photos.html b/sources/language/nl_NL/help/help_add_photos.html new file mode 100644 index 0000000..e2c42de --- /dev/null +++ b/sources/language/nl_NL/help/help_add_photos.html @@ -0,0 +1,23 @@ +

                    Verschillende manieren om fotos aan de gallerie toe te voegen:

                    + +
                      +
                    • Direct upload In je web browser is de makkelijkste mannier. + Het hangt van je webbrowser en web server af. + Om grote hoeveelheden foto's te uploaden, of als je een probleem hebt zijn er andere manieren!
                    • +
                    + + + +
                      +
                    • pLoader IS een desktop applicatie, die op je computer geïnstalleerd moet worden. Sleep & fotos in het ploader venster , klik op "Upload naar Piwigo" and let pLoader do the job. You can find other desktop applications such as WinToPiwigo or the Digikam export plugin to Piwigo.
                    • +
                    + + + +
                    +
                      +
                    • FTP overdracht is de meest geschikte nainier om een grote hoeveelheid fotos toe te voegen met zo min mogelijk handelingen. Volg de aanwijzingen om je fotos voor te bereiden. De FTP manier is laat je precies de indeling van je fotos op de server bepalen.
                    • +
                    + + +
                    \ No newline at end of file diff --git a/sources/language/nl_NL/help/help_groups.html b/sources/language/nl_NL/help/help_groups.html new file mode 100644 index 0000000..91bf5b9 --- /dev/null +++ b/sources/language/nl_NL/help/help_groups.html @@ -0,0 +1,6 @@ +

                    Groups is a convenient way to set permissions for a list of users.

                    + +

                    Je kan groepen maken in Administratie » Gebruikers » Groepen en voeg gebruikers toe aan de groep via Administratie, Identicatie, Gebruikers.

                    + +

                    Een gebruiker kan behoren tot verschillende groepen. De vergunning is sterker dan verbod : als gebruiker "jack" behoord tot de groep "familie" en "Vrienden", en alleen de groep "familie" kan de categorie "Christmas 2003" zien, "jack" zal de mogelijkheid hebben om de categorie "Christmas 2003" te zien.

                    + diff --git a/sources/language/nl_NL/help/help_misc.html b/sources/language/nl_NL/help/help_misc.html new file mode 100644 index 0000000..95c0e00 --- /dev/null +++ b/sources/language/nl_NL/help/help_misc.html @@ -0,0 +1,11 @@ +

                    Als je de Gallery geinstalleerd hebt, kan je het voor je bezoeker configureren. +

                      +
                    • Als je je gallery-installatie hebt afgerond, verander dan het uiterlijk van de standaard weergave +in Administratie paneel » Configuratie » Opties » Bezoeker/Gast-Instellingen
                    • +
                    • Het standaard thema in Administratie » Configuratie » Thema\'s
                    • +
                    • De standaard taal in Administratie » Configuratie » Talen
                    • +
                    +Elke nieuwe geregistreerde gebruiker zal deze standaard vertoningseigenschappen hebben.

                    + +

                    Als je nog vragen hebt, de Piwigo gemeenschap heet je welkom op +haar forum.

                    \ No newline at end of file diff --git a/sources/language/nl_NL/help/help_permissions.html b/sources/language/nl_NL/help/help_permissions.html new file mode 100644 index 0000000..b833752 --- /dev/null +++ b/sources/language/nl_NL/help/help_permissions.html @@ -0,0 +1,13 @@ +

                    You can forbid access to categories. Switch the category access type to "private" if you want to manage permissions.

                    + +

                    U kunt een categorie aan private maken door het aanpassen van een enkele categorie(Administratie » Categorieën » Beheren » bewerken) of bij het aanpassen van de opties op de hele categorie map (Administratie » Categorieën » Eigenschappen » Publiek / Private).

                    + +

                    Als de categorie private is, dan kun je de rechten aanpassen voor de groepen en gebruikers via 3 schermen :

                    + +
                      +
                    • Administratie » Gebruikers » Beheer » rechten aanpassen (een link per gebruiker)
                    • +
                    • Administratie » Gebruikers » Groepen » rechten aanpassen (een link per groep)
                    • +
                    • Administratie » Categorieën » Beheer » bewerk categorie rechten aanpassen (one link per categorie)
                    • +
                    + diff --git a/sources/language/nl_NL/help/help_virtual_links.html b/sources/language/nl_NL/help/help_virtual_links.html new file mode 100644 index 0000000..3676a32 --- /dev/null +++ b/sources/language/nl_NL/help/help_virtual_links.html @@ -0,0 +1,13 @@ +

                    Afbeeldingen / Foto's worden weergegeven in de categorie die overeenkomt +met hun directory.

                    + +

                    Een afbeelding kan in meerdere categorieën worden weergegeven, zonder dat +het bestand meerdere keren op uw webserver geplaatst hoeft te worden. +Verbindt uw afbeelding de gewenste categorie of categorieën op het +fotobewerkingsscherm (dat elke administrator kan bereiken vanaf het +galeriescherm waarop de afbeelding weergegeven wordt).p> + +

                    Virtuele categorieën zijn gebaseerd op het volgende idee: ze hebben geen +bijbehorende directory. Maak virtuele categorieën aan vanuit Administratie » Categorieën » +Beheer.

                    diff --git a/sources/language/nl_NL/help/history.html b/sources/language/nl_NL/help/history.html new file mode 100644 index 0000000..4ef3681 --- /dev/null +++ b/sources/language/nl_NL/help/history.html @@ -0,0 +1,37 @@ +

                    Historie

                    + +

                    Op deze pagina's , kan je de bezoekers geschiedenis van je gallerie zien, volgens de opties die ingesteld zijn in - Administratie - Algemeen - Historie inhoud.

                    + +

                    Statistieken

                    +
                      +

                      Als je ervoor hebt gekozen om geschiedenis van (index.php en picture.php) bezochte pagina's historie geschiedenis, +te bewaren kan je die bekijken op deze tab.

                      + +
                    • Algemene statistieken: bezoeken per jaar.
                    • + +
                    • Jaarlijkste statistieken: bezoeken per maand in het geselecteerde jaar.
                    • + +
                    • Maandeijkse statistieken: bezoeken per dag in de geselecteerde maand .
                    • + +
                    • Dagelijkse statistieken: bezoeken per uur in de geselecteerde dag.
                    • + +
                    + +

                    Zoeken

                    +
                      +

                      Als je ervoor hebt gekozen om geschiedenis van (index.php en picture.php) pagina's bezocht in de tabel historie te bewaren, kun je de gegevens van de bezochte pagina's bekijken met behulp van verschillende filters.

                      + +
                    • Filter op datum : kies het datum bereik waarvan je het bezoek wil bekijken.
                    • + +
                    • Filter op type element : kies het type element waarvan je het bezoek wil bekijken.
                    • + +
                    • Filter op gebruiker : kies de gebruiker waarvan je het bezoek wil bekijken.
                    • + +
                    • Filter op bestandsnaam : kies de bestandsnaam waarvan je het bezoek wil bekijken.
                    • + +
                    • Filter op beeld id : kies het beeld ID waarvan je het bezoek wil bekijken.
                    • +
                    diff --git a/sources/language/nl_NL/help/index.php b/sources/language/nl_NL/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/nl_NL/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/nl_NL/help/maintenance.html b/sources/language/nl_NL/help/maintenance.html new file mode 100644 index 0000000..199598a --- /dev/null +++ b/sources/language/nl_NL/help/maintenance.html @@ -0,0 +1,54 @@ +

                    Onderhoud

                    + +

                    Om de pagina genereringstijd te optimaliseren, gebruikt Piwigo gecachde informatie. Voorbeeld, +inplaats van in plaats van het tellen van het aantal beelden, bevat elke categorie bij paginaherladen, +wordt deze informatie opgeslagen inde database. In theorie, zou deze informatie altijd correct zijn, +maar soms kan een fout optreden en de cache informatie is dan foutief.

                    + +

                    Bepaalde informatie word door tijd nutteloos. Door de nutteloze informatie te verwijderen uit de database bespaar je ruimte.

                    + +
                      + +
                    • + Niet gelinkte elementen: + Toon afbeeldingen die niet gekoppeld zijn aan enige virtuele categorie. +
                    • +
                    • + Bestanden met dezelfde naam in meer dan één physieke categorie: + Toon afbeeldingen of bestanden met dezelfde naam in verschillende categorieën. +
                    • + +
                    + +
                      + +
                    • Update categorie informatie: Voor elke categorie, + informatie bijwerken of controleren zijn de volgende: lijst van hooft + categorieën, aantal afbeeldingen, datum van de laatste afbeelding, positie onder + broeder categorieën, positie onder alle categorieën. Deze aktie controleerd ook de koppeling met de indexafbeelding.
                    • + +
                    • Update afbeeldings informatie: Voor elke afbeelding, + informatie om te updaten zijn : volledige adres naar het bestand, gemiddelde waardering. + Waarschuwing: raak niet in verwarring met de metadata informatie, welke gesynchroniseerd word via Administratie, + Categorieën, Synchronizeren of doormiddel van wijzigen enkele afbeelding (via Afbeelding voorbeeld).
                    • + +
                    • Repareren en optimalizeren database: + Voor elke tabel, re-odrer, reparatie en optimalizatie worden voltooid. +
                    • +
                    + +
                      +
                    • Filter geschiedenis: Verwijder alle geschiedenisuit de tabel. Scherm Administratie, + Speciaal, Geschiedenis toont geen informatie meer uit de verleden tijd. Waarschuwing: alle data wordt verwijderd en is niet meer te herstellen.
                    • + +
                    • Filter samenvatting: Verwijder alle informatie over het bezoek aan de website. Deze samenvatting is samengesteld uit de geschiedenis informatie.
                    • + +
                    • Filter sessies: Verwijder verlopen gebruikers sessies.
                    • + +
                    • Filter nooit gebruikte meldingen
                    • + +
                    • Purge search history
                    • + +
                    • Purge samengestelde sjablonen
                    • + +
                    diff --git a/sources/language/nl_NL/help/notification_by_mail.html b/sources/language/nl_NL/help/notification_by_mail.html new file mode 100644 index 0000000..6cdf197 --- /dev/null +++ b/sources/language/nl_NL/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

                    Meldingen per email

                    + +

                    Dit scherm geeft je de mogelijkheid om emailmeldingen te configureren en te beheren om je gebruikers op de hoogte te stellen van nieuws op je website.

                    + +

                    Dit scherm is verdeelt in 3 delen:

                    + +

                    Parameters

                    +

                    Alleen beschikbaar voor webmasters, dit deel configureerd de meldingen per email.

                    + +

                    Inschrijven

                    +

                    Alleen beschikbaar voor webmasters, dit deel beheerd de in/uitschrijvingen voor email meldingen.

                    + +

                    Verzending

                    +

                    Alleen beschikbaar voor webmasters en administrators, dit deel staat het toe om email meldingen te verzenden.

                    + diff --git a/sources/language/nl_NL/help/permalinks.html b/sources/language/nl_NL/help/permalinks.html new file mode 100644 index 0000000..1438cfa --- /dev/null +++ b/sources/language/nl_NL/help/permalinks.html @@ -0,0 +1,7 @@ +

                    Permanente links

                    + +

                    Permanente links worden gebruikt om de adressen naar de categorie mooier te maken. wanneer een categorie een bepaalde permanente link heeft, wordt categorienaam niet meer vereist in de link ernaar toe.

                    + +

                    Wanneer een permanente link wordt verwijderd heb je de mogelijkheid om de geschiedenis te bewaren omde externe links naar de gallery werkend te houden. In de tabel met de permanente link geschiedenis kun je zien wanneer een permanente link is verwijderd, alsmede de laatste keer dat hij is gebruikt en het aantal keer.

                    + +

                    Let op: De permanente link naar een categorie moet uniek zijn. In de geschiedenis kan ook maar één keer dezelfde permanente link bestaan.

                    diff --git a/sources/language/nl_NL/help/photos_add_ftp.html b/sources/language/nl_NL/help/photos_add_ftp.html new file mode 100644 index 0000000..b9997a9 --- /dev/null +++ b/sources/language/nl_NL/help/photos_add_ftp.html @@ -0,0 +1,126 @@ +
                    + Snelle start + +
                      +
                    1. Create a directory on your computer.
                    2. + +
                    3. Copy some photos inside this directory, resize them for web display. Warning: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, no accentuated characters.
                    4. + +
                    5. With a FTP client, copy your directory in the "galleries" directory of your Piwigo installation.
                    6. + +
                    7. Logon your gallery and go to Administration » Pictures » Thumbnails to create missing thumbnails.
                    8. + +
                    9. Go to Administration and click on the big Synchronization button.
                    10. +
                    + +Congratulations! You have successfuly created the first category of your photo gallery. + +
                    +
                    + Directories and files organization + +
                      + +
                    • + +

                      Categorie mappen zijn in de Piwigo map "galleries". Bekijk de mapstructuur van een kleine gallerie (maar met een hoop mogelijkheden) :

                      + +
                      +.
                      +|-- admin
                      +|-- doc
                      +|-- galleries
                      +|   |-- categorie-1
                      +|   |   |-- categorie-1.1
                      +|   |   |   |-- categorie-1.1.1
                      +|   |   |   |   |-- categorie-1.1.1.1
                      +|   |   |   |   |   |-- pwg_high
                      +|   |   |   |   |   |   +-- wedding.jpg
                      +|   |   |   |   |   |-- thumbnail
                      +|   |   |   |   |   |   +-- TN-wedding.jpg
                      +|   |   |   |   |   +-- wedding.jpg
                      +|   |   |   |   +-- categorie-1.1.1.2
                      +|   |   |   +-- categorie-1.1.2
                      +|   |   |-- categorie-1.2
                      +|   |   |   |-- pookie.jpg
                      +|   |   |   +-- thumbnail
                      +|   |   |       +-- TN-pookie.jpg
                      +|   |   +-- categorie-1.3
                      +|   +-- categorie-2
                      +|       |-- piglet.gif
                      +|       |-- pwg_representative
                      +|       |   +-- video.jpg
                      +|       |-- thumbnail
                      +|       |   +-- TN-piglet.jpg
                      +|       +-- video.avi
                      +|-- include
                      +|-- install
                      +|-- language
                      +|-- template
                      ++-- tool
                      + +
                    • + +
                    • Eigenlijk, een categorie is gepresenteerd door een map op welke level in + Piwigo map "galleries". Elke categorie kan zoveel submappen als jij wilt bevatten. + In het voorbeeld hierboven, categorie-1.1.1.1 is op nivo 4 van de trap.
                    • + +
                    • Eigenlijk, een element is gepresenteerd door een bestand. Een bestand kan een + Piwigo element zijn als de extenstie is file_ext + configuration parameter mofenlijkheden (zie include/config_default.inc.php file). Een bestand kan + een afbeelding zijn als de extensie gelijk is aan picture_ext + configuration parameter possibilities.
                    • + +
                    • Afbeeldings elementen moeten een link naar een thumbnail hebben.(zie sectie hieronder + over thumbnails)
                    • + +
                    • Afbeeldings elementen kunnen gekoppeld zijn aan hoge kwaliteit bestanden. Zoals + in het voorbeeld wedding.jpg hierboven. Er is geen andere naamsaanpassing nodig voor de + hoge kwaliteit afbeelding verplicht. +
                    • + +
                    • Niet afbeeldings elementen (video, geluid, tekstbestanden, wat je wil...) worden + standaard vertegenwoordigt door een ikoontje die overeenkomt met de bestandsextensie. + Optioneel, je kan zelf een associatie met een thumbnail en een bestand opgeven (zie video.avi in het voorbeeld hierboven).
                    • + +
                    • Waarshuwing : de naam van de mappen en bestanden moeten bestaan uit de letters en koppeltekens "-", "_" of ".". Geen spaties en geen accenten + op de karakters
                    • + +
                    • Advies : Een categorie kan elementen en sub-categorieën hebben +op het zelfde moment. Desalnietemin, word je geadviseerd om te kiezen uit categorieën die elementen bevatten of categorieën +die sub-categorieën bevatten.
                    • + +
                    • Als bestanden, thumbnails en representativev corrct zijn geplaatst in + mappen ga dan naar: Administratie » Categorieën » Synchronizeren
                    • + +
                    + +
                    +
                    + Thumbnails + +
                      + +
                    • Zoals eerde gemeld, elk element of afbeeldingstype moet geassociateerd worden met een thumbnail.
                    • + +
                    • Thumbnails worden opgeslagen in een sub-directory "thumbnail" of de categorie map. De thumbnail is een afbeelding (zelfde bestandsnaam extensies mogelijk + als de afbeeldingbestanden) welke is prefixed met een geconfigureerde + "Thumbnail prefix" (zie administratie paneel, Configuratie, Algemeen).
                    • + +
                    • Thumbnails hoeven niet de zelfde extensie te hebben als het geassocieerde + afbeelding (een afbeelding met .jpg extensie kan een thumbnail hebben met .GIF + extentie als voorbeeld).
                    • + +
                    • Advies: gebruik een ecterne module voor het maken van thumbnails.
                    • + +
                    • Je kunt ook de pagina thumbnail maken gebruiken (Administratie, Afbeeldingen, Thumbnails), maar dat word niet aangeraden. + De thumbnail kwaliteit kan slecht zijn en het gebruikt een hoge CPU kracht welke een probleem kan zijn bij gratis webhost.
                    • + +
                    • Als je er voor kiest om de thumbnails te laten maken door de webhoster, dan dien je de rechten toe te wijzen op die mappen om de thumbnail te kunnen maken. + De correcte rechten op de mappen en sub-mappen zijn gebruiker/goep/wereld (ook wel 777) +
                    • + +
                    +
                    diff --git a/sources/language/nl_NL/help/search.html b/sources/language/nl_NL/help/search.html new file mode 100644 index 0000000..8b4d886 --- /dev/null +++ b/sources/language/nl_NL/help/search.html @@ -0,0 +1,19 @@ +

                    Zoeken

                    + +

                    Via deze pagina kun je afbeeldingen zoeken in de totale gallerie.

                    + +
                    + +
                    Zoeken naar woorden
                    +
                    Zoek naar opgegeven woorden in alle eigenschappen die betrekking heeft op de afbeelding die in de gallerie word getoond. Gebruik * als vervanging voor gedeeltelijke overeenkomsten.
                    + +
                    Zoeken naar Auteur
                    +
                    Gebruik * als vervanging voor gedeeltelijke overeenkomsten.
                    + +
                    Zoeken op datum
                    +
                    Selecteer een datum en/of een eind datum voor je zoekopdracht. Laat de datum leeg als je zoekt op een datum voor vandaag. Het jaartal moet zijn in het formaat : 0000 (2004)
                    + +
                    Zoeken in Categorieën
                    +
                    Selecteer de categorie of categorieën waarin je wil zoeken. Voor snelheid kunnen alle subcategorieën worden doorzocht door de ouder te selecteren, en dan kun je kiezen om de subcategorieën te doorzoeken doormiddel van het aanvinken van die optie.
                    + +
                    diff --git a/sources/language/nl_NL/help/synchronize.html b/sources/language/nl_NL/help/synchronize.html new file mode 100644 index 0000000..004b2d8 --- /dev/null +++ b/sources/language/nl_NL/help/synchronize.html @@ -0,0 +1,8 @@ +

                    Synchronizeren

                    + +

                    Er zijn 2 synchronizaties mogelijk : mappen/bestanden en bestands metadata. mapppen/bestanden gaat over het synchronizeren van je mapstructuur met de categorie structuur in de database. + metadata gaat over het bijwerken van de informatie zoals bestandsgrootte, dimenties in pixels en EXIF of IPTC informatie.

                    + +

                    De eerste synchronizatie moet zijn mappen/bestanden.

                    + +

                    Het synchronizatiren kan een lange tijd duren (afhankelijk van de server belasting en het aantal bestanden) daarom is het mogelijk om de categorieën één voor één te doen. (categorie voor categorie)

                    diff --git a/sources/language/nl_NL/help/user_list.html b/sources/language/nl_NL/help/user_list.html new file mode 100644 index 0000000..a6d015e --- /dev/null +++ b/sources/language/nl_NL/help/user_list.html @@ -0,0 +1,30 @@ +

                    Gebruikers lijst

                    + +

                    Hier kun je geregistreerde gebruikers beheren. Rechten kun je aanpassen in een aantal andere schermen.

                    + +

                    Gebruiker toevoegen

                    + +

                    Administrators kunnen zelf handmatig een gebruiker toevoegen.

                    + +

                    Bebruikerslijst

                    + +

                    De lijst kan gefilterd worden op gebruikersnaam (gebruike * als wildcard), groepen of status. De lijst kan gesorteerd worden op registratiedatum of gebruikersnaam, van A tot Z +of van Z tot A.

                    + +

                    Dit scherm werkt verschillende gebruikers bij met verschillende akties:

                    + +
                      + +
                    • verwijder gebruikers (vereist een bevestiging)
                    • + +
                    • veranderen status
                    • + +
                    • aan/af koppelen van groepen
                    • + +
                    • wijzig weergave eigenschappen
                    • + +
                    • wijzig extra eigenschappen
                    • + +
                    + +

                    Het doel is de geselecteerde groep gebruikers (standaard) of alle gebruikers. dit word gevraagd.

                    diff --git a/sources/language/nl_NL/index.php b/sources/language/nl_NL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/nl_NL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/nl_NL/install.lang.php b/sources/language/nl_NL/install.lang.php new file mode 100644 index 0000000..22a95bc --- /dev/null +++ b/sources/language/nl_NL/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Hulp nodig ? Stel uw vraag op het Piwigo forum.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Met dit email-adres kunnen bezoekers contact opnemen met de beheerder'; +$lang['PHP 5 is required'] = 'PHP 5 is vereist'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Het lijkt er op dat uw webhost momenteel gebruik maakt van PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan proberen uw configuratie om te zetten naar PHP 5 door het aanmaken of wijzigen van een .htaccess bestand.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Opmerking: u kunt uw configuratie ook zelf aanpassen en daarna Piwigo opnieuw opstarten.'; +$lang['Try to configure PHP 5'] = 'Probeer PHP 5 te configureren'; +$lang['Sorry!'] = 'Sorry!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo kon PHP 5 niet configureren.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Neem contact op met de support van uw hosting provider en probeer met hen te bepalen hoe u kunt omschakelen naar PHP 5.'; +$lang['Hope to see you back soon.'] = 'Hoop u snel weer te zien op deze site !.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gefeliciteerd, de Piwigo installatie is afgerond'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Als alternatieve oplossing kunt u de tekst in de bovenstaande box kopiëren en plakken in bestand "local/config/database.inc.php" (Opgelet : in database.inc.php mag alleen datgene staan dat in het tekstgebied staat, geen return- of spatie-tekens)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Het aanmaken van config-bestand local/config/database.inc.php is mislukt.'; +$lang['Download the config file'] = 'Download het config-bestand'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'U kunt het config-bestand downloaden en het uploaden naar de local/config directory van uw Piwigo-installatie.'; +$lang['Just another Piwigo gallery'] = 'Alweer een Piwigo galerie'; +$lang['Welcome to my photo gallery'] = 'Welkom bij mijn foto galerie'; +$lang['Welcome to your new installation of Piwigo!'] = 'Welkom bij uw nieuwe installatie van Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Aarzel niet om onze forum\'s te raadplegen voor hulp: %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost of andere, geleverd door uw provider'; +?> \ No newline at end of file diff --git a/sources/language/nl_NL/iso.txt b/sources/language/nl_NL/iso.txt new file mode 100644 index 0000000..2ea7b25 --- /dev/null +++ b/sources/language/nl_NL/iso.txt @@ -0,0 +1 @@ +Nederlands [NL] \ No newline at end of file diff --git a/sources/language/nl_NL/nl_NL.jpg b/sources/language/nl_NL/nl_NL.jpg new file mode 100644 index 0000000..0c90262 Binary files /dev/null and b/sources/language/nl_NL/nl_NL.jpg differ diff --git a/sources/language/nl_NL/upgrade.lang.php b/sources/language/nl_NL/upgrade.lang.php new file mode 100644 index 0000000..4bde42f --- /dev/null +++ b/sources/language/nl_NL/upgrade.lang.php @@ -0,0 +1,43 @@ +release %s (or equivalent).'] = 'Deze pagina stelt voor om uw +huidige oude Piwigo-database te converteren naar de nieuwe versie. De upgrade-assistant denkt dat u momenteel gebruik maakt van release %s (of equivalent).'; +$lang['Upgrade from version %s to %s'] = 'Upgrade van versie %s naar versie %s'; +$lang['Statistics'] = 'Statistieken'; +$lang['total upgrade time'] = 'totale upgrade tijd'; +$lang['total SQL time'] = 'totale SQL tijd'; +$lang['SQL queries'] = 'SQL queries'; +$lang['Upgrade informations'] = 'Upgrade informatie'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Voor een onderhoudscontrole uit [Administratie>Hulpmiddelen>Onderhoud] indien u problemen ondervindt.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Als voorzorgsmaatregel zijn de volgende plugins gedeactiveerd. Voordat u ze reactiveert moet u deze plugins op upgrades controleren:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Alleen een administrator kan een upgrade uitvoeren: hieronder kunt u inloggen.'; +$lang['You do not have access rights to run upgrade'] = 'U bent niet gerechtigd om een upgrade uit te voeren'; +$lang['All sub-albums of private albums become private'] = 'Alle sub-albums van privé albums worden privé'; +$lang['User permissions and group permissions have been erased'] = 'Gebruikers- en groepsrechten zijn verwijderd'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Alleen het voorvoegsel (prefix) van de klikplaatjes en het email-adres van de webbeheerder zijn bewaard gebleven van de vorige configuratie'; +$lang['In %s, before ?>, insert:'] = 'In %s, voor ?>, voeg tussen:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Als voorzorgsmaatregel zijn de volgende thema\'s gedeactiveerd. Controleer of er nieuwe versies van deze thema\'s bestaan, voordat u ze reactiveerd:'; + +?> \ No newline at end of file diff --git a/sources/language/nn_NO/about.html b/sources/language/nn_NO/about.html new file mode 100644 index 0000000..ba72a6e --- /dev/null +++ b/sources/language/nn_NO/about.html @@ -0,0 +1,12 @@ +

                    Dette fotogalleriet er basera på Piwigo.

                    + +

                    Piwigo er eit fotogalleri for bruk på web, uvikla av eit aktivt miljø av brukarar og utviklarar. Tilleggsverktøy gjer at Piwigo lett kan tilpassast til eigne ynskje. Og på toppen av det heile, Piwigo er gratis og har åpen kildekode.

                    + +

                    Besøk nettsida til Piwigo

                    + +

                    Omsetjinga til nynorsk blir vedlikehalden av (i alfabetisk rekkefylge): +

                    + .... mange takk! +

                    \ No newline at end of file diff --git a/sources/language/nn_NO/admin.lang.php b/sources/language/nn_NO/admin.lang.php new file mode 100755 index 0000000..e689fee --- /dev/null +++ b/sources/language/nn_NO/admin.lang.php @@ -0,0 +1,972 @@ +Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo for Android appen gjer det mogleg å kople ein Android telefon eller nettbrett til ditt Piwigo galleri. Du kan lage album og laste opp fleire bilete på ein gong.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo for iOS appen gjer det mogleg å kople ein iPhone, iPad eller iPod Touch til ditt Piwigo galleri. Du kan lage album og laste opp fleire bilete på ein gong.'; +$lang['Add write access to the "%s" directory'] = 'Legg til skriverettar til "%s" katalogen'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom er programvare laga for å handtere store mengder digitale foto og gjera biletbehandling.'; +$lang['Album photos associated to the following albums: %s'] = 'Albumbilete er knytt til fylgjande album: %s'; +$lang['Album updated successfully'] = 'Album er oppdatera'; +$lang['Albums automatically sorted'] = 'Albuma er automatisk sortera'; +$lang['All %d photos are selected'] = 'Alle %d bilete er vald'; +$lang['All extensions are up to date.'] = 'Alle tillegg er siste versjon'; +$lang['All languages are up to date.'] = 'Alle språk er siste versjon'; +$lang['All plugins are up to date.'] = 'Alle tilleggsprogram er siste versjon'; +$lang['All themes are up to date.'] = 'Alle tema er siste versjon'; +$lang['Allow rating'] = 'Tillat rangering'; +$lang['Allow user customization'] = 'Tillat brukartilpasning'; +$lang['Allow user registration'] = 'Tillat brukarregistrering'; +$lang['Allow users to delete their own comments'] = 'Tillat brukarar å slette sine eigne kommentarar'; +$lang['Allow users to edit their own comments'] = 'Tillat brukarar å endre sine eigne kommentarar'; +$lang['Allowed file types: %s.'] = 'Tillatne filtyper: %s'; +$lang['Mail content'] = 'Send innhald på e-post'; +$lang['Mail sent to %s [%s].'] = 'E-post sendt til %s [%s].'; +$lang['Main Page'] = 'Hovudside'; +$lang['Multiple Size'] = 'Fleire størrelsar'; +$lang['Level 2'] = 'Vener'; +$lang['Level 4'] = 'Familie'; +$lang['Level 8'] = 'Administratorar'; +$lang['Link all album photos to a new album'] = 'Kople alle albumbilete til eit nytt album'; +$lang['Link all album photos to some existing albums'] = 'Kople alle albumbilete til eit eksisterande album'; +$lang['Linked albums'] = 'Tilkopla album'; +$lang['List'] = 'Liste'; +$lang['Local'] = 'Lokal'; +$lang['Lock'] = 'Lås'; +$lang['Lock albums'] = 'Lås album'; +$lang['Lock gallery'] = 'Lås galleri'; +$lang['Locked'] = 'Låst'; +$lang['Inactive Languages'] = 'Inaktive språk'; +$lang['Inactive Plugins'] = 'Inaktive tilleggsprogram'; +$lang['Inactive Themes'] = 'Inaktive tema'; +$lang['Languages'] = 'Språk'; +$lang['Languages which need upgrade'] = 'Språk som treng oppgradering'; +$lang['Last hit'] = 'Siste treff'; +$lang['Last import'] = 'Siste importering'; +$lang['Last revisions'] = 'Siste revisjonar'; +$lang['Last send'] = 'Sist sendt'; +$lang['Learn more'] = 'Lær meir'; +$lang['Level 0'] = '---'; +$lang['Level 1'] = 'Kontaktar'; +$lang['Informations'] = 'informasjon'; +$lang['Install'] = 'Installer'; +$lang['Install on your computer,'] = 'Installer på din datamaskin'; +$lang['Installed Languages'] = 'Installera språk'; +$lang['Installed Themes'] = 'Installera tema'; +$lang['Instructions to use Piwigo'] = 'Instruksjonar for å bruke Piwigo'; +$lang['Invert'] = 'Inverter'; +$lang['Landscape'] = 'Landskap'; +$lang['Language has been successfully installed'] = 'Språk er installera'; +$lang['Apply action'] = 'Utfør handling'; +$lang['Apply selected corrections'] = 'Utfør valde korrigeringar'; +$lang['Associate to album'] = 'Kople til album'; +$lang['Associated'] = 'Kopla til'; +$lang['Authorized'] = 'Autorisera'; +$lang['Automatic correction'] = 'Automatisk korrigering'; +$lang['Automatic sort order'] = 'Automatisk sorteringsrekkefylgje'; +$lang['Available on'] = 'Tilgjengeleg'; +$lang['Available only with HTML format'] = 'Kun tilgjengeleg med HTML-format'; +$lang['Available versions for'] = 'Tilgjengelege versjonar for'; +$lang['associate to group'] = 'kople til gruppe'; +$lang['Update to Piwigo %s'] = 'Oppdatera til Piwigo %s'; +$lang['Updates'] = 'Oppdateringar'; +$lang['Upload'] = 'Last opp'; +$lang['Week starts on'] = 'Veka startar på'; +$lang['Who can see these photos?'] = 'Kven kan sjå desse bileta?'; +$lang['New parent album'] = 'Nytt foreldrealbum'; +$lang['No display'] = 'Ingen vising'; +$lang['No group selected, no action possible.'] = 'Ingen gruppe er vald, ingen handling mogleg.'; +$lang['Not cropped correctly?'] = 'Ikkje kutta rett?'; +$lang['Notification'] = 'Melding'; +$lang['Notify administrators when a comment is'] = 'Send melding til administratorar når ein kommentar er'; +$lang['Opacity'] = 'Grad av gjennomsiktighet'; +$lang['Optional URL keyword'] = 'Valfritt URL-nøkkelord'; +$lang['Order of menubar items has been updated successfully.'] = 'Rekkefylgje på menyelement på menylina er oppdatera'; +$lang['Merge selected tags'] = 'Flett valde stikkord'; +$lang['Merge tags'] = 'Flett stikkord'; +$lang['Metadata synchronization results'] = 'Resultat for synkronisering av metadata'; +$lang['Metadata synchronized from file'] = 'Metadata synkronisera frå fil'; +$lang['Minimum height'] = 'Minste høgde'; +$lang['Minimum privacy level'] = 'Lågaste personvern-nivå'; +$lang['Minimum width'] = 'Minste breidde'; +$lang['Miscellaneous'] = 'Diverse'; +$lang['Missing Plugins'] = 'Manglande tilleggsprogram'; +$lang['Missing a temporary folder'] = 'Kladdemappe manglar'; +$lang['Modify information'] = 'Endre informasjon'; +$lang['Month'] = 'Månad'; +$lang['Move'] = 'Flytt'; +$lang['Move albums'] = 'Flytt album'; +$lang['Move to album'] = 'Flytt til album'; +$lang['Name'] = 'Namn'; +$lang['Name of the duplicate'] = 'Namn på duplikat'; +$lang['New Version'] = 'Ny versjon'; +$lang['New name'] = 'Nytt namn'; +$lang['Maintenance'] = 'Vedlikehald'; +$lang['Make this language available to users'] = 'Gjer dette språket tilgjengeleg for brukarar'; +$lang['Make this theme available to users'] = 'Gjer dette temaet tilgjengeleg for brukarar'; +$lang['Manage'] = 'Handter'; +$lang['Manage Permissions'] = 'Handter løyve'; +$lang['Manage authorizations for selected albums'] = 'Handter autorisering for valde album'; +$lang['Manage permissions for group "%s"'] = 'Handter løyve for gruppa "%s"'; +$lang['Manage permissions for user "%s"'] = 'Handter løyve for brukaren "%s"'; +$lang['Manage photo ranks'] = 'Sorteringsrekkefylgje for bilete'; +$lang['Manage photos'] = 'Handter bilete'; +$lang['Manage tags'] = 'Handter stikkord'; +$lang['Manage the members'] = 'Handter medlemer'; +$lang['Manage this set of %d photos'] = 'Handter denne samlinga av %d bilete'; +$lang['Manual order'] = 'Manuell rekkefylgje'; +$lang['Maximum file size: %sB.'] = 'Største filstørrelse: %sB.'; +$lang['Maximum height'] = 'Største høgde'; +$lang['Maximum width'] = 'Største breidde'; +$lang['Members'] = 'Medlemer'; +$lang['Menu Management'] = 'Menyar'; +$lang['Merge selected groups'] = 'Flett valde grupper'; +$lang['Average rate'] = 'Gjennomsittleg vurdering'; +$lang['By %s'] = 'Av %s'; +$lang['Caddie'] = '"Caddie"'; +$lang['Caddie management'] = '"Caddie"-handtering'; +$lang['Can\'t connect to server.'] = 'Tilkopling til tenar er ikkje tilgjengeleg.'; +$lang['Can\'t create temporary file.'] = 'Kan ikkje opprette kladdefil.'; +$lang['Can\'t download archive.'] = 'Kan ikkje laste ned arkiv.'; +$lang['Can\'t read or extract archive.'] = 'Kan ikkje lesa eller pakke ut arkiv.'; +$lang['Cancel'] = 'Avbryt'; +$lang['Cannot delete the old permalink !'] = 'Den gamle permalenka kan ikkje slettast!'; +$lang['Change Admin Colors'] = 'Endre fargar for administrasjon'; +$lang['Check all'] = 'Sjekk alle'; +$lang['Check for updates'] = 'Sjekk for oppdateringar'; +$lang['Check for upgrade'] = 'Sjekk oppdateringar'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Oppgraderingssjekk feila av ukjend årsak.'; +$lang['Check integrity'] = 'Integritetssjekk'; +$lang['Choose an action'] = 'Vel ei handling'; +$lang['Choose an option'] = 'Vel eit alternativ'; +$lang['Classic display'] = 'Klassisk vising'; +$lang['Comments for all'] = 'Kommentarar for alle'; +$lang['Configuration'] = 'Konfigurasjon'; +$lang['Confirm merge'] = 'Stadfest fletting'; +$lang['Correction'] = 'Korreksjon'; +$lang['Correction applied with error'] = 'Korreksjon vart gjort, men med feil'; +$lang['Correction applied with success'] = 'Korreksjon vellukka'; +$lang['Create'] = 'Opprett'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Opprett mappa "%s" i rotmappa for din Piwigo-installasjon'; +$lang['Create this site'] = 'Opprett denne nettsida'; +$lang['Crop'] = 'Kutt'; +$lang['Current name'] = 'Noverande namn'; +$lang['Database'] = 'Dataase'; +$lang['Database synchronization with files'] = 'Synkroniser database med filer'; +$lang['Date'] = 'Dato'; +$lang['Day'] = 'Dag'; +$lang['Deactivate'] = 'Deaktiver'; +$lang['Deactivate all'] = 'Deaktiver alt'; +$lang['Default comments order'] = 'Standard rekkefylgje for kommentarar'; +$lang['Default display'] = 'Standard vising'; +$lang['Default photos order'] = 'Standard bilet-rekkefylgje'; +$lang['Default user cannot be deleted'] = 'Standardbrukar kan ikkje slettast'; +$lang['Default user does not exist'] = 'Standarbrukar finst ikkje'; +$lang['Delete Representant'] = 'Fjern miniatyrbilete for album'; +$lang['Delete orphan tags'] = 'Slett stikkord som ikkje høyrer til noko bilete'; +$lang['Delete selected photos'] = 'Slett valde bilete'; +$lang['Delete selected tags'] = 'Slett valde stikkord'; +$lang['Delete selected users'] = 'Slett valde brukarar'; +$lang['Delete this language'] = 'Slette dett språket'; +$lang['Delete this theme'] = 'Slett dette temaet'; +$lang['Deleted on'] = 'Sletta'; +$lang['Deletions'] = 'Slettingar'; +$lang['Deny selected groups'] = 'Avvis valde grupper'; +$lang['Deny selected users'] = 'Avvis valde brukarar'; +$lang['Description'] = 'Skildring'; +$lang['Detailed informations'] = 'Detaljera informasjon'; +$lang['Directory'] = 'Mappe'; +$lang['Directory does not exist'] = 'Mappe finst ikkje'; +$lang['Discover album:'] = 'Oppdag album:'; +$lang['Display options'] = 'Visingsinnstillingar'; +$lang['Dissociate from album'] = 'Frikople frå album'; +$lang['Dissociated'] = 'Frikobla'; +$lang['Do you want to activate anyway?'] = 'Ynskjer du å aktivere likevel?'; +$lang['Documentation'] = 'Dokumentasjon'; +$lang['Does not represent'] = 'er ikkje miniatyrbilete for'; +$lang['Download,'] = 'Last ned,'; +$lang['Downloads'] = 'Nedlastingar'; +$lang['Drag to re-order'] = 'Klikk-og-dra for å endre rekkefylgje'; +$lang['Drop into album'] = 'Vel eit album'; +$lang['Dump Database'] = 'Dump database'; +$lang['Duplicate'] = 'Dupliser'; +$lang['IP'] = 'IP'; +$lang['Ignore All'] = 'Ignorer alt'; +$lang['Ignore this update'] = 'Ignorer denne oppdateringa'; +$lang['Image Quality'] = 'Biletkvalitet'; +$lang['Image id'] = 'Bilde-ID'; +$lang['Hello'] = 'Hei'; +$lang['Hello,'] = 'Hei,'; +$lang['Help Me'] = 'Hjelp meg'; +$lang['Hide'] = 'Gøym'; +$lang['High definition'] = 'Høg oppløysing'; +$lang['High definition enabled'] = 'Høg oppløysing aktivera'; +$lang['History'] = 'Historie'; +$lang['Hit'] = 'Treff'; +$lang['Hour'] = 'Time'; +$lang['Graphics Library'] = 'Grafikk-bibliotek'; +$lang['Group'] = 'Gruppe'; +$lang['Group management'] = 'Gruppe-handtering'; +$lang['Group name'] = 'Gruppenamn'; +$lang['Groups'] = 'Grupper'; +$lang['Groups and users'] = 'Grupper og brukarar'; +$lang['Guest Settings'] = 'Innstillingar for gjester'; +$lang['Guest cannot be deleted'] = 'Gjest kan ikkje slettast'; +$lang['Guests'] = 'Gjester'; +$lang['Height'] = 'Høgde'; +$lang['Forbid this language to users'] = 'Gjer dette språket utilgjengeleg for brukarar'; +$lang['Forbid this theme to users'] = 'Gjer dette temaet utilgjengeleg for brukarar'; +$lang['Forbidden'] = 'Utilgjengeleg'; +$lang['Form'] = 'Frå'; +$lang['GD library is missing'] = 'GD-bibliotek manglar'; +$lang['GD version'] = 'GD-versjon'; +$lang['Gallery title'] = 'Galleritittel'; +$lang['Gallery unlocked'] = 'Galleriet låst opp'; +$lang['General statistics'] = 'Galleri-statistikk'; +$lang['Get Support on Piwigo Forum'] = 'Få brukarstøtte på Piwigo-forum'; +$lang['Go to'] = 'Gå til'; +$lang['Go to %s or %s for more informations'] = 'Gå til %s eller %s for meir informasjon'; +$lang['Error on file "%s" : %s'] = 'Feil i fil "%s": %s'; +$lang['Error when sending email to %s [%s].'] = 'Feil ved sending av e-post til %s [%s].'; +$lang['Errors caption'] = 'Feilforklaring'; +$lang['Everybody'] = 'Alle'; +$lang['Extend for templates'] = 'Utvid malar'; +$lang['Extensions Update'] = 'Oppdatering av tilleggsmodular'; +$lang['FTP + Synchronization'] = 'FTP + synkronisering'; +$lang['Failed to write file to disk'] = 'Feil ved skriving av fil til disk'; +$lang['File'] = 'Fil'; +$lang['File upload stopped by extension'] = 'Opplasting av fil stoppa av utvidelse'; +$lang['File/directory read error'] = 'Lesefeil for fil/mappe'; +$lang['Find a new representant by random'] = 'Finn eit nytt tilfeldig miniatyrbilere for album'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Fylgjande tilleggsprogram er kanskje ikkje kompatibl med den nye versjonen av Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Fylgjande tema er kanskje ikke kompatible med den nye versjonen av Piwigo:'; +$lang['Duplicate selected tags'] = 'Dupliser valde stikkord'; +$lang['Duplicates'] = 'Duplikat'; +$lang['ERROR'] = 'FEIL'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEIL: DETTE TILLEGGSPROGRAMMET MANGLAR, MEN ER INSTALLERA! AVINSTALLER NÅ.'; +$lang['Edit album'] = 'Endre album'; +$lang['Edit album permissions'] = 'Endre ablumtilgang'; +$lang['Edit photo'] = 'Endre bilete'; +$lang['Edit photo information'] = 'Endre biletinformasjon'; +$lang['Edit ranks'] = 'Endre rangering'; +$lang['Edit selected tags'] = 'Endre valde stikkord'; +$lang['Edit tags'] = 'Endre stikkord'; +$lang['Element'] = 'Element'; +$lang['Element type'] = 'Element-type'; +$lang['Email administrators when a comment is deleted'] = 'Send e-post til administratorar når ein kommentar er sletta'; +$lang['Email administrators when a comment is modified'] = 'Send e-post til administratorar når ein kommentar er endra'; +$lang['Email admins when a comment requires validation'] = 'Send e-post til adminstratorar når ein kommentar treng validering'; +$lang['Email admins when a new user registers'] = 'Send e-post til administratorar når ein ny brukar er registrera'; +$lang['Email admins when a valid comment is entered'] = 'Send e-post til administratorar når ein gyldig kommentar er lagt til'; +$lang['Environment'] = 'Miljø'; +$lang['Error list'] = 'Liste med feil'; +$lang['New photos added'] = 'Nye bilete lagt til'; +$lang['New photos were added'] = 'Nye bilete bilete er lagt til'; +$lang['New tag'] = 'Nytt stikkord'; +$lang['No file was uploaded'] = 'Ingen fil vart lasta opp'; +$lang['No group is permitted to see this private album'] = 'Ingen gruppe har løyve til å sjå dette private albumet'; +$lang['No mail to send.'] = 'Ingen e-post å sende'; +$lang['No members to manage'] = 'Ingen medlemer å handtere'; +$lang['No order field selected'] = 'Ikkje noko sorteringsfelt er vald'; +$lang['No photo can be deleted'] = 'Ingen bilete kan slettast'; +$lang['No photo in the current set.'] = 'Ingen bilete i gjeldande samling'; +$lang['No photo in this album'] = 'Ingen bilete i dette albumet'; +$lang['No photo selected, %d photos in current set'] = 'Ingen bilete vald, %d bilete i gjeldande samling'; +$lang['No photo selected, no action possible.'] = 'Ingen bilete vald, ingen handling er mogleg.'; +$lang['No results'] = 'Ingen resultat'; +$lang['No user to send notifications by mail.'] = 'Ingen brukar som kan informerast via e-post.'; +$lang['None'] = 'Ingen'; +$lang['Number of albums per page'] = 'Antal ablum pr. side'; +$lang['Number of comments per page'] = 'Antal kommentarar pr. side'; +$lang['Number of downloads'] = 'Antal nedlastingar'; +$lang['Number of rates'] = 'Antal rangeringar'; +$lang['Number of thumbnails to create'] = 'Antal miniatyrbilete som skal opprettast'; +$lang['Only private albums are listed'] = 'Bare private album er lista opp'; +$lang['Operating system'] = 'Operativsystem'; +$lang['Options'] = 'Innstillingar'; +$lang['Original Size'] = 'Original størrelse'; +$lang['Original file : %s'] = 'Original fil: %s'; +$lang['Original templates'] = 'Originale malar'; +$lang['Orphan tags deleted'] = 'Stikkord som ikkje høyrer til noko bilete er sletta'; +$lang['Other plugins'] = 'Andre tilleggsprogram er tilgjengeleg'; +$lang['Other private albums'] = 'Andre private album'; +$lang['Overall'] = 'Oversikt'; +$lang['Page banner'] = 'Side-banner'; +$lang['Page end'] = 'Sideslutt'; +$lang['Pages seen'] = 'Sider vist'; +$lang['Panorama'] = 'Panorama'; +$lang['Parameter'] = 'Innstillingar'; +$lang['Parameters'] = 'Parametrar'; +$lang['Parent album'] = 'Foreldrealbum'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Stadfesting av passord manglar. Skriv inn stadfesting av passord.'; +$lang['Password is missing. Please enter the password.'] = 'Passord manglar. Skriv inn eit passord.'; +$lang['Path'] = 'Sti'; +$lang['Pending Comments'] = 'Ventande kommentarar'; +$lang['Permalink'] = 'Permalenke'; +$lang['Permalink %s is already used by album %s'] = 'Permalenke %s er allereie i bruk av album %s'; +$lang['Permalink history'] = 'Permalenke-historikk'; +$lang['Piwigo for Android'] = 'Piwigo for Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo for iOS (iPhone, iPad, iPod Touch)'; +$lang['Posted %s on %s'] = 'Lagt til %s %s'; +$lang['Permalinks'] = 'Permalenker'; +$lang['Permission denied'] = 'Du har ikkje løyve'; +$lang['Permission granted'] = 'Løyve gjeve'; +$lang['Permission granted for groups'] = 'Løyve gjeve for grupper'; +$lang['Permission granted for users'] = 'Løyve gjeve for brukarar'; +$lang['Permission granted thanks to a group'] = 'Løyve gjeve på grunn av gruppmedlemskap'; +$lang['Permission management'] = 'Handtering av løyve'; +$lang['Permissions'] = 'Løyve'; +$lang['Photo %s of %s'] = 'Bilete %s av %s'; +$lang['Photo informations updated'] = 'Biletinformasjon er oppdatera'; +$lang['Photo Page'] = 'Biletside'; +$lang['Photo Properties'] = 'Eigenskapar for bilete'; +$lang['Photo name'] = 'Namn på bilete'; +$lang['Photos'] = 'Bilete'; +$lang['Piwigo Administration'] = 'Piwigo adminstrasjon'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish-tilleggsprogram for Lightroom'; +$lang['Piwigo Update'] = 'Oppdatering av Piwido'; +$lang['Piwigo configuration'] = 'Konfigurering av Piwigo'; +$lang['Piwigo version'] = 'Piwigo-versjon'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Sjekk mappe for tilleggsprogram og undermapper for tilgangsløyve (CHMOD)'; +$lang['Please select at least two groups'] = 'Vel minst to grupper'; +$lang['Please wait...'] = 'Vent...'; +$lang['Plugin has been successfully copied'] = 'Tilleggsprogrammet vart kopiera'; +$lang['Plugin list'] = 'Liste med tilleggsprogram'; +$lang['Plugins'] = 'Tilleggsprogram'; +$lang['Plugins which need upgrade'] = 'Tilleggsprogram som skal oppgraderast'; +$lang['Portrait'] = 'Portrett'; +$lang['Position'] = 'Posisjon'; +$lang['Private'] = 'Privat'; +$lang['Properties'] = 'Eigenskapar'; +$lang['Public'] = 'Offentleg'; +$lang['Public / Private'] = 'Offentleg / Privat'; +$lang['Purge compiled templates'] = 'Fjern kompilera malar'; +$lang['Purge history detail'] = 'Fjern historikk-detaljar'; +$lang['Purge history summary'] = 'Fjern historikk-summering'; +$lang['Purge never used notification feeds'] = 'Fjern informasjons-matingar som ikkje har vore bruka'; +$lang['Purge search history'] = 'Fjern søkehistorikk'; +$lang['Purge sessions'] = 'Fjern sesjonar'; +$lang['Purge user cache'] = 'Fjern mellomlagring for brukar'; +$lang['Quick Local Synchronization'] = 'Rask lokal synkronisering'; +$lang['Random photo'] = 'Tilfeldig bilete'; +$lang['Rate'] = 'Ranger'; +$lang['Rating'] = 'Rangering'; +$lang['Rating by guests'] = 'Rangera av gjester'; +$lang['Read Piwigo Documentation'] = 'Les dokumentasjon for Piwigo'; +$lang['Refresh'] = 'Oppfrisk'; +$lang['Refresh photo set'] = 'Oppfrisk biletsamling'; +$lang['Reject'] = 'Avvis'; +$lang['Remove all filters'] = 'Fjern alle filter'; +$lang['Remove from caddie'] = 'Fjern frå "caddie"'; +$lang['Rename'] = 'Gje nytt namn'; +$lang['Repair and optimize database'] = 'Reparer og optimaliser databasen'; +$lang['Representant'] = 'Miniatyrbilete for album'; +$lang['Representation of albums'] = 'Miniatyrbilete for album'; +$lang['Representative'] = 'Miniatyrbilete for album'; +$lang['Represents'] = 'Er miniatyrbilete for'; +$lang['Reset ignored updates'] = 'Nullstill ignorera oppdateringar'; +$lang['Resize'] = 'Skaler'; +$lang['Resize after upload'] = 'Skaler etter opplasting'; +$lang['Restore'] = 'Set tilbake'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Set tilbake til standardkonfigurasjon. Du vil miste innstillingar for tilleggsprogram'; +$lang['Save Settings'] = 'Lagre innstillingar'; +$lang['Save Template Directory'] = 'Lagre mal-mappe'; +$lang['Save manual order'] = 'Lagre manuell sortering'; +$lang['Save order'] = 'Lagre sortering'; +$lang['Save to permalink history'] = 'Lagre til historikk for permalenker'; +$lang['Search for new images in the directories'] = 'Søk etter nye bilete i mappene'; +$lang['Searching...'] = 'Søker...'; +$lang['Section'] = 'Seksjon'; +$lang['See you soon,'] = 'Ser deg snart,'; +$lang['See you soon.'] = 'Ser deg snart.'; +$lang['Select a file'] = 'Vel ei fil'; +$lang['Select an album'] = 'Vel eit ablum'; +$lang['Select at least one album'] = 'Vel minst eitt album'; +$lang['Select at least one comment'] = 'Vel minst ein kommentar'; +$lang['Select at least one photo'] = 'Vel minst eitt bilete'; +$lang['Select at least one user'] = 'Vel minst ein brukar'; +$lang['Select at least two tags for merging'] = 'Vel minst to stikkord for fletting'; +$lang['Select files'] = 'Vel filer'; +$lang['Select groups...'] = 'Vel grupper...'; +$lang['Select recipients'] = 'Vel mottakarar'; +$lang['Select the destination tag'] = 'Vel mål-stikkord'; +$lang['Select users...'] = 'vel brukarar...'; +$lang['Select:'] = 'Vel:'; +$lang['Selection'] = 'Utval'; +$lang['Send'] = 'Send'; +$lang['Send an information email to group members'] = 'Send informasjon på e-post til ei gruppe medlemer'; +$lang['Send connection settings by email'] = 'Send innloggings-instillingar på e-post'; +$lang['Send mail as'] = 'Send e-post som'; +$lang['Send mail on HTML format'] = 'Send e-post i HTML-format'; +$lang['Send mail to users'] = 'Send e-post til brukarar'; +$lang['Settings'] = 'Instillingar'; +$lang['Sharpen'] = 'Oppskarping'; +$lang['Show info'] = 'Vis informasjon'; +$lang['Show menubar'] = 'Vis menyline'; +$lang['Simulation'] = 'Simulering'; +$lang['Site manager'] = 'Nettstadsadministrator'; +$lang['Some themes and plugins may be not available yet.'] = 'Nokre tema og tilleggsprogram er kanskje ikkje tilgjengelege nå.'; +$lang['Some upgrades are available for extensions.'] = 'Oppgraderingar er tilgjengelege for tilleggsmodular'; +$lang['Start Upload'] = 'Start opplasting'; +$lang['Start pLoader and add your photos.'] = 'Start pLoader og legg til dine bilete.'; +$lang['Statistics'] = 'Statistikk'; +$lang['Status'] = 'Status'; +$lang['Status of user "%s" updated'] = 'Status for brukar "%s" er oppdatera'; +$lang['Subscribe'] = 'Abonner'; +$lang['Subscribe %s'] = 'Abonner %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonner %s på Piwigo annonserings-nyheitsbrev'; +$lang['Summary'] = 'Summering'; +$lang['Support'] = 'Støtte'; +$lang['Synchronize'] = 'Synkroniser'; +$lang['Synchronize metadata'] = 'Synkroniser metadata'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'DETTE TILLEGGSPROGRAMMET ER NÅ EIN DEL AV KJERNA I PIWIGO! AVINNSTALLER DET NÅ!'; +$lang['Tag "%s" already exists'] = 'Stikkordet "%s" finst allereie'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Stikkordet "%s" er nå duplikat av "%s"'; +$lang['Tag "%s" was added'] = 'Stikkordet "%s" er lagt til'; +$lang['Tag selection'] = 'Val av stikkord'; +$lang['Tags %s merged into tag %s'] = 'Stikkord %s fletta saman med stikkordet %s'; +$lang['Templates'] = 'Malar'; +$lang['The following tag was deleted'] = 'Desse stikkorda vart sletta'; +$lang['The gallery URL is not valid.'] = 'URL til galleriet er ikkje gyldig'; +$lang['The name of an album must not be empty'] = 'Namnet til eit album kan ikkje vera tomt'; +$lang['Virtual album'] = 'Virtuelt album'; +$lang['Virtual album added'] = 'Virtuelt album er lagt til'; +$lang['Virtual album deleted'] = 'Virtuelt album er sletta'; +$lang['Virtual album name'] = 'Namn på virtuelt ablum'; +$lang['Virtual albums to move'] = 'Virtuelle ablum som skal flyttast'; +$lang['Visit Gallery'] = 'Besøk galleriet'; +$lang['Visit Piwigo project website'] = 'Besøk nettstaden til Piwigo-prosjektet'; +$lang['Visit language site'] = 'Gå til språksida'; +$lang['Visit plugin site'] = 'Gå til sida for tilleggsprogram'; +$lang['Visit theme site'] = 'Gå til sida for tema'; +$lang['Visited %d times'] = 'Besøkt %d gonger'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'VARSEL! Dette tilleggsprogrammet ser ikkje ut til å vera kompatibel med denne versjonen av Piwigo.'; +$lang['Waiting'] = 'Ventande'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Varsel: '; +$lang['Watermark'] = 'Vassmerke'; +$lang['Web Form'] = 'Web-skjema'; +$lang['Webmaster cannot be deleted'] = 'Webmaster kan ikkje fjernast'; +$lang['Webmaster status is required.'] = 'Webmaster-status er påkrevd'; +$lang['Upload Photos'] = 'Last opp bilete'; +$lang['Uploaded Photos'] = 'Opplasta bilete'; +$lang['User'] = 'Brukar'; +$lang['User "%s" created with "%s" like password'] = 'Brukar "%s" oppretta med "%s" som passord'; +$lang['User %s [%s] added.'] = 'Brukar %s [%s] er lagt til'; +$lang['User %s [%s] was added to the subscription list.'] = 'Brukar %s [%s] lagt til som abonnent.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Brukar %s [%s] er ikkje lagt til som abonnent.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Brukar %s [%s] er ikkje fjerna som abonnent.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Brukar %s [%s] fjerna som abonnent.'; +$lang['User comments validation'] = 'Validering av kommentar frå brukar'; +$lang['User list'] = 'Brukarliste'; +$lang['User status'] = 'Brukarstatus'; +$lang['Users'] = 'Brukarar'; +$lang['Validate'] = 'Valider'; +$lang['Validation'] = 'Validering'; +$lang['Version'] = 'Versjon'; +$lang['View in gallery'] = 'Vis i galleriet'; +$lang['Virtual Links'] = 'Virutelle lenker'; +$lang['Who can see this photo?'] = 'Kven kan sjå dette biletet?'; +$lang['Width'] = 'Breidde'; +$lang['With blank value, gallery title will be used'] = 'Om tomt, galleriets tittel vil bli bruka'; +$lang['With no album'] = 'Utan ablum'; +$lang['With no tag'] = 'Utan stikkord'; +$lang['With no virtual album'] = 'Utan virutelt album'; +$lang['X Position'] = 'X posisjon'; +$lang['X Repeat'] = 'X repetering'; +$lang['Y Position'] = 'Y posisjon'; +$lang['Year'] = 'År'; +$lang['You are running the latest version of Piwigo.'] = 'Du køyrer siste versjon av Piwigo.'; +$lang['You cannot delete your account'] = 'Du kan ikkje slette din konto'; +$lang['You cannot move an album in its own sub album'] = 'Du kan ikkje flytte eit album til sitt eige underalbum'; +$lang['You have %d orphan tags: %s.'] = 'Du har %d stikkord som ikkje høyrer til bilete: %s.'; +$lang['Zoom'] = 'Zoom'; +$lang['add a new watermark'] = 'legg til nytt vassmerke'; +$lang['add new photos to caddie'] = 'legg nye bilete til "caddie"'; +$lang['added'] = 'lagt til'; +$lang['administrators'] = 'administratorar'; +$lang['albums added in the database'] = 'album lagt til i databasen'; +$lang['any visitor can see this album'] = 'all gjester kan sjå dette ablumet'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'dikiKam er eit avansera fritt digital bilethandteringsprogram for Linux, Windows og Mac OSX'; +$lang['even already synchronized photos'] = 'og allereie synkronisera bilete'; +$lang['for the file format'] = 'for dette filformatet'; +$lang['for this file format'] = 'for denne filas format'; +$lang['global mode'] = 'globalmodus'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto er standard bilethandsamar på Mac OSX. Piwigo eksport tilleggsprogram let deg oppretta nye album og eksportere dine bilete direkte frå iPhoto til ditt Piwigo biletgalleri'; +$lang['leave'] = 'ingen endring'; +$lang['on the %d selected photos'] = 'på desse %s valde bileta'; +$lang['ranks'] = 'rangering'; +$lang['registration date'] = 'registreringsdato'; +$lang['remove creation date'] = 'fjern opprettingsdato'; +$lang['set to'] = 'sett til'; +$lang['simple visitors'] = 'enkle besøkande'; +$lang['singly represented'] = 'fiksa miniatyrbilete'; +$lang['synchronize files metadata with database photos informations'] = 'syknroniser bileta i databasen med metadata i filene'; +$lang['test this remote site'] = 'test denne nettstaden'; +$lang['unset'] = 'nullstill'; +$lang['update the database from files'] = 'oppdater databasen med filene'; +$lang['An error has occured during upgrade.'] = 'Det oppstod ein feil under oppgraderinga.'; +$lang['An error occured during extraction (%s).'] = 'Det oppstod ein feil under utpakking av filene (%s).'; +$lang['An information email was sent to group "%s"'] = 'E-post med informasjon er sendt til gruppe "%s"'; +$lang['Apply to sub-albums'] = 'Gjer gjeldande for underalbum'; +$lang['Apply watermark if height is bigger than'] = 'Legg til vassmerke om høgda er større enn'; +$lang['Apply watermark if width is bigger than'] = 'Legg til vassmerke om breidda er større enn'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Fila eller mappa kan ikkje nåast (den finst ikkje eller tilgang er nekta)'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Talet på kommentarar på ei side må vera mellom 5 og 50.'; +$lang['The original image quality must be a number between %d and %d'] = 'Kvalitet på originalbilete må vera eit tal mellom %d og %d'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo greier ikkje hente oppgraderingsfile frå tenaren'; +$lang['Ratio'] = 'Storleiksforhold'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery-klient for Android) er eit åpent kjeldekodeprogram (GPL v3) - ein Piwigo-klient for Android-plattforma.'; +$lang['Bound Theme'] = 'Bunden mal'; +$lang['Continue processing treatment'] = 'Fortsett handsaming som er igang'; +$lang['Delete multiple size images'] = 'Slett multistørrelse bilete'; +$lang['Hoverbox display'] = 'Hoverbox-vising'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Dersom du opplever problem eller har spørsmål, kan du sende ei melding til'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Dette temaet kan ikkje aktiverast avdi foreldretemaet manglar: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Kan ikkje deaktivere dette språket. Du må seta eit anna språk som standardspråk.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Kan ikkje deaktivere dette språket. Minst eit språk må vera aktivera.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Kan ikkje deaktivere dette temaet. Minst eit tema må vera aktivera.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Dette temaet kan ikkje slettast avdi andre tema er avhengig av dette: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I php.ini fila di er upload_max_filesize (%sB) større enn post_max_size (%sB). Du bør endre denne innstillinga.'; +$lang['Include display of recent photos grouped by dates'] = 'Inkluder vising av nye bilete gruppera etter dato'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkluder historikk (Varsel: serverminne-grense kan verta overskriden)'; +$lang['Information data registered in database'] = 'Informasjonsdata lagra i databasen'; +$lang['Obsolete Plugins'] = 'For gamle tilleggsprogram'; +$lang['Operation in progress'] = 'Handsaming er igang.'; +$lang['Preferences'] = 'Innstillingar'; +$lang['Released on'] = 'Utgeven'; +$lang['Remote'] = 'Fjern'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Du har starta abbonnement på varsling via e-post.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Du har avlsutta abbonnement på varsling via e-post.'; +$lang['You need to confirm deletion'] = 'Du må stadfeste slettinga'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Du bør oppgradere systemet ditt for å få full nytte av applikasjonen, elles vil applikasjonen ha feil eller ikkje virke i det heile.'; +$lang['[%s] Visit album %s'] = '[%s] Gjest album %s'; +$lang['custom'] = 'Tilpassa'; +$lang['Replacers (customized templates)'] = 'Erstattar (tilpassa mal)'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Vel eit område med musa for å definere interessesenter.'; +$lang['Set as default language for unregistered and new users'] = 'Set som standard språk for uregistrera og nye brukarar'; +$lang['Set as default theme for unregistered and new users'] = 'Set som standard mal for uregistrera og nye brukarar'; +$lang['Set author'] = 'Set fotograf'; +$lang['Set creation date'] = 'Set opprettingsdato'; +$lang['Set title'] = 'Set tittel'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell er eit åpent kjeldekodeprograme for å handtere digitale bilete på Linux. Det er standard bilethandteringsprogram i Ubuntu og Fedora.'; +$lang['Subscribe to notification by mail'] = 'Abonner på varsling via e-post'; +$lang['Subscribe/unsubscribe users'] = 'Start/avslutt abonnement for brukarar'; +$lang['Subscribed'] = 'Abonnement starta'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Abonnentar kan bli lista (tilgjengeleg) bare om der nye element å varsle om.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo eksport-tilleggsprogrammet gjev deg tilgang til å opprette album og eksportere bilete.'; +$lang['The anomaly will be ignored until next application version'] = 'Feilen vil bli ignorera til neste versjon av applikasjonen'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interessesenter er det viktigaste område på biletet.'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Namn på permalenke kan innehalde a-z, A-Z, 0-9, "-", "_" eller "/". Den kan ikkje innehalde bare tal eller byrje med tal fylgd av "-"'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Versjonen av %s [%s] som er installera er ikkje kompatibel med den versjonen som er påkrevd [%s]'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster har starta abonnement for deg på varsling via e-post.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Du brukar nettlesaropplasting. Prøv Flash-opplasting istadenfor.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Du brukar Flash-opplasting. Problem? Prøv nettlesaropplasting istadenfor.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan laste opp til Piwigo %s direkte utan å oppgradere til Piwigo %s (tilrådd)'; +$lang['photos informations synchronized with files metadata'] = 'biletinformasjon er synkronisera med metadata for fila'; +$lang['The original maximum height must be a number between %d and %d'] = 'Største høgde på original må vera ei tal mellom %d og %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Største breidde på original må vera ei tal mellom %d og %d'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Biletstørrelse vil bli redusera til %dx%d bilepunkt.'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Den opplasta file er større enn innstillinga MAX_FILE_SIZE som er spesifisera i HTML-skjemaet'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den opplasta fila er større enn innstillinga upload_max_filesize i php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Den opplasta file vart berre delvis opplasta'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den opplasta fila er større enn innstillinga post_max_size i php.ini: %sB'; +$lang['[NBM] Problems or questions'] = '[NMB] Problem eller spørsmål'; +$lang['apply automatic sort order'] = 'bruk automatisk sorteringsrekkefylgje'; +$lang['dissociate from group'] = 'koble frå gruppe'; +$lang['only perform a simulation (no change in database will be made)'] = 'gjer bare ein simuletring (ingenting vil bli endra i databasen)'; +$lang['overrides existing values with empty ones'] = 'overstyr gjeldande verdiar med tomme'; +$lang['pending validation'] = 'ventande validering'; +$lang['reduce to single existing albums'] = 'reduser til enkle eksiterande album'; +$lang['Your configuration settings are saved'] = 'Dine konfigurasjonsinnstillingar er lagra'; +$lang['You can activate only one mobile theme.'] = 'Du kan bare aktivere eit mobil-tema.'; +$lang['You might go to plugin list to install and activate it.'] = 'Gå til lista med tilleggsprogram for å installere og aktivere det.'; +$lang['Update Complete'] = 'Oppdatering ferdig'; +$lang['Update albums informations'] = 'Oppdater informasjon om album'; +$lang['Update in progress... Please wait.'] = 'Oppdatering igang... Vent.'; +$lang['Update photos information'] = 'Oppdater informasjon om bilete'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Bruk standard sorteringsrekkefylgje for bilete (definera i konfigurasjonefil)'; +$lang['Used metadata'] = 'Metadata i bruk'; +$lang['You are running on development sources, no check possible.'] = 'Du køyrer med utviklingskjeldekode, sjekk er ikkje mogleg.'; +$lang['Unable to dump database.'] = 'Greier ikkje dumpe databasen'; +$lang['Uncheck all'] = 'Velg bort alle'; +$lang['Uninstall'] = 'Avinstaller'; +$lang['Uninstalled Plugins'] = 'Avinstallera tilleggsprogram'; +$lang['Unknown upload error'] = 'Ukjend opplastingsfeil'; +$lang['Unlock gallery'] = 'Lås opp galleri'; +$lang['Unlocked'] = 'Låst opp'; +$lang['Unsubscribe from notification by mail'] = 'Avslutt abonnement på varsling via e-post'; +$lang['Unsubscribed'] = 'Abonemment avslutta'; +$lang['Update All'] = 'Oppdater alle'; +$lang['To subscribe'] = 'Start abonnement'; +$lang['To unsubscribe'] = 'Avslutt abonnement'; +$lang['Toggle \'default group\' property'] = 'Inverter \'standargruppe\'-eigenskapen'; +$lang['Tools'] = 'Verktøy'; +$lang['Two updates are available'] = 'To oppdateringar er tilgjengelege'; +$lang['Type here the author name'] = 'Skriv inn forfattarnamn'; +$lang['Type here the name of the new group'] = 'Skriv inn namn på ny gruppe'; +$lang['Type here the title'] = 'Skriv inn tittel'; +$lang['Type in a search term'] = 'Skriv inn søkeord'; +$lang['Unable to check for upgrade.'] = 'Greier ikkje sjekke for oppgraderingar.'; +$lang['This name is already used by another group.'] = 'Dette namnet er allereie i bruk av ei anna gruppe.'; +$lang['This site already exists'] = 'Denne nettsida finst allereie'; +$lang['This theme was not designed to be directly activated'] = 'Dette temaet kan ikkje aktiverast direkte'; +$lang['Thumbnail'] = 'Miniatyrbilete'; +$lang['Thumbnails generation in progress...'] = 'Oppretting av miniatyrebilete er i gang...'; +$lang['Time'] = 'Tid'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Tida tilgjengeleg for å sende e-post er avgrensa. Andre e-postar er hoppa over.'; +$lang['Title'] = 'Tittel'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'For å eksportere bileta dine frå digiKam til Piwigo, installer dikiKam og Kipi-tilleggsprogrammet.'; +$lang['To send ?'] = 'Send?'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster har avslutta abonnementet ditt på e-postvarsling.'; +$lang['There is no available subscribers to mail.'] = 'Det er ingen abonnentar å varsle på e-post.'; +$lang['There is no other theme available.'] = 'Ingen andre tema er tilgjengelege.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Dette albumet inneheld %d bilete lagt til mellom %s og %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Dette albumet inneheld %d bilete lagt til %s.'; +$lang['This album contains no photo.'] = 'Dette albumet inneheld ingen bilete.'; +$lang['This group will be set to default'] = 'Denne gruppa vil bli bruka som standard'; +$lang['This group will be unset to default'] = 'Denne gruppa vil ikkje lenger bli bruka som standard'; +$lang['This is a major update, with new exciting features.'] = 'Dette er ei større oppgdatering med nye spennande mogleghetar.'; +$lang['This is a minor update, with only bug corrections.'] = 'Dette er ei mindre oppdatering med kun opprretting av feil.'; +$lang['The whole page'] = 'Heile sida'; +$lang['The whole set'] = 'Heile samlinga'; +$lang['Theme has been successfully installed'] = 'Tema har vorte installera'; +$lang['Themes'] = 'Tema'; +$lang['Themes which need upgrade'] = 'Tema som treng oppgradering'; +$lang['There is no group in this gallery.'] = 'Det finst ingen grupper i galleriet'; +$lang['There is no other language available.'] = 'Ingen andre språk er tilgjengelege.'; +$lang['There is no other plugin available.'] = 'Ingen andre tillgeggsprogram er tilgjengelege.'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Gruppenamnet kan ikkje innehalde " eller \' eller vera tomt.'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Mappenamn og filnamn kan bare innehalde bokstavar, tal, "-", "_" eller "."'; +$lang['Save visits in history for'] = 'Lagre vitjingshistorikk for'; +$lang['Source tag'] = 'Kjeldestikkord'; +$lang['Storage album'] = 'Lagringsalbum'; +$lang['Sum of rates'] = 'Sum av vurderingar'; +$lang['Switch to clear or dark colors for administration'] = 'Byt til ljos eller mørk farge for administrasjon'; +$lang['Templates configuration has been recorded.'] = 'Mal-konfigurasjon har blitt lagra'; +$lang['The %d following tags were deleted'] = 'Fylgjande %d stikkord har vorte sletta'; +$lang['Privacy level'] = 'Personvernnivå'; +$lang['Privacy level set to "%s"'] = 'Personvernnivå sett til "%s"'; +$lang['Rate date'] = 'Vurderingsgsdato'; +$lang['Rated %d times, score : %.2f'] = 'Vurdera %s gonger, skår: %.2f'; +$lang['Photos generation in progress...'] = 'Biletgenerering i gang...'; +$lang['Piwigo Uploader'] = 'Piwigo opplastar'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo tilleggsprogram for eksport frå Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo tilleggsprogram for eksport frå iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo tilleggsprogram for eksport frå Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo tilleggsprogram for eksport frå digiKam'; +$lang['Predefined filter'] = 'Førehandsdefinera filter'; +$lang['Mail address is obligatory for all users'] = 'E-postadresse er påkrevd for alle brukarar'; +$lang['Main "guest" user does not exist'] = 'Hovudbrukaren "gjest" finst ikkje'; +$lang['Main "guest" user status is incorrect'] = 'Hovudbrukaren "gjest" sin status er feil'; +$lang['Main "webmaster" user does not exist'] = 'Hovudbrukaren "webmaster" finst ikkje'; +$lang['Main "webmaster" user status is incorrect'] = 'Hovudbrukaren "webmaster" sin status er feil'; +$lang['No destination tag selected'] = 'Målstikkord er ikkje vald'; +$lang['Optimizations have been completed with some errors.'] = 'Optimalisering er gjennomførd, men med nokre feil.'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalenke %s har tidlegare vore i bruk av album %s. Du må slette den frå permalenke-historikken fyrst.'; +$lang['Photo unreachable or no support'] = 'Får ikkje tak i biletet eller bilet-typa er ikkje støtta'; +$lang['I decide to update anyway'] = 'Eg vil oppdatere likevel'; +$lang['Ignore selected anomalies'] = 'Ignorer valde feil'; +$lang['Images manual order was saved'] = 'Manuell sortering av bilete er lagra'; +$lang['Impossible automatic correction'] = 'Automatisk korrigering er ikkje mogleg'; +$lang['Exif extension not available, admin should disable exif use'] = 'EXIF-utvidelse er ikkje tilgjengeleg, administrator bør deaktivere bruk av EXIF'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Mogleghetar inkluderar å bla i galleriet, lage album og laste opp bilete.'; +$lang['Follow Orientation'] = 'Fylg orientering/retning'; +$lang['Generate multiple size images'] = 'Lag fleire størrelsar av bileta'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Gje skriverettar (chmod 777) til "%s" mappa i rotmappa i din Piwigo installasjon'; +$lang['Grant selected groups'] = 'Gje tilgang til valde grupper'; +$lang['Grant selected users'] = 'Gje tilgang til valde brukarar'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture er eit kraftig verktøy for å forbetre bilete og handtere store mengder bilete på ein Mac datamaskin.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture er laga for profesjonelle fotografar, men liknar iPhoto.'; +$lang['Applications'] = 'Applikasjonar'; +$lang['Authorize users to add comments on selected albums'] = 'Autoriser brukarar til å legge til kommentarar på valde album'; +$lang['Batch Manager'] = 'Jobb handterar'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Som standard vil Piwigo lage ein ny biletstørrelse ut frå HD-versjonen (high definition) av ditt bildete.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard vil insteressesenter for biletet bli plassera i midten.'; +$lang['By rank'] = 'Etter rangering'; +$lang['Center of interest'] = 'Interessesenter'; +$lang['Check automatic corrections'] = 'Sjekk automatiske korrigeringar'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Feilen som er korrigera vil ikkje lenger bli ignorera'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'For biletstørrelsar med avskjering, slik som "Firkant", vil Piwigo gjera det som er mogleg for å inkludere interessesenter.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Om ingen HD er tilgjengeleg og om gjeldande web-størrelse er større enn skaleringsdimensjonar, vil Piwigo flytte den som HD og lage ein nedskalera bilete i web-størrelse av dette.'; +$lang['Photo sizes with crop'] = 'Biletstørrelse med avskjering'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo nyheitsbrev'; +$lang['Albums authorized thanks to group associations'] = 'Album er autorisera på grunn av gruppetilknyting'; +$lang['All optimizations have been successfully completed.'] = 'Alle optimaliseringar er gjennomført.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                    Click here to show log error.'] = 'Ein feil oppstod under utpakking. Sjekk tilgangsrettar til filer i din Piwigo-installasjon.
                    Klikk her for å vise feillogg.'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Er du sikker på at du vil installere denne oppgraderinga? Du må sjekke om denne versjonen ikkje treng å avinstallere tidlegare versjonar.'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Tida for å tilrettelegge lista med brukara som skal få e-post er avgrensa. Andre brukarar er ikkje med i lista.'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Erstatning av original mal med tilpassa malar frå mappe med mal-utvidingar'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publiserings-tillegg gjev deg mogleghet til å eksportere og synkronisere bilete frå Lightroom direkte til ditt Piwigo biletgalleri.'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Hald kontakt med Piwigo-prosjektet, abonner på Piwigo nyheitsbrev. Du vil motta e-postar når nye versjonar er tilgjengelege (kan innehalde oppretting av sikkerheitsproblem slik at det er viktig å kjenne til oppgraderinga) og når større hendingar i prosjektet skjer. Det er bare nokre få meldingar i året.'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Eksekveringstida er overskriden, handsaminga må fortseta [Estimera tid: %d sekundar]'; +$lang['Complementary mail content'] = 'Komplementært meldingsinnhald'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Eksekveringstida er ute, handsaming må halde fram [Estimera tid: %d sekundar].'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Bare webmaster kan sjå denne fana, ikkje administratorar.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Omtrentleg største oppløysing: %dM piksel (det er %dx%d biletpunkt)'; +$lang['Numeric identifier : %d'] = 'Numerisk identifikator: %d'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'I Linux-installsjonen din kan du installere Shotwell og aktivere Piwigo publserings-opsjon.'; +$lang['Reinitialize check integrity'] = 'Start integritetssjekk på nytt'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan ikkje definere standard biletrekkefylgje fordi du har ei tilpassa instilling i din lokal konfigurasjon.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Du har spesifisera $conf[\'order_by\'] i di lokal konfigurasjonfil, denne parameteren er utdatera. Du må fjerne den eller endre namn til $conf[\'order_by_custom\'] !'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam er laga for fotografar som vil sjå, handtere, endre, forbetre, organisere, merke og dele bilete.'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står for Piwigo Uploader. Frå datamaskina di kan pLoader tilrettelegge bileta dine og overføre dei til ditt Piwigo biletgalleri.'; +$lang['photos candidates for metadata synchronization'] = 'bilete som er kanditatar for synkronisering av metadata'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Endring av storleik etter opplasting er ikkje tilgjengeleg avdi GD vert bruka som grafikkbibliotek'; +$lang['Select at least one tag'] = 'Vel minst eitt nøkkelord'; +$lang['Basic settings'] = 'Grunnleggjande innstillingar'; +$lang['General'] = 'Generelt'; +$lang['Mail theme'] = 'E-posttema'; +$lang['User %s added'] = 'Brukar %s lagt til'; +$lang['User %s updated'] = 'Brukar %s er oppdatera'; +$lang['Users modified'] = 'Brukarar er endra'; +$lang['%d of %d users selected'] = '%d av %d brukarar er valde'; +$lang['(filtered from %s total users)'] = '(filtrera frå %s brukarar totalt)'; +$lang['All %d users are selected'] = 'Alle %d brukarar er valde'; +$lang['Change password'] = 'Endre passord'; +$lang['Change username'] = 'Endre brukarnamn'; +$lang['Last visit on %s, %s.'] = 'Sist vitja %s, %s.'; +$lang['Loading...'] = 'Lastar...'; +$lang['No matching user found'] = 'Ingen brukarar vart funne'; +$lang['Password updated'] = 'Passordet er endra'; +$lang['Show %s users'] = 'Vis %s brukarar'; +$lang['No user selected of %d users'] = 'Ingen brukarar valde (totalt %d brukarar)'; +$lang['No user selected, no action possible.'] = 'Ingen brukarar valde - ingen aksjon mogleg'; +$lang['Registered on %s, %s.'] = 'Registrera %s, %s.'; +$lang['Showing %s to %s of %s users'] = 'Viser %s til %s av %s brukarar'; +$lang['Update user'] = 'Endre brukar'; +$lang['on the %d selected users'] = 'med dei %d valde brukarane'; +$lang['Close user details'] = 'Lukk brukardetaljar'; +$lang['Open user details'] = 'Opne brukardetaljar'; +$lang['close'] = 'lukk'; +?> \ No newline at end of file diff --git a/sources/language/nn_NO/common.lang.php b/sources/language/nn_NO/common.lang.php new file mode 100644 index 0000000..7fc06d0 --- /dev/null +++ b/sources/language/nn_NO/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/nn_NO/help/cat_modify.html b/sources/language/nn_NO/help/cat_modify.html new file mode 100755 index 0000000..1c36303 --- /dev/null +++ b/sources/language/nn_NO/help/cat_modify.html @@ -0,0 +1,118 @@ +

                    Endre album

                    + +

                    Informasjon

                    + +
                      + +
                    • namn: gje nytt namn til album (ein virtuell namneendring om dette er eit fysisk album).
                    • + +
                    • Skildring: kort tekst som gjev ein ide om innhaldet, + denne teksten vil visast i botnen av sida med miniatyrbileta.
                    • + +
                    + +

                    Flytte

                    + +

                    Om albumet er virtuelt, kan du flytte det. Flytting av album tyder å endre mappe/album det høyrer til.

                    + +

                    Alternativ

                    + +
                      + +
                    • Tilgangstype: Rettighetshantdering. Om du gjer eit album privat, vil all underalbum og verta private. + Om du gjer eit album tilgjengelig for alle, vil alle "foreldrealbum" bli tilgjengelig for alle.
                    • +
                    • Lås: Albumet og underalbum vil verta midlertidig utilgjengeleg for endringar.
                    • +
                    • Kommentarar: Autoriser brukarar for å kunne kommentere dette albumet.
                    • +
                    • Autoriser opplastingar: Autoriser brukerar til å laste opp biletfiler. Dette alternativet er kun tilgjengelig for fysiske (ikke virtuelle) album.
                    • + +
                    + +

                    Du kan og endre desse alternativa via "eigenskapar" i +album-menyen (Arkfane Last opp, Kommentarar, Lås, +Offentleg/Privat, Alternativ tilgjengeleg frå Administrasjon » Album » Eigenskapar).

                    + +

                    Sorteringsrekkefylgje

                    + +

                    Bruk standard bilet-sorteringsrekkefylgje.

                    + +

                    Indikerer om denne sorteringsrekkefylgja og vil gjelde underalbum.

                    + +

                    Velg spesifisera sorteringsrekkefylgje på desse albuma.

                    +
                      +
                    • Opprettingsdato: Dato for når biletet er teke
                    • +
                    • Opplastingsdato: Synkroniseringsdato
                    • +
                    • Gjennomsnittleg rangering (*): Gjennomsittleg rangering kan bli endra av rangering besøkande gjev
                    • +
                    • Mest besøkte (*): Det siste besøket kan endre rekkefylgje på mest besøkte
                    • +
                    • Filnamn: Namn som er sett i informasjonsfeltet
                    • +
                    • Id: Intern Id (siste album har ein høgare id enn den før der.
                    • + +
                    +

                    (*)Advarsel: Ver nøye med å test desse sorteringsrekkefylgjene sjølv, då dei kan gje uventa resultat.

                    + + +

                    Representantar

                    + +

                    Albumet sin representat er miniatyrbiletet som visast på hovudsida (category.php) for å +representera albumet når det kun inneheld underalbum og ingen bilete direkte(akkurat som et underalbum).

                    +Bilete frå eit album :

                    + +
                      + +
                    • Biletside: ein av knappane let deg sette gjeldande bilete som representant for gjeldande +vist album. Knappen er kun synleg for administratorar.
                    • +
                    • Endre informasjon om eit bilete i + administrasjon. Dette skjermbiletet kan nås frå picture.php eller Batch + behandlar i unit modus. Sjå hjelp for dette skjermbildetet for fleire detaljar.
                    • +
                    • Administrasjon » Album » Eigenskapar, + Representantar. Sjå hjelpe for dette skjermbildet for meir detaljer.
                    • +
                    • Endre album (forrige skjermbilete).
                    • + +
                    + +

                    Valet for en representant avhenger av allow_random_representative konfigurasjons parametere (se include/config_default.inc.php).

                    + +

                    I standardmodus (allow_random_representative satt til usant(false)), +vil kvart album som inneheld minst eit element bli representert av eit sett +ellement. Når dette er sett (ved oppretting av album), vil representanten kun endrast når ein administrator ber om det. +Om det representative bildet ikkje passer, +kan du få eit nytt bilete iFinn ein ny tilfeldig representant.

                    + +

                    Om allow_random_representative konfigurasjonsparameter er sett til sant (true), kan eit album som bare inneheld bilete ikkje ha nokon representant. Bare bruk Slett representant-knappen.

                    + +

                    Om albumet inneheld bare underalbum og ingen bilete, kan det bli representert av kva som helst element takket +være Endre informasjon om biletet-skjermbiletet. Det eineste alterantivet på gjeldande skjermbilete +er Slett representant-knappen.Link alle albumbilete til eit nytt album

                + +
                  + +
                • Virtuelle albumnamn: Namnet på det nye albumet som blir oppretta, +alle bilete i dette albumet vil bli linket til det nye.
                • + +
                • Foreldrealbum: Kvar det nye albumet vil vera, +La dette være tomt for å legge det på øvste nivå.
                • + +
                + +

                Link alle albumbilete til eksisterande album

                + +
                  + +
                • Album: Velg målalbumet som bileta skal knyttast til.
                • + +
                + +

                Send en informasjonsmelding til gruppemedlemmer

                + +
                  + +
                • Gruppe: mottakar si gruppe
                • + +
                • E-postinnhald: Tekst som skal sendast.
                • \ No newline at end of file diff --git a/sources/language/nn_NO/help/cat_move.html b/sources/language/nn_NO/help/cat_move.html new file mode 100755 index 0000000..49ffaa6 --- /dev/null +++ b/sources/language/nn_NO/help/cat_move.html @@ -0,0 +1,14 @@ +

                  Flytte virtuelle album

                  + +

                  Bare virtuelle album kan tilordnast nytt foreldrealbum.

                  + +

                  Virtuelle album som skal flyttast

                  + +

                  Velg eit eller fleire virtuelle album du ynskjer å flytte. +Om lista er tom, tyder det at det ikkje er laga noko virtuelt album enda.

                  + +

                  Nytt foreldrealbum

                  + +

                  Velg eit nytt foreldrealbum (virtuelt eller fysisk). +Om du ikkje vel eit nytt foreldrealbum, vil dei valgte virtuelle albuma bli flytt til øvste nivå. +Eit album kan ikkje flyttast til seg sjølv, eller eit underalbum til seg sjølv.

                  \ No newline at end of file diff --git a/sources/language/nn_NO/help/cat_options.html b/sources/language/nn_NO/help/cat_options.html new file mode 100755 index 0000000..f1966d3 --- /dev/null +++ b/sources/language/nn_NO/help/cat_options.html @@ -0,0 +1,22 @@ +

                  Eigenskapar til album

                  + +

                  Handtering av eigenskapar for fleire album på ei gong.

                  + +
                  + +
                  Kommentarar
                  +
                  Eit bilete kan få kommentarar frå dei som vitjar galleriet om bilete høyrer til eit album der det er lov å legge inn kommentarar.
                  + +
                  Lås
                  +
                  Låste album er stengt for å gjera vedlikehald. Bare administratorar kan sjå desse i galleriet.
                  + +
                  Offentleg / privat
                  +
                  Når eit album vert privat, kan du gje rettar til brukarar og grupper
                  + +
                  Representant
                  +
                  Denne eigenskapen er tilgjengeleg om du set innstillinga +allow_random_representative (sjå include/config_defaults.inc.php) til +true. Kvart album kan eit tilfeldig representant-bilete eller eit bilete som blir valgt for albumet.
                  + +
                  \ No newline at end of file diff --git a/sources/language/nn_NO/help/cat_perm.html b/sources/language/nn_NO/help/cat_perm.html new file mode 100755 index 0000000..50e65eb --- /dev/null +++ b/sources/language/nn_NO/help/cat_perm.html @@ -0,0 +1,11 @@ +

                  Endre rettar til album

                  + +

                  Dette skjermbiletet er bare tilgjengeleg for private album. Her kan du velge brukarar og grupper som har rett til å sjå dette albumet.

                  + +

                  Grupper

                  + +

                  Du kan nekte eller gje tilgang til grupper til å sjå dette albumet. Om du endrar rettane grupper, vil brukarar som høyrer til desse gruppene bli nekta tilgang eller gjeve tilgang til dette albumet.

                  + +

                  Brukarar

                  + +

                  Du kan nekte eller gje tilgang til enkeltbrukarar. Brukarar som har tilgang via gruppa dei høyrer til, kan bli nekta tilgang ved å nekte tilgang til enkeltbrukar.

                  \ No newline at end of file diff --git a/sources/language/nn_NO/help/help_add_photos.html b/sources/language/nn_NO/help/help_add_photos.html new file mode 100755 index 0000000..4f57190 --- /dev/null +++ b/sources/language/nn_NO/help/help_add_photos.html @@ -0,0 +1,20 @@ +

                  Ulike måtar å legge til bilete i galleriet:

                  + +
                    +
                  • Direkte opplasting i nettlesaren er den enklaste og mest direkte måten. Den er avhengig av moglegheitane i netllesaren og web-tenaren. For større antal bilete eller om du har problem, så finst andre metodar som ventar på deg!
                  • +
                  + + + +
                    +
                  • pLoader er eit program som installerast og køyrer på din datamaskin. Dra & slepp bilete inn i pLoader vindauget, clikk på "Upload to Piwigo" og la pLoader ta jobben. Du kan og finne andre program slik som WinToPiwigo eller Digikam sitt tilleggsprogram for å eksportere til Piwigo.
                  • + + + +
                    +
                      +
                    • FTP-overføring er den tilrådde måten å legge til store samlingar med bilete med eit minimum av klikk. Fylg hjelpinformasjonen for å tilrettelegge bileta. FTP-metoden let deg kontrollere den fysiske organiseringa av bileta på din nett-tenar.
                    • +
                    + + +
                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/help_groups.html b/sources/language/nn_NO/help/help_groups.html new file mode 100755 index 0000000..04b4ff2 --- /dev/null +++ b/sources/language/nn_NO/help/help_groups.html @@ -0,0 +1,11 @@ +

                    Grupper er ein enkel måte å gje løyve til ei liste med brukarar.

                    + +

                    Opprett grupper i Administrasjon » Brukarar +» Grupper og knytt brukarar til desse gruppene i +Administrasjon » Brukarar » +Handter.

                    + +

                    Ein brukar kan høyre til fleire grupper. Autorisering (løyve) overstyrer nekta tilgang: +om bruker "olav" høyrer til gruppa "familie" og "venner", og +bare gruppa "familie" kan sjå albumet "Jol 2010", då vil +"olav" kunne sjå albumet "Jol 2010".

                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/help_misc.html b/sources/language/nn_NO/help/help_misc.html new file mode 100755 index 0000000..7477277 --- /dev/null +++ b/sources/language/nn_NO/help/help_misc.html @@ -0,0 +1,9 @@ +

                    Når du har oppretta galleriet ditt, kan du konfigurere det for besøkande +

                      +
                    • Standarvising slik du ynskjer i Administrasjon » Konfigurasjon » Innstillingar fane Innstillingar for gjester
                    • +
                    • Standard-tema i Administrasjon » Konfigurasjon » Tema
                    • +
                    • Standard språk i Administrasjon » Konfigurasjon » Språk
                    • +
                    + Som standard vil nye brukarar "arve" desse eigenskapane når dei vert registrera. +

                    +

                    Om du har spørsmål vil Piwigo-felleskapet ynskje deg velkomen på sitt forum.

                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/help_virtual_links.html b/sources/language/nn_NO/help/help_virtual_links.html new file mode 100755 index 0000000..52b5125 --- /dev/null +++ b/sources/language/nn_NO/help/help_virtual_links.html @@ -0,0 +1,12 @@ +

                    Bilete blir vist i albumet som høyrer til katalogen biletfila ligg +i.

                    + +

                    Du kan og vise bilete i fleire album utan å kopiere biletfila på +nett-tenaren. Du kan knytte biletet til eit eller fleire album frå +skjermbiletet for endring av bilete (dette skjermbilete kan ein +administrator få opp frå biletsida på galleriet).

                    + +

                    Virtuelle album er basera på dette konseptet: dei har ikkje +nokon tilhøyrande katalog tilknyt. Lag virtuelle album frå + Administrasjon » Album » +Handter.

                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/history.html b/sources/language/nn_NO/help/history.html new file mode 100755 index 0000000..dfbfbb4 --- /dev/null +++ b/sources/language/nn_NO/help/history.html @@ -0,0 +1,22 @@ +

                    Historikk

                    + +

                    På desse skjermbileta kan du overvaka vitjingshistorikk for galleriet i høve til dei innstillingane du har vald i: Administrasjon » Konfigurasjon » Innstillingar » Historikk

                    + +

                    Statistikk

                    +
                      +

                      Om du har vald å lagre sidevisingar (index.php og picture.php), kan du overvake dei frå denne fana.

                      +
                    • Global statistikk: visingar pr. år.
                    • +
                    • Årleg statistikk: visingar pr. month i det valde året.
                    • +
                    • Månadleg statistikk: visingar pr. dag i den valde månaden.
                    • +
                    • Dagleg statistikk: visingar pr. time på den valde dagen.
                    • +
                    + +

                    Søk

                    +
                      +

                      Om du har vald å lagre sidevisingar (index.php og picture.php), kan du bla i detaljar i denne fanna ved hjelp av ulike filter.

                      +
                    • Filtrer på dato: vel eit datointervall å søke i ved å seta start og slutt dato.
                    • +
                    • Filtrer på type element: vel type element for statistikk for den type element.
                    • +
                    • Filtrer på brukar: vel brukaren for statistikk knytt til den brukaren.
                    • +
                    • Filtrer på bilet-identifikator (ID): vel ein bilet-identifikator (ID) for statustikk om dette biletet.
                    • +
                    • Filtrer på namn på fila: vel eit filnamn for statistikk om denne fila.
                    • +
                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/notification_by_mail.html b/sources/language/nn_NO/help/notification_by_mail.html new file mode 100755 index 0000000..566ffd0 --- /dev/null +++ b/sources/language/nn_NO/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

                    Varsling på e-post (Notification By Mail - NBM)

                    + +

                    Konfigurering og handtering av e-postvarsling til brukarane for å varsle dei om endringar på galleriet.

                    + +

                    Dette skjermbiletet har tre arkfaner:

                    + +

                    Innstillingar

                    +

                    Tilgjengeleg bare for webmaster. Denne set opp eigenskapar for e-postvarsling.

                    + +

                    Abonner

                    +

                    Tilgjengeleg bare for webmaster. Denne arkfana handterar abonnering på e-postvarsling. Legg brukarar til lista over abonenntar for at dei skal få varsling på e-post.

                    + +

                    Send

                    +

                    Tilgjengeleg bare for webmaster og administratorar. Denne arkfana gjev administratorar tilgang til å sende e-postvarsel til brukarar som har abonnera.

                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/permalinks.html b/sources/language/nn_NO/help/permalinks.html new file mode 100755 index 0000000..d5164fe --- /dev/null +++ b/sources/language/nn_NO/help/permalinks.html @@ -0,0 +1,7 @@ +

                    Permalenker

                    + +

                    Permalenker blir bruka til å lage URL til ablumet enklare å hugse. Når eit album har ei definera permalenke, trengst ikkje ID til ablument i URL lenger.

                    + +

                    Når ei permalenke blir sletta, kan du lagre den i permalenke-historikken, slik at eksterne lenker til sider i Piwigo galleriet framleis vil verke. I tabellen for permalenke-historikken kan du sjå datoen då permalenka vart sletta, sist den var i bruk og antal gonger permalenka har vorte bruka.

                    + +

                    Merk at permalenker må vera unike for kvart album. Permalenker i historikken kan heller ikkje vera definera meir enn ei gong.

                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/photos_add_ftp.html b/sources/language/nn_NO/help/photos_add_ftp.html new file mode 100755 index 0000000..f44c646 --- /dev/null +++ b/sources/language/nn_NO/help/photos_add_ftp.html @@ -0,0 +1,66 @@ +
                    + Kvikkstart + +
                      +
                    1. Lag ei mappe på din datamaskin.
                    2. + +
                    3. Kopier nokre bilete til denne mappa, skaler dei for vising på web. Varsel: namn på mapper og filer kan bare innehalde bokstavar (a - z, A - Z), tal, "-", "_" or ".". Ikkje bruk mellomrom eller spesielle tegn.
                    4. + +
                    5. Med ein FTP-klient, kopier mappa til "galleries" mappa i din Piwigo installasjon.
                    6. + +
                    7. Logg inn på ditt galleri og gå til Administrasjon og klikk på den store Synkronisering-knappen.
                    8. +
                    + +

                    Gratulere! Du har nå laga ditt fyrste album i biletgalleriet.

                    +
                    + +
                    + Organisering av mapper og filer + +
                      + +
                    • + +

                      Albummapper er i Piwigo-mappa + "galleries". Her er mappestrukturen for eit lite galleri (men med bruk av mange funksjonar):

                      + +
                      +galleries
                      +|-- bryllaup
                      +|   |-- vielse
                      +|   |   |-- mottaking
                      +|   |   |   |-- olav-aleine.jpg
                      +|   |   |   +-- kari-aleie.jpg
                      +|   |   +-- avreise
                      +|   |       +-- olav-og-kari.jpg
                      +|   +-- fest
                      +|       |-- dansarar001.jpg
                      +|       |-- dansarar002.jpg
                      +|       +-- dansarar003.jpg
                      ++-- bryllaupsreise
                      +    |-- hotell.png
                      +    |-- video-fraa-fly.avi
                      +    +-- pwg_representative
                      +        +-- video-fraa-fly.jpg
                      +
                      + +
                    • + +
                    • Bortsett frå "pwg_representative" (sjå forklaring under), vil kvar mappe under "galleries" lage eit album. Det er ingen avgrensing på djubde.
                    • + +
                    • Som utgangspunkt er eit element representera av ei file. Ei fil kan vera eit + Piwigo element om filtypa er blant file_ext + konfigurasjons-eigenskapan (sjå include/config_default.inc.php file). Ei fil kan vera eit bilete om filtypa + er blant picture_ext + konfigurasjons-eigenskapan.
                    • + +
                    • Ingen bilet-element (video, lyd, tekstfiler, eller kva som helst...) er som standard vist med eit ikon som samsvarar med filtypa. Valfritt, kan du knytte til ei miniatyrbilete og ein representatnt--fil til ei fil (sjå video.avi i dømet over).
                    • + +
                    • Varsel: namn på mapper og filer kan bare innehalde bokstavar (a - z, A - Z), tal, "-", "_" or ".". Ikkje bruk mellomrom eller spesielle tegn.
                    • + +
                    • Når bilete er plassera korrekt i mapper, gå til: Administrasjon » Verktøy » + Synkroniser
                    • + +
                    +
                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/search.html b/sources/language/nn_NO/help/search.html new file mode 100755 index 0000000..a859ee6 --- /dev/null +++ b/sources/language/nn_NO/help/search.html @@ -0,0 +1,23 @@ +

                    Søk

                    + +

                    Denne sida let deg søke etter bilete frå heile galleriet.

                    + +
                    + +
                    Søk etter ord
                    +
                    Søk etter eit eller fleire ord i attributtane til bilete i galleriet. + Bruk * som tegn for oppgje bare delar av ordet.
                    + +
                    Søk etter fotograf
                    +
                    Bruk * som tegn for oppgje bare delar av namnet.
                    + +
                    Datosøk
                    +
                    Velg ein dato eller ein sluttdato for eit søk. Lat datofelted vera tomt + dersom du vil lage "før dato" spørring. Året i siste felted må skrivast inn + på fylgjande format: ÅÅÅÅ (døme: 2004)
                    + +
                    Søk etter album
                    +
                    Velg album (eit eller fleire) du vil søke etter. Alla + underalbum kan bli søkt i dersom du i foreldrealbumet aktiverar søk i underalbum.
                    + +
                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/synchronize.html b/sources/language/nn_NO/help/synchronize.html new file mode 100755 index 0000000..5629561 --- /dev/null +++ b/sources/language/nn_NO/help/synchronize.html @@ -0,0 +1,14 @@ +

                    Synkronisering

                    + +

                    Det er to typar synkronisering:

                    +
                      +
                    • katalogar/filer
                    • +
                    • metadata for filer (bilete)
                    • +
                    + +

                    Synkronisering av katalogar og filer handlar om å oppdatere katalogstrukturen med albumstrukturen i databasen. +Synkronisering av metadata for filer (bilete) handlar om å oppdatere informasjon om bilete slik som filstørrelse, dimensjonar (i bildepunkt), EXIF eller IPTC informasjon med informasjon i databasen.

                    + +

                    Når synkronisering av opplasta bilete skal gjerast i galleriet, må du fyrst synkronisere katalogar og filer.

                    + +

                    Synkroniseringsprosessen kan ta lang tid (kjem an på kor mykje serveren er lasta og antal element som skal handterast), det er difor mogleg å gjera det for eit og eit album.

                    \ No newline at end of file diff --git a/sources/language/nn_NO/help/user_list.html b/sources/language/nn_NO/help/user_list.html new file mode 100755 index 0000000..187c2f8 --- /dev/null +++ b/sources/language/nn_NO/help/user_list.html @@ -0,0 +1,23 @@ +

                    Brukarliste

                    + +

                    Her håndterar du brukarane i ditt Piwigo-galleri.

                    + +

                    Legg til brukar

                    + +

                    Ein administrator kan manuelt legge til brukarar. For kvar brukar må det leggast inn brukarnamn, passord og ei gyldig e-postadresse.

                    + +

                    Brukarliste

                    + +

                    Lista over eksisterande brukarar kan filtrerast på brukarnamn (bruk * som jokertegn), gruppe eller status. Lista kan sorterast på oppretta dato eller brukarnamn i stigande eller fallande retning.

                    + +

                    Dette skjermbilete gjev tilgang til å endre fleire brukarar om gongen. Fylgjande endringar kan gjerast:

                    + +
                      +
                    • slett brukar (treng stadfesting)
                    • +
                    • endre status på brukar
                    • +
                    • legge til eller ta bort frå grupper
                    • +
                    • endre visingseigenskapar
                    • +
                    • endre andre innstillingar
                    • +
                    + +

                    Endringane vil bli gjort på vald brukar (som standard) eller alle brukaran vist i den filtrera lista.

                    \ No newline at end of file diff --git a/sources/language/nn_NO/install.lang.php b/sources/language/nn_NO/install.lang.php new file mode 100755 index 0000000..ee6a8f2 --- /dev/null +++ b/sources/language/nn_NO/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Treng du hjelp? Still spørsmålet ditt på Piwigo sitt forum.'; +$lang['localhost or other, supplied by your host provider'] = 'localhost eller servernamn gjeve av administrator for server'; +?> \ No newline at end of file diff --git a/sources/language/nn_NO/iso.txt b/sources/language/nn_NO/iso.txt new file mode 100644 index 0000000..bf7b0f6 --- /dev/null +++ b/sources/language/nn_NO/iso.txt @@ -0,0 +1 @@ +Nynorsk [NO] \ No newline at end of file diff --git a/sources/language/nn_NO/nn_NO.jpg b/sources/language/nn_NO/nn_NO.jpg new file mode 100644 index 0000000..68a8c09 Binary files /dev/null and b/sources/language/nn_NO/nn_NO.jpg differ diff --git a/sources/language/nn_NO/upgrade.lang.php b/sources/language/nn_NO/upgrade.lang.php new file mode 100755 index 0000000..830b779 --- /dev/null +++ b/sources/language/nn_NO/upgrade.lang.php @@ -0,0 +1,40 @@ +%s, before ?>, insert:'] = 'I %s, før ?>, sett inn:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Bare administrator kan utføre ei oppgradering: logg inn under.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Bare miniatyrbilete-prefix og webmaster e-postadresse har blitt teke vare på frå den tidlegare versjonen'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Utfør ein vedlikehaldssjekk i [Administrasjon>Verktøy>Vedlikehald] om du oppdagar eit problem.'; +$lang['SQL queries'] = 'SQL-spørjingar'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Denne sida føreslår å oppgradere databasen frå din gamle Piwigo-versjon til den nye versjonen. Oppgraderingsassistenten meiner du kjøyrer versjon %s (eller ein samsvarande versjon)'; +$lang['User permissions and group permissions have been erased'] = 'Rettar til brukarar og grupper har blitt sletta'; +$lang['You do not have access rights to run upgrade'] = 'Du har ikkje løyve til å starte oppgradering'; +$lang['total SQL time'] = 'total SQL-tid'; +$lang['total upgrade time'] = 'total tid for oppgradering'; +$lang['Statistics'] = 'Statistikk'; +$lang['Upgrade'] = 'Oppgradering'; +$lang['Upgrade from version %s to %s'] = 'Oppgrader frå vesjon %s til %s'; +$lang['Upgrade informations'] = 'Oppgraderingsinformasjon'; +?> \ No newline at end of file diff --git a/sources/language/pl_PL/about.html b/sources/language/pl_PL/about.html new file mode 100644 index 0000000..6747173 --- /dev/null +++ b/sources/language/pl_PL/about.html @@ -0,0 +1,19 @@ +

                    Ta galeria zdjęć bazuje na Piwigo.

                    + +

                    Piwigo jest oprogramowaniem typu galeria zdjęć www, stworzone przez programistów oraz aktywną społeczność użytkowników. Dzięki rozszerzeniom Piwigo jest łatwe w dostosowaniu do własnych potrzeb. A co najważniejsze Piwigo jest oprogramowaniem otwartym.

                    + +

                    Odwiedź stronę Piwigo

                    + +

                    Polskie tłumaczenie Piwigo jest utrzymywane przez (w kolejności alfabetycznej): +

                    + .... podziękowania dla nich

                    + diff --git a/sources/language/pl_PL/admin.lang.php b/sources/language/pl_PL/admin.lang.php new file mode 100644 index 0000000..a83153b --- /dev/null +++ b/sources/language/pl_PL/admin.lang.php @@ -0,0 +1,976 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader służy do Piwigo Uploader. pLoader przygotuje zdjęcia i prześle je do Twojej galerii Piwigo, z Twojego komputera.'; +$lang['Guest Settings'] = 'Ustawienia gości'; +$lang['Main Page'] = 'Strona główna'; +$lang['Photo Page'] = 'Strona zdjęć'; +$lang['Activate Navigation Bar'] = 'Aktywuj pasek nawigacji'; +$lang['Activate Navigation Thumbnails'] = 'Aktywuj pasek nawigacji z miniaturami'; +$lang['Activate icon "%s"'] = 'Aktywuj ikonę "%s"'; +$lang['Photo Properties'] = 'Właściwości zdjęcia'; +$lang['Allow user customization'] = 'Zezwól na dostosowanie przez użytkowników'; +$lang['Languages'] = 'Języki'; +$lang['Installed Languages'] = 'Zainstalowane języki'; +$lang['Add New Language'] = 'Dodaj nowy język'; +$lang['Language has been successfully installed'] = 'Język został zainstalowany pomyślnie'; +$lang['Select:'] = 'Wybierz:'; +$lang['None'] = 'Brak'; +$lang['Invert'] = 'Odwróć'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nie można zdezaktywować szablonu wyglądu, ponieważ przynajmniej jeden musi być aktywny.'; +$lang['Webmaster status is required.'] = 'Status Webmastera jest wymagany.'; +$lang['Bound Theme'] = 'Powiązany szablon wyglądu '; +$lang['Allow rating'] = 'Zezwól na oceny'; +$lang['Select at least one comment'] = 'Wybierz przynajmniej jeden komentarz'; +$lang['Active Plugins'] = 'Aktywne wtyczki'; +$lang['Inactive Plugins'] = 'Nieaktywne wtyczki'; +$lang['Missing Plugins'] = 'Brakujące wtyczki'; +$lang['Uninstalled Plugins'] = 'Niezainstalowane wtyczki'; +$lang['By %s'] = 'Przez %s'; +$lang['Visit plugin site'] = 'Odwiedź stronę z wtyczkami'; +$lang['Active Languages'] = 'Aktywne języki'; +$lang['Delete this language'] = 'Usuń ten język'; +$lang['Forbid this language to users'] = 'Zabroń używania tego języka użytkownikom'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nie można zdezaktywować tego języka. Najpierw ustaw inny język jako domyślny.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nie można zdezaktywować tego języka, ponieważ musisz posiadać co najmniej jeden język.'; +$lang['Inactive Languages'] = 'Nieaktywne języki'; +$lang['Make this language available to users'] = 'Daj dostęp do tego języka użytkownikom'; +$lang['Set as default language for unregistered and new users'] = 'Ustaw jako domyślny język dla niezarejestrowanych oraz nowych użytkowników'; +$lang['Add Photos'] = 'Dodaj zdjęcia'; +$lang['The following tag was deleted'] = 'Ten tag został usunięty'; +$lang['Virtual Links'] = 'Wirtualne linki'; +$lang['There is no other language available.'] = 'Nie ma dostępnego innego języka.'; +$lang['There is no other plugin available.'] = 'Nie ma dostępnej innej wtyczki.'; +$lang['There is no other theme available.'] = 'Nie ma dostępnego innego szablon wyglądu .'; +$lang['By rank'] = 'Po rankingu'; +$lang['Manual order'] = 'Własna kolejność'; +$lang['Add another set of photos'] = 'Dodaj inny zbiór zdjęć'; +$lang['Order of menubar items has been updated successfully.'] = 'Kolejność elementów paska menu została zaktualizowana pomyślnie.'; +$lang['This theme was not designed to be directly activated'] = 'Szablon wyglądu nie został zaprojektowany tak, by aktywować go bezpośrednio.'; +$lang['Who can see this photo?'] = 'Kto może oglądać to zdjęcie?'; +$lang['Pending Comments'] = 'Oczekujące komentarze'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'W twoim pliku php.ini, parametr upload_max_filesize (%sB) jest większy niż post_max_size (%sB), powinieneś zmienić te ustawienia'; +$lang['Exif extension not available, admin should disable exif use'] = 'Rozszerzenie exif jest nie dostępne, administrator powinien usunąć korzystanie z exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Wgrywany plik przekracza rozmiar zdefiniowany w parametrze upload_max_filesize w pliku php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Wgrywany plik przekracza rozmiar zdefiniowany w parametrze post_max_size w pliku php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Wgrywany plik przekracza rozmiar zdefiniowany w parametrze MAX_FILE_SIZE w formularzu HTML'; +$lang['The uploaded file was only partially uploaded'] = 'Plik został wgrany tylko częściowo'; +$lang['No file was uploaded'] = 'Nie został wgrany żaden plik'; +$lang['Missing a temporary folder'] = 'Brak katalogu tymczasowego'; +$lang['Failed to write file to disk'] = 'Błąd zapisu na dysku'; +$lang['File upload stopped by extension'] = 'Wgrywanie pliku zostało zatrzymane przez rozszerzenie'; +$lang['Unknown upload error'] = 'Nieznany błąd podczas wgrywania'; +$lang['Error on file "%s" : %s'] = 'Błąd w pliku"%s" : %s'; +$lang['Menu Management'] = 'Menu'; +$lang['automatic order'] = 'automatyczna kolejność'; +$lang['manual order'] = 'własna kolejność'; +$lang['Albums automatically sorted'] = 'Albumy sortowane automatycznie'; +$lang['Batch Manager'] = 'Manadżer wsadowy'; +$lang['include child albums'] = 'zawieraj podalbumy'; +$lang['Selection'] = 'Zaznaczenie'; +$lang['Action'] = 'Akcja'; +$lang['Set author'] = 'Ustaw autora'; +$lang['Set title'] = 'Ustaw tytuł'; +$lang['Set creation date'] = 'Ustaw datę utworzenia'; +$lang['Apply action'] = 'Zastosuj akcje'; +$lang['on the %d selected photos'] = 'na %d zaznaczonych zdjęć'; +$lang['%d of %d photos selected'] = '%d z %d zaznaczonych zdjęć'; +$lang['No photo selected, %d photos in current set'] = 'Nie zostało wybrane żadne zdjęcie, %d zdjęć w aktualnym zestawie'; +$lang['All %d photos are selected'] = '%d wszystkich zaznaczonych zdjęć'; +$lang['remove this filter'] = 'usuń ten filtr'; +$lang['Duplicates'] = 'duplikaty'; +$lang['Add a filter'] = 'Dodaj filtr'; +$lang['Remove all filters'] = 'Usuń wszystkie filtry'; +$lang['Refresh photo set'] = 'Odśwież zestaw zdjęć'; +$lang['The whole page'] = 'Całą strona'; +$lang['The whole set'] = 'Cały zestaw'; +$lang['No photo in the current set.'] = 'Brak zdjęć w wybranym zestawie.'; +$lang['No photo selected, no action possible.'] = 'Brak wybranych zdjęć, niedostępna jest żadna akcja.'; +$lang['Choose an action'] = 'Wybierz akcję'; +$lang['remove author'] = 'usuń autora'; +$lang['Type here the author name'] = 'Wpisz tutaj nazwę autora'; +$lang['remove title'] = 'usuń tytuł'; +$lang['Type here the title'] = 'Wpisz tutaj tytuł'; +$lang['remove creation date'] = 'usuń datę stworzenia'; +$lang['Album photos associated to the following albums: %s'] = 'Zdjęcia albumu są powiązane z następującymi albumami: %s'; +$lang['Delete orphan tags'] = 'Usuń niepowiązane tagi'; +$lang['delete photo'] = 'usuń zdjęcie'; +$lang['Orphan tags deleted'] = 'Niepowiązane tagi usunięto'; +$lang['Remove from caddie'] = 'Usuń z koszyk'; +$lang['Week starts on'] = 'Tydzień zaczyna się w'; +$lang['You have %d orphan tags: %s.'] = 'Masz %d niepowiązanych tagów: %s.'; +$lang['Themes which need upgrade'] = 'Szablony wyglądu wymagające aktualizacji'; +$lang['Languages which need upgrade'] = 'Języki wymagające aktualizacji'; +$lang['All themes are up to date.'] = 'Wszystkie szablony wyglądu są aktualne.'; +$lang['All plugins are up to date.'] = 'Wszystkie wtyczki są aktualne.'; +$lang['All languages are up to date.'] = 'Wszystkie języki są aktualne.'; +$lang['Visit theme site'] = 'Odwiedź stronę szablonu wyglądu'; +$lang['Visit language site'] = 'Odwiedź stronę języka'; +$lang['New Version'] = 'Nowa wersja'; +$lang['Obsolete Plugins'] = 'Przestałe wtyczki'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UWAGA! Ta wtyczka wydaje się nie być kompatybilna z tą wersją Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Czy jednak chcesz aktywować?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TA WTYCZKA JEST TERAZ CZĘŚCIĄ PODSTAWOWEJ WERSJI PIWIGO! ODINSTALUJ JĄ TERAZ!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'BŁĄD: BRAK WTYCZKI CHOĆ JEST ZAINSTALOWANA! ODINSTALUJ JĄ TERAZ.'; +$lang['display'] = 'wyświetlanie'; +$lang['new'] = 'nowy'; +$lang['No results'] = 'Brak wyników'; +$lang['Searching...'] = 'Wyszukiwanie...'; +$lang['Type in a search term'] = 'Wpisz frazę do wyszukania'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktywuj ikonę "nowe" obok albumów i zdjęć'; +$lang['Deactivate all'] = 'Deaktywuj wszystko'; +$lang['Default photos order'] = 'Domślne sortowanie zdjęć'; +$lang['Restore'] = 'Przywróć'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Przywróć domyślną konfigurację. Stracisz ustawienia wtyczek!'; +$lang['Show menubar'] = 'Pokazuj belkę z menu'; +$lang['Thumbnails generation in progress...'] = 'Trwa tworzenie miniatur...'; +$lang['Photos generation in progress...'] = 'Trwa tworzenie zdjęć...'; +$lang['%s photos have been regenerated'] = 'Stworzono %s zdjęć'; +$lang['%s photos can not be regenerated'] = '%s zdjęć nie mogło zostać stworzonych'; +$lang['Updates'] = 'Aktualizacje'; +$lang['Update in progress... Please wait.'] = 'Trwa aktualizacja... Proszę czekać.'; +$lang['Ignore this update'] = 'Ignoruj tę aktualizację'; +$lang['Reset ignored updates'] = 'Zresetuj ignorowane aktualizacje'; +$lang['Update All'] = 'Aktualizuj wszystko'; +$lang['ERROR'] = 'BŁĄD'; +$lang['Update Complete'] = 'Aktualizacja zakończona'; +$lang['Rate'] = 'Ocena'; +$lang['Average rate'] = 'Średnia ocena'; +$lang['Learn more'] = 'Dowiedz się więcej'; +$lang['Add a criteria'] = 'Dodaj kryteria'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nie możesz zdefiniować domyślnej kolejności zdjęć, gdyż stworzono własne ustawienia w konfiguracji plików lokalnych .'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Określiłeś $conf[\'order_by\'] w lokalnym plików konfiguracji. Parametr ten jest przestarzały. Usuń go lub zmień jego nazwę na $conf[\'order_by_custom\'] !'; +$lang['Piwigo Update'] = 'Aktualizacja Piwigo'; +$lang['Extensions Update'] = 'Aktualizacja rozszerzeń'; +$lang['All extensions are up to date.'] = 'Wszystkie rozszerzenia są aktualne.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Poniższe rozszerzenia mogą być nieaktualne z nową wersją Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Poniższe szablony wyglądu mogą być nieaktualne z nową wersją Piwigo:'; +$lang['I decide to update anyway'] = 'Aktualizuj mimo wszystko'; +$lang['Update to Piwigo %s'] = 'Aktualizuj do Piwigo %s'; +$lang['Two updates are available'] = 'Dostępne są dwie aktualizacje'; +$lang['This is a minor update, with only bug corrections.'] = 'Jest to mała aktualizacja usuwająca tylko znalezione błędy.'; +$lang['This is a major update, with new exciting features.'] = 'Jest to duża aktualizacja z nowymi funkcjami.'; +$lang['Some themes and plugins may be not available yet.'] = 'Niektóre szablony wyglądu i rozszerzenia mogą nie być jeszcze dostępne.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Możesz aktualizować bezpośrednio do Piwigo %s, bez potrzeby wcześniejszej aktualizacji do wersji %s (zalecane).'; +$lang['Save Template Directory'] = 'Zachowaj katalog szablonów'; +$lang['Dump Database'] = 'Zrzut Bazy Danych'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Dołącz informacje o historii (Uwaga: limit pamięci serwera może zostać przekroczony)'; +$lang['Unable to dump database.'] = 'Błąd zrzucania bazy danych.'; +$lang['Some upgrades are available for extensions.'] = 'Niektóre rozszerzenia posiadają aktualizacje.'; +$lang['Ignore All'] = 'Ignoruj wszystko'; +$lang['Crop'] = 'Przytnij'; +$lang['Width'] = 'Szerokość'; +$lang['Height'] = 'Wysokość'; +$lang['Follow Orientation'] = 'Zgodnie z orientacją'; +$lang['Graphics Library'] = 'Biblioteki Graficzne'; +$lang['... or '] = '... lub '; +$lang['Create'] = 'Utwórz'; +$lang['Start Upload'] = 'Rozpocznij wysyłanie'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Używasz trybu Flash. Problem? Spróbuj interfejsu przeglądarkowego.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Używasz trybu przeglądarki. Wypróbuj trybu Flash.'; +$lang['Maximum file size: %sB.'] = 'Maksymalny rozmiar pliku: %sB.'; +$lang['Allowed file types: %s.'] = 'Dostępne typy plików: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Przybliżona maksymalna rozdzielczość: %dM pikseli (tj. %dx%d pikseli).'; +$lang['Manage Permissions'] = 'Zarządzaj uprawnieniami'; +$lang['Photo %s of %s'] = 'Zdjęcie %s z %s'; +$lang['show details'] = 'pokaż szczegóły'; +$lang['hide details'] = 'ukryj szczegóły'; +$lang['Merge tags'] = 'Połącz tagi'; +$lang['Select the destination tag'] = 'Wybierz tag docelowy'; +$lang['(this tag will be deleted)'] = '(ten tag zostanie usunięty)'; +$lang['Confirm merge'] = 'Zatwierdź łączenie'; +$lang['Merge selected tags'] = 'Połącz wybrane tagi'; +$lang['No destination tag selected'] = 'Nie wybrano taga docelowego'; +$lang['Tags %s merged into tag %s'] = 'Tagi %s połączono w tag %s'; +$lang['Select at least two tags for merging'] = 'Wybierz co najmniej dwa tagi do łączenia'; +$lang['Select an album'] = 'Wybierz album'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Piwigo stworzy domyślnie nową stronę z twoich zdjęć w jakości HD.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Jeśli wersja HD jest niedostępna a bieżący rozmiar jest większy niż rozmiar zmiany, Piwigo przesunie zdjęcia jako HD i stworzy z nich pomniejszone wersje.'; +$lang['An error has occured during upgrade.'] = 'Wystąpił błąd podczas aktualizacji.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
                    Click here to show log error.'] = 'Wystąpił błąd podczas rozpokowywania. Sprawdź uprawnienia do plików w katalogu gdize jest zainstalowane piwigo.
                    Kliknij aby zobaczyć błędy.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nie może ściągnąć pliku aktualizacji z serwera'; +$lang['Zoom'] = 'Powiększenie'; +$lang['Add to caddie'] = 'Dodaj do koszyka'; +$lang['Add tags'] = 'Dodaj tagi'; +$lang['Last import'] = 'Ostatnie importowanie'; +$lang['Photo name'] = 'Nazwa zdjęcia'; +$lang['Predefined filter'] = 'Filtr predefiniowany'; +$lang['With no album'] = 'Bez albumu'; +$lang['With no tag'] = 'Bez tagów'; +$lang['With no virtual album'] = 'Bez wirtualnego albumu'; +$lang['%s has been successfully updated.'] = '%s zostało pomyślnie zaktualizowanych.'; +$lang['Activate comments'] = 'Aktywuj komentarze'; +$lang['Default comments order'] = 'Domyślna kolejność komentarzy'; +$lang['Send connection settings by email'] = 'Wyślij dane logowania emailem'; +$lang['The original image quality must be a number between %d and %d'] = 'Oryginalna jakość musi być liczbą pomiędzy %d i %d'; +$lang['The original maximum height must be a number between %d and %d'] = ' Oryginalna maksymalna wysokość musi być liczbą pomiędzy %d i %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Oryginalna maksymalna szerokość musi być liczbą pomiędzy %d i %d'; +$lang['Resize after upload'] = 'Zmień rozmiar po wgraniu'; +$lang['Original Size'] = 'Oryginalny Rozmiar'; +$lang['A locked gallery is only visible to administrators'] = 'Zablokowana galeria jest widoczna tylko dla administratorów'; +$lang['Unlock gallery'] = 'Odblokuj galerię'; +$lang['Gallery unlocked'] = 'Galeria odblokowana'; +$lang['Notify administrators when a comment is'] = 'Powiadom administratorów jeżeli komentarz jest'; +$lang['modified'] = 'zmodyfikowany'; +$lang['pending validation'] = 'oczekuje na zatwierdzenie'; +$lang['Save visits in history for'] = 'Zapisz historię odwiedzin dla'; +$lang['simple visitors'] = 'zwykli użytkownicy'; +$lang['registered users'] = 'zarejestrowanych użytkowników'; +$lang['administrators'] = 'administratorów'; +$lang['This album contains %d photos, added on %s.'] = 'Ten album zawiera %d zdjęć, dodanych %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Ten album zawiera %d zdjęć, dodanych między %s a %s.'; +$lang['This album contains no photo.'] = 'Ten album nie zawiera zdjęć.'; +$lang['Not cropped correctly?'] = 'Rozmiar nie zmieniony poprawnie?'; +$lang['Center of interest'] = 'Centrum zainteresowania'; +$lang['Move to album'] = 'Przenieś do albumu'; + +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo na Androida aplikacja daje możliwość połączenia Twojej galerii Piwigo z Twoim telefonem lub tabletem opartym na Androidzie. Możesz tworzyć albumy i wysyłać wiele zdjęć jednocześnie.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo na iOS aplikacja daje możliwość połączenia Twojej galerii Piwigo z Twoim iPhonem, iPadem lub iPodem. Możesz tworzyć albumy i wysyłać wiele zdjęć jednocześnie.'; +$lang['Applications'] = 'Aplikacje'; +$lang['Available on'] = 'Dostępne na'; +$lang['Available versions for'] = 'Wersje dostępne na'; +$lang['Cancel'] = 'Anuluj'; +$lang['Piwigo for Android'] = 'Piwigo na Androida'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo na iOS (iPhone, iPad, iPod Touch)'; +$lang['any visitor can see this album'] = 'wszyscy odwiedzający galerię zobaczą ten album'; +$lang['apply automatic sort order'] = 'Zastosuj automatyczną kolejność sortowania'; +$lang['Automatic sort order'] = 'Automatyczna kolejność sortowania'; +$lang['cancel manual order'] = 'Anuluj własne ustawienia kolejności'; +$lang['No group is permitted to see this private album'] = 'Do tego prywatnego albumu nie przydzielono żadnej grupy'; +$lang['Save manual order'] = 'Zapisz własne ustawienia kolejności'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'odwiedzający galerię muszą się zalogować i mieć uprawnienia do oglądania tego albumu'; +$lang['You can activate only one mobile theme.'] = 'Możesz aktywować tylko jeden mobilny szablon wyglądu'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u użytkowników dostało zezwolenie automatycznie, bo należą do grupy, której udzielono zezwolenia'; +$lang['custom'] = 'Własne'; +$lang['Delete multiple size images'] = 'Kasuj obrazy w wielu rozmiarach'; +$lang['Generate multiple size images'] = 'Twórz obrazy w wielu rozmiarach'; +$lang['Groups and users'] = 'Użytkownicy i grupy'; +$lang['include photos with lower privacy level'] = 'dołącz zdjęcia z niższym poziomem prywatności'; +$lang['List'] = 'Lista'; +$lang['Permission granted for groups'] = 'Zezwolenia udzielone grupom'; +$lang['Permission granted for users'] = 'Zezwolenia udzielone użytkownikom'; +$lang['Permission management'] = 'Zarządzanie zezwoleniami'; +$lang['Select groups...'] = 'Wybierz grupy...'; +$lang['Select users...'] = 'Wybierz użytkowników...'; +$lang['There is no group in this gallery.'] = 'Do tej galerii nie przydzielono żadnej grupy'; +$lang['Web Form'] = 'Forumlarz www'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom jest oprogramowaniem do zdjęć zaprojektowanym do zarządzania dużą ilością cyfrowych obrazów oraz prac po ich stworzeniu.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Na Linux po prostu instalujesz Shotwell swoim menadżerem pakietów a następnie aktywujesz opcję publikowania Piwigo.'; +$lang['Piwigo publish plugin for digiKam'] = 'Wtyczka Piwigo dla digiKam.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Wtyczka Piwigo Publish dla Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Wtyczka Piwigo dla Shotwell.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell jest oprogramowaniem typu open source do zarządzania zdjęciami na systemie Linux. Jest domyślnym menadżerem zdjęć dla dystrybucji Ubuntu oraz Fedora.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Wtyczka Piwigo Publish powala na eksportowanie i synchronizację zdjęć bezpośrednio z Lightroom do Twojej galerii Piwigo.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture jest narzędziem do poprawiania oraz zarządzania bibliotekami zdjęć na Mac\'u.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture jest zaprojektowany dla profesjonalnych fotografów, ale posiada prostotę iPhoto.'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam jest zaawansowanym, darmowym oprogramowaniem do zarządzania zdjęciami dla systemów Linux, Windows oraz MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam jest zaprojektowany dla fotografów, którzy chcą przeglądac, zarządzać, edytować, polepszać, organizować, tagować oraz współdzielić zdjęcia.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funkcje to m.in. przeglądanie, tworzenie albumów oraz wgrywanie zdjęć.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto jest domyślnym oprogramowaniem zarządzania zdjęciami dla MacOSX. Wtyczka eksportu Piwigo pozwoli Ci tworzyć nowe albumy i eksportować zdjęcia bezpośrednio z iPhoto do galerii Piwigo.'; +$lang['Piwigo export plugin for Aperture'] = 'Wtyczka Piwigo dla Aperture.'; +$lang['Piwigo export plugin for iPhoto'] = 'Wtyczka Piwigo dla iPhoto.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Klient RemoteGallery dla Androida) jest klientem Piwigo na platformę Android (open source na licencji GPLv3).'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Wtyczka eksportu Piwigo, pozwala Ci na łatwe tworzenie albumów oraz eksport zdjęć.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Aby eksportować zdjęcia z digiKam, zainstaluj digiKam oraz wtyczki Kipi.'; +$lang['Apply watermark if height is bigger than'] = 'Dodaj znak wodny, jeśli wysokość jest większa niż'; +$lang['Apply watermark if width is bigger than'] = 'Dodaj znak wodny, jeśli szerokość jest większa niż'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Domyślnie, wybierany jest środek zdjęcia.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Dla obciętych zdjęć np. do kwadratu, Piwigo będzie starać się wyśrodkować na interesującym obszarze zdjęcia.'; +$lang['Opacity'] = 'Przezroczystość'; +$lang['Photo sizes with crop'] = 'Rozmiary zdjęć po obcięciu'; +$lang['Select a file'] = 'Wybierz plik'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Zaznacz myszką nowy obszar zdjęcia.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interesujący obszar zdjęcia, to ten w którym dzieje się najwięcej.'; +$lang['X Position'] = 'Pozycja X'; +$lang['X Repeat'] = 'Powtarzaj X'; +$lang['Y Position'] = 'Pozycja Y'; +$lang['add a new watermark'] = 'dodaj nowy znak wodny'; +$lang['bottom left corner'] = 'dolny lewy róg'; +$lang['bottom right corner'] = 'prawy dolny róg'; +$lang['middle'] = 'środek'; +$lang['top left corner'] = 'lewy górny róg'; +$lang['top right corner'] = 'prawy górny róg'; +$lang['Multiple Size'] = 'Obrazy o wielu rozmiarach'; +$lang['%d day'] = '%d dzień'; +$lang['%d days'] = '%d dni'; +$lang['%d hour'] = '%d godzina'; +$lang['%d hours'] = '%d godzin/y'; +$lang['%d minute'] = '%d minuta'; +$lang['%d minutes'] = '%d minut/y'; +$lang['%d month'] = '%d miesiąc'; +$lang['%d months'] = '%d miesiące/miesięcy'; +$lang['%d second'] = '%d sekunda'; +$lang['%d seconds'] = '%d sekund/y'; +$lang['%d year'] = '%d rok'; +$lang['%d years'] = '%d lat/lata'; +$lang['%s ago'] = '%s temu'; +$lang['%s in the future'] = '%s w przyszłości'; +$lang['Added by %s'] = 'Dodane przez %s'; +$lang['Numeric identifier : %d'] = 'Identyfikator numeryczny: %d'; +$lang['Original file : %s'] = 'Oryginalny plik: %s'; +$lang['Posted %s on %s'] = 'Zamieszczone %s, data: %s'; +$lang['Rated %d times, score : %.2f'] = 'Ocenione %d razy, wynik: %.2f'; +$lang['Sharpen'] = 'Wyostrz'; +$lang['Visited %d times'] = 'Odwiedzone %s razy'; +$lang['Watermark'] = 'Znak wodny'; +$lang[' and %d virtuals'] = 'i %d wirtualnych'; +$lang['%d physicals'] = '%d fizycznych'; +$lang['%d week'] = '%d tydzień'; +$lang['%d weeks'] = '%d tygodnie'; +$lang['Edit photo'] = 'Edycja zdjęcia'; +$lang['create a new site'] = 'stwórz nową stronę'; +$lang['No order field selected'] = 'Nie wybrano sortowania'; +$lang['Duplicate selected tags'] = 'Zduplikuj wybrane tagi'; +$lang['Name of the duplicate'] = 'Nazwa duplikatu'; +$lang['Source tag'] = 'Tag źródłowy'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tag "%s" jest teraz duplikatem "%s"'; +$lang['Landscape'] = 'Krajobraz'; +$lang['Minimum height'] = 'Minimalna wysokość'; +$lang['Minimum width'] = 'Minimalna szerokość'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Portret'; +$lang['Manage photos'] = 'Zarządzaj zdjęciami'; +$lang['Number of albums per page'] = 'Liczba albumów na stronę'; +$lang['View in gallery'] = 'Obejrzyj w galerii'; +$lang['Ratio'] = 'Proporcje'; +$lang['between %d and %d pixels'] = 'pomiędzy %d i %d pikseli'; +$lang['between %.2f and %.2f'] = 'pomiędzy %.2f i %.2f'; +$lang['Duplicate'] = 'Duplikuj'; +$lang['Manage the members'] = 'Zarządzaj członkami'; +$lang['Merge selected groups'] = 'Połącz wybrane grupy'; +$lang['No group selected, no action possible.'] = 'Nie wybrano grup, nie można wykonywać żadnych akcji'; +$lang['No members to manage'] = 'Nie ma członków do zarządzania'; +$lang['Please select at least two groups'] = 'Wybierz conajmniej dwie grupy'; +$lang['Rename'] = 'Zmień nazwę'; +$lang['This group will be set to default'] = 'Ta grupa zostanie zaznaczona jako domyślna'; +$lang['This group will be unset to default'] = 'Ta grupa zostanie odznaczona jako domyślna'; +$lang['Type here the name of the new group'] = 'Wpisz nazwę nowej grupy'; +$lang['Purge user cache'] = 'Wyczyść pamięć podręczną użytkowników'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Wymiary zdjęcia zostaną zmniejszone do %dx%d pikseli.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Z powodu używania GD jako biblioteki graficznej nie będzie możliwa zmiana rozmiaru po wgraniu zdjęcia na serwer.'; +$lang['Select at least one tag'] = 'Wybierz co najmniej jeden tag'; +$lang['Basic settings'] = 'Podstawowe ustawienia'; +$lang['General'] = 'Ogólne'; +$lang['Mail theme'] = 'Motyw maila'; +$lang['Showing %s to %s of %s users'] = 'Wyświetlam %s do %s z %s użytkowników'; +$lang['(filtered from %s total users)'] = '(wyfiltrowany z %s wszystkich użytkowników)'; +$lang['Users modified'] = 'Użytkownicy zmodyfikowani'; +$lang['on the %d selected users'] = 'na %d wybranych użytkownikach'; +$lang['%d of %d users selected'] = 'wybrano %d z %d użytkowników'; +$lang['All %d users are selected'] = 'Każdy z %d użytkowników został wybrany'; +$lang['No matching user found'] = 'Nie odnaleziono pasującego użytkownika'; +$lang['No user selected of %d users'] = 'Nie wybrano żadnego z %d użytkowników'; +$lang['No user selected, no action possible.'] = 'Nie wybrano żadnego użytkownika, żadna akcja nie jest możliwa.'; +$lang['Update user'] = 'Zaktualizuj użytkownika'; +$lang['User %s added'] = 'Dodano użytkownika %s'; +$lang['User %s updated'] = 'Użytkownik %s został zaktualizowany'; +$lang['Change password'] = 'Zmień hasło'; +$lang['Change username'] = 'Zmień nazwę użytkownika'; +$lang['Last visit on %s, %s.'] = 'Ostatnia wizyta %s, %s.'; +$lang['Loading...'] = 'Wczytywanie...'; +$lang['Password updated'] = 'Hasło zostało zaktualizowane'; +$lang['Registered on %s, %s.'] = 'Zarejestrowany %s, %s.'; +$lang['Show %s users'] = 'Pokaż %s użytkowników'; +$lang['Close user details'] = 'Zamknij szczegóły użytkownika'; +$lang['Open user details'] = 'Otwórz szczegóły użytkownika'; +$lang['close'] = 'zamknij'; +?> \ No newline at end of file diff --git a/sources/language/pl_PL/common.lang.php b/sources/language/pl_PL/common.lang.php new file mode 100644 index 0000000..ab0e322 --- /dev/null +++ b/sources/language/pl_PL/common.lang.php @@ -0,0 +1,444 @@ +Edycja kategorii

              + +

              Informacje

              + +
                + +
              • nazwa: zmień nazwę kategorii (wirtualna zmiana nazwy dla fizycznie istniejącej kategorii).
              • + +
              • opis: daje ogólny obraz zawartości, + ten tekst będzie wyświetlany pod stroną miniaturami.
              • + +
              + +

              Przenieś

              + +

              Jeżeli dana kategoria jest wirtualna, to można ją przenieść. Przeniesienie kategorii oznacza zmianę kategorii nadrzędnej.

              + +

              Opcje

              + +
                + +
              • Typ dostępu: Zarządzanie uprawnieniami. Jeżeli ustawisz kategorię jako prywatną, to wszystkie jej podkategorie będą prywatne. Jeżeli ustawisz kategorię jako publiczną, to wszystkie jej podkategorie będą publiczne.
              • + +
              • Blokada: Kategoria i podkategorie są tymczasowo zablokowane na czas prac konserwacyjnych.
              • + +
              • Komentarze: Zautoryzowani użytkownicy mogą dodawać komentarze do elementów kategorii.
              • + +
              • Autoryzuj upload: Zautoryzowani użytkownicy mogą wgrywać pliki. Ta opcja jest możliwa tylko dla kategorii fizycznej (nie wirtualnej).
              • + +
              + +

              Możesz także zarządzać tymi opcjami poprzez ekran "Właściwości" +(ekrany Upload, Komentarze, Blokada, +Publiczny/Prywatny, Reprezentacyjny dostępne z Administracja, Kategorie, Właściwości).

              + +

              Kolejnośćsortowania

              + +

              Wybierz czy ma być sortowanie domyślne.

              + +

              Oznacza, że sortowanie będzie także dla podkategorii.

              + +

              Wybierz okreslony rodzaj sortowania dla kategorii.

              +
                +
              • Data utworzenia: Data utworzenia obrazu
              • +
              • Data wysłania: Data synchronizacji
              • +
              • Średnie oceny (*): Średnie oceny mogą zostać zmienione przez odwiedzających
              • +
              • Najczęściej odwiedzane (*): Aktualne odwiedziny zmieniają kolejność najczęściej odwiedzanych
              • +
              • Nazwa pliku: Nazwa nada w informacji o pliku
              • +
              • Id: Wewnętrzne Id (aktualnie wgrane elementy mają wyższe niż wgrane poprzednio).
              • + +
              +

              (*)Przetestuj sam ponieważ opcja ma nieprzewidzialne rezultaty.

              + + +

              Reprezentant

              + +

              Reprezantant kategorii to miniatura, która jest wyświetlana na stronie głównej kategorii (category.php) jeżeli kategoria zawiera podkategorie (w tym przypadku tylko głównej kategorii).

              + +

              Są 4 sposoby ustawienia reprezentanta kategorii :

              + +
                + +
              • Strona obrazy: w pasku przycisków akcji, + jeden z nich pozwoli ustawić Ci reprezentanta danej kategorii. Przycisk ten ejst dostępny dla administratorów.
              • + +
              • Edycja informacji o obrazie w panelu administracyjnym. Ekran ten jest dostępny z poziomu picture.php lub Zarządzanie batch w trybie jednostkowym. Aby dowiedzić się więcej zobacz pomoc dlatego ekranu.
              • + +
              • Administracja, Kategorie, Właściwości, + Reprezentujący. Aby dowiedzić się więcej zobacz pomoc dlatego ekranu.
              • + +
              • Edycja kategorii (ten ekran).
              • + +
              + +

              Reprezentacja zależy od ustawienia parametru konfiguracyjnego +allow_random_representative (zobacz include/config_default.inc.php).

              + +

              W trybie domyślnym (allow_random_representative jest ustawiony na false) +każda kategoria zawiera jeden element ustawiony jako ją reprezentujący. Raz ustawiony (przy tworzeniu kategorii), reprezentant może zostać zmieniony tylko przez administratora. Jeżeli dany obrac nie odpowiada Ci jako reprezentujący kategorię, +możesz wybrać Znajdź reprezentanta losowo.

              + +

              Jeżeli natomiast parametr konfiguracyjny allow_random_representative ma wartość true, kategoria zwierająca elementy nie może mieć ustawionego jednego reprezentanta. Wtedy wystarczy użyć przycisku Usuń reprezentanta .

              + +

              JEżeli kategoria nie zawiera żacnych elementów (a tylko podkategorie) może być wtedy reprezentowana dzięki ekranowi Edytuj informacje o obrazie. JEdyną dostepną opcją na aktualnym ekranie jest przycisk Usuń reprezentanta . P wybraniu przycisku nie ma już możliwości wybrania nowego reprezentanta.

              + +

              Podpięcie wszystkich elementów kategorii do nowej kategorii

              + +
                + +
              • Nazwa wirtualnej kategorii: Nazwa nowo tworzonej kategorii, +do której będą podpięte wszystkie elementy bieżącej kategorii.
              • + +
              • Kategoria nadrzędna: Zostaw pole puste jeżeli kategoria ma być stworzona w głównej kategorii.
              • + +
              + +

              Podpięcie wszystkich elementów kategorii do którejś z istniejących kategorii

              + +
                + +
              • Kategorie: Wybierz kategorię docelową.
              • + +
              + +

              Wyślij maila informacyjnego do wszystkich członków grupy

              + +
                + +
              • Grupa: adresy grup
              • + +
              • Treść wiadomości: Dowolny tekst do wpisania.
              • + +
              \ No newline at end of file diff --git a/sources/language/pl_PL/help/cat_move.html b/sources/language/pl_PL/help/cat_move.html new file mode 100644 index 0000000..66b1c59 --- /dev/null +++ b/sources/language/pl_PL/help/cat_move.html @@ -0,0 +1,14 @@ +

              Przenoszenie kategorii wirtualnych

              + +

              Tylko wirtualne kategorie mogą mieć nową kategorię nadrzędną.

              + +

              Wirtualne kategorie do przeniesienia

              + +

              Wybierz dowolną wirtualną kategorię, którą chcesz przenieść. +Jeżeli lista jest pusta, to oznacza, że żadnej nie stworzyłeś.

              + +

              Nowa kategoria nadrzędna

              + +

              Wybierz nową kategorię nadrzędną (wirtualną lub fizyczną). +Jeżeli nie wybierzesz żadnej wirtualnej kategorie zostaną przeniesione do głównej kategorii nadrzędnej. +Nie można przenieść kategorii do własnej podkategorii.

              \ No newline at end of file diff --git a/sources/language/pl_PL/help/cat_options.html b/sources/language/pl_PL/help/cat_options.html new file mode 100644 index 0000000..1734134 --- /dev/null +++ b/sources/language/pl_PL/help/cat_options.html @@ -0,0 +1,27 @@ +

              Opcje kategorii

              + +

              Ekran umożliwia administratorowi zmianę opcji dla wielu kategorii jednocześnie.

              + +
              + +
              Upload
              +
              Umożliwia odwiedzającym wgrywanie plików do kategorii. Wyświetlone są tylko kategorie nie będące wirtualnymi
              + +
              Komentarze
              +
              Zezwala użytkownikom na dodawanie komentarzy w wybranych kategoriach. +Wybiera kategorie, które mają już tę opcję włączoną. Obraz może być komentowany wtedy jeżeli kategoria ma tę opcję włączoną.
              + +
              Zablokuj
              +
              Umożliwia zablokowanie wybranych kategorii np. w ramach prac prowadzonych nad daną kategorią. + Jeżeli zablokujesz kategorię, zablokowane również zostaną wszystkie jej podkategorie. Podobnie jeżeli odblokujesz kategorię, wszystkie jej podkategorie zostaną odblokowane.
              + +
              Publiczne / Prywatne
              +
              Zarządza autoryzacją wo wybranych kategorii. Wybrane kategorie są prywatne : aby użytkownicy mieli dostęp do tych kategorii, będzie trzeba przyznać uprawnienia do tych kategorii grupom/użytkownikom. Jeżeli ustawisz daną kategorię jako prywatną, wtedy wszystkie jej podkategorie także będą prywatne. Analogicznie, jeżeli ustawisz daną kategorią jako publiczną, wszystkie jej podkategorie będą publiczne
              + +
              Reprezentant
              +
              Opcja jest dostępna tylko wtedy jeżeli masz skonfigurowany parametr + allow_random_representative (zobacz include/config_defaults.inc.php) na + true. Każda kategoria może mieć reprezentanta losowego lub ustawionego (unikalny obraz).
              + +
              diff --git a/sources/language/pl_PL/help/cat_perm.html b/sources/language/pl_PL/help/cat_perm.html new file mode 100644 index 0000000..b929d2e --- /dev/null +++ b/sources/language/pl_PL/help/cat_perm.html @@ -0,0 +1,11 @@ +

              Zarządzanie uprawnieniami dla kategorii

              + +

              Ekran ten jest dostępny tylko dla kategorii prywatnych. Możesz tutaj wybrać grupy oraz użytkowników, którzy będą posiadali dostęp do danej kategorii.

              + +

              Grupy

              + +

              Dla bieżącej kategorii możesz przyznać uprawnienia lub zabronić dostępu. Modyfikując grupy, zmodyfikujesz użytkowników, którzy dzięki przynależności do tych grup mają lub nie dostęp do danej kategorii.

              + +

              Użytkownicy

              + +

              Możesz także przyznać uprawnienia lub zabronić dostępu. Użytkownicy posiadający dostęp dzięki przynależności do grupy, mogą w tym miejscu mieć ten dostęp odebrany.

              diff --git a/sources/language/pl_PL/help/configuration.html b/sources/language/pl_PL/help/configuration.html new file mode 100644 index 0000000..9aee345 --- /dev/null +++ b/sources/language/pl_PL/help/configuration.html @@ -0,0 +1,109 @@ +

              Konfiguracja

              + +

              Ekran umożliwia administratorom podstawową administrację. Pomimo małej ilości parametrów konfiguracyjnych, powinna ona być wystarczająca dla większości administratorów. Jeżeli chciałbyś zmienić więcej parametrów zajrzyj do pliku include/config_default.inc.php.

              + +

              Ekran jest podzielony na sekcje grupujące parametry tematycznie.

              + + +

              Główna

              +
                +
              • Tytuł galerii: używany w RSS oraz powiadomieniach mailowych.
              • + +
              • Baner strony: wyświetlany na górze każdej strony.
              • + +
              • Adres URL galerii: wykorzystywany w RSS.
              • + +
              • Blokada galerii: Blokuje całą galerię do celów serwisowych. Tylko użytkownicy posiadający uprawnienia administracyjne będą mogli korzystać z galerii.
              • + +
              • Oceny: Włączone oceny obrazów.
              • + +
              • Oceny przez gości: Opcja umożliwiająca oceny obrazów także przez niezalogowanych użytkowników.
              • + +
              • Zezwól na rejestrację użytkowników: Pozwala na rejestrację użytkowników w galerii.
              • + +
              • Adres email jest obowiązkowy dla wszystkich użytkowników: Adres email będzie sprawdzany podczas rejestracji lub podczas aktualizacji profilu (jeżeli akcja jest wykonywana przez administratora).
              • + +
              • Wyślij wiadomość do administratora gdy zarejestruje się nowy użytkownik : Administrator będzie powiadamiany o każdej rejestracji nowego użytkownika.
              • + +
              + +

              Historia

              + +

              Odwiedziny na stronach category.php i picture.php będą zapisane w tabeli + historia .

              + +

              Odwiedziny będą wyświetlane w Administracja, Specjalne, Historia.

              + +
                +
              • Zapisuj odwiedziny strony przez gości: zapisywane będą odwiedziny niezalogowanych użytkowników.
              • + +
              • Zapisuj odwiedziny strony przez użytkowników: zapisywane będą odwiedziny zarejestrowanych użytkowników.
              • + +
              • Zapisuj odwiedziny strony przez administratorów: zapisywane będą odwiedziny administratorów.
              • + +
              + +

              Komentarze

              +
                + +
              • Komentarze dla wszystkich: umożliwia dodawanie komentarzy przez niezarejestrowanych użytkowników.
              • + +
              • Liczba komentarzy na stronę.
              • + +
              • Zatwierdzanie: administrator zatwierdza komentarze pojawiające się w galerii. Zatwierdzanie komentarzy jest możliwe z Administracja, Obrazy, + Komentarze.
              • + +
              • Wyślij wiadomość do administratora gdy zostanie wprowadzony poprawny komentarz: +Wysyła wiadomość do administratora w przypadku dodania komentarza i gdy ten komentarz zostanie zatwierdzony.
              • + +
              • Wyślij wiadomość do administratora gdy komentarz wymaga weryfikacji: +Wysyła wiadomość do administratora w przypadku dodania komentarza, który wymaga zatwierdzenia przez administratora. +Zatwierdzanie komentarzy jest możliwe z Administracja, Obrazy, Komentarze.
              • + +
              + +

              Upload

              +
                +
              • Zawsze pokazuj link upload: Jeżeli istnieją kategorie mające włączoną opcję wgrywania plików, odpowiedni link będzie widoczny przy każdej kategorii.
              • +
              • Poziom uprawnień użytkowników dla upload'u: Pozwala na zabronienie użytkownikom wgrywania plików
              • +
              • Wyślij wiadomość do administratora gdy został wgrany nowy obraz: Administrator otrzyma wiadomość o każdym wgranym pliku.
              • +
              + +

              Wyświetlanie domyślne

              + +

              W tym miejscu można zmienić domyślne wyświetlanie, dla użytkownika gość (niezalogowanego). Po zalogowaniu opcje są nadpisywane przez preferencje użytkownika(edycja w profil).

              + +

              Możliwa jest zmiana dla wszystkich użytkowników, natomiast opcja ta jest dostępna z poziomu Administracja, +Uprawnienia, Użytkownicy, gdzie opcje można zmienić dla wybranych użytkowników.

              + +
                + +
              • Język: dotyczy tylko labelek Piwigo. Nazwy kategorii, obrazów oraz wszystkie opisy nie podlegają tłumaczeniu.
              • + +
              • Liczba obrazów w wierszu
              • + +
              • Liczba wierszy na stronę
              • + +
              • Interfejs użytkownika
              • + +
              • Aktualny okres: W dniach. Okres oznaczający, że elementy są wyświetlane jako nowe. Musi być większe od 1 dnia.
              • + +
              • Rozwiń wszystkie kategorie: Rozwija wszystkie kategorie w menu Ostrzeżenie: opcja ta wymaga dużo zasobów i może wygenerować bardzo duże menu jeżeli liczba kategorii jest duża..
              • + +
              • Pokazuj liczbę komentarzy: wyświetla liczbę komentarzy na stronie z miniaturami. Wymaga dużych zasobów.
              • + +
              • Pokazuj liczbę wejść: wyświetla liczbę wyświetleń danego obrazu na stronie z miniaturami. + Tylko gdy zaawansowany parametr jest ustawiony na:
                + $conf['show_nb_hits'] = true;
                + Notka: domyślne ustawienie to false.
              • + +
              • Maksymalna szerokość obrazu: maksymalna wyświetlana szerokość. Jeżeli obraz jest większy, to wtedy zostanie pomniejszony (do wyświetlenia). Jeżeli chcesz zaznaczyć tę opcję, lepiej jest rozważyć zmianę rozmiarów obrazów.
              • + +
              • Maksymalna wysokość obrazu: jak wyżej (ale odnośnie szerokości).
              • + +
              + diff --git a/sources/language/pl_PL/help/extend_for_templates.html b/sources/language/pl_PL/help/extend_for_templates.html new file mode 100644 index 0000000..e04845d --- /dev/null +++ b/sources/language/pl_PL/help/extend_for_templates.html @@ -0,0 +1,87 @@ +

              Rozszerzenie dla konfiguracji szablonów

              + +

              Cel

              +

              Definiuje warunki zamiany szablonu z template-extension +(szablon zwany "zamiennikiem").

              + +

              "Oryginalny szablon" z ./template/yoga (lub inny niż yoga) + będzie zamieniony przez "zamiennik" jeżeli zamiennik jest podpięty do "szablonu oryginalnego" + (lub opcjonalnie, jeżeli żądany adres URL zawiera "opcjonalne słowo klucz dla URL").

              + +

              "Opcjonalne słowa klucze dla URL" mogą zostać odnalezione w module URLs.

              + +

              "Opcjonalne słowa klucze dla URL" może być także "linkiem permanentnym" +(zobacz opis linków permanentnych w naszej dokumentacji).

              + +

              Czytaj: `Ostrzeżenie` warunki użycia.

              + +

              Czym są rozszerzenia szablonów?

              + +

              Narzędzie konfiguracyjne zarówno dla użytkowników początkujących jak i zaawansowanych. +Webmaster może powielić wiele dostarczanych plików (.tpl) szablonów ("szablony oryginalne") przez FTP do folderu template-extensions nadając im inne nazwy. + + "Szablony oryginalne", aktualnie szablony oryginalne są wspierane dla:

              +
                +
              • index.tpl
              • +
              • mainpage_categories.tpl i/lub thumbnails.tpl
              • +
              • menubar.tpl
              • +
              • header.tpl i/lub footer.tpl
              • +
              • picture_content.tpl i/lub picture.tpl
              • + +
              • profile.tpl i/lub profile_content.tpl
              • +
              • tags.tpl
              • +
              • upload.tpl
              • +
              • about.tpl
              • +
              • popuphelp.tpl
              • +
              • search.tpl i/lub search_rules.tpl
              • +
              • nbm.tpl i/lub notification.tpl
              • +
              • identification.tpl i/lub register.tpl
              • +
              • redirect.tpl
              • +
              + +

              Gdzie mogę znaleźć "szablony oryginalne"?

              + +

              Szablony oryginalne znajdują się w katalogu template/yoga/ +(nie należy ich edytować z powodów aktualizacji). Z "szablonów oryginalnych", +dowolny administrator może stworzyć ich "zamienniki (spersonalizowane szablony)".

              + +

              Gdzie należy zapisać "zamienniki"?

              + +

              Zamienniki (szablony spersonalizowane) muszą być umieszczone w katalogu template-exension (lub jego podkatalogach). +Nazwy plików zamienników mogą mieć dowolne nazwy oraz rozszerzenie .tpl. Na przykład: template-extension/moje-rozszerzenia/wideo.tpl.

              + + +

              Jak mogę aktywować "zamienniki"?

              +

              Aby aktywować powiązane zamiennikiszablon oryginalny powinien być przypisany do każdego + zamiennika (szablonu spersonalizowanego). + Do tego służy funkcja "Rozszerz szablony" w menu Konfiguracja/Administracja.

              + +

              Jeżeli zostanie wybrane opcjonalne słowo klucz dla adresu URL zamienniki będą funkcjonować tylko dla stron zawierających te słowa. Na przykład: index.php?/najczęściej_odwiedzane

              + +

              Zaawansowani użytkownicy mogą używać linków permanentnych jako opcjonalnego słowa klucz dla adresu URL.

              +

              Jak mogę deaktywować "zamienniki"?

              +
                +
              • Odznacz powiązane "Szablony oryginalne".
              • +
              • Usuń "zamienniki" przez FTP.
              • +
              + +

              Ostrzeżenia

              +
                + +
              • Szablon oryginalny musi być "oryginalnym" szablonem, w przeciwnym przypadku mogą wystąpić nieprzewidziane problemy!
              • + +
              • Dla wielu zamienników (szablonów spersonalizowanych) z takim samymSzablonem oryginalnym i takim samym kluczowym słowem dla adresu URL aktywny jest tylko ostatni zamiennik.
              • + +
              • Odznaczenie opcjonalnego słowa klucz dla adresu URL aktywuje zamiennik dla dowolnego użycia szablonu. Jak już wspomniano wcześniej, kolejność może nadpisać poprzednio wybrane zamienniki.
              • + +
              • Podkatalogi: +Podkatalogi są ignorowane, ale są przydatne aby zmienić kolejność.
                +distributed-samples: rozpowszechniane dla celów testowych! +Nie edytuj ich, ale stwórz własne. +
              • + +
              • Po usunięciu zamiennika natychmiastowo jest aktywowany Szablon oryginalny.
              • + +
              \ No newline at end of file diff --git a/sources/language/pl_PL/help/group_list.html b/sources/language/pl_PL/help/group_list.html new file mode 100644 index 0000000..a518e38 --- /dev/null +++ b/sources/language/pl_PL/help/group_list.html @@ -0,0 +1,22 @@ +

              Lista grup

              + +

              To jest miejsce, w którym możesz zarządzać zdefiniowanymi grupami.

              + +

              Dodaj grupę

              + +

              Grupy może dodawać administrator.

              + +

              Lista grup

              + +

              Lista dla każdego elementu umożliwia:

              + + +
                +
              • przejście do listy członków
              • +
              • przejście do uprawnień
              • +
              • usunięcie grupy (wymaga zaznaczenia potwierdzającego checkbox'a)
              • +
              • zmiana statusu "default" (wymaga zaznaczenia potwierdzającego checkbox'a)
              • +
              + +

              Grupy domyślne

              +

              Grupy domyślne są grupami przypisywanymi do nowych użytkowników.

              \ No newline at end of file diff --git a/sources/language/pl_PL/help/help_add_photos.html b/sources/language/pl_PL/help/help_add_photos.html new file mode 100644 index 0000000..f8e7a4c --- /dev/null +++ b/sources/language/pl_PL/help/help_add_photos.html @@ -0,0 +1,21 @@ +

              Wiele możliwości dodania zdjęć do Twojej galerii:

              + +
                +
              • Wgranie bezpośrednie z poziomu przeglądarki jest najprostszym i szybkim sposobem. Zależy od możliwości Twojej przeglądarki oraz serwera. W przypadku problemów z dużą ilością zdjęć, możesz skorzystać z wgrywania innym sposobem!
              • +
              + + + +
                +
              • pLoader jest aplikacją zainstalowaną na Twoim komputerze. Przeciągnij & upuść zdjęcia w oknie pLoader, kliknij "Wgraj do Piwigo" i pozwól pLoader'owi wykonać swoją pracę. Możesz także znaleźć inne aplikacje takie jak WinToPiwigo lub plugin eksportu do Piwigo Digikam.
              • +
              + + + +
              +
                +
              • Transfer FTP jest najbardziej rekomendowanym sposobem dodawania bardzo dużej ilości zdjęć przy pomocy niewielu kliknięć. Skorzystaj z przewodnika aby przygotować swoje zdjęcia. Metoda FTP umożliwia Ci bardzo dokładną kontrolę nad umiejscowieniem plików zdjęć na serwerze.
              • +
              + + +
              diff --git a/sources/language/pl_PL/help/help_groups.html b/sources/language/pl_PL/help/help_groups.html new file mode 100644 index 0000000..2385dda --- /dev/null +++ b/sources/language/pl_PL/help/help_groups.html @@ -0,0 +1,5 @@ +

              Grupy są dobrym sposobem do zarządzania uprawnieniami dla określonej listy użytkowników.

              + +

              Możesz tworzyć grupy w Administracja » Użytkownicy » Grupy i przypisywać użytkowników do tych grup w Administracja » Użytkownicy » Zarządzaj.

              + +

              Użytkownik może należeć do wielu grup. Przyznanie dostępu jest ważniejsze niż zabronienie : jeżeli użytkownik "jack" należy do grup "family" i "friends", i tylko grupa "family" może oglądać kategorię "Christmas 2003", "jack" będzie mógł oglądać kategorię "Christmas 2003".

              diff --git a/sources/language/pl_PL/help/help_misc.html b/sources/language/pl_PL/help/help_misc.html new file mode 100644 index 0000000..13aad85 --- /dev/null +++ b/sources/language/pl_PL/help/help_misc.html @@ -0,0 +1,9 @@ +

              Jak tylko utworzysz galerię, możesz dostosować ją dla odwiedzających +

                +
              • Domyślne wyswietlanie w zakładce Administracja » Konfiguracja » Opcje Ustawienia dla gości
              • +
              • Domyślny temat w Administracja » Konfiguracja » Tematy
              • +
              • Domyślny język w Administracja » Konfiguracja » Języki
              • +
              +Domyślnie, każdy nowy użytkownik otrzyma te ustawienia po rejestracji. +

              +

              Jeżeli masz pytania, społeczność Piwigo zaprasza Cię na swoje forum.

              \ No newline at end of file diff --git a/sources/language/pl_PL/help/help_permissions.html b/sources/language/pl_PL/help/help_permissions.html new file mode 100644 index 0000000..b4e2883 --- /dev/null +++ b/sources/language/pl_PL/help/help_permissions.html @@ -0,0 +1,47 @@ +
              +Uprawnienia dla zdjęć + +

              Każde zdjęcie posiada poziom prywatności (blokadę). Każdy użytkownik także posiada poziom prywatności (klucz). Jest 5 poziomów prywatności:

              +
                +
              1. Brak
              2. +
              3. Kontakty
              4. +
              5. Przyjaciele (który jest wyższy niż Kontakty)
              6. +
              7. Rodzina (który jest wyższy niż Przyjaciele)
              8. +
              9. Administratorzy (który jest wyższy niż każdy inny poziom)
              10. +
              + +

              Wyższe poziomy posiadają uprawnienia do niższych poziomów. Jeżeli dany użytkownik posiada wyższy poziom prywatności, to może oglądać więcej zdjęć.

              + +

              Na przykład jeżeli zdjęcie "peter_wedding-0024.jpg" posiada poziom prywatności "Rodzina", to:

              +
                +
              • Piotr (który posiada poziom "Administratorem") będzie widział zdjęcie ponieważ "Administratorzy" mogą oglądać wszystkie zdjęcia
              • +
              • Beata (która posiada poziom "Rodzina") także będzie widzieć zdjęcie
              • +
              • Maria (która posiada poziom tylko "Przyjaciel") nie będzie widziała zdjęcia
              • +
              + +

              Użytkownik, który nie posiada uprawnień do oglądania zawartości danej kategorii, nie będzie widział nawet tej kategorii. Ta sama zasada dotyczy tagów.

              + +

              Możesz ustawić poziom prywatności dla użytkownika w: Administracja» Użytkownicy » Zarządzaj .

              + +
              + +
              +Uprawnienia na kategoriach + +

              Jeżeli poziomy prywatności nie bardzo pasują do Twoich potrzeb, możesz także zarządzać uprawnieniami na kategoriach dla użytkowników oraz grup. W tym samym czasie możesz zarządzać uprawnieniami dla zdjęć oraz kategorii, nie powodując konfliktów.

              + +

              Do poszczególnych kategorii można zabronić dostępu. Kategorie mogą być "publiczne" lub +"prywatne". Uprawnienia (dla grup i użytkowników) mogą być ustawione tylko dla kategorii "prywatnych".

              + +
            • Możesz ustawić kategorię jako "prywatna" dla pojedynczej kategorii (Administracja » Kategorie » Zarządzaj » edycja) lub przez ustawienie opcji dla całego drzewa (Administracja » Kategorie » Właściwości » Publiczna / Prywatna).

              + +

              Po ustawieniu kategorii jako prywatna, możesz zarządzać uprawnieniami dla grup i użytkowników przy pomocy następujących 3 ekranów :

              + +
                +
              • Administracja » Użytkownicy » Zarządzaj » akcja uprawnienia (jeden link per użytkownik)
              • +
              • Administracja » Użytkownicy » Grupy » akcja uprawnienia (jeden link per grupa)
              • +
              • Administracja » Kategorie » Zarządzaj » akcja edycja uprawnień kategorii (jeden link per kategoria)
              • +
              + +
            • diff --git a/sources/language/pl_PL/help/help_virtual_links.html b/sources/language/pl_PL/help/help_virtual_links.html new file mode 100644 index 0000000..ae1c7ab --- /dev/null +++ b/sources/language/pl_PL/help/help_virtual_links.html @@ -0,0 +1,5 @@ +

              Zdjęcia są wyświetlane w kategoriach odpowiadających katalogom, w których dane pliki się znajdują.

              + +

              Możesz także wyświetlać zdjęcia w wielu kategoriach bez duplikowania plików na serwerze www. By podlinkować link do kategorii, wystarczy utworzyć powiązanie na stronie edycji zdjęcia (do której ma dostęp każdy administrator ze strony danego zdjęcia w galerii).

              + +

              Kategorie wirtualne bazują na następującym założeniu : nie mają odpowiadających katalogów. Kategorię wirtualną możesz stworzyć w Administracja » Kategorie » Zarządzaj.

              diff --git a/sources/language/pl_PL/help/history.html b/sources/language/pl_PL/help/history.html new file mode 100644 index 0000000..8e43e5c --- /dev/null +++ b/sources/language/pl_PL/help/history.html @@ -0,0 +1,38 @@ +

              Historia

              + +

              Ekran umożliwia śledzenie historii odwiedzin stron galerii Piwigo w nawiązaniu do wybranych opcji w Administracja, Ogólne, Historia.

              + +

              Statystyki

              +
                +

                Jeżeli wybrałeś opcję zapisywania odwiedzin stron(index.php i picture.php) w tabeli historii. +Index pozwala na prześledzenie odwiedzonych stron.

                + +
              • Statystyki ogólne : wizualizacja roczna.
              • + +
              • Statystyki roczne : wizualizacja miesięczna dla wybranego roku.
              • + +
              • Statystyki miesięczne : wizualizacja dzienna dla wybranego miesiąca.
              • + +
              • Statystyki dzienne :wizualizacja dzienna dla wybranego dnia.
              • + +
              + +

              Wyszukiwanie

              +
                +

                Jeżeli wybrałeś opcję zapisywania odwiedzin stron (index.php i picture.php) w tabeli historii. +Index pozwala na prześledzenie odwiedzonych stron z wykorzystaniem różnych filtrów.

                + +
              • Filtrowanie po dacie : wybierz interwał dat, które Cię interesują.
              • + +
              • Filtrowanie po typie elementu : wybierz typ elementu, którego statystyki chcesz zobaczyć.
              • + +
              • Filtrowanie po użytkowniku : wybierz użytkownika, którego statystyki chcesz zobaczyć.
              • + +
              • Filtrowanie po nazwie pliku : wybierz nazwę pliku, dla którego chcesz zobaczyć statystyki.
              • + +
              • Filtrowanie po identyfikacyjnym obrazie : wybierz identyfikacyjny obraz, dla którego statystyki chcesz zobaczyć.
              • +
              \ No newline at end of file diff --git a/sources/language/pl_PL/help/index.php b/sources/language/pl_PL/help/index.php new file mode 100644 index 0000000..5ba26cd --- /dev/null +++ b/sources/language/pl_PL/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/pl_PL/help/maintenance.html b/sources/language/pl_PL/help/maintenance.html new file mode 100644 index 0000000..1ab0816 --- /dev/null +++ b/sources/language/pl_PL/help/maintenance.html @@ -0,0 +1,47 @@ +

              Maintenance

              + +

              W celu optymalizacji czasu generowania strony Piwigo wykorzystuje informacje umieszczone w cache'u. Dla przykładu zamiast przeliczać za każdym razem liczbę elementów w kategorii, informacja ta jest zapisana w bazie danych. Teoretycznie informacja ta powinna być zawsze prawdziwa, ale czasami występują błędy i informacja wyświetlana jest niepoprawna.

              + +

              Niektóre informacje stają się wtedy bezużyteczne. Usuwanie tych bezużytecznych informacji pozwala zaoszczędzić przestrzeń na dysku.

              + +
                + +
              • + Nie powiązane elementy: + Wyświetla obrazy, które nie są powiązane z żadną wirtualną kategorią. +
              • +
              • + Pliki o tej samej nazwie w jednej lub wielu kategoriach: + Wyświetla obrazy lub pliki o tej samej nazwie znalezione w jednej lub wielu kategoriach. +
              • + +
              + +
                + +
              • Aktualizuj informacje o kategoriach: Informacje dla każdej kategorii : lista kategorii nadrzędnych, liczba obrazów, data dodania ostatniego obrazu, pozycja względem sąsiednich kategorii, pozycja względem wszystkich kategorii. Akcja ta sprawdza także istnienie reprezentanta dla kategorii.
              • + +
              • Aktualizuj informacje o obrazach: Dla każdego obrazu są to informacje : pełna ścieżka do pliku, średnie oceny. Ostrzeżenie: nie należy mylić tych informacji z metadanymi, które są dostępne z poziomu Administracja, + Kategorie, Synchronizacja lub dostępne z poziomu ekranu edycji dla każdego elementu (np. przez Obraz ).
              • + +
              • Napraw i optymalizuj bazę danych: + Dla każdej tabeli może być wykonana, re-organizacja, naprawa i optymalizacja. +
              • +
              + +
                +
              • Usuń szczegóły historii: Usuwa wszystkie linie z tabeli + historii . Ekran Administracja, + Specjalne, Historia nie będzie wyświetlał żadnej historii. Ostrzeżenie: wszystkie dane zostaną utracone bez możliwości ich odzyskania.
              • + +
              • Usuń podsumowanie historii: Usuwa informacje podsumowujące liczbę odwiedzin historii. Podsumowanie to jest wyliczane na podstawie szczegółowych informacji zawartych w historii.
              • + +
              • Wyczyść sesje: Usuwa wygaśnięte sesje użytkowników.
              • + +
              • Wyczyść nigdy nie używane RSS feed
              • + +
              • Purge search history
              • + +
              • Usuń skompilowane szablony
              • + +
              diff --git a/sources/language/pl_PL/help/notification_by_mail.html b/sources/language/pl_PL/help/notification_by_mail.html new file mode 100644 index 0000000..de368f4 --- /dev/null +++ b/sources/language/pl_PL/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

              Powiadamianie mailowe

              + +

              Ekran umożliwia konfigurację oraz zarządzanie powiadomieniami użytkowników o nowościach na stronie.

              + +

              Ekran składa się z 3 zakładek:

              + +

              Parametry

              +

              Dostępna tylko dla webmaster'a, umożliwia zmianę parametrów powiadomień mailowych.

              + +

              Zapisy

              +

              Dostępna tylko dla webmaster'a, umożliwia zapisywanie/wypisywanie użytkowników z powiadomień.

              + +

              Wyślij

              +

              Dostępna tylko dla webmaster'ów i administratorów, umożliwia wysłanie wiadomości do użytkowników.

              + diff --git a/sources/language/pl_PL/help/permalinks.html b/sources/language/pl_PL/help/permalinks.html new file mode 100644 index 0000000..ead4ad9 --- /dev/null +++ b/sources/language/pl_PL/help/permalinks.html @@ -0,0 +1,7 @@ +

              Linki permanentne

              + +

              Linki permanentne są wykorzystywane po to, aby adres URL danej kategorii był łatwiejszy do zapamiętania i ładniej wyglądał. Jeżeli kategoria posiada taki link, nie jest już potrzebne zapamiętywanie jej ID.

              + +

              Podczas usuwania linku, istnieje możliwość zapisania go w historii, po to, żeby w dalszym ciągu działały adresy zewnętrzne. W historii linków permanentnych można zobaczyć kiedy dany link został usunięty jak również czas kiedy był ostatnio używany oraz liczbę jego użyć.

              + +

              Link permanentny musi być unikalny w obrębie kategorii. Również w historii linków permanentnych dana nazwa może być użyta tylko raz.

              diff --git a/sources/language/pl_PL/help/photos_add_ftp.html b/sources/language/pl_PL/help/photos_add_ftp.html new file mode 100644 index 0000000..60919d2 --- /dev/null +++ b/sources/language/pl_PL/help/photos_add_ftp.html @@ -0,0 +1,70 @@ +
              + Szybki start + +
                +
              1. Utwórz katalog lokalny na swoim komputerze.
              2. + +
              3. Skopiuj zdjęcia do tego katalogu (zmień ich rozmiar na potrzeby internetu). Uwaga: nazwy katalogów oraz plików mogą zawierać tylko litery, cyfry oraz znaki "-", "_" lub ".". Nie mogą zawierać innych znaków, znaku spacji ani polskich liter.
              4. + +
              5. Za pomocą klienta FTP skopiuj katalog katalogu "galleries".
              6. + +
              7. Zaloguj się do galerii i przejdź do Administracja i wybierz duży przycisk Synchronizacja.
              8. +
              + +

              Gratulacje! Stworzyłeś pierwszą kategorię w swojej galerii.

              +
              + +
              + Struktura katalogów i plików + +
                + +
              • + +

                W Piwigo katalogi kategorii znajdują się wewnątrz katalogu + "galleries". Poniżej można zobaczyć drzewo niewielkiej galerii + (ale wykorzystującej wiele funkcji):

                + +
                +galleries
                +|-- wedding
                +|   |-- celebration
                +|   |   |-- arrival
                +|   |   |   |-- paul-alone.jpg
                +|   |   |   +-- sarah-alone.jpg
                +|   |   +-- departure
                +|   |       +-- paul-and-sarah.jpg
                +|   +-- party
                +|       |-- dancers001.jpg
                +|       |-- dancers002.jpg
                +|       +-- dancers003.jpg
                ++-- honeymoon
                +    |-- hotel.png
                +    |-- video-from-plane.avi
                +    +-- pwg_representative
                +        +-- video-from-plane.jpg
                +
                + +
              • + +
              • Poza "pwg_representative" (wyjaśnienie poniżej), każdy podkatalog w katalogu "galleries" tworzy kategorię. Nie ma limitu na poziomy zagłębień katalogów.
              • + +
              • Ogólnie element jest reprezentowany przez plik. Plik może być elementem + Piwigo jeżeli jego rozszerzenie jest zawarte file_ext + (plik include/config_default.inc.php). + Plik może być obrazem jeżeli jego rozszerzenie + jest zawarte w picture_ext + .
              • + +
              • Domyślnie, pliki nie będące obrazami (filmy, dźwięki, tekst, cokolwiek innego...), są przedstawiane przy pomocy ikon z rozszerzeniem pliku + Opcjonalnie można powiązać miniaturę przez pwg_representative. + Przyjrzyj się przykładowi powyżej dla video.avi.
              • + +
              • Ostrzeżenie: nazwy katalogów oraz plików mogą zawierać tylko litery, cyfry oraz znaki "-", "_" lub ".". Nie mogą zawierać innych znaków, znaku spacji ani polskich liter. + +
              • Po umieszczeniu plików, miniatur oraz reprezentantów, + przejdź do: Administracja » Narzędzia » + Synchronizacja
              • + +
              +
              \ No newline at end of file diff --git a/sources/language/pl_PL/help/search.html b/sources/language/pl_PL/help/search.html new file mode 100644 index 0000000..595b72a --- /dev/null +++ b/sources/language/pl_PL/help/search.html @@ -0,0 +1,19 @@ +

              Wyszukiwanie

              + +

              Funkcja umożliwia wyszukiwanie obrazów w całej galerii.

              + +
              + +
              Wyszukiwanie słów
              +
              Szuka danego słowa we wszystkich atrybutach obrazów umieszczonych w galerii. Użyj znaku * aby wyszukać obrazy, do których słowo częściowo pasuje (np. wycieczk*).
              + +
              Wyszukiwanie autora
              +
              Użyj znaku * aby wyszukać słowo które częściowo pasuje (np. jac*).
              + +
              Wyszukiwanie po dacie
              +
              Wybierz datę i/lub datę końcową dla wyszukiwania. Zostaw datę pustą jeżeli chcesz wyszukać obrazy "sprzed" danej daty. Rok musi być wpisany w ostatnim polu w formacie : 0000 (np. 2004)
              + +
              Wyszukiwanie w kategoriach
              +
              Wybierz kategorię lub kategorie, w których chcesz wyszukiwać. Dla przyśpieszenia wyszukiwania w podkategoriach, można zaznaczyć główną kategorię oraz opcję szukania w podkategoriach.
              + +
              diff --git a/sources/language/pl_PL/help/synchronize.html b/sources/language/pl_PL/help/synchronize.html new file mode 100644 index 0000000..1ee8fb2 --- /dev/null +++ b/sources/language/pl_PL/help/synchronize.html @@ -0,0 +1,8 @@ +

              Synchronizuj

              + +

              Możliwe są 2 sposoby synchronizacji : katalogi/pliki oraz metadane plików. Tryb katalogi/pliki służy do synchronizacji struktury katalogów oraz plików kategorii z bazą danych. Tryb metadane plików aktualizuje informacje o elementach takie jak rozmiar pliku, rozmiar w pixelach, EXIF czy IPTC.

              + +

              Najpierw musi zostać wykonana synchronizacja katalogi/pliki.

              + +

              Proces synchronizacji może trwać długo (zależny jest np od obciążenia serwera oraz ilości elementów, które mają zostać zsynchronizowane) dlatego możliwa jest synchronizacja krok po kroku: +kategoria po kategorii.

              diff --git a/sources/language/pl_PL/help/user_list.html b/sources/language/pl_PL/help/user_list.html new file mode 100644 index 0000000..9b3ef33 --- /dev/null +++ b/sources/language/pl_PL/help/user_list.html @@ -0,0 +1,30 @@ +

              Lista użytkowników

              + +

              W tym miejscu można zarządzać zarejestrowanymi użytkownikami. Tylko uprawnienia znajdują się na kilku innych ekranach.

              + +

              Dodawanie użytkownika

              + +

              Administrator może dodawać użytkowników ręcznie.

              + +

              Lista użytkowników

              + +

              Lista użytkowników może być filtrowana po nazwie użytkownika (użyj znaku * jako wildcard), grupie lub statusie. Lista może być sortowana po dacie rejestracji, nazwie użytkownika w kolejności roznącej lub malejącej.

              + +

              Ekran ten umożliwia wykonywanie w tym samym czasie danej akcji na kilku użytkonwikach +:

              + +
                + +
              • usuwanie użytkowników (wymaga potwierdzenia przez zaznaczenie checkbox)
              • + +
              • zmiana statusu
              • + +
              • dodanie lub usuięcie z grup
              • + +
              • edycja właściwości wyświetlania
              • + +
              • edycja dodatkowych właściwości
              • + +
              + +

              Domyślnie można wykonać taką akcję np. dla użytkowników zaznaczonych lub wszystkich użytkowników.

              diff --git a/sources/language/pl_PL/index.php b/sources/language/pl_PL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/pl_PL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/pl_PL/install.lang.php b/sources/language/pl_PL/install.lang.php new file mode 100644 index 0000000..815deba --- /dev/null +++ b/sources/language/pl_PL/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Potrzebujesz pomocy ? Zadaj pytanie na Forum Piwigo.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Z jego pomocą odwiedzający będą mogli się skontaktować z administratorem strony'; +$lang['PHP 5 is required'] = 'PHP 5 jest wymagane'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Twój serwer aktualnie używa PHP w wersji %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo może spróbować przełączyć Twoją konfigurację do PHP 5 poprzez modyfikację pliku .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Możesz również zmienić tę konfigurację sam, a następnie uruchomić ponownie Piwigo.'; +$lang['Try to configure PHP 5'] = 'Spróbuj skonfigurować PHP 5'; +$lang['Sorry!'] = 'Niestety!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nie mógł skonfigurować Twojego PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Możesz skontaktować się z działem wsparcia Twojego providera aby dowiedzieć się jak włączyć PHP 5.'; +$lang['Hope to see you back soon.'] = 'Do zobaczenia wkrótce.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulacje, instalacja Piwigo zakończona sukcesem'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternatywnym rozwiązaniem jest skopiować tekst z powyższego textbox i wkleić do pliku "local/config/database.inc.php" (Uwaga : database.inc.php musi zawierać to co jest w textbox i nie może zawierać znaków spacji oraz enter)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Nie powiodło się stworzenie pliku konfiguracyjnego local/config/database.inc.php.'; +$lang['Download the config file'] = 'Pobierz plik konfiguracyjny'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Możesz pobrać plik konfiguracyjny i wgrać go do katalogu lokalnego/z konfiguracją.'; +$lang['Just another Piwigo gallery'] = 'Kolejna galeria Piwigo'; +$lang['Welcome to my photo gallery'] = 'Witaj w mojej galerii zdjęć'; +$lang['Welcome to your new installation of Piwigo!'] = 'Witamy w Towjej nowej instalacji Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Nie obawiaj się kontaktu na forum w celu skorzystania z pomocy: %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost lub iny, dostarczone przez Twojego dostawcę'; +?> \ No newline at end of file diff --git a/sources/language/pl_PL/iso.txt b/sources/language/pl_PL/iso.txt new file mode 100644 index 0000000..b8871de --- /dev/null +++ b/sources/language/pl_PL/iso.txt @@ -0,0 +1 @@ +Polski [PL] \ No newline at end of file diff --git a/sources/language/pl_PL/pl_PL.jpg b/sources/language/pl_PL/pl_PL.jpg new file mode 100644 index 0000000..34a1ff3 Binary files /dev/null and b/sources/language/pl_PL/pl_PL.jpg differ diff --git a/sources/language/pl_PL/upgrade.lang.php b/sources/language/pl_PL/upgrade.lang.php new file mode 100644 index 0000000..6826611 --- /dev/null +++ b/sources/language/pl_PL/upgrade.lang.php @@ -0,0 +1,42 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Jeżeli napotkasz jakiś problem wykonaj weryfikację przez [Administracja>Narzędzia>Konserwacja].'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Tylko administrator może wykonać aktualizację: zaloguj się poniżej.'; +$lang['You do not have access rights to run upgrade'] = 'Nie masz uprawnień do wykonania aktualizacji'; +$lang['All sub-albums of private albums become private'] = 'Wszystkie pod-albumy prywatnych albumów będą prywatne'; +$lang['User permissions and group permissions have been erased'] = 'Uprawnienia użytkowników oraz grup zostały usunięte'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Z poprzedniej konfiguracji zostały zapisane tylko prefiks miniatur oraz adres e-mail administratora.'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Ta strona proponuje aktualizację Twojej bazy danych Piwigo do nowej wersji. Asystent aktualizacji myśli, że aktualnie używasz wersji %s (lub równoważnej).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Na wszelki wypadek następujące wtyczki zostały zdezaktywowane. Przed ich aktywacją, należy sprawdzić, czy nie ma nowszych wersji'; +$lang['In %s, before ?>, insert:'] = 'W %s, przed ?>, wstaw:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Na wszelki wypadek następujące motywy zostały dezaktywowane. Przed ich aktywacją, należy sprawdzić, czy nie ma nowszych wersji'; + +?> \ No newline at end of file diff --git a/sources/language/pt_BR/about.html b/sources/language/pt_BR/about.html new file mode 100644 index 0000000..b0bf3c6 --- /dev/null +++ b/sources/language/pt_BR/about.html @@ -0,0 +1,16 @@ +
            • Piwigo é uma aplicação web que permite a criação de uma galeria de imagens on line.
            • + +
            • Piwigo é desenvolevido em PHP com uma base de dados MySQL.
            • + +
            • Se houver sugestões ou comentários, visite o sitio oficial e seu forum.
            • + +

              A tradução Brasil é mantida por (em ordem alfabética): + +

              +.... Muito obrigado

              \ No newline at end of file diff --git a/sources/language/pt_BR/admin.lang.php b/sources/language/pt_BR/admin.lang.php new file mode 100644 index 0000000..2cd4711 --- /dev/null +++ b/sources/language/pt_BR/admin.lang.php @@ -0,0 +1,977 @@ +Click here to show log error.'] = 'Um erro ocorreu durante a extração. Por favor, verifique as permissões de arquivo da sua instalação do Piwigo.
              Clique aqui para mostrar o registro de erros.'; +$lang['An error has occured during upgrade.'] = 'Um erro ocorreu durante a atualização.'; +$lang['Apply action'] = 'Aplicar ação'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolução máxima aproximada: %dM pixels (que é %dx%d pixels).'; +$lang['automatic order'] = 'Ordem automática'; +$lang['Batch Manager'] = 'Gerenciador de lotes'; +$lang['Bound Theme'] = 'Tema vinculado'; +$lang['By %s'] = 'Por %s'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Por padrão, Piwigo criará um novo tamanho web a partir da versão HD (alta definição) da sua foto.'; +$lang['By rank'] = 'Por classificação'; +$lang['Cannot delete the old permalink !'] = 'O antigo link permanente não pode ser deletado!'; +$lang['Change Admin Colors'] = 'Trocar cores da administração'; +$lang['Choose an action'] = 'Escolha uma ação'; +$lang['Confirm merge'] = 'Confirme a fusão'; +$lang['create a new album'] = 'criar um novo álbum'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Criar o diretório "%s" no diretório raiz de instalação do seu Piwigo'; +$lang['Create'] = 'Criar'; +$lang['Crop'] = 'Cortar'; +$lang['Deactivate all'] = 'Desativar todos'; +$lang['Default comments order'] = 'Ordem de comentários padrão'; +$lang['Default photos order'] = 'Ordem de fotos padrão'; +$lang['Delete orphan tags'] = 'Excluir tags orfãos'; +$lang['Delete this language'] = 'Excluir essa linguagem.'; +$lang['Delete this theme'] = 'Excluir esse tema.'; +$lang['Directory does not exist'] = 'Essa pasta não existe.'; +$lang['Do you want to activate anyway?'] = 'Você deseja mesmo ativar?'; +$lang['Download,'] = 'Baixar,'; +$lang['Drop into album'] = 'Selecione um álbum'; +$lang['Dump Database'] = 'Limpar Banco de Dados'; +$lang['Duplicates'] = 'Duplicados'; +$lang['ERROR'] = 'ERRO'; +$lang['Error on file "%s" : %s'] = 'Erro no arquivo "%s" : %s'; +$lang['Everybody'] = 'Todos'; +$lang['Exif extension not available, admin should disable exif use'] = 'A extensão Exif não está disponível, o administrador deve desabilitar o uso do Exif'; +$lang['Extensions Update'] = 'Atualizar Extensões'; +$lang['FTP + Synchronization'] = 'FTP + Sincronização'; +$lang['Failed to write file to disk'] = 'Falha ao gravar arquivo no disco'; +$lang['Follow Orientation'] = 'Siga a orientação'; +$lang['Forbid this language to users'] = 'Proibir essa linguagem para usuários'; +$lang['Forbid this theme to users'] = 'Proibir esse tema para usuários'; +$lang['Get Support on Piwigo Forum'] = 'Obter suporte no Piwigo Fórum '; +$lang['Guest Settings'] = 'Configuração de Convidados'; +$lang['Height'] = 'Altura'; +$lang['Help Me'] = 'Ajuda'; +$lang['I decide to update anyway'] = 'Eu decido atualizar'; +$lang['Ignore All'] = 'Ignorar tudo'; +$lang['Ignore this update'] = 'Ignorar essa atualização'; +$lang['Image Quality'] = 'Qualidade da imagem'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Este tema não pode ser ativado, está faltando o tema principal: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Impossível desativar essa linguagem, primeiro defina outra linguagem como padrão.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Impossível desativar essa linguagem, você precisa de pelo menos uma linguagem.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Impossível desativar esse tema, você precida de pelo menos um tema.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Este tema não pode ser excluido, porque outros temas dependem dele: %s'; +$lang['Inactive Languages'] = 'Linguagens inativas'; +$lang['Inactive Plugins'] = 'Plugins inativos'; +$lang['Inactive Themes'] = 'Temas inativos'; +$lang['Install on your computer,'] = 'Instalar em seu computador, '; +$lang['Installed Languages'] = 'Idiomas instalados'; +$lang['Installed Themes'] = 'Temas Instalados'; +$lang['Instructions to use Piwigo'] = 'Introdução para usar o Piwigo'; +$lang['Invert'] = 'Inverter'; +$lang['Language has been successfully installed'] = 'Idioma instalado com sucesso'; +$lang['Languages which need upgrade'] = 'Línguas que precisam atualizar'; +$lang['Languages'] = 'Idiomas'; +$lang['Last import'] = 'Última importação'; +$lang['Learn more'] = 'Saiba mais'; +$lang['Main Page'] = 'Página Principal'; +$lang['delete photo'] = 'Excluir foto'; +$lang['delete'] = 'Excluir.'; +$lang['display'] = 'Exibir'; +$lang['existing album'] = 'Cagtegoria já existe'; +$lang['hide details'] = 'Esconder detalhes'; +$lang['include child albums'] = 'Incluir álbuns infantis'; +$lang[' and %d virtuals'] = ' e %d virtuais'; +$lang['%d day'] = '%d dia'; +$lang['%d days'] = '%d dias'; +$lang['%d hour'] = '%d hora'; +$lang['%d hours'] = '%d horas'; +$lang['%d minute'] = '%d minuto'; +$lang['%d minutes'] = '%d minutos'; +$lang['%d month'] = '%d mês'; +$lang['%d months'] = '%d meses'; +$lang['%d physicals'] = '%d físico'; +$lang['%d second'] = '%d segundo'; +$lang['%d seconds'] = '%d segundos'; +$lang['%d week'] = '%d semana'; +$lang['%d weeks'] = '%d semanas'; +$lang['%d year'] = '%d ano'; +$lang['%d years'] = '%d anos'; +$lang['%s ago'] = '%s atrás'; +$lang['%s in the future'] = '%s no futuro'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'usuários %u tem permissão automática porque pertencem a um grupo que possui essa permissão'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'O aplicativo Piwigo para Android capacita você a conectar o seu celular ou tablet Android à sua galeria Piwigo, criando álbuns e colocando várias fotos ao mesmo tempo.'; +$lang['A locked gallery is only visible to administrators'] = 'Uma galeria trancada é somente visível pelos administradores'; +$lang['Added by %s'] = 'Adicionado por %s'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'O Adobe Photoshop Lightroom é um software de fotografia feito para gerenciar grandes quantidades de imagens digitais e fazer o trabalho de pós-produção'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture é uma poderosa ferramenta para refinar imagens e gerenciar grandes bibliotecas no Mac.'; +$lang['Applications'] = 'Aplicações'; +$lang['Apply watermark if height is bigger than'] = 'Aplica marca d\'água se a altura for maior do que'; +$lang['Apply watermark if width is bigger than'] = 'Aplica marca d\'água se a largura for maior do que'; +$lang['Automatic sort order'] = 'Ordena automaticamente'; +$lang['Available on'] = 'Disponível em'; +$lang['Available versions for'] = 'Versões disponíveis para'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Por padrão, o centro de interesse é colocado no meio da foto.'; +$lang['Cancel'] = 'Cancelar'; +$lang['Center of interest'] = 'Centro de interesse'; +$lang['Delete multiple size images'] = 'Apagar múltiplos tamanhos de imagens'; +$lang['Duplicate selected tags'] = 'Duplicar as tags selecionadas'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRO: ESTE PLUGIN ESTÁ FALTANDO, MAS O MESMO ESTÁ INSTALADO! DESINSTALE O MESMO AGORA.'; +$lang['Edit photo'] = 'Editar Foto'; +$lang['Email administrators when a comment is deleted'] = 'Envia um email aos administradores quando um comentário é deletado'; +$lang['Email administrators when a comment is modified'] = 'Envia um email aos administradores quando um comentário é modificado'; +$lang['File upload stopped by extension'] = 'A transferência de arquivos foi interrompida por uma extensão'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Os seguintes plugins podem não ser compatíveis com a nova versão do Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Os seguintes temas podem não ser compatíveis com a nova versão do Piwigo:'; +$lang['Gallery unlocked'] = 'Galeria destravada'; +$lang['Generate multiple size images'] = 'Gerar múltiplos tamanhos de imagem'; +$lang['Graphics Library'] = 'Biblioteca gráfica'; +$lang['Groups and users'] = 'Grupos e usuários'; +$lang['List'] = 'Lista'; +$lang['Make this language available to users'] = 'Faz essa linguagem disponível aos usuários'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'A aplicação Piwigo para iOS permite conectar a sua galeria Piwigo direto do seu iPhone, iPad ou iPod Touch para criar álbuns e enviar fotos imediatamente.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture foi desenvolvido para fotógrafos profissionais com a simplicidade do iPhoto.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'As características incluem navegação em galerias, criação de álbuns e envio de fotos.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para fotos recortadas no formato "quadrado", Piwigo fará o melhor para incluir o centro de interesse.'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dê permissão de escrita (chmod 777) para o diretório "%s" na raiz da usa instalação Piwigo'; +$lang['Hit'] = 'Acesso'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se nenhuma foto de Alta Definição estiver disponível e se o tamanho atual for maior do que as dimensões de redimensionamento, Piwigo moverá a foto como Alta Definição e criará uma foto de menor resolução para ser baixada.'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'No seu arquivo php.ini, o upload_max_filesize (%sB) é maior do que post_max_size (%sB), você deve mudar essa configuração.'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inclua dados do histórico (Cuidado: limite de memória do servidor poderá ser ultrapassado).'; +$lang['Make this theme available to users'] = 'Faça esse tema disponível para os usuários'; +$lang['Manage Permissions'] = 'Gerencie Permissões'; +$lang['Manage this set of %d photos'] = 'Gerencie esse conjunto de %d fotos'; +$lang['Manual order'] = 'Ordem Manual'; +$lang['Maximum height'] = 'Comprimento Máximo'; +$lang['Maximum width'] = 'Largura Máxima'; +$lang['Maximum file size: %sB.'] = 'Tamanho máximo do arquivo %sB.'; +$lang['Merge selected tags'] = 'Juntar as tags selecionadas'; +$lang['Merge tags'] = 'Juntar tags'; +$lang['Missing Plugins'] = 'Plugins perdidos'; +$lang['Missing a temporary folder'] = 'Pasta temporária perdida'; +$lang['Move to album'] = 'Mover para o álbum'; +$lang['Multiple Size'] = 'Múltiplos tamanhos'; +$lang['Name of the duplicate'] = 'Nome do duplicado'; +$lang['New Version'] = 'Nova Versão'; +$lang['No destination tag selected'] = 'Nenhuma tag de destino selecionada'; +$lang['No file was uploaded'] = 'Nenhum arquivo foi enviado'; +$lang['No group is permitted to see this private album'] = 'Nenhum grupo tem permissão para ver esse álbum'; +$lang['No order field selected'] = 'Nenhum campo de ordenação selecionado'; +$lang['No photo in the current set.'] = 'Nenhuma foto no set atual'; +$lang['No photo selected, %d photos in current set'] = 'Nenhuma foto selecionada, %d fotos no set atual'; +$lang['No photo selected, no action possible.'] = 'Nenhuma fotos selecionada, nenhuma ação possível.'; +$lang['No results'] = 'Sem Resultados'; +$lang['None'] = 'Nenhum'; +$lang['Not cropped correctly?'] = 'Não recortado corretamente?'; +$lang['Notify administrators when a comment is'] = 'Notifique os administradores quando comentado'; +$lang['Numeric identifier : %d'] = 'Identificador numérico: %d'; +$lang['Obsolete Plugins'] = 'Plugins Obsoletos'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'No seu Linux,simplesmente instale Shotwell com seu gerenciador de pacotes e ative a opção de publicação Piwigo.'; +$lang['Opacity'] = 'Opacidade'; +$lang['Operation in progress'] = 'Tratamento em progresso'; +$lang['Order of menubar items has been updated successfully.'] = 'Ordenamento do menu foi atualizado com sucesso.'; +$lang['Original Size'] = 'Tamanho Original'; +$lang['Original file : %s'] = 'Arquivo original: %s'; +$lang['Orphan tags deleted'] = 'Tags órfãs excluídas'; +$lang['Page end'] = 'Página final'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Confirmação de senhas perdida. Por favor confirme a senha escolhida.'; +$lang['Password is missing. Please enter the password.'] = 'Senha perdida. Por favor entre com a senha.'; +$lang['Pending Comments'] = 'Comentários pendentes'; +$lang['Permission granted for groups'] = 'Permissão garantida para grupos'; +$lang['Permission granted for users'] = 'Permissão garantida para usuários'; +$lang['Permission management'] = 'Gerenciamento de permissões'; +$lang['Photo %s of %s'] = 'Foto %s de %s'; +$lang['Photo Page'] = 'Página da Foto'; +$lang['Photo Properties'] = 'Propriedade da Foto'; +$lang['Photo name'] = 'Nome da Foto'; +$lang['Photo sizes with crop'] = 'Tamanho da foto recortada'; +$lang['Photos generation in progress...'] = 'Geração de Fotos em progresso...'; +$lang['Photos'] = 'Fotos'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin de Publicação Piwigo para Lightroom'; +$lang['Piwigo Update'] = 'Atualização Piwigo'; +$lang['Piwigo Uploader'] = 'Envio de Fotos do Piwigo'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo não pode receber arquivos de atualização do servidor'; +$lang['Piwigo export plugin for Aperture'] = 'Plugin de Exportação do Piwigo para Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin de Exportação do Piwigo para iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo para Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Plugin de publicação do Piwigo para Shortwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Plugin de publicação do Piwigo para digiKam'; +$lang['Please wait...'] = 'Por favor espere...'; +$lang['Posted %s on %s'] = 'Publicado %s em %s'; +$lang['Predefined filter'] = 'Filtro pré-definido'; +$lang['Privacy level set to "%s"'] = 'Nível de privacidade definido para "%s"'; +$lang['Rated %d times, score : %.2f'] = 'Avaliado %d vezes, Nota: %2f'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Galeria Remota cliente para Android) é um cliente Piwigo de código aberto (GPL v3) para a plataforma Android.'; +$lang['Read Piwigo Documentation'] = 'Leia da Documentação do Piwigo'; +$lang['Refresh photo set'] = 'Recarregue as fotos'; +$lang['Remove all filters'] = 'Remova todos os filtros'; +$lang['Remove from caddie'] = 'Remova da cesta'; +$lang['Reset ignored updates'] = 'Reset atualizações ignoradas'; +$lang['Resize after upload'] = 'Redimensione depois de enviar'; +$lang['Resize'] = 'Redimensione'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaure a configuração padrão. Você perderá suas configurações de plugins!'; +$lang['Restore'] = 'Restaure'; +$lang['Save Settings'] = 'Salve as configurações'; +$lang['Save Template Directory'] = 'Salve o diretório de templates'; +$lang['Save manual order'] = 'Salve a ordem manual'; +$lang['Save visits in history for'] = 'Salve o histórico de visitantes'; +$lang['Searching...'] = 'Pesquisando...'; +$lang['Select a file'] = 'Selecione um arquivo'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selecione uma região com o mouse para definir um novo centro de interesse.'; +$lang['Select an album'] = 'Selecione um álbum'; +$lang['Select at least one comment'] = 'Selecione ao menos um comentário'; +$lang['Select at least two tags for merging'] = 'Selecione ao menos duas tags para juntar'; +$lang['Select files'] = 'Selecione arquivos'; +$lang['Select groups...'] = 'Selecione grupos...'; +$lang['Select the destination tag'] = 'Selecione a tag de destino'; +$lang['Select users...'] = 'Selecione usuários...'; +$lang['Select:'] = 'Selecione:'; +$lang['Selection'] = 'Seleção'; +$lang['Send connection settings by email'] = 'Envie configuração de conexão por email'; +$lang['Set as default language for unregistered and new users'] = 'Escolha o idioma padrão para os novos usuários e usuários não registrados.'; +$lang['Set as default theme for unregistered and new users'] = 'Escolha o tema padrão para os novos usuários e usuários não registrados.'; +$lang['Set author'] = 'Escolha o autor'; +$lang['Set creation date'] = 'Escolha a data de criação'; +$lang['Set title'] = 'Escolha o título'; +$lang['Settings'] = 'Configurações'; +$lang['Sharpen'] = 'Destacar'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell é um organizador de fotos de código aberto que roda em Linux e é o gerenciador padrão de fotos no Ubuntu e Fedora.'; +$lang['Show menubar'] = 'Mostre menu'; +$lang['Some themes and plugins may be not available yet.'] = 'Álguns temas e plugins podem não estar disponíveis ainda.'; +$lang['Some upgrades are available for extensions.'] = 'Algumas atualizações estão disponíveis para as extensões.'; +$lang['Source tag'] = 'Tag fonte'; +$lang['Start Upload'] = 'Inicia o envio'; +$lang['Start pLoader and add your photos.'] = 'Inicie o pLoader e adicione suas fotos.'; +$lang['Switch to clear or dark colors for administration'] = 'Troque para cores claras ou escuras na Adminstração.'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESSE PLUGIN AGORA FAZ PARTE DO NÙCLEO DO PIWIGO! DESINSTALE-O AGORA!'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'A tag "%s" agora está duplicada de "%s"'; +$lang['Tags %s merged into tag %s'] = 'Tag %s juntada na tag%s'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'O plugin de exportação do Piwigo permite que você crie álbuns e exporte fotos.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'O plugin de publicação Piwigo permite que você exporte e sincronize fotos diretamente do Lightroom para sua galeria Piwigo.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'O centro de interesse é a área mais significativa da foto.'; +$lang['The following tag was deleted'] = 'A tag seguinte foi apagada'; +$lang['The original image quality must be a number between %d and %d'] = 'A qualidade de imagem original deve ser um número entre %d e %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'A altura máxima original deve ser um número entre %d e %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'A largura máxima original deve ser um número entre %d e %d'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Os arquivos enviados excederam a diretiva MAX_FILE_SIZE especificada no formulário HTML'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Os arquivos enviados excederam a diretiva upload_max_filesize no php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'O arquivo enviado foi somente parcialmente enviado'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Os arquivos enviados excederam a diretiva post_max_size no php.ini: %sB'; +$lang['The whole page'] = 'Toda a página'; +$lang['The whole set'] = 'Todo o set'; +$lang['Theme has been successfully installed'] = 'Temas forma instalados com sucesso.'; +$lang['Themes which need upgrade'] = 'Temas que necessitam ser atualizados.'; +$lang['Themes'] = 'Temas'; +$lang['There is no group in this gallery.'] = 'Não existe nenhum grupo nessa galeria.'; +$lang['There is no other language available.'] = 'Nâo existe nenhum outro idioma disponível.'; +$lang['There is no other plugin available.'] = 'Não existe nenhum outro plugin disponível.'; +$lang['There is no other theme available.'] = 'Não existe nenhum outro tema disponível.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Esse álbum contém %d fotos, adicionadas entre %s e %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Esse álbum contém %d fotos, adicionadas em %s'; +$lang['This album contains no photo.'] = 'Esse álbum não contém foto.'; +$lang['This is a major update, with new exciting features.'] = 'Essa é uma grande atualização, com novas características excitantes.'; +$lang['This is a minor update, with only bug corrections.'] = 'Essa é uma pequena atualização, somente com correção de bugs.'; +$lang['This theme was not designed to be directly activated'] = 'Esse tema não foi desenvolvido para ser ativado diretamente.'; +$lang['Thumbnails generation in progress...'] = 'Geração de Thumbnails em progresso...'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para exportar suas fotos do digiKam para Piwigo, simplesmente instale os plugins digiKam e Kipi.'; +$lang['Tools'] = 'Ferramentas'; +$lang['Two updates are available'] = 'Duas atualizações estão disponíveis'; +$lang['Type here the author name'] = 'Digite aqui o nome do autor'; +$lang['Type here the title'] = 'Digite aqui o título'; +$lang['Type in a search term'] = 'Digite um termo para pesquisar'; +$lang['Unable to dump database.'] = 'Não foi possível esvaziar o banco de dados'; +$lang['Uninstalled Plugins'] = 'Plugins desinstalados'; +$lang['Unknown upload error'] = 'Erro de envio desconhecido'; +$lang['Unlock gallery'] = 'Galeria destrancada'; +$lang['Update All'] = 'Atualize tudo'; +$lang['Update Complete'] = 'Atualização Completa'; +$lang['Update in progress... Please wait.'] = 'Atualização em progresso... por favor espere.'; +$lang['Update to Piwigo %s'] = 'Atualize para Piwigo %s'; +$lang['Updates'] = 'Atualizações'; +$lang['Upload Photos'] = 'Envio de fotos'; +$lang['Uploaded Photos'] = 'Fotos Enviadas'; +$lang['Visit Gallery'] = 'Visite a Galeria'; +$lang['Visit Piwigo project website'] = 'Visite o site do Projeto Piwigo'; +$lang['Visit language site'] = 'Visite o site de Idiomas'; +$lang['Visit plugin site'] = 'Visite o site de Plugins'; +$lang['Visit theme site'] = 'Visite o site de temas'; +$lang['Visited %d times'] = 'Visitado %d vezes'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'Cuidado: Esse plugin parece não ser compatível com essa versão do Piwigo.'; +$lang['Watermark'] = 'Marca Dágua'; +$lang['Web Form'] = 'Formulário Web'; +$lang['Webmaster status is required.'] = 'status de webmaster é necessário'; +$lang['Week starts on'] = 'Semana inicia em'; +$lang['Who can see these photos?'] = 'Quem pode ver essas fotos?'; +$lang['Who can see this photo?'] = 'Quem pode ver essa foto?'; +$lang['Width'] = 'Largura'; +$lang['With no album'] = 'Com nenhum álbum'; +$lang['With no tag'] = 'Com nenhuma tag'; +$lang['With no virtual album'] = 'Com nenhum álbum virtual'; +$lang['X Position'] = 'Posição X'; +$lang['X Repeat'] = 'Repita X'; +$lang['Y Position'] = 'Posição Y'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Você está usando o envio de fotos do navegador. Tente em vez disso o envio de fotos em Flash.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Você está usando o envio de fotos em Flash. Problemas? Tente em vez disso o envio de fotos do navegador.'; +$lang['You can activate only one mobile theme.'] = 'Você pode ativar somente um tema móbile.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Você pode atualizar para o Piwigo %s diretamente, sem atualizar para o Piwigo %s (recomendado).'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Você não pode definir uma ordenação padrão das fotos porque você tem uma configuração personalizada na sua configuração local.'; +$lang['You have %d orphan tags: %s.'] = 'Você tem %d tags órfãs: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Você especificou $conf[\'order_by\'] no seu arquivo de configuração local, esse parâmetro está em desuso, por favor remova-o ou renomei-o dentro $conf[\'order_by_custom\']!'; +$lang['Your configuration settings are saved'] = 'Sua configuração foi salva'; +$lang['Zoom'] = 'Zoom'; +$lang['add a new watermark'] = 'adicione uma nova marca dágua'; +$lang['administrators'] = 'administradores'; +$lang['any visitor can see this album'] = 'qualquer visitante pode ver esse álbum'; +$lang['apply automatic sort order'] = 'aplique ordenamento automático'; +$lang['bottom left corner'] = 'botão canto esquerdo'; +$lang['bottom right corner'] = 'botão canto direito'; +$lang['cancel manual order'] = 'Cancela ordenamento manual'; +$lang['create a new site'] = 'Cria novo site'; +$lang['custom'] = 'Personalize'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam é um software livre gerenciador avançado de fotos digitais para Linux, Windows e MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam é desenvolvido para fotógrafos que querem ver, gerenciar, editar, melhorar, organizar, colocar tags e compartilhar fotografias.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto é o gerenciador padrão no MacOSX. O Plugin de exportação do Piwigo deixa você criar novos álbuns e exportar fotos diretamente do iPhoto para sua galeria de fotos Piwigo.'; +$lang['include photos with lower privacy level'] = 'inclua fotos com menor nível de privacidade'; +$lang['manual order'] = 'Ordem Manual'; +$lang['middle'] = 'médio'; +$lang['modified'] = 'modificadon'; +$lang['new'] = 'novo'; +$lang['on the %d selected photos'] = 'nas %d fotos selecionadas'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader plataforma para Envio de fotos do Piwigo. Do seu computador, pLoader prepara suas fotos e as transfere para sua Galeria Piwigo.'; +$lang['pending validation'] = 'Validação pendente'; +$lang['pixels'] = 'pixels'; +$lang['registered users'] = 'Usuários Registrados'; +$lang['remove author'] = 'remove autor'; +$lang['remove creation date'] = 'remove data de criação'; +$lang['remove this filter'] = 'remove esse filtro'; +$lang['remove title'] = 'remove título'; +$lang['show details'] = 'mostra detalhes'; +$lang['simple visitors'] = 'visitante simples'; +$lang['top left corner'] = 'canto superior esquerdo'; +$lang['top right corner'] = 'Canto superior direito'; +$lang['unknown'] = 'desconhecido'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'os visitantes precisam autenticar e ter as permissões apropriadas para ver esse álbum'; +$lang['Landscape'] = 'Landscape'; +$lang['Manage photos'] = 'Gerencie Fotos'; +$lang['Minimum height'] = 'Altura Mínima'; +$lang['Minimum width'] = 'Largura Mínima'; +$lang['Number of albums per page'] = 'Número de álbuns por página'; +$lang['Panorama'] = 'Paisagem'; +$lang['Portrait'] = 'Retrato'; +$lang['View in gallery'] = 'Ver na Galeria'; +$lang['Ratio'] = 'Relação'; +$lang['between %.2f and %.2f'] = 'Entre %.2f e %.2f'; +$lang['between %d and %d pixels'] = 'Entre %d e %d pixels'; +$lang['Duplicate'] = 'Duplicado'; +$lang['Manage the members'] = 'Gerencie os membros'; +$lang['Merge selected groups'] = 'Junte os grupos selecionados'; +$lang['No group selected, no action possible.'] = 'Nenhum grupo selecionado. Nenhuma açao é possível.'; +$lang['No members to manage'] = 'Sem membros para gerenciar'; +$lang['Please select at least two groups'] = 'Por favor, selecione ao menos dois grupos'; +$lang['Rename'] = 'Renomear'; +$lang['This group will be set to default'] = 'Esse grupo será usado por padrão'; +$lang['This group will be unset to default'] = 'Esse grupo nao será mais usado por padrao'; +$lang['Type here the name of the new group'] = 'Digite aqui o nome do novo grupo'; +$lang['Purge user cache'] = 'limpa o cache do usuário'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'As dimensões da imagem serão reduzida para %dx%d pixels.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionamento após envio foi desativado devido ao uso de GD como biblioteca gráfica'; +$lang['Select at least one tag'] = 'Selecione pelo menos uma tag'; +$lang['Basic settings'] = 'Configurações básicas'; +$lang['General'] = 'Geral'; +$lang['Mail theme'] = 'Tema correio'; +$lang['(filtered from %s total users)'] = '(filtrado do total de %s usuários)'; +$lang['All %d users are selected'] = 'Todos os %d usuários estão selecionados'; +$lang['Change password'] = 'Alterar senha'; +$lang['Change username'] = 'Muda o nome de usuário'; +$lang['Last visit on %s, %s.'] = 'Última visita em %s, %s.'; +$lang['Loading...'] = 'Carregando...'; +$lang['No matching user found'] = 'Nenhum usuário encontrado'; +$lang['No user selected of %d users'] = 'Nenhum usuário selecionado do total de %d usuários'; +$lang['No user selected, no action possible.'] = 'Nenhum usuário selecionado, nenhuma ação possível.'; +$lang['Password updated'] = 'Senha atualizada'; +$lang['Registered on %s, %s.'] = 'Registrado em %s, %s.'; +$lang['Show %s users'] = 'Mostra %s usuários'; +$lang['Showing %s to %s of %s users'] = 'Exibindo de %s a %s do total de %s usuários'; +$lang['Update user'] = 'Atualiza usuário'; +$lang['User %s added'] = 'Usuário %s adicionado'; +$lang['User %s updated'] = 'Usuário %s atualizado'; +$lang['Users modified'] = 'Usuários modificados'; +$lang['on the %d selected users'] = 'em %d usuários selecionados'; +$lang['%d of %d users selected'] = '%d de %d usuários selecionados'; +$lang['Close user details'] = 'Fechar detalhes de usuário'; +$lang['Open user details'] = 'Abrir detalhes de usuário'; +$lang['close'] = 'fechar'; +$lang['Activate it now'] = 'Ativar agora'; +?> \ No newline at end of file diff --git a/sources/language/pt_BR/common.lang.php b/sources/language/pt_BR/common.lang.php new file mode 100644 index 0000000..ac13904 --- /dev/null +++ b/sources/language/pt_BR/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/pt_BR/help/cat_modify.html b/sources/language/pt_BR/help/cat_modify.html new file mode 100755 index 0000000..913ad7c --- /dev/null +++ b/sources/language/pt_BR/help/cat_modify.html @@ -0,0 +1,123 @@ +

              Editar álbum

              + +

              Informações

              + +
                + +
              • nome: renomear o álbum (Renomear virtualmente no caso de álbum físico.).
              • + +
              • descrição: um pequeno texto dando a ideia do conteúdo, + este texto será mostrado no rodapé da página de thumbnails.
              • + +
              + +

              Mover

              + +

              Se o álbum for virtual, você pode movê-lo. Mover um álbum significa mudar seu álbum pai.

              + +

              Opções

              + +
                + +
              • Tipos de acessos: Gerenciamento de permissões. Se você fizer um álbum privado, todos os seus álbuns filhos tornam-se privados. Se você faz um álbum público, todos os seus álbuns pais tornam-se públicos. + +
              • Trancar: Os álbuns e seus sub-álbuns ficarão temporariamente desabilitados para manutenção.
              • + +
              • Comentários: Autoriza usuários a comentar fotos desse álbum.
              • + +
              + +

              Você também pode gerenciar essas opções na tela de gerenciamento de "Propriedades"(screens Comentários, Trancar, +Público/Privado, Representante disponível a partir de Administração » Álbums » Propriedades).

              + +

              Ordem de Classificação

              + +

              Use o padrão ordem de classificação de imagens.

              + +

              Indique se esta ordem de classificação será aplicada também a sub-álbuns.

              + +

              Selecione critérios específicos de classificação para serem usados com este álbum.

              +
                +
              • Data de criação: Data em que a foto foi tirada
              • +
              • Data da publicação: Data da sincronização
              • +
              • Taxa média (*): Taxa média poderá ser alterada pela avaliação do visitante
              • +
              • Mais visitadas (*): A visita atual pode alterar a ordem do mais visitado
              • +
              • Nome do arquivo: Nome dado no campo de informações
              • +
              • Id: Identificação interna (categorias recentes têm identificação interna maior.
              • + +
              +

              (*)Aviso: Certifique-se de testar essas ordens de classificação pois elas podem provocar resultados inesperados.

              + + +

              Representante

              + +

              A representação do álbum é a miniatura exibida na página principal (category.php) para representar +o álbum quando +ele contém apenas sub-álbuns e não fotografias (assim como o álbum raiz).

              +foto de um álbum :

              + +
                + +
              • Página da foto: um dos botões de ação que permite definir a foto atual como representante do +álbum exibido. Este botão está disponível apenas para administradores.
              • + +
              • Modificar informações sobre uma foto em +administração. Esta tela pode ser alcançada a partir picture.php ou Gerenciamento em modo de unidade. Consulte a ajuda da tela para +   detalhes.
              • + +
              • Administração » Álbuns » Propriedades, + Representação. Veja a ajuda dessa tela para maiores informações.
              • + +
              • Editar álbum (a tela atual).
              • + +
              + +

              A escolha de um representante depende da +permitir_representante_aleatório parâmetro de configuração (ver include/config_default.inc.php).

              + +

              No modo padrão (allow_random_representative definido como falso), +cada álbum que contém pelo menos um elemento é representado por um elemento fixo. +Uma vez definida (a criação do álbum), o representante muda apenas +quando um administrador solicitar. Se o representante não é adequado, +você pode pedir para Encontre um representante novo aleatoriamente.

              + +

              Se o parâmetro de configuração allow_random_representative é +definido como verdadeiro, uma categoria contendo fotos pode não ter representante fixo. Apenas use o botão Eliminar representante.

              + +

              Se o álbum contém apenas sub-álbuns e nenhuma foto, ele pode no entanto ser representado por qualquer elemento graças ao modificar informações sobre uma foto. A única opção na tela atual +é o botão Eliminar representante.

              + +

              Vincular todas as fotos do álbum para um novo álbum

              + +
                + +
              • Nome do álbum virtual: Nome do novo álbum a ser criado, +todas as fotos da categoria corrente serão ligadas ao novo álbum.
              • + +
              • Álbum pai: Onde o novo álbum vai ser criado, +deixe em branco para criá-lo na raiz.
              • + +
              + +

              Vincular todas as fotos do álbum para álbuns existentes

              + +
                + +
              • Álbuns: Escolha o álbum de destino.
              • + +
              + +

              Enviar um e-mail de informações para membros do grupo

              + +
                + +
              • Grupo: grupo de destinatários
              • + +
              • Conteúdo do email: Texto livre para enviar a eles.
              • + +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/cat_move.html b/sources/language/pt_BR/help/cat_move.html new file mode 100755 index 0000000..2705d4e --- /dev/null +++ b/sources/language/pt_BR/help/cat_move.html @@ -0,0 +1,15 @@ + +

              Movendo Álbums virtuais

              + +

              Apenas Álbums virtuais podem ter um novo Álbum-pai.

              + +

              Álbums virtuais a mover

              + +

              Selecione um ou mais ábums virtuais que deseje mover. +Se a lista estiver vazia, isso significa que ainda não criou nenhum álbum.

              + +

              Novo álbum-pai

              + +

              Selecione o novo álbum-pai (virtual ou físico). +Se não seleccionar um álbum-pai, os álbums virtuais selecionados serão movidos para a raiz. +Um álbum não poderá ser movido para dentro de si próprio ou para um dos seus sub-álbums.

              \ No newline at end of file diff --git a/sources/language/pt_BR/help/cat_options.html b/sources/language/pt_BR/help/cat_options.html new file mode 100755 index 0000000..7773636 --- /dev/null +++ b/sources/language/pt_BR/help/cat_options.html @@ -0,0 +1,22 @@ +

              Opções de álbum

              + +

              Opções de configuração para vários álbuns de uma vez.

              + +
              + +
              Comentários
              +
              Uma foto pode receber comentários de seus visitantes se ele pertence a um álbum com comentários ativados.
              + +
              Trancar (Lock)
              +
              Álbuns trancados estão desativados para manutenção. Somente os administradores podem vê-los na galeria.
              + +
              Público / privado
              +
              Uma vez que um álbum é privado, dê direitos de acesso aos usuários e grupos.
              + +
              Representante
              +
              Esta opção está disponível quando a entrada no arquivo de configuração allow_random_representative +(veja include/config_defaults.inc.php) está com o valor +true. Cada álbum pode ser representado por uma foto aleatória ou por meio de uma foto escolhida como representante único. +
              + +
              diff --git a/sources/language/pt_BR/help/cat_perm.html b/sources/language/pt_BR/help/cat_perm.html new file mode 100755 index 0000000..39fe1b8 --- /dev/null +++ b/sources/language/pt_BR/help/cat_perm.html @@ -0,0 +1,14 @@ + +

              Editar permissões de álbuns

              + +

              Esta tela está disponível apenas para álbuns privados. Aqui você pode selecionar +usuários e grupos autorizados para um álbum.

              + +

              Grupos

              + +

              Você pode negar ou conceder o acesso de grupos do álbum atual. Modificando +autorizações de grupos, os usuários pertencentes a estes grupos serão negados ou concedidos o acesso ao álbum.

              + +

              Usuários

              + +

              Você pode negar ou conceder acesso a usuários individuais. Usuários que têm acesso através de um grupo pode ser negado o acesso por exceção.

              diff --git a/sources/language/pt_BR/help/configuration.html b/sources/language/pt_BR/help/configuration.html new file mode 100755 index 0000000..ad00493 --- /dev/null +++ b/sources/language/pt_BR/help/configuration.html @@ -0,0 +1,101 @@ +

              Configuração

              + +

              Esta tela permitir que ao administrador fazer a configuração básica da galeria. Na verdade, esta tela mostra apenas os parâmetros de configuração simples que devem ser suficientes para a grande maioria dos administradores. Se você quiser ver outras inúmeros (e avançados) parâmetros de configuração, leia o arquivo de configuração padrão include/config_default.inc.php.

              + +

              A tela é dividida em seções diferentes, agrupando os parâmetros de configuração por tema.

              + + +

              Principal

              +
                +
              • Título da galeria: usada em RSS feed e notificações por e-mail.
              • + +
              • Página banner: exibida na parte superior de cada página pública.
              • + +
              • URL da Galeria: usedo para o RSS feed.
              • + +
              • Bloqueio da galeria: Bloquear toda a galeria para a manutenção. Somente usuários administradores serão capazes de acessar a galeria.
              • + +
              • Classificação: Recurso de classificação da foto está habilitado.
              • + +
              • Avaliação pelos visitantes: Mesmo usuários não cadastrados podem avaliar as imagens.
              • + +
              • Permitir o registo de usuário: Qualquer pessoa pode se cadastrar.
              • + +
              • Endereço de email é obrigatória para todos os usuários: endereço de e-mail será verificado na atualização de registro ou perfil, exceto se a ação é feita por um administrador.
              • + +
              • Administrar e-mail quando um novo usuário se registrar: aadministradores serão notificados por e-mail para cada registro.
              • + +
              • Ordem padrão de fotos: você pode definir uma ordem personalizada com esses menus drop-down.
              • + +
              + +

              Histórico

              + +

              Visitas nas páginas category.php e picture.php será salva na tabela histórico.

              + +

              Visitas serão mostradas em Administração » Ferramentas » Histórico.

              + +
                +
              • Salvar páginas visitadas pelos visitantes: as visitas as páginas pelos visitantes serão gravadas.
              • + +
              • Salvar páginas visitadas pelos usuários: as visitas as páginas pelos usuários registrados visitantes serão gravadas.
              • + +
              • Salvar páginas visitadas pelos administradores: as visitas as páginas pelos administradores serão gravadas.
              • + +
              + +

              Comentários

              +
                + +
              • Comentários para todos : Mesmo visitantes não registrados podem postar comentários.
              • + +
              • Número de comentários por página.
              • + +
              • Validação : um administrador deve validar comentários dos usuários antes que eles se tornam visíveis no site. Validação de comentários de usuários +   ocorrem na tela Administração » Ferramenta » Pending Comentários.
              • + +
              • Administrar e-mail quando um comentário válido é inserido : Envia um e-mail para os administradores quando um usuário digita um comentário e este comentário é validado.
              • + +
              • Administrar e-mail quando um comentário necessita de validação: +Envia um e-mail para os administradores quando um usuário entra um comentário que requer a validação pelo administrador. +Validação de comentários de usuários tem lugar na tela Administração » Ferramentas » Comentários Pendentes.
              • + +
              + +

              Exibição padrão

              + +

              Aqui você pode alterar as opções de exibição usados ​​por visitantes, o usuário padrão que não está conectado. Uma vez conectado, estas opções são substituídas por opções do próprio usuário +(modificável em perfil).

              + +

              É possível alterar as opções de exibição de todos os usuários existentes no Administração » +Usuários » Gerenciar tela onde você pode selecionar uma lista de usuários.

              + +
                + +
              • Idioma: Aplicar a rótulos do Piwigo apenas. Nomes de álbuns de fotos, nomes e descrições de todos os campos não são localizados.
              • + +
              • Número de fotos por linha
              • + +
              • Número de linhas por página
              • + +
              • Tema da interface
              • + +
              • Período recente : Por dia. Período durante o qual a foto é mostrada como nova. Deve ser maior do que 1 dia.
              • + +
              • Expandir todos os álbuns : Expandir todos os álbuns por +padrão no menu Alerta: esta opção é intensiva em recursos e pode gerar uma enorme menu se sua árvore álbum contendo muitos álbuns.
              • + +
              • Mostrar número de comentários : Ver o número de comentários para cada foto na página de miniaturas. Uso intensivo de recursos.
              • + +
              • Mostrar número de acessos: Mostrar sucessos de exibição observados na foto apenas para sua miniatura na página de miniaturas. Somente quando o parâmetro de configuração avançada é:
                + $conf['show_nb_hits'] = verdadeira;
                + Notice: falso por padrão.
              • + +
              • Largura máxima das fotos: máxima largura apresentada . Fotos maiores do que esta definição vão ser redimensionada em exibição. Em vez de escolher esta opção, você pode considerar modificar a largura de suas fotos, o que seria uma melhor prática.
              • + +
              • Altura máxima das fotos : O mesmo que para a configuração de largura máxima.
              • + +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/extend_for_templates.html b/sources/language/pt_BR/help/extend_for_templates.html new file mode 100755 index 0000000..8bae994 --- /dev/null +++ b/sources/language/pt_BR/help/extend_for_templates.html @@ -0,0 +1,51 @@ +

              Configuração de extensão de modelo

              + +

              Sobre

              +

              Sua galeria do Piwigo pode ser personalizada, substituindo arquivos de modelos existentes com versões personalizadas. Por exemplo, o modelo de cabeçalho padrão (header.tpl) pode ser substituído por um modelo de cabeçalho personalizado (my-header.tpl). Depois de enviar as alterações para o banco de dados a galeria vai exibir o cabeçalho personalizado em vez do cabeçalho original.
              +Extensões do modelo são uma forma poderosa de criar temas personalizados para usuários novos e avançados. Usado em conjunto com o Editor LocalFiles você pode criar seus próprios temas infantis.

              + +

              Modelo Original

              +

              Um tema contém uma série de arquivos de modelos que compõem as páginas da galeria. Estes são os modelos originais.

              + +

              Palavra chave URL opcional

              +

              Testas são palavras encontradas no URL da galeria após o nome do módulo. Eles também podem ser permalinks ativos (Consulte a documentação permalink para mais informações). AVISO:, se o mesmo modelo original e mesma palavra-chave é usado em mais de um modelo personalizado apenas o último está ativo.

              + +

              Tema Ligado

              +

              O tema ligado é o tema a partir do qual os arquivos de modelo estão sendo substituídos.

              + +

              Onde estão os modelos originais?

              +

              Modelos originais são os arquivos de modelo fornecidos com cada tema. Estes são salvos em /themes/default/template (ou themes//template). Estes arquivos de modelo não deve ser editado, pois essas alterações serão perdidas com atualizações tema.
              +Suportados incluem modelos originais:

              +
                +
              • index.tpl
              • +
              • mainpage_categories.tpl e/ou thumbnails.tpl
              • +
              • menubar.tpl
              • +
              • header.tpl e/ou footer.tpl
              • +
              • picture_content.tpl e/ou picture.tpl
              • + +
              • profile.tpl e/ou profile_content.tpl
              • +
              • tags.tpl
              • +
              • upload.tpl
              • +
              • about.tpl
              • +
              • popuphelp.tpl
              • +
              • search.tpl e/ou search_rules.tpl
              • +
              • nbm.tpl e/ou notification.tpl
              • +
              • identification.tpl e/ou register.tpl
              • +
              • redirect.tpl
              • +
              +

              Gravando modelos personalizados

              +

              Modelos personalizados devem ser salvos na pasta de modelo de extensão ou subpastas. por exemplo, /template-extension/my-default/header.tpl (ou /template-extension//header.tpl) Arquivos de modelo pode ter qualquer nome com uma extensão de .tpl. Os arquivos de modelo em subpastas aparecem na tela de configuração do modelo como disponíveis modelos personalizados.

              +

              Ativando modelos personalizados

              +

              Selecione o modelo original para substituir. Opcionalmente escolher uma palavra-chave de URL para assegurar que o molde personalizado é mostrado apenas em páginas com essa palavra-chave Selecione um tema ligado e as alterações entrarão em vigor sobre esse tema Enviar as alterações para o banco de dados.

              +

              Desativando modelos personalizados

              +

              Desmarcar o modelo original e enviar as alterações para o banco de dados
              +Exclua os arquivos de modelo personalizado a partir da pasta de modelo extensão.

              + + +

              Avidos

              +
                +
              • O modelo original deve ser o modelo original caso contrário você pode ter resultados imprevisíveis.
              • +
              • Se o mesmo modelo original e mesma palavra-chave da URL é usado em mais de um modelo personalizado apenas o último está ativo.
              • +
              • Arquivos de modelo de amostra são distribuídos para fins de teste apenas. Não editá-los. Criar as suas próprias ou copiar arquivos temáticos existentes no modelo em /template-extension//
              • +
              • Quando o modelo personalizado é excluído o arquivo de modelo original seja imediatamente reativado.
              • +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/group_list.html b/sources/language/pt_BR/help/group_list.html new file mode 100755 index 0000000..6a3cd1d --- /dev/null +++ b/sources/language/pt_BR/help/group_list.html @@ -0,0 +1,22 @@ +

              Lista de grupos

              + +

              Este é o lugar onde você gerencia grupos.

              + +

              Adicionar um grupo

              + +

              Administrador pode adicionar grupos.

              + +

              Lista de grupos

              + +

              Para cada grupo as seguintes ações podem ser aplicadas:

              + + +
                +
              • ir para o gerenciamento de usuários (Admin » Usuários » Gerir)
              • +
              • ir para a tela de gerenciamento de permissões para conceder ou negar o acesso aos álbuns privados.
              • +
              • excluir o grupo (requer uma confirmação)
              • +
              • alternância de status "padrão" (requer uma confirmação)
              • +
              + +

              Grupos padrão

              +

              Grupos padrão são grupos que são automaticamente associadas a cada novo usuário no momento do registro ou a criação por um administrador.

              \ No newline at end of file diff --git a/sources/language/pt_BR/help/help_add_photos.html b/sources/language/pt_BR/help/help_add_photos.html new file mode 100755 index 0000000..e6744f4 --- /dev/null +++ b/sources/language/pt_BR/help/help_add_photos.html @@ -0,0 +1,28 @@ +

              Várias maneiras de adicionar suas fotos em sua galeria:

              + +
                +
              • Envio direto dentro do seu navegador é a +forma mais simples e imediata. Depende dos recursos de seu navegador +e seu servidor web. Para uma quantidade enorme de fotos ou em caso de você encontrar algum problema, +os outros métodos estão apenas esperando por você!
              • +
              + + + +
                +
              • pLoaderé uma aplicação desktop, que deve ser instalada no seu computador. Arraste e solte as fotos na janela do pLoader, clique em "Enviar para o Piwigo" e deixe o pLoader fazer o trabalho. Você pode encontrar outras aplicações desktop como WinToPiwigo ou o Digikam Plugin de exportação para o Piwigo.
              • +
              + + + + +
              +
                +
              • Transferência FTP é a forma mais recomendada para adicionar uma +   coleção muito grande de fotos com o mínimo de cliques. Siga +   o guia para preparar suas fotos. O método de FTP permitem controlar com precisão +   a organização física de suas fotos em seu servidor.
              • +
              + + +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/help_groups.html b/sources/language/pt_BR/help/help_groups.html new file mode 100644 index 0000000..72c6a6a --- /dev/null +++ b/sources/language/pt_BR/help/help_groups.html @@ -0,0 +1,6 @@ +

              Os grupos são uma maneira conveniente de configurar permissões para uma lista de usuários.

              + +

              Crie grupos em Administração » Usuários » Grupos e associe usuários para este grupo em Administração » Usuários » Gerenciar.

              + +

              Um usuário pode pertencer a vários grupos. A autorização é mais forte do que a proibição : se o usuário "jack" pertence aos grupos "família" e "amigos", e apenas o grupo "família" pode ver a categoria "Natal 2003", então "jack" poderá ver "Natal 2003".

              + diff --git a/sources/language/pt_BR/help/help_misc.html b/sources/language/pt_BR/help/help_misc.html new file mode 100644 index 0000000..013e08b --- /dev/null +++ b/sources/language/pt_BR/help/help_misc.html @@ -0,0 +1,4 @@ +

              Assim que você tiver criado sua galeria, modifique as propriedades padrão em Administração » Configuração » Opções » Guest Settings. Todo usuário novo registrado usará estas opções de configuração padrão.

              + +

              Se você tiver qualquer pergunta, a comunidade Piwigo lhe receberá de braços abertos em seu forum.

              + diff --git a/sources/language/pt_BR/help/help_permissions.html b/sources/language/pt_BR/help/help_permissions.html new file mode 100644 index 0000000..db14d6c --- /dev/null +++ b/sources/language/pt_BR/help/help_permissions.html @@ -0,0 +1,12 @@ +

              Você pode proibir o acesso às categorias. Altere o modo de acesso à categoria para "privado" se você quiser gerenciar permissões.

              + +

              Você pode tornar uma categoria privada simplesmente editando uma categoria (Administração » Categorias » Gerenciar » editar) ou alterando as opções em toda a árvore da categoria (Administração » Categorias » Propriedades » Publico / Privado).

              + +

              Uma vez que a categoria esteja como privada, você pode gerenciar as permissões para grupos e usuários com 3 telas:

              + +
                +
              • Administração » Usuários » Gerenciar » ação das permissões (um link por usuário)
              • +
              • Administração » Usuários » Grupos » ação das permissões (um link por grupo)
              • +
              • Administração » Categorias » Gerenciar » editar ação das permissões da categoria (um link por categoria)
              • +
              + diff --git a/sources/language/pt_BR/help/help_virtual_links.html b/sources/language/pt_BR/help/help_virtual_links.html new file mode 100644 index 0000000..b8a1298 --- /dev/null +++ b/sources/language/pt_BR/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

              As fotos são mostradas na categoria correspondente are displayed in the category corresponding to the file directory.

              + +

              Você também pode mostrar uma imagem em várias categorias, sem a necessidade de duplicar o arquivo em seu servidor. Associe a imagem a qualquer categoria na tela de edição de foto (que qualquer administrador pode ter acesso da página de foto na galeria).

              + +

              Categorias virtuais são baseadas neste conceito: elas não tem diretório correspondente. Crie categorias virtuais através da Administração » Categorias » Gerenciar.

              + diff --git a/sources/language/pt_BR/help/history.html b/sources/language/pt_BR/help/history.html new file mode 100755 index 0000000..78cf940 --- /dev/null +++ b/sources/language/pt_BR/help/history.html @@ -0,0 +1,22 @@ +

              Histórico

              + +

              Nestas telas, você pode monitorar história de visitas de sua galeria de acordo com as opções escolhidas em: Administração » Configuração » Opções » Histórico

              + +

              Estatísticas

              +
                +

                Se você escolheu para gravar as páginas visitadas (index.php e picture.php), você pode monitorá-los a partir dessa guia.

                +
              • Estatística Global: visitas por ano.
              • +
              • Estatística Anual: visitas por mês no ano selecionado .
              • +
              • Estatística Mensal: visitas por dia no mês selecionado .
              • +
              • Estatística Diária: visitas por hora no dia selecionado.
              • +
              + +

              Pesquisar

              +
                +

                Se você escolheu para gravar as páginas visitadas (index.php e picture.php), você pode procurar os detalhes deste guia com a ajuda de filtros diferentes.

                +
              • Filtro por data: selecione o intervalo de datas para pesquisar para definir as datas de início e fim.
              • +
              • Filtro por tipo de elemento: selecionar o tipo de elemento para estatísticas sobre esse elemento.
              • +
              • Filtro por usuário: selecione o usuário para as estatísticas sobre esse usuário.
              • +
              • Filtro por imagem identifier: selecione o identificador de imagem para as estatísticas sobre essa imagem.
              • +
              • Filtro por nome do arquivo: selecione o nome do arquivo para estatísticas sobre o arquivo..
              • +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/maintenance.html b/sources/language/pt_BR/help/maintenance.html new file mode 100755 index 0000000..f0aa4d0 --- /dev/null +++ b/sources/language/pt_BR/help/maintenance.html @@ -0,0 +1,26 @@ +

              Manutenção

              + +

              Para otimizar o tempo de geração da página o Piwigo usa informações armazenadas em cache. Por exemplo, em vez de contar o número de imagens contidas em cada álbum, em cada página recarregada esta informação está armazenada na base de dados. Em teoria, esta informação deve ser sempre correta mas, às vezes, pode ocorrer um erro e as informações em cache se tornam desatualizadas.

              + +

              Algumas informações se tornam menos útil quando o tempo passa. Excluindo essa informação inútil do banco de dados vai lhe poupar algum espaço em disco.

              + +
                +
              • Excluir tags órfãs
              • +
              +
                +
              • Atualizar informações de álbuns: Para cada álbum, a seguinte informação é verificada e atualizada, se necessário: lista de álbuns dos pais, número de fotos, data da última foto, a posição entre os álbuns irmãos, posição entre todos os álbuns. Esta ação também verifica a consistência de fotos representantes.
              • +
              • Atualização de informações de fotos: Para cada foto, as informações atualizadas são: caminho completo para o arquivo, a taxa média. Aviso, não se confunda: informações de metadados devem ser sincronizados a partir de Administração » Ferramentas » sincronização, ou na tela de modificação de uma foto simples (através de Foto por exemplo).
              • +
              +
                +
              • Reparar e otimizar o banco de dados:Realiza operações de reordenamento, reparação e otimização em cada tabela do banco de dados
              • +
              • Reinicializar verificação de integridade
              • +
              + +
                +
              • Purgar detalhes de história: Eliminar todas as linhas da tabela história. Tela Administração » Ferramentas » Histórico não vai mais mostrar informações para a história do passado. Aviso: todos os dados serão perdidos, sem qualquer forma de recuperá-los.
              • +
              • Purgar resumo histórico: Eliminar todas as informações de resumo sobre visitas. Este resumo é calculado a partir dos detalhes da história.
              • +
              • Purgar seções: Excluir sessões de usuários expirados.
              • +
              • Purgar notificações feeds nunca usadas
              • +
              • Purgar historia de pesquisas
              • +
              • Purgar modelos compilados
              • +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/notification_by_mail.html b/sources/language/pt_BR/help/notification_by_mail.html new file mode 100755 index 0000000..d23389b --- /dev/null +++ b/sources/language/pt_BR/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

              Notificação pelo Mail (NPM)

              + +

              Configurar e gerir notificações de e-mail aos usuários notificando-os de mudanças para o seu site.

              + +

              Esta tela é composta por três guias:

              + +

              Configurações

              +

              Disponível apenas para webmasters, este guia apresenta a notificação por meio de parâmetros de e-mail.

              + +

              Subscrever

              +

              Disponível apenas para webmasters, este guia gerencia assinatura de um usuário para notificações por email. Adicionar usuários para a caixa de subscrito por eles para receber notificações por correio.

              + +

              Enviar

              +

              Disponível apenas para webmasters e administradores, este guia permite que os administradores enviem e-mails de notificação aos usuários inscritos.

              \ No newline at end of file diff --git a/sources/language/pt_BR/help/permalinks.html b/sources/language/pt_BR/help/permalinks.html new file mode 100755 index 0000000..1ed066d --- /dev/null +++ b/sources/language/pt_BR/help/permalinks.html @@ -0,0 +1,7 @@ +

              Permalinks

              + +

              Permalinks são usados ​​para fazer urls álbum mais agradáveis. Quando um álbum tem um permalink definido, o id do álbum não é mais necessária na url.

              + +

              Quando um permalink for excluída, você pode salvá-lo na história permalink, de modo que links externos para páginas do Piwigo ainda funcionam. Na tabela _ permalink você pode ver a data em que o permalink foi excluído, a última vez que foi usado e o número de vezes que este permalink foi usado.

              + +

              Note que permalinks deve ser exclusivo por álbum. Também na história permalink você não pode ter o mesmo permalink definido mais de uma vez.

              \ No newline at end of file diff --git a/sources/language/pt_BR/help/photos_add_ftp.html b/sources/language/pt_BR/help/photos_add_ftp.html new file mode 100644 index 0000000..21d5581 --- /dev/null +++ b/sources/language/pt_BR/help/photos_add_ftp.html @@ -0,0 +1,106 @@ +
              + Início Rápido + +
                +
              1. Crie um diretório no seu computador.
              2. + +
              3. Copie algumas fotos para esse diretório, altere o tamanho delas para serem exibidas na rede. Cuidado: o nome dos diretórios e dos arquivos devem conter apenas letras, números, "-", "_" ou ".". Não use espaço em branco, e nem caracteres acentuados.
              4. + +
              5. Com a ajuda de um programa de FTP, copie o seu diretório para o diretório "galleries" da sua instalação Piwigo.
              6. + +
              7. Faça o login na sua galeria e vá até Administração » Imagens » Miniatruras para criar alguma miniatura que esteja faltando.
              8. + +
              9. Vá até Administração e clique no grande botão escrito "Sincronização".
              10. +
              + +

              Parabéns! Você acabou de criar a primeira categoria da sua galeria de fotos.

              + +
              +
              + Organização de diretórios e arquivos +
                + +
              • + +

                Os diretórios das categorias estão no diretório "galleries" no Piwigo. Segue aqui a árvore de diretórios de uma pequena galeria (mas + usando muitos recursos) :

                + +
                +.
                +|-- admin
                +|-- doc
                +|-- galleries
                +|   |-- category-1
                +|   |   |-- category-1.1
                +|   |   |   |-- category-1.1.1
                +|   |   |   |   |-- category-1.1.1.1
                +|   |   |   |   |   |-- pwg_high
                +|   |   |   |   |   |   +-- wedding.jpg
                +|   |   |   |   |   |-- thumbnail
                +|   |   |   |   |   |   +-- TN-wedding.jpg
                +|   |   |   |   |   +-- wedding.jpg
                +|   |   |   |   +-- category-1.1.1.2
                +|   |   |   +-- category-1.1.2
                +|   |   |-- category-1.2
                +|   |   |   |-- pookie.jpg
                +|   |   |   +-- thumbnail
                +|   |   |       +-- TN-pookie.jpg
                +|   |   +-- category-1.3
                +|   +-- category-2
                +|       |-- piglet.gif
                +|       |-- pwg_representative
                +|       |   +-- video.jpg
                +|       |-- thumbnail
                +|       |   +-- TN-piglet.jpg
                +|       +-- video.avi
                +|-- include
                +|-- install
                +|-- language
                +|-- template
                ++-- tool
                + +
              • + +
              • Cada diretório sob "galleries" produz uma categoria. Não há limite de profundidade.
              • + +
              • Basicamente, um item é representado por um arquivo. Um arquivo pode ser um + iten Piwigo se sua extensão estiver entre as possibilidades dos parâmetros de configuração file_ext (veja o arquivo include/config_default.inc.php ). Um arquivo pode + ser uma imagem se a sua extensão estiver entre as possibilidades dos parâmetros de configuração picture_ext.
              • + +
              • Os itens fotográficos devem ter uma miniatura associada (veja a seção abaixo + sobre miniaturas)
              • + +
              • Os itens fotográficos podem ter um arquivo de alta definição associado. Assim como para + wedding.jpg no exemplo acima. Não use prefixo nas imagens de alta definição.
              • + +
              • Outros itens (video, sons, arquivos de texto, o que você quiser...) são + por padrão representados por um ícone correspondente à extensão do nome de arquivo. Você tem a opção de associar uma miniatura e um arquivo representativo (veja video.avi no exemplo acima).
              • + +
              • Atenção: o nome dos diretórios e dos arquivos devem conter apenas letras, números, "-", "_" ou ".". Não use espaço em branco e nem caracteres acentuados.
              • + +
              • Uma vez que os arquivos, as miniaturas e representativos estiverem corretamente alocados nos diretórios, + vá até : Administração » Categorias » + Sincronizar
              • + +
              + +
              +
              + Miniaturas (Thumbnails) +
                + +
              • Cada foto deve ter a sua miniatura.
              • + +
              • As miniaturas estão armazenadas no subdiretório "thumbnail" no diretório das categorias. + A miniatura tem o mesmo nome de arquivo que a foto correspondente, com TN- como prefixo.
              • + +
              • Aviso: use um módulo externo para a criação das miniaturas.
              • + +
              • Mesmo se isto não é recomendado (qualidade da imagem, carregamento do servidor, etc), você pode usar a página + class="pwgScreen">Administração » Imagens » Miniaturas para criar as miniaturas.
              • + +
              • Dê acesso de escrita para todos os diretórios das categorias.
              • + +
              +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/search.html b/sources/language/pt_BR/help/search.html new file mode 100755 index 0000000..977725c --- /dev/null +++ b/sources/language/pt_BR/help/search.html @@ -0,0 +1,24 @@ +

              Pesquiasar

              + +

              Esta página permite que você faça pesquisa de fotos em toda a galeria.

              + +
              + +
              Busca por palavras
              +
              Busca de uma ou várias palavras entre os atributos relacionados às fotos +   da galeria. Use * como complemento para palavras parciais.
              + +
              Busca de um autor
              +
              Use * como complemento para palavras parciais.
              + +
              Pesquisar por data
              +
              Selecione uma data e/ou uma data final para a sua consulta. Deixe o campo de data vazio +se você quiser fazer uma consulta "antes". O ano no último +campo deve ser digitado no seguinte formato: AAAA (ou seja, 2004)
              + +
              Pesquisa em álbuns
              +
              Selecione álbum ou álbuns que deseja pesquisar. Todos os +   sub-álbuns podem ser pesquisados ​​selecionando-se o álbum pai e definindo-se permitir +   pesquisa sub-álbuns abaixo.
              + +
              \ No newline at end of file diff --git a/sources/language/pt_BR/help/synchronize.html b/sources/language/pt_BR/help/synchronize.html new file mode 100755 index 0000000..5bbc9f4 --- /dev/null +++ b/sources/language/pt_BR/help/synchronize.html @@ -0,0 +1,14 @@ +

              Sincronize

              + +

              Existem dois tipos diferentes de sincronização:

              +
                +
              • diretórios/arquivos
              • +
              • arquivo de metadados
              • +
              + +

              Sincronizar diretórios e arquivos é atualizar sua árvore de diretórios com a árvore de diretórios no banco de dados. +Sincronizar arquivos de metadados é atualizar informações de fotos, tais como tamanho do arquivo, dimensões em pixels, informações de EXIF ou IPTC no banco de dados.

              + +

              Quando sincronizar seus envios com sua galeria, você deve primeiro sincronizar diretórios e arquivos.

              + +

              O processo de sincronização pode tomar muito tempo (dependendo do servidor e do número de elementos para gerenciar) assim é possível fazê-lo álbum por álbum.

              \ No newline at end of file diff --git a/sources/language/pt_BR/help/user_list.html b/sources/language/pt_BR/help/user_list.html new file mode 100755 index 0000000..f32eaf3 --- /dev/null +++ b/sources/language/pt_BR/help/user_list.html @@ -0,0 +1,23 @@ +

              Lista de usuários

              + +

              Esse é o lugar onde você gerencia os usuários de sua galeria Piwigo.

              + +

              Adicionar um usuário

              + +

              Um administrador pode adicionar usuários manualmente. Para cada usuário crie um nome de usuário, uma senha e submeta um e-mail válido.

              + +

              Lista de usuários

              + +

              A lista de usuários existentes pode ser filtrada por nome de usuário (use * com coringa), grupo ou status. Ela pode ser ordenada por data de registro ou nome de usuário, em ordem crescente ou decrescente.

              + +

              Essa tela permite gerenciar vários usuários de uma única vez usando diferentes ações:

              + +
                +
              • Apagar usuários (requer confirmação)
              • +
              • Mudar o status do usuário
              • +
              • Associá-lo ou dessociá-lo de grupos
              • +
              • Modificar propriedades de exibiçao
              • +
              • Modificar preferências adicionais
              • +
              + +

              O alvo padrão é a seleção (somente os usuários selecionados) ou todos os usuários mostrados na lista filtrada.

              \ No newline at end of file diff --git a/sources/language/pt_BR/index.php b/sources/language/pt_BR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/pt_BR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/pt_BR/install.lang.php b/sources/language/pt_BR/install.lang.php new file mode 100644 index 0000000..0934344 --- /dev/null +++ b/sources/language/pt_BR/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Precisa de ajuda ? Faça a sua pergunta no Piwigo message board.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Os visitantes poderão entrar em contato com o administrador do site através desse email'; +$lang['PHP 5 is required'] = 'É necessário PHP 5'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Parece que a sua hospedagem está atualmente usando PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pode tentar mudar sua configuração para PHP 5 através da criação ou modificação de um arquivo .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note que você pode alterar sua configuração por conta própria e reiniciar o Piwigo depois disso.'; +$lang['Try to configure PHP 5'] = 'Tentar configurar PHP 5'; +$lang['Sorry!'] = 'Lamento!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo não teve condições de configurar o PHP 5.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Você deve entrar em contato com o suporte do seu provedor e ver como você poderia mudar para PHP 5 por conta própria."; +$lang['Hope to see you back soon.'] = 'Espero te ver de volta em breve.'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Uma solução alternativa é copiar o texto na caixa acima e cole-o no arquivo "local/config/database.inc.php" (Atenção: database.inc.php deve conter apenas o que está na área de texto, sem retorno de linha ou caractere de espaço)'; +$lang['Congratulations, Piwigo installation is completed'] = 'Parabéns, a instalção do Piwigo foi completada. '; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Criação do arquivo de configuração local/config/database.inc.php falhou.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Não hesite em consultar os nossos fóruns para qualquer ajuda: %s'; +$lang['Download the config file'] = 'Baixar o arquivo de configuração.'; +$lang['Just another Piwigo gallery'] = 'Apenas outra galeria Piwigo.'; +$lang['Welcome to my photo gallery'] = 'Bem-Vindo a minha galeria de fotos.'; +$lang['Welcome to your new installation of Piwigo!'] = 'Bem-Vindo a sua nova instalação do Piwigo.'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Você pode baixar o arquivo de configuração e colocá-lo na pasta local/config de sua instalação.'; +$lang['localhost or other, supplied by your host provider'] = 'localhost ou outro, fornecido pelo seu provedor de hospedagem'; +?> \ No newline at end of file diff --git a/sources/language/pt_BR/iso.txt b/sources/language/pt_BR/iso.txt new file mode 100644 index 0000000..e9aa02f --- /dev/null +++ b/sources/language/pt_BR/iso.txt @@ -0,0 +1 @@ +Brasil [BR] \ No newline at end of file diff --git a/sources/language/pt_BR/pt_BR.jpg b/sources/language/pt_BR/pt_BR.jpg new file mode 100644 index 0000000..8684467 Binary files /dev/null and b/sources/language/pt_BR/pt_BR.jpg differ diff --git a/sources/language/pt_BR/upgrade.lang.php b/sources/language/pt_BR/upgrade.lang.php new file mode 100644 index 0000000..26e9fe8 --- /dev/null +++ b/sources/language/pt_BR/upgrade.lang.php @@ -0,0 +1,44 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Execute uma avaliação de rotina em [Administração>Tools>Manutenção] se você encontrar algum problema.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaução, os plugins abaixo foram desativados. Você deve checar por atualizações dos plugins antes de reativá-los:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Apenas administrador pode realizar o upgrade: por favor, faça o login logo abaixo.'; +$lang['You do not have access rights to run upgrade'] = 'Você não tem permissões de acesso para realizar o upgrade'; +$lang['In %s, before ?>, insert:'] = 'Em %s, antes de ?>, insira:'; +$lang['All sub-albums of private albums become private'] = 'Todas os sub-álbuns de álbuns privados tornam-se privados'; +$lang['User permissions and group permissions have been erased'] = 'Permissões de usuário e de grupo foram apagadas'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Apenas o prefixo das miniaturas (thumbnails) e o endereço de email do webmaster foram salvos da configuração anterior.'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Esta página se propõe a atualizar o banco de dados do seu Piwigo de uma versão antiga para uma nova versão. O assistente de atualização detectou que você está rodando uma distribuição %s (ou equivalente).'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Por precaução, os temas abaixo foram desativados. Você deve verificar por atualizações dos temas antes de reativá-los:'; + +?> \ No newline at end of file diff --git a/sources/language/pt_PT/about.html b/sources/language/pt_PT/about.html new file mode 100644 index 0000000..3c4cb65 --- /dev/null +++ b/sources/language/pt_PT/about.html @@ -0,0 +1,16 @@ +
            • Piwigo é uma aplicação web que permite a criação de uma galeria de imagens na internet.
            • + +
            • Piwigo é desenvolvido em PHP com uma base de dados MySQL.
            • + +
            • Se tiver sugestões ou comentários, visite o sítio oficial e o fórum Piwigo.
            • + +

              A tradução Portuguesa é mantida por (em ordem alfabética): + +

              +.... Muito obrigado

              \ No newline at end of file diff --git a/sources/language/pt_PT/admin.lang.php b/sources/language/pt_PT/admin.lang.php new file mode 100644 index 0000000..bdbc1e1 --- /dev/null +++ b/sources/language/pt_PT/admin.lang.php @@ -0,0 +1,975 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader significa Carregador Piwigor. Directamente do seu computador, pLoader prepara as suas fotos e transfere-as para a sua galeria de fotos Piwigo.'; +$lang['Privacy level set to "%s"'] = 'Nível de privacidade definido para "%s"'; +$lang['Read Piwigo Documentation'] = 'Ler Documentação Piwigo'; +$lang['Refresh photo set'] = 'Recarregar conjunto de fotos'; +$lang['Remove all filters'] = 'Remover todos os filtros'; +$lang['remove author'] = 'Remover autor'; +$lang['remove creation date'] = 'Remover data de criação'; +$lang['remove this filter'] = 'Remover este filtro'; +$lang['remove title'] = 'Remover título'; +$lang['Resize'] = 'Redimensionar'; +$lang['Save Settings'] = 'Salvar Definições'; +$lang['Select at least one comment'] = 'Selecione pelo menos um comentário'; +$lang['Select files'] = 'Seleccionar ficheiros'; +$lang['Select:'] = 'Selecionar:'; +$lang['Selection'] = 'Selecção'; +$lang['Set as default language for unregistered and new users'] = 'Definir como Linguagem por defeito para utilizadores não registados e novos utilizadores'; +$lang['Set as default theme for unregistered and new users'] = 'Definir como Tema por defeito para utilizadores não registados e novos utilizadores'; +$lang['Set author'] = 'Definir autor'; +$lang['Set creation date'] = 'Definir data de criação'; +$lang['Set title'] = 'Definir título'; +$lang['Settings'] = 'Definições'; +$lang['Start pLoader and add your photos.'] = 'Iniciar pLoader e adicionar as suas fotos.'; +$lang['Switch to clear or dark colors for administration'] = 'Mudar para claro ou escuro as cores na administração'; +$lang['The following tag was deleted'] = 'A Etiqueta seguinte foi removida'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'O arquivo enviado excede a directiva MAX_FILE_SIZE especificada no formulário HTML'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'O arquivo enviado excede a directiva upload_max_filesize definida no ficheiro php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'O arquivo apenas foi enviado parcialmente'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Os ficheiros enviados excedem a directiva post_max_sizedefinida no ficheiro php.ini: %sB'; +$lang['The whole page'] = 'Página completa'; +$lang['The whole set'] = 'Conjunto Completo'; +$lang['Theme has been successfully installed'] = 'O Tema foi instalado com sucesso'; +$lang['Themes'] = 'Temas'; +$lang['There is no other language available.'] = 'Não existe outro idioma disponível.'; +$lang['There is no other plugin available.'] = 'Não existem mais extensões disponíveis.'; +$lang['There is no other theme available.'] = 'Não existem mais temas disponíveis.'; +$lang['This theme was not designed to be directly activated'] = 'Este tema não foi desenhado para ser activado directamente'; +$lang['Tools'] = 'Ferramentas'; +$lang['Type here the author name'] = 'Escreva aqui o nome do autor'; +$lang['Type here the title'] = 'Escreva aqui o título'; +$lang['Uninstalled Plugins'] = 'Extenções não Instaladas'; +$lang['Unknown upload error'] = 'Erro de Envio desconhecido'; +$lang['unknown'] = 'Desconhecido'; +$lang['Upload Photos'] = 'Carregar Fotos'; +$lang['Uploaded Photos'] = 'Fotos carregadas'; +$lang['Visit Gallery'] = 'Visitar a galeria'; +$lang['Visit Piwigo project website'] = 'Visitar o sítio do projecto Piwigo'; +$lang['Visit plugin site'] = 'Visitar o sítio da extenção'; +$lang['Webmaster status is required.'] = 'Estatuto de Webmaster requerido.'; +$lang['Week starts on'] = 'A semana começa em'; +$lang['Who can see these photos?'] = 'Quem pode ver estas fotos?'; +$lang['Who can see this photo?'] = 'Quem pode ver esta foto?'; +$lang['You have %d orphan tags: %s.'] = 'Tem %d etiquetas orfãs: %s.'; +$lang['Your configuration settings are saved'] = 'A sua configuração foi guardada'; +$lang['Remove from caddie'] = 'Remover do carrinho'; +$lang['Themes which need upgrade'] = 'Temas que precisam ser actualizados'; +$lang['Languages which need upgrade'] = 'Idiomas que precisam ser actualizados'; +$lang['All themes are up to date.'] = 'Todos os Temas estão actualizados.'; +$lang['All plugins are up to date.'] = 'Todas as extenções estão actualizadas.'; +$lang['All languages are up to date.'] = 'Todos os Idiomas estão actualizados.'; +$lang['Visit theme site'] = 'Visitar sítio do Tema'; +$lang['Visit language site'] = 'Visitar sitio do Idioma'; +$lang['New Version'] = 'Nova Versão'; +$lang['Obsolete Plugins'] = 'Extensões Obsoletas'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATENÇÃO! Esta extensão não parece ser compatível com esta versão Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Deseja mesmo activar a extensão?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ESTA EXTENSÃO JÁ FAZ PARTE DO PIWIGO! DESINSTALE-A AGORA!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ERRO: ESTA EXTENSÃO NÃO EXISTE MAS ESTÁ INSTALADA! DESINSTALE-A AGORA.'; +$lang['Simulation'] = 'Simulação'; +$lang['new'] = 'nova'; +$lang['No results'] = 'Sem resultados'; +$lang['Searching...'] = 'Procurando...'; +$lang['Type in a search term'] = 'Escreva um termo de busca'; +$lang['Learn more'] = 'Saber mais'; +$lang['Rate'] = 'Classificar'; +$lang['Average rate'] = 'Avaliação média'; +$lang['Activate icon "new" next to albums and pictures'] = 'Mostrar o icon "novo(a)" ao lado dos albums e das fotos'; +$lang['Add a criteria'] = 'Adicionar um critério'; +$lang['Deactivate all'] = 'Desactivar tudo'; +$lang['Default photos order'] = 'Ordem padrão das fotos.'; +$lang['Restore'] = 'Restaurar'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaurar a configuração padrão? Perderá as configurações pesoiais !'; +$lang['Show menubar'] = 'Mostrar o menu'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Não pode definir uma ordem padrão para as fotos porque tem uma definição personalizada na sua configuração local.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Especificou $conf[\'order_by\'] no seu arquivo de configuração local, este parâmetro esta obsoleto, apague ou renomeie para $conf[\'order_by_custom\'] !'; +$lang['display'] = 'Mostrar'; +$lang['An error has occured during upgrade.'] = 'Ocorreu um erro durante a actualização.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
              Click here to show log error.'] = 'Ocorreu um erro durante a extração dos ficheiros. Por favior verifique as permissões de escrita da sua instalação Piwigo.
              Clique aqui para ver o relatório de erros.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo não consegue recuperar o ficheiro de actualização do servidor remoto.'; +$lang['Update in progress... Please wait.'] = 'Actualização em curso... Aguarde, por favor.'; +$lang['Update to Piwigo %s'] = 'Actualizar para Piwigo %s'; +$lang['Two updates are available'] = 'Duas actualizações disponíveis'; +$lang['This is a minor update, with only bug corrections.'] = 'Esta é uma actualização menor, apenas algumas pequenos falhas foram corrigidas.'; +$lang['This is a major update, with new exciting features.'] = 'Esta é uma actualização maior, com novas e interessantes funcionalidades.'; +$lang['Some themes and plugins may be not available yet.'] = 'Alguns temas e extenções poderão não estar ainda disponíveis.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Pode actualizar para Piwigo %s directamente, sem actualizar antecipadamente para Piwigo %s (recomendado).'; +$lang['Save Template Directory'] = 'Salvar a pasta de Templates'; +$lang['Dump Database'] = 'Descarregar a Base de Dados'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Incluir dados históricos (Aviso: pode exceder o limite de memória do servidor)'; +$lang['Unable to dump database.'] = 'Impossível descarregar base de dados.'; +$lang['ERROR'] = 'ERRO'; +$lang['Update Complete'] = 'Actualização Completa'; +$lang['Piwigo Update'] = 'Actualizar Piwigo'; +$lang['Extensions Update'] = 'Actualizar Extensões'; +$lang['All extensions are up to date.'] = 'Todas as extensões estão actualizadas.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'As seguintes estensões poderão não ser compatíveis com a nova versão do Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Os seguintes temas poderão não ser compatíveis com a nova versão do Piwigo:'; +$lang['Add to caddie'] = 'Adicionar ao carrinho'; +$lang['%s has been successfully updated.'] = '%s foi atualizado com sucesso.'; +$lang['%s photos can not be regenerated'] = '%s fotos não puderam ser regeneradas'; +$lang['%s photos have been regenerated'] = '%s fotos foram regeneradas'; +$lang['(this tag will be deleted)'] = '(esta tag será excluída)'; +$lang['... or '] = '... ou '; +$lang['Add tags'] = 'adicionar etiquetas'; +$lang['Allowed file types: %s.'] = 'tipos de arquivos permitidos: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Resolução máxima aproximada %dM pixels (é de %dx%d pixels).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Por defeito,o Piwigo irá criar um novo tamanho a partir da versão HD (alta definição)da sua foto.'; +$lang['Confirm merge'] = 'Confirmar fusão'; +$lang['Create'] = 'Criar'; +$lang['Crop'] = 'Cortar'; +$lang['Follow Orientation'] = 'Siga a orientação'; +$lang['Graphics Library'] = 'Biblioteca Gráfica'; +$lang['Height'] = 'Altura'; +$lang['hide details'] = 'Ocultar detalhes'; +$lang['I decide to update anyway'] = 'Eu quero atualizar mesmo assim'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Se não existe HD disponível e o tamanho é maior que as dimensões de redimensionamento, Piwigo moverá como HD e criará uma foto com tamanho inferior a partir desta.'; +$lang['Ignore All'] = 'Ignorar tudo'; +$lang['Ignore this update'] = 'Ignorar esta atualização'; +$lang['Last import'] = 'Última importação'; +$lang['Manage Permissions'] = 'Gerenciar permissões'; +$lang['Maximum file size: %sB.'] = 'Tamanho máximo do arquivo: %sB.'; +$lang['Merge selected tags'] = 'Misturar etiquetas selecionadas'; +$lang['Merge tags'] = 'Misturar etiquetas'; +$lang['No destination tag selected'] = 'Nenhuma etiqueta de destino selecionada'; +$lang['Photo %s of %s'] = 'Foto %s de %s'; +$lang['Photo name'] = 'Nome da foto'; +$lang['Photos generation in progress...'] = 'Generação de fotos em progresso...'; +$lang['Predefined filter'] = 'Filtro predefinido'; +$lang['Reset ignored updates'] = 'Redefinir atualizações ignoradas'; +$lang['Select an album'] = 'Selecionar um album'; +$lang['Select at least two tags for merging'] = 'Selecione pelo menos duas etiquetas para misturar'; +$lang['Select the destination tag'] = 'Selecione a etiqueta de destino'; +$lang['show details'] = 'Mostrar detalhes'; +$lang['Some upgrades are available for extensions.'] = 'Algumas atualizações estão disponíveis para extenções.'; +$lang['Start Upload'] = 'Iniciar carga'; +$lang['Tags %s merged into tag %s'] = 'Etiquetas %s misturadas ncom a etiqueta%s'; +$lang['Thumbnails generation in progress...'] = 'Geração de miniaturas em progresso...'; +$lang['Update All'] = 'Atualizar tudo'; +$lang['Updates'] = 'Atualizações'; +$lang['Width'] = 'Largura'; +$lang['With no album'] = 'Sem album'; +$lang['With no tag'] = 'Sem etiqueta'; +$lang['With no virtual album'] = 'Sem album virtual'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Está a usar o navegador para carga. Em vez disso, tente a via Flash.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Está a usar a via Flash para carga. Tem problemas? Em vez disso tente enviar via Navegador.'; +$lang['Zoom'] = 'Zoom'; +$lang['Activate comments'] = 'Ativar comentários'; +$lang['Default comments order'] = 'Ordem padrão dos comentários'; +$lang['Photo Page'] = 'Página da foto'; +$lang['Send connection settings by email'] = 'Enviar configurações de ligação por e-mail'; +$lang['The original image quality must be a number between %d and %d'] = 'A qualidade da imagem original deve ser um número entre %d e %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'A altura original máxima deve ser um número entre %d e %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'A largura original máxima deve ser um número entre %d e %d'; +$lang['Resize after upload'] = 'Redimensionar depois de carregada'; +$lang['Original Size'] = 'Tamanho original'; +$lang['A locked gallery is only visible to administrators'] = 'Uma galeria bloqueada apenas é visível aos administradores'; +$lang['Unlock gallery'] = 'Desbloquear galeria'; +$lang['Gallery unlocked'] = 'Galeria desbloqueada'; +$lang['Notify administrators when a comment is'] = 'Notificar os administradores quando um comentário é'; +$lang['modified'] = 'Modificado'; +$lang['pending validation'] = 'Validação pendente'; +$lang['Save visits in history for'] = 'Gravar visitas no histórico de'; +$lang['simple visitors'] = 'Visitantes comuns'; +$lang['registered users'] = 'Utilizadores registados'; +$lang['administrators'] = 'Administradores'; +$lang['This album contains %d photos, added on %s.'] = 'Este album contém %d fotos, adicionadas em %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Este album contém %d fotos, adicionadas entre %s e %s.'; +$lang['This album contains no photo.'] = 'Este album não contém fotos.'; +$lang['Not cropped correctly?'] = 'Não foi cortada corretamente?'; +$lang['Center of interest'] = 'Centro de interesse'; +$lang['Move to album'] = 'Mover para o album'; +$lang['You can activate only one mobile theme.'] = 'Você pode ativar apenas um tema móvel.'; +$lang['Automatic sort order'] = 'Ordenação na apresentação automática'; +$lang['apply automatic sort order'] = 'Aplicar ordenação automática'; +$lang['Save manual order'] = 'Gravar ordem manual'; +$lang['cancel manual order'] = 'Cancelar ordem manual'; +$lang['Cancel'] = 'Cancelar'; +$lang['List'] = 'Lista'; +$lang['Web Form'] = 'Formulário web'; +$lang['Applications'] = 'Aplicações'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'A aplicação Piwigo for Android permite-lhe ligar do seu telefone Android ou Tablet à galeria Piwigo, criar albuns e carregar diversas fotos simultâneamente.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'A aplicação Piwigo for iOS permite-lhe, ligação à sua galeria Piwigo a partir do seu IPhone,IPad ou IPod táctil, criar albuns e carregar fotos simultâneamente.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom é um software para fotografia desenhado para manusear larga quantidade de fotos digitais e para transferência depois de produzidas.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Abertura é uma potente ferramenta destinada a refinar imagens e gerenciar massivas livrarias em Mac.'; +$lang['Available on'] = 'Existente em'; +$lang['Available versions for'] = 'Versões existentes para'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'DigiKam é um software grátis de tratamento foto-digital para Linux, Windows e MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'Digikam é aconselhado para fotografos que querem ver, manusear, editar, tratar, organizar, atribuir tags e partilhar essas fotos.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'Iphoto é, por defeito, um software para MacOSX. A Extenção de exportação Piwigo permite-lhe criar novos albuns e exportar fotos directamente de Iphoto para a galeria Piwigo.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Em Linux, instale o Shotwell com o pacote base e, depois terá de ativar a opção ativar publicação Piwigo.'; +$lang['Piwigo export plugin for Aperture'] = 'Exportar Extenção Piwigo para Aperture.'; +$lang['Piwigo export plugin for iPhoto'] = 'Extenção Piwigo de exportação para Iphoto.'; +$lang['Piwigo for Android'] = 'Piwigo para Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo para iOS (iPhone, iPad, iPod táctil)'; +$lang['Piwigo publish plugin for digiKam'] = 'Extenção de publicação Piwigo para DigiKam.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Extenção de publicação Piwigo para Lightroom.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Extenção de publicação Piwigo para Shotwell.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell é um organizador (Open Source) de origem aberta para fotos digitais em Linux. É, por defeito, o organizador do Ubuntu e Fedora'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'A Extenção "Piwigo publish" permite-lhe exportar e sincronizar fotos directamente do Lightroom para a sua galeria Piwigo. '; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Para expotar fotos da DigiKam para Piwwigo, apenas é necessário instalar as aplicações DigiKam e Kipi.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u utilizadores têm permissão automática porque pertecem ao grupo.'; +$lang['any visitor can see this album'] = 'Este album pode ser visto por qualquer visitante.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Abertura foi concebida para ser usada com simplicidade fotografos profissionais com Iphoto.'; +$lang['custom'] = 'Personalizado.'; +$lang['Delete multiple size images'] = 'Apagar imagens de multiplos tamanhos.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Como funções inclui navegação da galeria, criaçãoo de album e carregar fotos.'; +$lang['Generate multiple size images'] = 'Gerar mimagens de multiplos tamanhos.'; +$lang['Groups and users'] = 'Grupos e utilizadores.'; +$lang['include photos with lower privacy level'] = 'Incluir fotos com baixo nível de privacidade.'; +$lang['No group is permitted to see this private album'] = 'Este album privado é interdito a grupos.'; +$lang['Permission granted for groups'] = 'Permissão garantida para grupos.'; +$lang['Permission granted for users'] = 'Permissão.'; +$lang['Permission management'] = 'Permissões de gerenciamento.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Galeria remota para Android) é uma aplicação Piwigo de Origem Aberta(GPLv3) para plataforma Android.'; +$lang['Select groups...'] = 'Selecionar grupos.'; +$lang['Select users...'] = 'Selecionar utilizadores.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'A Extenção Piwigo Export permite criar albuns e exportar fotos.'; +$lang['There is no group in this gallery.'] = 'Nesta galeria não existe grupo.'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'Para ver este album, os visitantes deverão entrar como inscritos e possuir permissão para tal.'; +$lang['add a new watermark'] = 'Adicionar nova marca de água'; +$lang['Apply watermark if height is bigger than'] = 'Aplicar marca de água se a altura é maior que'; +$lang['Apply watermark if width is bigger than'] = 'Aplicar marca de água se a largura é maior que'; +$lang['bottom left corner'] = 'Canto inferior esquerdo'; +$lang['bottom right corner'] = 'Canto inferior direito'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Por defeito o ponto de mais interesse é colocado no centro da foto'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Para tamanhos de foto com recorte, como quadradas, Piwigo fará o seu melhor para incluir o ponto de maior interesse.'; +$lang['middle'] = 'Meio'; +$lang['Opacity'] = 'Opacidade'; +$lang['Photo sizes with crop'] = 'Tamanho das fotos após recorte'; +$lang['Select a file'] = 'Selecionar um arquivo'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Selecionar uma zona com o rato para definir outro ponto como centro de interesse'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'O centro de interesse é a zona que mais chama a nossa atenção na foto'; +$lang['top left corner'] = 'Canto superior esquerdo '; +$lang['top right corner'] = 'Canto superior direito'; +$lang['X Position'] = 'Posição X'; +$lang['X Repeat'] = 'Repetir X'; +$lang['Y Position'] = 'Posição Y'; +$lang['Multiple Size'] = 'Tamanho multiplo'; +$lang['%d day'] = '%d dia'; +$lang['%d days'] = '%d dias'; +$lang['%d hour'] = '%d hora'; +$lang['%d hours'] = '%d horas'; +$lang['%d minute'] = '%d minuto'; +$lang['%d minutes'] = '%d minutos'; +$lang['%d month'] = '%d mês'; +$lang['%d months'] = '%d mêses'; +$lang['%d second'] = '%d segundo'; +$lang['%d seconds'] = '%d segundos'; +$lang['%d year'] = '%d ano'; +$lang['%d years'] = '%d anos'; +$lang['%s ago'] = '%s atrás'; +$lang['%s in the future'] = '%s no futuro'; +$lang['Added by %s'] = 'Adicionado por %s'; +$lang['Numeric identifier : %d'] = 'Identificador numérico: %d'; +$lang['Original file : %s'] = 'Arquivo original: %s'; +$lang['Posted %s on %s'] = 'Colocada(s) %s em %s'; +$lang['Rated %d times, score : %.2f'] = 'Avaliada %d vezes, classificação: %.2f'; +$lang['Sharpen'] = 'Refinar'; +$lang['Visited %d times'] = 'Visitada %d vezes'; +$lang['Watermark'] = 'Marca de água'; +$lang['%d week'] = '%d semana'; +$lang['%d weeks'] = '%d semanas'; +$lang['Edit photo'] = 'Editar foto'; +$lang['create a new site'] = 'Criar novo sitio'; +$lang['No order field selected'] = 'Nenhum critério de ordenação seleccionado '; +$lang['Duplicate selected tags'] = 'Duplicar as etiquetas selecionadas'; +$lang['Name of the duplicate'] = 'Nome do duplicado'; +$lang['Source tag'] = 'Origem da etiqueta'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Etiqueta "%s" é agora um duplicado de "%s"'; +$lang['Landscape'] = 'Paisagem'; +$lang['Manage photos'] = 'Organizar fotos'; +$lang['Minimum height'] = 'Altura mínima'; +$lang['Minimum width'] = 'Largura mínima'; +$lang['Number of albums per page'] = 'Número de albuns por página'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Retrato'; +$lang['View in gallery'] = 'Ver na galeria'; +$lang['Ratio'] = 'Rácio'; +$lang['between %.2f and %.2f'] = 'entre %.2f e %.2f'; +$lang['between %d and %d pixels'] = 'entre %d e %d pixels'; +$lang['Duplicate'] = 'Duplicar'; +$lang['Manage the members'] = 'Gerir os membros'; +$lang['Merge selected groups'] = 'Omitir os grupos selecionados'; +$lang['No group selected, no action possible.'] = 'Não existe grupo selecionado, não é possivel qualquer ação'; +$lang['No members to manage'] = 'Sem membros para gerir'; +$lang['Please select at least two groups'] = 'Selecione, por favor, pelo menos dois grupo.'; +$lang['Rename'] = 'Renomear'; +$lang['This group will be set to default'] = 'Este grupo será usado como padrão'; +$lang['This group will be unset to default'] = 'Este grupo não será mais usado como padrão'; +$lang['Type here the name of the new group'] = 'Escreva aqui o nome do novo grupo'; +$lang['Purge user cache'] = 'Purgar cache de utilizador'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'As dimensões desta foto serão reduzidas para %dx%d pixels'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimencionar depois de carregar, devido ao uso de GD como livraria gráfica,está desativado. '; +$lang['Select at least one tag'] = 'Selecionar no mínimo uma etiqueta'; +$lang['Basic settings'] = 'definições básicas'; +$lang['General'] = 'Geral'; +$lang['Mail theme'] = 'Tema do mail'; +$lang['(filtered from %s total users)'] = '(filtrado de %s utilizadores totais)'; +$lang['Show %s users'] = 'Mostrar %s utilizadores'; +$lang['%d of %d users selected'] = '%d de %d utilizadores selecionados'; +$lang['All %d users are selected'] = 'Todos os %d utilizadores estão selecionados'; +$lang['Change password'] = 'Alterar a senha'; +$lang['Change username'] = 'Alterar o nome de utilizador'; +$lang['Last visit on %s, %s.'] = 'Última visita em %s, %s.'; +$lang['Loading...'] = 'Carregando'; +$lang['No matching user found'] = 'Não foram encontrados utilizadores que correspondam'; +$lang['No user selected of %d users'] = 'Em %d utilizadores não foi nenhum selecionado'; +$lang['No user selected, no action possible.'] = 'Sem utilizador selecionado não é possivel qualquer ação'; +$lang['Password updated'] = 'Senha atualizada'; +$lang['Registered on %s, %s.'] = 'Registado em %s, %s.'; +$lang['Showing %s to %s of %s users'] = 'Mostrando %s para %s de %s utilizadores'; +$lang['Update user'] = 'Atualizar o utilizador'; +$lang['User %s added'] = 'Utilizador %s adicionado'; +$lang['User %s updated'] = 'Utilizador %s atualizado'; +$lang['Users modified'] = 'Utilizadores modificados'; +$lang['on the %d selected users'] = 'Em %d utilizadores selecionados'; +$lang['Close user details'] = 'Fechar detalhes do utilizador'; +$lang['Open user details'] = 'Abrir detalhes do utilizador'; +$lang['close'] = 'Fechar'; +?> \ No newline at end of file diff --git a/sources/language/pt_PT/common.lang.php b/sources/language/pt_PT/common.lang.php new file mode 100644 index 0000000..2753d91 --- /dev/null +++ b/sources/language/pt_PT/common.lang.php @@ -0,0 +1,426 @@ + \ No newline at end of file diff --git a/sources/language/pt_PT/help/cat_modify.html b/sources/language/pt_PT/help/cat_modify.html new file mode 100755 index 0000000..89be88d --- /dev/null +++ b/sources/language/pt_PT/help/cat_modify.html @@ -0,0 +1,111 @@ +

              Editar o álbum

              + +

              Informações

              + +
                + +
              • nome: renomear o album (virtualmente para um album físico).
              • + +
              • descrição : pequeno texto dando uma ideia do conteúdo do album, + Este texto aparecera em baixo da página das miniaturas.
              • + +
              + +

              Mover

              + +

              Se o album é virtual, pode move-lo. Mover um album significa alterar o seu album pai movendo-o para outro.

              + +

              Opções

              + +
                + +
              • tipo de acesso: Gestão das permissões. Se tornar um album privado, todos os albuns filhos tornam-se privados. Se tornar um álbum publico, todos os álbuns pais tornam-se públicos.
              • + +
              • Bloquear: O album e todos os sub-albuns serão temporariamente desactivados para manutenção.
              • + +
              • Comentários: Autoriza os utilizadores a comentar a fotos deste album.
              • + +
              + +

              Também pode gerir esta opção pelas "propriedades" (ecrãs Comentários , Bloquear, + Publico/Privativo, Representante Disponível à partir de Administração » Albuns; Propriedades ).

              + +

              Ordem de triagem

              + +

              Utilizar o ordem de triagem por defeito das fotos.

              + +

              Indicar se a triagem também se aplica aos sub-albuns.

              + +

              Seleccione a ordem de triagem para utilizar neste album.

              +
                +
              • Data de criação : Data de tomada de vista
              • +
              • Data de adição : Data de sincronização
              • +
              • Nota media (*): Esta media pode ser modificada pela nota do visitante
              • +
              • Mais visitadas (*): A visita corrente pode modificara ordem das mais vistas
              • +
              • Nome do ficheiro: Nome dado na área de informações
              • +
              • Id: Id interno (Os álbuns recentes têm um Id maior que os anteriores.
              • + +
              +

              (*) Atenção: Verifique estas triagens que podem dar resultados não previstos.

              + + +

              Representante

              + +

              O representante de um album é a miniatura na página principal (category.php) para representar o album quando só contem sob-albuns e nenhuma foto directa (como raiz).

              + +

              Existe 4 modos diferentes de escolher o representante de um album :

              + +
                + +
              • Página das fotos: um dos botões de acção permite escolher a foto corrente como representante do album. Este botão só é acessível aos administradores.
              • + +
              • Modificar as informações de uma foto na administração. Este ecrã pode ser atingido à partir de picture.php ou Gestão de lotes no modo unitário . Veja a ajuda de este ecra para detalhes.
              • + +
              • Administração » Álbuns » Propriedades, + Representante. Veja a ajuda de este ecra para detalhes.
              • + +
              • Editar um album (o presente ecrã).
              • + +
              + +

              A escolha de um representante depende do parâmetro de configuração allow_random_representative (ver include/config_default.inc.php).

              + +

              Por defeito (allow_random_representative a falso), +cada album contendo ao menos uma foto é representado pelo um elemento fixo. após fixado (à criação do album), o representante muda unicamente quando o administrador o pedir. Se o representante não convir, pode pedir para Encontrar um novo representante ao calha.

              + +

              Se o parâmetro de configuração allow_random_representative esta posicionado em true, o album contendo fotos pode não ter um representante fixo. Utilize o botão Suprimir representante .

              + +

              Se o album só conter sob-albuns e nenhuma foto, pode todavia ser representado por qualquer foto graças ao ecrã Modificar as informações de uma foto. A única opção no ecrã corrente é o botão Suprimir o representante.

              + +

              Associar todas as fotos de um album à outro album

              + +
                + +
              • Nome virtual do album : Nome do novo album para criar, todas as fotos do album serão-lhe associadas.
              • + +
              • Album pai: onde o novo album será criado, deixe vazio para criar o album à raiz.
              • + +
              + +

              Associar todas as fotos a um album existente

              + +
                + +
              • Albuns: Escolher o album de destino.
              • + +
              + +

              Enviar um email de informação aos membros de um grupo

              + +
                + +
              • Grupo: grupo de destinatários
              • + +
              • conteúdo do mail: Texto livre para lhe enviar.
              • + +
              \ No newline at end of file diff --git a/sources/language/pt_PT/help/cat_move.html b/sources/language/pt_PT/help/cat_move.html new file mode 100755 index 0000000..accfd92 --- /dev/null +++ b/sources/language/pt_PT/help/cat_move.html @@ -0,0 +1,14 @@ +

              Movendo Albuns virtuais

              + +

              Apenas albuns virtuais podem ter um novo album-pai.

              + +

              Albuns virtuais a mover

              + +

              Seleccione um ou mais albuns virtuais que deseje mover. +Se a lista estiver vazia, isso significa que ainda não criou nenhum album.

              + +

              Novo album-pai

              + +

              Seleccione o novo album-pai (virtual ou físico). +Se não seleccionar um album-pai, os albuns virtuais seleccionados serão movidos para a raiz. +Um album não poderá ser movido para dentro de si próprio ou para um dos seus sub-albuns.

              \ No newline at end of file diff --git a/sources/language/pt_PT/help/configuration.html b/sources/language/pt_PT/help/configuration.html new file mode 100755 index 0000000..8f16c88 --- /dev/null +++ b/sources/language/pt_PT/help/configuration.html @@ -0,0 +1,98 @@ +

              Configuration

              + +

              Este ecrã permite gerir a configuração básica. Com efeito, este ecrã só mostra os parâmetros de configuração suficientes para a maioria dos administradores. Se quiser ver os outros vários (e avançados) parâmetros de configuração, leia o fichiero include/config_default.inc.php.

              + +

              Este ecrã esta dividido em diferentes secções, agrupando os parâmetros por temas.

              + +

              Principal

              +
                +
              • Titulo da galeria: utilizado para os fluxos RSS e as notificações pelo email.
              • + +
              • Bandeira das páginas : afixado em cima de cada página.
              • + +
              • URL da galeria: utilizado para os fluxos RSS.
              • + +
              • Aferrolhar a galeria: Bloquear a galeria inteira para manutenção. Só os administradores podarem aceder a galeria.
              • + +
              • Notação: A notação das fotos é possível.
              • + +
              • Notação pelos visitantes: Os utilizadores não registados também podem notar as fotos.
              • + +
              • Autorizar o registo dos utilizadores: O registo é livre para todos.
              • + +
              • O endereço email é obrigatório para todos os utilizadores: O endereço email será verificado aos registos ou de as posta em dia dos perfis.
              • + +
              • Notificar os administradores ao registo de novos utilizadores: os administradores receberão um mail para cada registo.
              • + +
              • Ordem por defeito das fotos: Pode definir um ordem personalizado graças a estes menus.
              • + +
              + +

              Histórico

              + +

              A visita das paginas category.php e picture.php são salvadas na tabela history.

              + +

              As visitas serão visíveis no ecrã Administração » Ferramentas » Histórico .

              + +
                +
              • Salvar paginas visitadas pelos convidados: as paginas vistas pelos visitantes serão salvadas.
              • + +
              • Salvar paginas visitadas pelos utilizadores: as paginas vistas pelos utilizadores serão salvadas.
              • + +
              • Salvar paginas visitadas pelos administradores: as paginas vistas pelos administradores serão salvadas.
              • + +
              + +

              Comentários

              +
                + +
              • Comentários para todos: Os utilizadores não registados também podem deixar comentários.
              • + +
              • Numero de comentários por página .
              • + +
              • Validação: Um administrador deve validar os comentários dos utilizadores antes que possam ser visíveis na parte publica. A validação dos comentários faz-se no ecrã Administração » Ferramentas » Comentários pendentes.
              • + +
              • Notificar os administradores quando alguém deixar um comentário: Mandar um email aos administradores quando um utilizador deixar um comentário e que este comentário estar validado.
              • + +
              • Notificar os administradores quando um comentário necessitar uma validação : +Mandar um email aos administradores quando um utilizador deixar um comentário necessitando uma validação. +A validação dos comentários faz-se no ecrã Administração » Ferramentas » Comentários pendentes./li> + +
              + +

              Afixagem por defeito

              + +

              Modificar as opções de afixação por defeito para os visitantes não conectados. Quando estar conectado estas opções são suplantadas para as dos utilizadores. (Alterável no perfil).

              + +

              E possível modificar estas opçoes para todos os utilizadores existentes no ecrã Administração » +Utilizadores » Gerir no qual pode modificar estas opções para uma lista de utilizadores.

              + +
                + +
              • Língua: Aplica-se unicamente aos títulos Piwigo. Os nomes dos albuns, os nomes das fotos e as descrições não são localizadas.
              • + +
              • Numero de miniaturas por linha
              • + +
              • Numero de linhas par página
              • + +
              • Tema da interface
              • + +
              • Período recente: Em dias. Período durante o qual uma foto é considerara como nova. Este período deve ser superior à um dia.
              • + +
              • Expandir todos os albuns : Expandir todos os albuns. Atenção : Esta opção é susceptível de consumir inutilmente recursos se a sua árvore de album conter muitos albuns.
              • + +
              • Mostrar o numero de comentários: Mostrar o numero de comentários para cada foto em baixo de cada miniatura. consume muitos recursos.
              • + +
              • Mostrar o numero de visualizações: Afixar os hits relevados em cada foto em baixo da miniatura na página das miniaturas. Unicamente válido se o parâmetro de configuração é:
                + $conf['show_nb_hits'] = true;
                + Notice: false by default.
              • + +
              • Largura máxima das fotos: As fotos mais largas do que este parâmetro serão redimensionadas. Em lugar de escolher esta opção, é melhor redimensionar directamente as fotos.
              • + +
              • Altura máxima das fotos: idêntico a largura.
              • + +
              + diff --git a/sources/language/pt_PT/help/extend_for_templates.html b/sources/language/pt_PT/help/extend_for_templates.html new file mode 100755 index 0000000..83204f5 --- /dev/null +++ b/sources/language/pt_PT/help/extend_for_templates.html @@ -0,0 +1,51 @@ +

              Configuração para estender os templates

              + +

              Objectivo

              +

              A galeria pode ser personalizada substituindo os ficheiros existindo para outros que foram personalizados. Por exemplo, o header (header.tpl) por ser substituído por outro personalizado (meu-header.tpl). após submeter as modificações na base de dados, a galeria aparecerá com o header personalizado.
              +as extensões de templates são uma maneira possante de criar temas personalizados. Usado conjuntamente com o Localfiles Editor permite criar novos temas.

              + +

              Original Template

              +

              A theme contains a number of template files that make up the gallery pages. These are the original templates.

              + +

              Optional URL Keyword

              +

              These are words found in the gallery URL after the module name. They can also be active permalinks (See the permalink documentation for more information). WARNING: if the same original template and same keyword is used on more than one customised template only the last one is active.

              + +

              Bound Theme

              +

              The bound theme is the theme from which the template files are being replaced.

              + +

              Where are the original templates?

              +

              Original templates are the template files shipped with each theme. These are saved in /themes/default/template (or themes//template). These template files should not be edited in place as changes will be lost with theme upgrades.
              +Supported original templates include:

              +
                +
              • index.tpl
              • +
              • mainpage_categories.tpl and/or thumbnails.tpl
              • +
              • menubar.tpl
              • +
              • header.tpl and/or footer.tpl
              • +
              • picture_content.tpl and/or picture.tpl
              • + +
              • profile.tpl and/or profile_content.tpl
              • +
              • tags.tpl
              • +
              • upload.tpl
              • +
              • about.tpl
              • +
              • popuphelp.tpl
              • +
              • search.tpl and/or search_rules.tpl
              • +
              • nbm.tpl and/or notification.tpl
              • +
              • identification.tpl and/or register.tpl
              • +
              • redirect.tpl
              • +
              +

              Saving customised templates

              +

              Customised templates should be saved in the template-extension folder or subfolders. For example, /template-extension/my-default/header.tpl (or /template-extension//header.tpl) Template files can have any name with a .tpl extension. The template files in subfolders appear in the Template configuration screen as available custom templates.

              +

              Activating customised templates

              +

              Select the original template to replace. Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword. Select a bound theme and the changes will be effective on that theme. Submit the changes to the database.

              +

              Deactivating customised templates

              +

              Unselect the original template and submit the changes to the database.
              +Delete the customised template files from the template-extension folder.

              + + +

              Warnings

              +
                +
              • The original template must be the original template otherwise you may have unpredictable results.
              • +
              • If the same original template and same URL keyword is used on more than one customised template only the last one is active.
              • +
              • Distributed sample template files are for test purposes only. Do not edit them. Create your own ones or copy existing theme template files into /template-extension//
              • +
              • When the customised template is deleted the original template file is immediately reactivated.
              • +
              diff --git a/sources/language/pt_PT/help/group_list.html b/sources/language/pt_PT/help/group_list.html new file mode 100755 index 0000000..05436ef --- /dev/null +++ b/sources/language/pt_PT/help/group_list.html @@ -0,0 +1,22 @@ +

              Lista de Grupos

              + +

              Este é o local onde gere os grupos.

              + +

              Adicione um grupo

              + +

              O Administrador pode adicionar grupos.

              + +

              Lista de Grupos

              + +

              Para cada grupo as seguintes ações podem ser aplicadas:

              + + +
                +
              • ir para gestão de utilizadores (Administração » Utilizadores » Gerir)
              • +
              • ir para o ecrã de gestão de permissões para permitir ou negar acesso a álbums privados.
              • +
              • apagar grupo (requer confirmação)
              • +
              • mudar estado "default" (requer confirmação)
              • +
              + +

              Grupos por defeito(default)

              +

              Grupos por defeito(default) são grupos automaticamente associados a cada novo utilizador na altura do registo no site ou da criação por um administrador.

              \ No newline at end of file diff --git a/sources/language/pt_PT/help/help_add_photos.html b/sources/language/pt_PT/help/help_add_photos.html new file mode 100644 index 0000000..17ffcd5 --- /dev/null +++ b/sources/language/pt_PT/help/help_add_photos.html @@ -0,0 +1,29 @@ +

              Existem varios métodos para juntar fotos na sua galeria :

              + +
                + +
              • A adição direta no seu navigador web é o método mais simples e mais imediato. + Depende das capacidades do seu navegador e do seu servidor. Para grandes volumes ou em caso de problemas, + os métodos alternativos ficam à sua espera !
              • +
              + + + +
                +
              • ploader é um software a instalar no seu computador. Fazer drag-and-drop, arrastar e largar, + suas fotos na janela de ploader, clicar sobre"Transferir para Piwigo" e ploader faz o resto. + Existem outros programas clientes, como WinToPiwigo ou o módulo de exportação Piwigo de + Digikam.
              • +
              + + + +
              +
                +
              • A transferência FTP + é o método ideal para a adição de uma grande coleção em um mínimo de operações. Siga o guia para preparar as suas fotos. + Este método permite-lhe controlar com precisão a organização física de suas fotos em seu servidor.
              • +
              + + +
              \ No newline at end of file diff --git a/sources/language/pt_PT/help/help_groups.html b/sources/language/pt_PT/help/help_groups.html new file mode 100644 index 0000000..8d101c3 --- /dev/null +++ b/sources/language/pt_PT/help/help_groups.html @@ -0,0 +1,6 @@ +

              Os grupos são uma maneira conveniente de configurar permissões para uma lista de utilizadores.

              + +

              Crie grupos em Administração » Utilizadores » Grupos e associe utilizadores ao grupo em Administração » Utilizadores » Gerir.

              + +

              Um utilizador pode pertencer a vários grupos. A autorização é mais forte do que a proibição : se o usuário "jack" pertence aos grupos "família" e "amigos", e apenas o grupo "família" pode ver a categoria "Natal 2003", então "jack" poderá ver "Natal 2003".

              + diff --git a/sources/language/pt_PT/help/help_misc.html b/sources/language/pt_PT/help/help_misc.html new file mode 100644 index 0000000..aa1b5b2 --- /dev/null +++ b/sources/language/pt_PT/help/help_misc.html @@ -0,0 +1,4 @@ +

              Assim que tiver criado a sua galeria, modifique as propriedades padrão em Administração » Configuração » Opções » Opções de Convidado. Todo o novo utilizador registado usará estas opções de configuração padrão.

              + +

              Se você tiver qualquer pergunta, a comunidade Piwigo o receberá de braços abertos no seu fórum.

              + diff --git a/sources/language/pt_PT/help/help_permissions.html b/sources/language/pt_PT/help/help_permissions.html new file mode 100644 index 0000000..07042b5 --- /dev/null +++ b/sources/language/pt_PT/help/help_permissions.html @@ -0,0 +1,12 @@ +

              Poderá proibir o acesso ás categorias. Altere o modo de acesso à categoria para "privado" se quiser gerir permissões.

              + +

              Poderá tornar uma categoria privada simplesmente editando uma categoria (Administração » Categorias » Gerir » Editar) ou alterando as opções em toda a árvore da categoria (Administração » Categorias » Propriedades » Público / Privado).

              + +

              Uma vez que a categoria esteja como privada, poderá gerir as permissões para grupos e utilizadores em 3 páginas:

              + +
                +
              • Administração » Utilizadores » Gerir » ação das permissões (um link por utilizador)
              • +
              • Administração » Utilizadores » Grupos » ação das permissões (um link por grupo)
              • +
              • Administração » Categorias » Gerir » editar ação das permissões da categoria (um link por categoria)
              • +
              + diff --git a/sources/language/pt_PT/help/help_virtual_links.html b/sources/language/pt_PT/help/help_virtual_links.html new file mode 100644 index 0000000..a467f03 --- /dev/null +++ b/sources/language/pt_PT/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

              As fotos são mostradas na categoria correspondente à pasta do ficheiro.

              + +

              Também pode mostrar uma imagem em várias categorias, sem a necessidade de duplicar o ficheiro no seu servidor. Associe a imagem a qualquer categoria na página de edição de foto (que qualquer administrador pode ter acesso da página de foto na galeria).

              + +

              Categorias virtuais são baseadas neste conceito: elas não tem diretório correspondente. Crie categorias virtuais através da Administração » Categorias » Gerenciar.

              + diff --git a/sources/language/pt_PT/help/history.html b/sources/language/pt_PT/help/history.html new file mode 100755 index 0000000..096b4ed --- /dev/null +++ b/sources/language/pt_PT/help/history.html @@ -0,0 +1,22 @@ +

              Historico

              + +

              Estes ecrãs permitem de seguir o histórico de navegação no piwigo seguindo as opções definidas em: Administração » Configuração » Opções » Histórico

              + +

              Estatísticas

              +
                +

                Se escolheu que as visitas das páginas(index.php e picture.php) sejam registadas na tabela history, esta aba permite seguir o numero de paginas visitadas.

                +
              • Estaticistas totais: visitas por ano.
              • +
              • Estaticistas anuais: visitas por mês do ano seleccionado.
              • +
              • Estaticistas mensais: visitas por dia do mês seleccionado.
              • +
              • Estaticistas diárias : visitas por hora do dia seleccionado.
              • +
              + +

              Pesquisa

              +
                +

                Se escolheu que as visitas das páginas(index.php e picture.php) sejam registadas na tabela history,esta aba permite seguir mais em detalhe as paginas visitadas com a ajuda dos diferentes filtros.

                +
              • Filtrar por data: seleccione o intervale de datas que deseja seguir.
              • +
              • Filtrar por tipo de elemento: seleccione o tipo de elemento que deseja seguir.
              • +
              • Filtrar por utilizador: seleccione o utilizador que deseja seguir.
              • +
              • Filtrar por nome de ficheiro: seleccione o nome do ficheiro que deseja seguir.
              • +
              • Filtrar por nome de imagem: seleccione o nome da imagem que deseja seguir.
              • +
              \ No newline at end of file diff --git a/sources/language/pt_PT/help/maintenance.html b/sources/language/pt_PT/help/maintenance.html new file mode 100755 index 0000000..265190f --- /dev/null +++ b/sources/language/pt_PT/help/maintenance.html @@ -0,0 +1,26 @@ +

              Manutenção

              + +

              Para optimizar o tempo de geração das paginas, Piwigo utiliza informações em cache. Por exemplo em lugar de contar o numero de fotos de cada álbum cada recarregamento de pagina, esta informação está armazenada na base de dados. Em teoria esta informação deve estar sempre correcta, mas por vezes pode haver um erro e a informação em cache torna-se falsa..

              + +

              Algumas informações tornam-se falsas com o tempo. suprimi-las da base de dados permite liberar espaço disco.

              + +
                +
              • suprimir tags órfãs
              • +
              +
                +
              • Por em dia as informações dos álbuns :Para cada álbum as seguintes informações são verificadas e postas em dia se for necessário : lista dos álbuns pai, numero de fotos,data da ultima foto, posição entre os outros álbuns irmãos, posição entre todos os álbuns. Esta acção também verifica a consistência dos representantes.
              • +
              • Por em dia as informações das fotos : Para cada foto, as informações postas em dia são : caminho completo para o ficheiro, nota media. atenção , não confunda : os meta-dados são sincronizados no ecrã Administração » Álbuns » sincronizar, o no ecrã Modificar as informações de uma foto (acessível na pagina visualização de uma foto.
              • +
              +
                +
              • Reparar e optimizar a base de dados :Efectuar operações de reorganização, reparação e optimização de cada tabela da base de dados.
              • +
              • Reinitialize integrity check
              • +
              + +
                +
              • Purgar o detalhe do histórico : Suprimir todas a linhas da tabela history. O ecrã Administração » Ferramenta » Histórico Não mostrara mais nenhuma informação sobre o passado. Atenção : Todos os dados serão perdidos sem possibilidade de recuperação.
              • +
              • Purgar a síntese do histórico : Suprimir as informações recapitulativas.(Obtidas à partir do detalhe do histórico).
              • +
              • Purgar as sessões : Suprimir as sessões expiradas.
              • +
              • Purgar as notificações não utilizadas
              • +
              • Purgar o histórico das pesquisas
              • +
              • Purgar os templates compilados
              • +
              \ No newline at end of file diff --git a/sources/language/pt_PT/help/notification_by_mail.html b/sources/language/pt_PT/help/notification_by_mail.html new file mode 100755 index 0000000..e7348b0 --- /dev/null +++ b/sources/language/pt_PT/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

              Notificação por email

              + +

              Permite gerir o envio de emails aos utilizadores, para notificar-los das novidades do sitio.

              + +

              Este ecrã comporta 3 abas:

              + +

              Parametrização

              +

              Disponível para os webmasters unicamente, permite definir os parâmetros de notificação par email.

              + +

              Inscrição

              +

              Disponível para os webmasters unicamente, permite gerir as inscrições/desinscrições e a notificação por email.

              + +

              Envio

              +

              Disponível para os webmasters e administradores, permite efectuar os envios de emails para notificar das novidades.

              diff --git a/sources/language/pt_PT/help/photos_add_ftp.html b/sources/language/pt_PT/help/photos_add_ftp.html new file mode 100644 index 0000000..1d63f81 --- /dev/null +++ b/sources/language/pt_PT/help/photos_add_ftp.html @@ -0,0 +1,96 @@ +
              + Início Rápido + +
                +
              1. Crie uma pasta no seu computador.
              2. + +
              3. Copie algumas fotos para essa pasta, altere o tamanho das imagens para serem exibidas na internet. Cuidado: o nome das pastas e ficheiros deve conter apenas letras, números, "-", "_" ou ".". Não use espaços em branco nem caracteres acentuados.
              4. + +
              5. Com a ajuda de um programa de FTP, copie a sua pasta para a pasta "galleries" da sua instalação Piwigo.
              6. + +
              7. Faça o login na sua galeria e vá até Ferramentas » Miniaturas para criar alguma miniatura que esteja em falta.
              8. + +
              9. Vá até Painel Administrativo e clique no botão "Sincronização Rápida".
              10. +
              + +Parabéns! Você acabou de criar o primeiro álbum da sua galeria de fotos. + +
              +
              + Organização de pastas e ficheiros +
                + +
              • + +

                As pastas dos álbums estão na pasta "galleries" no Piwigo. Segue aqui a árvore de pastas de uma pequena galeria (mas usando muitos recursos) :

                + +
                +.
                +|-- admin
                +|-- doc
                +|-- galleries
                +|   |-- category-1
                +|   |   |-- category-1.1
                +|   |   |   |-- category-1.1.1
                +|   |   |   |   |-- category-1.1.1.1
                +|   |   |   |   |   |-- pwg_high
                +|   |   |   |   |   |   +-- wedding.jpg
                +|   |   |   |   |   |-- thumbnail
                +|   |   |   |   |   |   +-- TN-wedding.jpg
                +|   |   |   |   |   +-- wedding.jpg
                +|   |   |   |   +-- category-1.1.1.2
                +|   |   |   +-- category-1.1.2
                +|   |   |-- category-1.2
                +|   |   |   |-- pookie.jpg
                +|   |   |   +-- thumbnail
                +|   |   |       +-- TN-pookie.jpg
                +|   |   +-- category-1.3
                +|   +-- category-2
                +|       |-- piglet.gif
                +|       |-- pwg_representative
                +|       |   +-- video.jpg
                +|       |-- thumbnail
                +|       |   +-- TN-piglet.jpg
                +|       +-- video.avi
                +|-- include
                +|-- install
                +|-- language
                +|-- template
                ++-- tool
                + +
              • + +
              • Cada pasta sob "galleries" produz um album. Não há limite de profundidade.
              • + +
              • Basicamente, um item é representado por um ficheiro. Um ficheiro pode ser um item Piwigo se a sua extensão estiver entre as possibilidades dos parâmetros de configuração file_ext (veja o ficheiro include/config_default.inc.php). Um ficheiro pode ser uma imagem se a sua extensão estiver entre as possibilidades dos parâmetros de configuração picture_ext.
              • + +
              • Os itens fotográficos devem ter uma miniatura associada (veja a secção abaixo sobre miniaturas)
              • + +
              • Os itens fotográficos podem ter um ficheiro de alta definição associado. Assim como para wedding.jpg no exemplo acima. Não use prefixo nas imagens de alta definição.
              • + +
              • Outros itens (video, sons, arquivos de texto, o que você quiser...) são por padrão representados por um ícone correspondente à extensão do nome de arquivo. Você tem a opção de associar uma miniatura e um ficheiro representativo (veja video.avi no exemplo acima).
              • + +
              • Atenção: o nome das pastas e dos ficheiros devem conter apenas letras, números, "-", "_" ou ".". Não use espaço em branco e nem caracteres acentuados.
              • + +
              • Uma vez que os ficheiros, as miniaturas e representativos estiverem corretamente alocados nas pastas,vá até : Ferramentas » Sincronizar
              • + +
              + +
              +
              + Miniaturas (Thumbnails) +
                + +
              • Cada foto deve ter a sua miniatura.
              • + +
              • As miniaturas estão armazenadas na subpasta "thumbnail" na pasta das categorias. + A miniatura tem o mesmo nome de ficheiro que a foto correspondente, com TN- como prefixo.
              • + +
              • Atenção: use um módulo externo para a criação das miniaturas.
              • + +
              • Embora não seja recomendado (qualidade da imagem, carga do servidor, etc), pode usar a página Ferramentas » Miniaturas para criar as miniaturas.
              • + +
              • Dê permissões de escrita para todas as pastas dos albums.
              • + +
              +
              diff --git a/sources/language/pt_PT/help/search.html b/sources/language/pt_PT/help/search.html new file mode 100755 index 0000000..9fa1034 --- /dev/null +++ b/sources/language/pt_PT/help/search.html @@ -0,0 +1,20 @@ +

              Pesquisa

              + +

              Pesquisa de fotos em toda a galeria.

              + +
              + +
              Pesquisar uma palavra
              +
              Pesquisar uma ou varias palavras em todos os atributos das fotos da galeria. Use * para pesquisas +Parciais.
              + +
              pesquisar um autor
              +
              Use * para pesquisas parciais.
              + +
              Pesquisar por data
              +
              Selectione uma data e/ou uma data de fim.Deixe a data vazia se quiser fazer uma pesquisa "antes".Na ultima área, o ano deve ser composto de quatro números (2012 por exemplo).
              + +
              Pesquisar nos álbuns
              +
              Selectione os álbuns nos quais pesquisar. E possível buscar em todos os álbuns seleccionando o album pai, e autorizando a pesquisa nos sob-albuns.
              + +
              diff --git a/sources/language/pt_PT/help/synchronize.html b/sources/language/pt_PT/help/synchronize.html new file mode 100755 index 0000000..8d7b619 --- /dev/null +++ b/sources/language/pt_PT/help/synchronize.html @@ -0,0 +1,14 @@ +

              Sincronizar

              + +

              Existe dois tipos de sincronização:

              +
                +
              • repertórios/ficheiros
              • +
              • metadados
              • +
              + +

              Sincronizar repertórios e ficheiros correponde a por em dia a arborescência dos repertórios com a arborscência na base de dados. +Sincronizar metadados corresponde a por em dia as informações das fotos, como o peso dos ficheiros, dimensões em pixels, EXIF ou IPTC, na base de dados.

              + +

              Os repertórios e ficheiros devem ser sincronizados em primeiro.

              + +

              A sincronização pode durar muito tempo(dependendo da carga do servidor e da quantidade de ficheiros)Por isso é possível de proceder álbum por álbum.

              \ No newline at end of file diff --git a/sources/language/pt_PT/help/user_list.html b/sources/language/pt_PT/help/user_list.html new file mode 100755 index 0000000..69675e9 --- /dev/null +++ b/sources/language/pt_PT/help/user_list.html @@ -0,0 +1,23 @@ +

              Lista de Utilizadores

              + +

              É aqui que pode gerir os utilizadores da sua galeria Piwigo.

              + +

              AIcionar um utilizador

              + +

              Um administrador pode adicionar utilizadores manualmente. Para cada utilizador, crie um nome de utilizador, uma palavra-passe e submeta um endereço de email válido.

              + +

              Lista de Utilizadores

              + +

              Esta lista de utilizadores existentes poderá ser filtrada por nome (use * para substituir qualquer valor), grupo ou estado. Poderá ser ordenada por data de registo ou nome do utilizador, em ordem ascendente ou descendente.

              + +

              Esta página permite a gestão de múltiplos utilizadores de uma só vez, utilizando diferentes ações:

              + +
                +
              • apagar utilizador (requer confirmação)
              • +
              • modificar o estado do utilizador
              • +
              • associar ou desassociar de grupos
              • +
              • modificar propriedades de exibição
              • +
              • modificar preferências adicionais
              • +
              + +

              O alvo é o utilizador selecionado (por defeito) ou todos os utilizadores exibidos numa lista filtrada.

              \ No newline at end of file diff --git a/sources/language/pt_PT/index.php b/sources/language/pt_PT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/pt_PT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/pt_PT/install.lang.php b/sources/language/pt_PT/install.lang.php new file mode 100644 index 0000000..62ae5b2 --- /dev/null +++ b/sources/language/pt_PT/install.lang.php @@ -0,0 +1,70 @@ +Piwigo message board.'] = 'Precisa de ajuda? Faça a sua pergunta no Fórum Piwigo.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Os visitantes poderão entrar em contacto com o administrador da galeria através deste email'; +$lang['PHP 5 is required'] = 'PHP 5 é necessário'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Parece que o seu provedor de hospedagem usa actualmente PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo pode tentar mudar a sua configuração para PHP 5 através da criação ou modificação de um arquivo .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Note que você pode alterar sua configuração por conta própria e reiniciar o Piwigo depois disso.'; +$lang['Try to configure PHP 5'] = 'Tentar configurar PHP 5'; +$lang['Sorry!'] = 'Lamentamos!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo não pôde configurar o PHP 5.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Você deve entrar em contacto com o suporte do seu provedor e saber como pode mudar para PHP 5."; +$lang['Hope to see you back soon.'] = 'Desejamos volte em breve.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Parabéns, a sua instalação Piwigo está completa'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Uma solução alternativa será copiar o texto na caixa supra e colá-lo no ficheiro "local/config/database.inc.php" (Atenção : database.inc.php apenas deverá conter o que está na área de texto, não insira nenhuma linha nova ou espaço em branco)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'A criação do ficheiro de configuração local/config/database.inc.php falhou.'; +$lang['Download the config file'] = 'Guardar ficheiro de configuração'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Pode guardar o ficheiro de configuração no seu computador e de seguida enviá-lo para a pasta /local/config da sua instalação.'; +$lang['Just another Piwigo gallery'] = 'Apenas mais uma galeria Piwigo'; +$lang['Welcome to my photo gallery'] = 'Bem-vindo à minha galeria de fotos'; +$lang['Welcome to your new installation of Piwigo!'] = 'Bem-vindo à sua nova instalação do Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Não hesite em visitar nossos foruns para qualquer ajuda: %s'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Você deve entrar em contacto com o suporte do seu fornecedor de alojamento e saber como pode mudar para PHP 5.'; +$lang['Password ']['confirm'] = 'Senha [confirme]'; +$lang['localhost or other, supplied by your host provider'] = 'hospedeiro local ou outro, fornecido pelo seu alojador'; +?> \ No newline at end of file diff --git a/sources/language/pt_PT/iso.txt b/sources/language/pt_PT/iso.txt new file mode 100644 index 0000000..361e0e5 --- /dev/null +++ b/sources/language/pt_PT/iso.txt @@ -0,0 +1 @@ +Português [PT] \ No newline at end of file diff --git a/sources/language/pt_PT/pt_PT.jpg b/sources/language/pt_PT/pt_PT.jpg new file mode 100644 index 0000000..b9dd503 Binary files /dev/null and b/sources/language/pt_PT/pt_PT.jpg differ diff --git a/sources/language/pt_PT/upgrade.lang.php b/sources/language/pt_PT/upgrade.lang.php new file mode 100644 index 0000000..b37028d --- /dev/null +++ b/sources/language/pt_PT/upgrade.lang.php @@ -0,0 +1,42 @@ +release %s (or equivalent).'] = 'Recomendamos que faça uma actualização à sua base de dados para a versão mais recente. O assistente de actualização reconhece a sua versão como versão %s (ou equivalente).'; +$lang['Upgrade from version %s to %s'] = 'Actualizar da versão %s para a versão %s'; +$lang['Statistics'] = 'Estatísticas'; +$lang['total upgrade time'] = 'Tempo total de actualização'; +$lang['total SQL time'] = 'Tempo total de SQL'; +$lang['SQL queries'] = 'Consultas SQL'; +$lang['Upgrade informations'] = 'Informações da actualização'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Se encontrar algum problema durante a actualização execute uma avaliação de rotina em [Administração>Ferramentas>Manutenção].'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Por precaução as seguintes extenções foram desactivadas. Deve procurar actualizações das extenções antes de reactivá-las:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Apenas o administrador pode efectuar actualizações: por favor Inicie Sessão no formulário abaixo.'; +$lang['You do not have access rights to run upgrade'] = 'Você não tem permissões de acesso para efectuar a actualização'; +$lang['In %s, before ?>, insert:'] = 'Em %s, antes de ?>, insira:'; +$lang['All sub-albums of private albums become private'] = 'Todos os sub-albuns de albuns privados ficam privados tambem'; +$lang['User permissions and group permissions have been erased'] = 'Permissões de utilizador e de grupo foram apagadas.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Apenas o prefixo das miniaturas e o endereço de email do webmaster foram salvos da configuração anterior.'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Como precaução os seguintes temas foram desactivados. Deverá verificar por actualizações para os temas antes de os reactivar:'; + +?> \ No newline at end of file diff --git a/sources/language/ro_RO/about.html b/sources/language/ro_RO/about.html new file mode 100644 index 0000000..1bebf6c --- /dev/null +++ b/sources/language/ro_RO/about.html @@ -0,0 +1,17 @@ +

              Această galerie foto este bazată pe Piwigo.

              + +

              Piwigo este un software pentru galerii foto web, dezvoltat de o comunitate activă de utilizatori și dezvoltatori. Extensiile fac Piwigo ușor personalizabil. In plus, Piwigo este liber și gratuit.

              + +

              Vizitează web site-ul Piwigo

              + +Traducerea Piwigo în limba română este menținuta de : + +

              Traducerea Piwigo în limba română este menținuta de : + +

              + .... Ii mulțumim.

              diff --git a/sources/language/ro_RO/admin.lang.php b/sources/language/ro_RO/admin.lang.php new file mode 100644 index 0000000..7a6fbba --- /dev/null +++ b/sources/language/ro_RO/admin.lang.php @@ -0,0 +1,981 @@ +Click here to show log error.'] = 'O eroare a apărut în timpul extracției. Vă rugăm să verificaţi permisiunile fişierelor de instalare ale galeriei piwigo.
              Dați click aici pentru a vedea jurnalul de erori .'; +$lang['Available only with HTML format'] = 'Disponibil doar în format HTML'; +$lang['Average rate'] = 'Rata medie '; +$lang['Batch Manager'] = 'Manager de lot'; +$lang['Bound Theme'] = 'Consolidează tema'; +$lang['By %s'] = 'Câte %s'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'În mod implicit, Piwigo va crea o nouă dimensiune din versiunea HD (înaltă definiţie) a fotografiei.'; +$lang['By rank'] = 'Pe rang'; +$lang['Can\'t connect to server.'] = 'Conexiunea la server este imposibilă.'; +$lang['Can\'t create temporary file.'] = 'Fişierul temporar nu poate fi creat.'; +$lang['Can\'t download archive.'] = 'Arhiva nu poate fi descărcată.'; +$lang['Can\'t read or extract archive.'] = 'Arhiva nu poate fi citită sau extrasă.'; +$lang['Cannot delete the old permalink !'] = 'Permalink-urile vechi nu pot fi şterse!'; +$lang['Change Admin Colors'] = 'Schimbă culorile de la modulul de administrare'; +$lang['Check all'] = 'Verificaţi tot'; +$lang['Check automatic corrections'] = 'Verificaţi corecţiile automate'; +$lang['Check for updates'] = 'Verificaţi pentru actualizări'; +$lang['Check integrity'] = 'Verificare de integritate'; +$lang['Choose an action'] = 'Alege o acțiune'; +$lang['Choose an option'] = 'Alege o opțiune'; +$lang['Classic display'] = 'Afișare clasică'; +$lang['Complementary mail content'] = 'Conţinut suplementar al mailului'; +$lang['Configuration'] = 'Configuraţie'; +$lang['Confirm merge'] = 'Confirmaţi îmbinare'; +$lang['Continue processing treatment'] = 'Continuă tratamentul în curs de desfăşurare'; +$lang['Correction applied with error'] = 'Corecţie aplicată cu eroare'; +$lang['Correction applied with success'] = 'Corecţie aplicată cu succes'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Anomalia rectificată nu va mai fi ignorată'; +$lang['Correction'] = 'Corectare'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Creați dosarul "%s" la rădăcina de instalare Piwigo'; +$lang['Create this site'] = 'Creați siteul acesta'; +$lang['Create'] = 'Creare'; +$lang['automatic order'] = 'ordonare automată'; +$lang['average time'] = 'timpul mediu'; +$lang['between'] = 'între'; +$lang['clean'] = 'curățare'; +$lang['confirm'] = 'confirmă'; +$lang['create a new album'] = 'creați un nou album'; +$lang['created'] = 'creat(ă)'; +$lang[' and %d virtuals'] = 'și %d virtual'; +$lang['%d physicals'] = '%d fizic'; +$lang['Crop'] = 'Editează'; +$lang['Database synchronization with files'] = 'Sincronizarea bazei de date cu fișierele'; +$lang['Date'] = 'Data'; +$lang['Day'] = 'Zi'; +$lang['Deactivate all'] = 'Dezactivează tot'; +$lang['Default comments order'] = 'Ordinea implicită a comentariilor'; +$lang['Default display'] = 'Vizualizare implicită'; +$lang['Default photos order'] = 'Ordinea implicită a imaginilor'; +$lang['Default user cannot be deleted'] = 'Utilizatorul implicit nu poate fi șters'; +$lang['Default user does not exist'] = 'Utilizatorul implicit nu există'; +$lang['Delete orphan tags'] = 'Șterge tagurile orfane'; +$lang['Delete selected photos'] = 'Șterge imaginile selectate'; +$lang['Delete this language'] = 'Șterge această limbă'; +$lang['Delete this theme'] = 'Șterge această temă'; +$lang['Deleted on'] = 'Șters la data de'; +$lang['Detailed informations'] = 'Informație detaliată'; +$lang['Directory does not exist'] = 'Directorul nu există'; +$lang['Directory'] = 'Director'; +$lang['Documentation'] = 'Documentație'; +$lang['Download,'] = 'Descarcă'; +$lang['Downloads'] = 'Descărcări'; +$lang['Drop into album'] = 'Selectează un album'; +$lang['Dump Database'] = 'Șterge baza de date'; +$lang['Duplicates'] = 'Duplicate'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'EROARE: ACEST PLUGIN LIPSEȘTE DAR ESTE INSTALAT! DEZINSTALEAZĂ-L ACUM.'; +$lang['ERROR'] = 'EROARE'; +$lang['Edit album'] = 'Editează album'; +$lang['Element'] = 'Element'; +$lang['Error list'] = 'Listă erori'; +$lang['Error on file "%s" : %s'] = 'Eroare in fișierul "%s" : %s'; +$lang['FTP + Synchronization'] = 'FTP + Sincronizare'; +$lang['File'] = 'Fișier'; +$lang['Group'] = 'Grup'; +$lang['Hide'] = 'Ascunde'; +$lang['Hour'] = 'Ora'; +$lang['default values'] = 'valori implicite'; +$lang['default'] = 'implicit'; +$lang['delete album'] = 'șterge album'; +$lang['delete photo'] = 'șterge imagine'; +$lang['delete this site and all its attached elements'] = 'Șterge acest sit și toată informația asociată'; +$lang['deleted'] = 'șters'; +$lang['delete'] = 'șterge'; +$lang['directories + files'] = 'diurectoare + fișiere'; +$lang['display'] = 'vizualizează'; +$lang['errors during synchronization'] = 'erori în timpul sincronizării'; +$lang['even already synchronized photos'] = 'chiar și imaginile deja sincronizate'; +$lang['existing album'] = 'album existent'; +$lang['hide details'] = 'ascunde detaliile'; +$lang['Discover album:'] = 'Descoperă albumul:'; +$lang['Dissociate from album'] = 'Disociază de album'; +$lang['Do you want to activate anyway?'] = 'Doriți să activați oricum?'; +$lang['Drag to re-order'] = 'Faceţi clic-şi-trageţi pentru a rearanja'; +$lang['Edit album permissions'] = 'Editează permisiunile la album'; +$lang['Edit ranks'] = 'Editează clasamentul'; +$lang['Element type'] = 'Tip de element'; +$lang['Email administrators when a comment is deleted'] = 'Trimiteți un mail la administratori atunci când un comentariu este eliminat'; +$lang['Email administrators when a comment is modified'] = 'Trimiteți un mail la administratori atunci când un comentariu este modificat'; +$lang['Error when sending email to %s [%s].'] = 'Eroare la transmiterea e-mailului la %s[%s].'; +$lang['Errors caption'] = 'Legenda erorilor'; +$lang['Everybody'] = 'Toată lumea'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Timpul de execuție fiind terminat, tratamentul trebuie să continue [Estimare: %d secunde].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Timpul de execuție fiind depăşit, tratamentul trebuie să continue [Estimare: %d secunde].'; +$lang['Exif extension not available, admin should disable exif use'] = 'Extinderile Exif nu sunt disponibile, administratorul ar trebui să dezactiveze utilizarea exif'; +$lang['Extend for templates'] = 'Extindeţi şabloanele'; +$lang['Extensions Update'] = 'Actualizarea extensiilor'; +$lang['Failed to write file to disk'] = 'Scrierea unui fişier pe disc nu a funcționat'; +$lang['File upload stopped by extension'] = 'Trimiterea fişierului e blocată din cauza extensiei'; +$lang['File/directory read error'] = 'Eroare de citire a dosarului/fișierului'; +$lang['Follow Orientation'] = 'Urmaţi Orientare'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Plugin-urile următoare ar putea fi incompatibile cu noua versiune a Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Temele următoare ar putea fi incompatibile cu noua versiune a Piwigo:'; +$lang['Forbid this language to users'] = 'Interziceți acest limbaj utilizatorilor'; +$lang['Forbid this theme to users'] = 'Interziceți această temă utilizatorilor'; +$lang['Forbidden'] = 'Interzis'; +$lang['GD library is missing'] = 'Biblioteca GD lipseşte'; +$lang['GD version'] = 'Versiunea GD'; +$lang['General statistics'] = 'Statistici generale'; +$lang['Get Support on Piwigo Forum'] = 'Primiți sprijin pe forumul Piwigo'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Dați acces de scriere (chmod 777) la dosarul "%s" în dosarul rădăcină de instalare Piwigo'; +$lang['Go to %s or %s for more informations'] = 'Mergeți la %s sau %s pentru mai multe informații'; +$lang['Go to'] = 'Mergeți la'; +$lang['Graphics Library'] = 'Biblioteca de grafice'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'afișează maximul de informaţii (albume şi fotografii adăugate, albume şi fotografii şterse)'; +$lang['dissociate from group'] = 'disociază de grup'; +$lang['first photo added on %s'] = 'prima fotografie a fost adăugată pe %s'; +$lang['for the file format'] = 'pentru formatul de fişier'; +$lang['for this file format'] = 'pentru acest format de fişier'; +$lang['global mode'] = 'Mod global'; +$lang['%d day'] = '%d zi'; +$lang['%d days'] = '%d zile'; +$lang['%d hour'] = '%d oră'; +$lang['%d hours'] = '%d ore'; +$lang['%d minute'] = '%d minut'; +$lang['%d minutes'] = '%d minute'; +$lang['%d month'] = '%d lună'; +$lang['%d months'] = '%d luni'; +$lang['%d second'] = '%d secundă'; +$lang['%d seconds'] = '%d secunde'; +$lang['%d week'] = '%d săptămână'; +$lang['%d weeks'] = '%d săptămâni'; +$lang['%d year'] = '%d an'; +$lang['%d years'] = '%d ani'; +$lang['%s ago'] = '%s în urmă'; +$lang['Apply watermark if height is bigger than'] = 'Aplică filigran dacă lungimea este mai mare de'; +$lang['Apply watermark if width is bigger than'] = 'Aplică filigran dacă lațimea este mai mare de'; +$lang['Edit photo'] = 'Editează imagine'; +$lang['IP'] = 'IP'; +$lang['Ignore selected anomalies'] = 'Ignoră anomaliile selectate'; +$lang['Ignore this update'] = 'Ignoră această actualizare'; +$lang['Image Quality'] = 'Calitatea imaginii'; +$lang['Image id'] = 'ID-ul imaginii'; +$lang['Inactive Languages'] = 'Limbi inactive'; +$lang['Inactive Plugins'] = 'Pluginuri inactive'; +$lang['Inactive Themes'] = 'Teme inactive'; +$lang['Include display of recent photos grouped by dates'] = 'Include afișarea imaginilor recente grupate in funcție de dată'; +$lang['Installed Languages'] = 'Limbi instalate'; +$lang['Installed Themes'] = 'Teme instalate'; +$lang['Invert'] = 'Inversează'; +$lang['Language has been successfully installed'] = 'Această limbă a fost instalată cu succes'; +$lang['Languages which need upgrade'] = 'Limbi ce au nevoie de actualizare'; +$lang['Languages'] = 'Limbi'; +$lang['Last import'] = 'Importul precedent'; +$lang['Last revisions'] = 'Revizuirea perecdentă'; +$lang['Maximum height'] = 'Lungimea maximă'; +$lang['Maximum width'] = 'Lățimea maximă'; +$lang['Multiple Size'] = 'Mărimi multiple'; +$lang['New Version'] = 'Versiune Nouă'; +$lang['No photo in this album'] = 'Acest album nu conține nici o imagine'; +$lang['No results'] = 'Nu există rezultate'; +$lang['Number of downloads'] = 'Număr descărcări'; +$lang['Numeric identifier : %d'] = 'Identificator numeric: %d'; +$lang['Opacity'] = 'Opacitate'; +$lang['Overall'] = 'Privire de ansamblu'; +$lang['Pages seen'] = 'Pagini vizionate'; +$lang['Parameter'] = 'Setări'; +$lang['Parameters'] = 'Parametri'; +$lang['Permissions'] = 'Permisiuni'; +$lang['Photo %s of %s'] = 'Imaginea %s din %s'; +$lang['Photo informations updated'] = 'Datele imaginii au fost actualizate'; +$lang['Photo name'] = 'Titlul imaginii'; +$lang['Rated %d times, score : %.2f'] = 'Rating %d ori, scor: %.2f'; +$lang['This album contains %d photos, added on %s.'] = 'Acest album conține %d imagini, adăgate la %s'; +$lang['Watermark'] = 'Fligran'; +$lang['add a new watermark'] = 'adaugă filigran nou'; +$lang['administrators'] = 'adminstratori'; +$lang['bottom left corner'] = 'Colțul stânga jos'; +$lang['bottom right corner'] = 'Colțul dreapta jos'; +$lang['guest'] = 'oaspete'; +$lang['include child albums'] = 'Include albumele descendente'; +$lang['leave'] = 'părăsește'; +$lang['middle'] = 'mijloc'; +$lang['nothing'] = 'nimic'; +$lang['only directories'] = 'doar directoare'; +$lang['photos added in the database'] = 'imagini adăgate in baza de date'; +$lang['top left corner'] = 'Colțul stânga sus'; +$lang['top right corner'] = 'Colțul dreapta sus'; +$lang['Group management'] = 'Administrarea grupurilor'; +$lang['Height'] = 'Lungime'; +$lang['Hello,'] = 'Bună,'; +$lang['Hello'] = 'Bună'; +$lang['Help Me'] = 'Ajută-mă'; +$lang['Ignore All'] = 'Ignoră tot'; +$lang['Impossible automatic correction'] = 'Corecția automată nu este posibilă'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Această limbă nu poate fi dezactivată, ai nevoie de cel puțin o limbă'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Această temă nu poate fi dezactivată, ai nevoie de cel puțin o temă'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Această temă nu poate fi ștearsă, pentru că alte teme depind de ea: %s'; +$lang['Main Page'] = 'Pagina principală'; +$lang['Manage Permissions'] = 'Administrează permisiunile'; +$lang['Manage this set of %d photos'] = 'Administrează acest set de %d imagini'; +$lang['Manage'] = 'Administrează'; +$lang['Miscellaneous'] = 'Diverse'; +$lang['Month'] = 'Lună'; +$lang['New photos added'] = 'Imagini noi adăugate'; +$lang['New photos were added'] = 'Imagini noi au fost adăguate'; +$lang['No photo in the current set.'] = 'Nu există imagini în setul curent'; +$lang['Obsolete Plugins'] = 'Plugin-uri învechite'; +$lang['Photos'] = 'Imagini'; +$lang['Please wait...'] = 'Așteaptă te rog...'; +$lang['Plugin has been successfully copied'] = 'Plugin-ul a fost copiat cu succes'; +$lang['Predefined filter'] = 'Filtre predefinite'; +$lang['Save Settings'] = 'Salvează setările'; +$lang['Section'] = 'Secțiune'; +$lang['Select an album'] = 'Selectează un album'; +$lang['Select at least one comment'] = 'Selectează cel puțin un comentariu'; +$lang['group "%s" added'] = 'grupul "%s" a fost adăugat'; +$lang['group "%s" deleted'] = 'grupul "%s" a fost șters'; +$lang['group "%s" updated'] = 'grupul "%s" a fost actualizat'; +$lang['height must be a number superior to'] = 'lungimea trebuie să fie un număr mai mare decât'; +$lang['new'] = 'nou'; +$lang['photos deleted from the database'] = 'imagini șterse din baza de date'; +$lang['photos per page'] = 'imagini pe pagină'; +$lang['pixels'] = 'pixeli'; +$lang['registration date'] = 'data registrării'; +$lang['A locked gallery is only visible to administrators'] = 'O galerie blocata este vizibila doar administratorilor'; +$lang['Added by %s'] = 'Adaugat de %s'; +$lang['Applications'] = 'Aplicatii'; +$lang['Automatic sort order'] = 'Sortare ordine automata'; +$lang['Available on'] = 'Disponibil in'; +$lang['Available versions for'] = 'Versiune disponibila pentru'; +$lang['Cancel'] = 'Anulare'; +$lang['Hit'] = 'Accesari'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Daca intampini probleme sau au intrebari, trimite un mesaj la'; +$lang['Instructions to use Piwigo'] = 'Instructiuni pentru a folosi Piwigo'; +$lang['Last hit'] = 'Ultima accesare'; +$lang['Last send'] = 'Ultima trimitere'; +$lang['Learn more'] = 'Afla mai multe'; +$lang['List'] = 'Lista'; +$lang['Lock'] = 'Blocat'; +$lang['[NBM] Problems or questions'] = '[NBM] Probleme sau întrebări'; +$lang['any visitor can see this album'] = 'orice vizitator poate viziona acest album'; +$lang['create a new site'] = 'creează un site nou'; +$lang['jump to album'] = 'sari la album'; +$lang['jump to photo'] = 'sari la imagine'; +$lang['registered users'] = 'utilizatori înregistrați'; +$lang['remove author'] = 'șterge autor'; +$lang['remove tags'] = 'șterge taguri'; +$lang['remove this filter'] = 'șterge acest filtru'; +$lang['remove title'] = 'șterge titlu'; +$lang['selection'] = 'selecție'; +$lang['show details'] = 'arată detalii'; +$lang['simple visitors'] = 'vizitatori simpli'; +$lang['synchronize files structure with database'] = 'sincronizează structura fișierelor cu baza de date'; +$lang['test'] = 'test'; +$lang['the forum'] = 'forumul'; +$lang['total time'] = 'timp total'; +$lang['unknown'] = 'necunoscut'; +$lang['user "%s" added'] = 'utilizatorul "%s" a fost adăgat'; +$lang['user_status_admin'] = 'Administrator'; +$lang['user_status_guest'] = 'Oaspete'; +$lang['user_status_normal'] = 'Utilizator'; +$lang['user_status_webmaster'] = 'Webmaster'; +$lang['width must be a number superior to'] = 'lățimea trebuie să fie mai mare de'; +$lang['wrong filename'] = 'nume de fișier greșit'; +$lang['Mail sent to %s [%s].'] = 'Mail trimis la %s [%s].'; +$lang['%s in the future'] = '%s în viitor'; +$lang['Manage the members'] = 'Gestionați membrii'; +$lang['photos informations synchronized with files metadata'] = 'Informațiile fotografiilor sincronizate cu metadatele fișierelor'; +$lang['singly represented'] = 'miniatura fixă pentru album'; +$lang['synchronize files metadata with database photos informations'] = 'sincronizați fotografiile din baza de date cu metadatele fișierelor'; +$lang['unit mode'] = 'mono-mod'; +$lang['unset'] = 'nesetat'; +$lang['update the database from files'] = 'actualizarea bazei de date cu fișiere'; +$lang['pending validation'] = 'în așteptarea validării'; +$lang['photos candidates for metadata synchronization'] = 'fotografii posibile pentru sincronizarea metadatelor'; +$lang['photos updated in the database'] = 'fotografii actualizate în baza de date'; +$lang['randomly represented'] = 'miniatura aleatorie a albumului '; +$lang['ranks'] = 'locuri'; +$lang['remove creation date'] = 'eliminați data creării'; +$lang['set to'] = 'setat la'; +$lang['status'] = 'statut'; +$lang['sub-albums'] = 'sub-albume'; +$lang['target'] = 'țintă'; +$lang['test this remote site'] = 'testează acest site îndepărtat'; +$lang['the wiki'] = 'wiki-ul'; +$lang['user_status_generic'] = 'Generic'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'vizitatorii trebuie să se autentifice și să aibă permisiunile corespunzătoare pentru a vedea acest album'; +$lang['Local'] = 'Local'; +$lang['Locked'] = 'Blocat'; +$lang['Mail address is obligatory for all users'] = 'Adresa de mail e obligatorie pentru toți utilizatorii'; +$lang['Mail content'] = 'Conținutul mailului'; +$lang['Main "guest" user does not exist'] = 'Utilizatorul principal "oaspete" nu există'; +$lang['Main "guest" user status is incorrect'] = 'Statutul utilizatorului principal "oaspete" nu este corect'; +$lang['Main "webmaster" user does not exist'] = 'Utilizatorul principal "webmaster" nu există'; +$lang['Main "webmaster" user status is incorrect'] = 'Statutul utilizatorului principal "webmaster" nu este corect'; +$lang['Make this language available to users'] = 'Puneți această limbă la dispoziția utilizatorilor'; +$lang['Make this theme available to users'] = 'Puneți această temă la dispoziția utilizatorilor'; +$lang['Manage photos'] = 'Gestionați fotografiile'; +$lang['Landscape'] = 'Peisaj'; +$lang['Install on your computer,'] = 'Instalați pe calculatorul dvs.,'; +$lang['Information data registered in database'] = 'Datele sunt înregistrate în baza de date '; +$lang['Images manual order was saved'] = 'Ordinea manuala a imaginilor salvată'; +$lang['I decide to update anyway'] = 'Decid să actualizez oricum'; +$lang['High definition enabled'] = 'Înaltă definiție activată'; +$lang['High definition'] = 'De înaltă definiție'; +$lang['Guest cannot be deleted'] = 'Oaspeții nu pot fi șterși'; +$lang['Guest Settings'] = 'Setările oaspeților'; +$lang['Groups and users'] = 'Grupuri și utilizatori'; +$lang['Generate multiple size images'] = 'Generați imagini de diferite dimensiuni '; +$lang['Gallery unlocked'] = 'Galerie deblocată'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funcționalitățile sale includ navigarea prin galerie, crearea de albume foto și transferul de poze.'; +$lang['Duplicate selected tags'] = 'Duplică etichetele selecționate'; +$lang['Center of interest'] = 'Centrul de interes'; +$lang['Duplicate'] = 'Duplică'; +$lang['Delete multiple size images'] = 'Șterge imagini de dimensiuni diferite'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'În mod implicit, centrul de interes este plasat în mijlocul fotografiei.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture este proiectat pentru fotografi profesioniști cu simplitatea iPhoto-ului.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture este un instrument puternic proiectat pentru redefinirea imaginilor și pentru gestiunea de biblioteci mari pe un sistem Mac.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom este un program pentru fotografii proiectat pentru a gestiona și a prelucra mari cantități de imagini digitale.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo pentru iOS programul vă permite să vă conectați iPhone-ul, iPad-ul sau iPad-ul Touch la galeria dvs. Piwigo, să creați unele albume și să transmiteți mai multe fotografii în același timp.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo pentru Android programul vă permite să vă conectați telefonul sau tableta dvs. Android la galeria dvs. Piwigo, să creați unele albume și să transmiteți mai multe fotografii în același timp.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'u% de utilizatori au permisiunea automată, deoarece aceștia aparțin unui grup cu permisii.'; +$lang['View in gallery'] = 'Vezi în galerie'; +$lang['Used metadata'] = 'Metadate utilizate'; +$lang['User'] = 'Utilizator'; +$lang['User "%s" created with "%s" like password'] = 'Utilizator "%s" creat cu parola "%s" '; +$lang['User %s [%s] added.'] = 'Utilizator %s [%s] adăugat.'; +$lang['User list'] = 'Listă de utilizatori'; +$lang['There is no other language available.'] = 'Nicio altă limbă nu este disponibilă.'; +$lang['There is no other theme available.'] = 'Nicio altă temă nu este disponibilă.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Acest album conţine %d imagini, adăugate între %s şi %s.'; +$lang['Uncheck all'] = 'Debifează tot'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Eticheta "%s" este acum un duplicat al lui "%s"'; +$lang['Source tag'] = 'Etichetă sursă'; +$lang['Piwigo Administration'] = 'Administrare Piwigo'; +$lang['Portrait'] = 'Portret'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Această temă nu a putut fi activată, deoarece tema părinte lipseşte: %s.'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Imposibil de dezactivat această limbă, alege întâi altă limbă ca implicit.'; +$lang['No file was uploaded'] = 'Niciun fişier nu a fost încărcat'; +$lang['No group is permitted to see this private album'] = 'Niciunui grup nu îi este permis să vadă acest album'; +$lang['No photo can be deleted'] = 'Nicio imagine nu poate fi ştearsă'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Fişierele încărcate depăşesc directiva post_max_size directive din php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Versiunea instalată a %s [%s] nu este compatibilă cu versiunea cerută [%s]'; +$lang['Resize after upload'] = 'Redimensionează după încărcare'; +$lang['See you soon,'] = 'Ne vedem în curând,'; +$lang['See you soon.'] = 'ne vedem în curând.'; +$lang['Select a file'] = 'Alege un fişier'; +$lang['Select at least two tags for merging'] = 'Alege cel puţin două etichete pentru îmbinare'; +$lang['Select files'] = 'Alege fişiere'; +$lang['Toggle \'default group\' property'] = 'Inversează proprietatea \'grup implicit\''; +$lang['Tools'] = 'Unelte'; +$lang['Type here the author name'] = 'Scrie aici numele autorului'; +$lang['Type here the name of the new group'] = 'Scrie aici numele noului grup'; +$lang['Type here the title'] = 'Scrie aici titlul'; +$lang['Type in a search term'] = 'Scrie un termen de căutare'; +$lang['Synchronize'] = 'Sincronizează'; +$lang['Tags %s merged into tag %s'] = 'Etichetele %s îmbinate în eticheta %s$conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Ai specificat $conf[\'order_by\'] în fișierul tău local de configurație, acest parametru este perimat, șterge-l sau renumește-l în $conf[\'order_by_custom\'] !'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam este un administrator avansat sursă libera de fotografii digitale pentru Linux, Windows și MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam este proiectat pentru fotografi care vor să vizualizeze, administreze, editeze, îmbunătățească, organizeze, eticheteze și partajeze fotografii.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto este administratorul implicit de fotografii digitale din MacOSX. Plugin-ul Piwigo de export iți permite să creezi albume noi și să exporți fotografiile tale din iPhoto direct în galeria ta Piwigo.'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader înseamnă Piwigo Uploader. Din calculatorul tău, pLoader îți pregătește fotografiile și le transferă în galeria ta Piwigo.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Utilizatorul %s [%s] a fost adăugat la lista de abonați.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Utilizatorul %s [%s] nu a fost adăugat la lista de abonați.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Utilizatorul %s [%s] nu a fost șters din lista de abonați.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Utilizatorul %s [%s] a fost șters din lista de abonați.'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ATENȚIE! Aces plugin nu pare să fie compatibil cu această versiune de Piwigo.'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Atenție: abonarea sau dezabonarea vor trimite mesaje la utilizatori'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pentru a exporta fotografiile tale din digiKam în Piwigo, instalează digiKam si plugin-urile Kipi.'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell este un organizator sursă liberă de fotografii digitale care ruleaza pe Linux. Este organizatorul de fotografii implicit în Ubuntu și Fedora.'; +$lang['Some themes and plugins may be not available yet.'] = 'Unele teme și plugin-uri s-ar putea să nu fie încă disponibile.'; +$lang['Start pLoader and add your photos.'] = 'Pornește pLoader și adaugă fotografiile tale.'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Verifică permisiunile dosarului "plugins" și ale sub-dosarelor (CHMOD).'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'În fișierul tău php.ini, upload_max_filesize (%sB) este mai mare decât post_max_size (%sB), ar trebui să modifici această setare'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Include datele istorice (Atenție: memoria server-ului poate fi depășită)'; +$lang['Manage photo ranks'] = 'Ordine de sortare pentru fotografii'; +$lang['Not cropped correctly?'] = 'Nu a fost decupat corect?'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Pe Linux-ul tău, instalează Shotwell cu ajutorul administratorului de pachete și activează opțiunea Piwigo de publicare.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) este un client Piwigo sursă deschisă (GPL v3) pentru platforma Android.'; +$lang['Replacers (customized templates)'] = 'Substitute (șabloane personalizate)'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Restaurează configurația implicită. Îți vei pierde setările plugin-urilor!'; +$lang['Save Template Directory'] = 'Salvează dosarul de șabloane'; +$lang['Other plugins'] = 'Alte plugin-uri disponibile'; +$lang['Missing Plugins'] = 'Plugin-uri lipsă'; +$lang['No destination tag selected'] = 'Nicio etichetă destinație aleasă'; +$lang['Notify administrators when a comment is'] = 'Informează administratorii când un comentariu este'; +$lang['Number of albums per page'] = 'Numărul de albume pe pagină'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ACEST PLUGIN ESTE ACUM PARTE DIN NUCLEUL PIWIGO! DEZINSTEALEAZĂ-L ACUM!'; +$lang['Templates configuration has been recorded.'] = 'Configurația șabloanelor a fost înregistrată.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Plugin-ul Piwigo de export îți permite să creezi albume și să exporți fotografii.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Plugin-ul Piwigo de publicare îți permite să exporți și să sincronizezi fotografii din Lightroom direct în galeria ta Piwigo.'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Dimensiunile fotografiei vor fi reduse la %dx%d pixeli.'; +$lang['Pending Comments'] = 'Comentarii în așteptare'; +$lang['Permission granted for groups'] = 'Permisiune acordată pentru grupuri'; +$lang['Photo Properties'] = 'Proprietățile fotografiei'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin Piwigo pentru publicare pentru Ligtroom'; +$lang['Piwigo export plugin for Aperture'] = 'Plugin Piwigo pentru export pentru Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin Piwigo pentru export pentru iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'Plugin Piwigo pentru publicare pentru Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Plugin Piwigo pentru publicare pentru digiKam'; +$lang['Plugin list'] = 'Lista de plugin-uri'; +$lang['Original templates'] = 'Șabloane originale'; +$lang['Photo unreachable or no support'] = 'Fotografie nedisponibilă sau în format nesuportat'; +$lang['Support'] = 'Suport'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Dacă HD nu este disponibil și dacă dimensiunea curentă pentru web este mai mare decât dimensiunile noi, Piwigo o va muta ca HD și va crea din ea o fotografie cu dimensiuni mai mici pentru web.'; +$lang['None'] = 'Nimic'; +$lang['Posted %s on %s'] = 'A publicat %s pe %s'; +$lang['Photo Page'] = 'Pagina fotografii'; +$lang['Purge never used notification feeds'] = 'Curăță feed-urile de înștiințări neutilizate'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Fii în contact cu proiectul Piwigo, abonează-te la Scrisoarea de știri Piwigo. Vei primi e-mail-uri când vor fi disponibile noi versiuni (câteodată incluzând reparări de bug-uri de securirate, este important să știi și să actualizezi) și când se vor întâmpla evenimente majore cu proiectul. Numai cateva e-mail-uri pe an.'; +$lang['Piwigo Announcements Newsletter'] = 'Scrisoarea de știri Piwigo'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Abonează %s la Scrisoarea de știri Piwigo'; +$lang['Sharpen'] = 'Ascute'; +$lang['Remote'] = 'Distant'; +$lang['reduce to single existing albums'] = 'redu la albume unice existente'; +$lang['Remove from caddie'] = 'Șterge din coș'; +$lang['There is no available subscribers to mail.'] = 'Nu există niciun abonat pentru a fi înștiințat prin e-mail.'; +$lang['Unable to dump database.'] = 'Imposibil de descărcat baza de date.'; +$lang['Unknown upload error'] = 'Eroare necuonscută de încărcare'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pentru dimensiunile de fotografii cu decupare, cum ar fi "Pătrat", Piwigo va încerca să includa centrul de interes.'; +$lang['Notification'] = 'Înștiințare'; +$lang['This is a major update, with new exciting features.'] = 'Aceasta este o actualizare majoră, cu îmbunătățiri interesante.'; +$lang['This is a minor update, with only bug corrections.'] = 'Aceasta este o actualizare minoră, numai cu corecții de bug-uri.'; +$lang['To send ?'] = 'Se trimite?'; +$lang['To subscribe'] = 'Pentru a abona'; +$lang['To unsubscribe'] = 'pentru a dezabona'; +$lang['Photo sizes with crop'] = 'Dimensiunile fotografiei cu decupare'; +$lang['Photos generation in progress...'] = 'Generarea fotografiilor în curs...'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Timpul de pregătire a liste utilizatorilor la care va fi trimis e-mail este limitat. Alți utilizatori nu vor fi afișați.'; +$lang['Searching...'] = 'Căutare...'; +$lang['Settings'] = 'Setări'; +$lang['Status of user "%s" updated'] = 'Utilizatorul "%s" statut actualizat'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Abonații pot fi listați (disponibili) numai dacă există elemente noi pentru înștiințări.'; +$lang['Send connection settings by email'] = 'Trimite setările de conexiune prin e-mail'; +$lang['Some upgrades are available for extensions.'] = 'Sunt disponibile unele actualizări pentru extensii.'; +$lang['Start Upload'] = 'Începe încărcarea'; +$lang['Reset ignored updates'] = 'Resetează actualizările ignorate'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Redimensionarea după încărcare a fost dezactivată datorită folosirii GD ca librărie grafică'; +$lang['Set creation date'] = 'Alege data creării'; +$lang['Piwigo Update'] = 'Actualizare Piwigo'; +$lang['Piwigo Uploader'] = 'Utilitar de încărcare Piwigo'; +$lang['Plugins which need upgrade'] = 'Plugin-uri de actualizat'; +$lang['Purge compiled templates'] = 'Curăță șabloanele compilate'; +$lang['Purge user cache'] = 'Curăță cache-ul utilizatorului'; +$lang['Released on'] = 'Lansat pe'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Foloesești utilitarul de încărcare prin navigator. Încearcă utilitarul de încărcare prin Flash în locul lui.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Folosești utilitarul de încărcare prin Flash. Ai probleme? Încearcă utilitarul de încărcare prin navigator în locul lui.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Poți actualiza direct la Piwigo %s, fără a actualiza la Piwigo %s (recomandat).'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Ar trebui să-ți actualizezi sistemul pentru a beneficia de toate avantajele aplicației, altfel aplicația ar putea funcționa necorespunzător sau deloc'; +$lang['Update photos information'] = 'Actualizează informațiile fotografiiloe'; +$lang['Update to Piwigo %s'] = 'Actualizează la Piwigo $s'; +$lang['Upload'] = 'Încarcă'; +$lang['Upload Photos'] = 'Încarcă fotografii'; +$lang['Uploaded Photos'] = 'Fotografii încărcate'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Înlocuirea șabloanelor originale cu șabloane personalizate din sub-dosarul șabloane-extensii'; +$lang['Select recipients'] = 'Alege destinatari'; +$lang['Set as default language for unregistered and new users'] = 'Alege ca limbă implicită pentru utilizatorii noi si neînregistrați'; +$lang['Set as default theme for unregistered and new users'] = 'Alege ca temă implicită pentru utilizatorii noi si neînregistrați'; +$lang['Set author'] = 'Alege autor'; +$lang['Set title'] = 'Alege titlu'; +$lang['Subscribe'] = 'Abonează'; +$lang['Subscribe %s'] = 'Abonează %s'; +$lang['Subscribe to notification by mail'] = 'Abonează-te la înștiințări prin e-mail'; +$lang['Subscribed'] = 'Abonat'; +$lang['Switch to clear or dark colors for administration'] = 'Schimbă la clar sau la culori întunecate pentru administrare.'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Timpul pentru a trimite e-mail-uril este limitat. Alte e-mail-luri au fost sărite.'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nu poți defini o ordine implicită a fotografiilor, pentru că ai deja o setare personalizată în configurația locală.'; +$lang['Hoverbox display'] = 'Afișaj în fereastră flotantă'; +$lang['No display'] = 'Niciu'; +$lang['No order field selected'] = 'Nicio ordine a cămpurilor aleasă'; +$lang['No photo selected, %d photos in current set'] = 'Nicio fotografie aleasă, %d fotografii în setul curent'; +$lang['No photo selected, no action possible.'] = 'Nicio fotografie aleasă, nicio acțiune posibilă.'; +$lang['No user to send notifications by mail.'] = 'Niciun utilizator petnru a fi înștiințat prin e-mail.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Pwigo nu poate aduce fotografiile de pe server'; +$lang['Webmaster status is required.'] = 'Este necesar statutul de webmaster.'; +$lang['Subscribe/unsubscribe users'] = 'Abonează/dezabonează utilizatori'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Centrul de interes este partea cu cel mai mult înțeles dintr-o fotografie.'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Webmaster-ul te-a abonat pentru a fi înștiințat prin e-mail.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Webmaster-ul te-a dezabonat de la înștiințările prin e-mail.'; +$lang['Basic settings'] = 'Setări de bază'; +$lang['No matching user found'] = 'Niciun utilizator nu corespunde'; +$lang['No user selected of %d users'] = 'Niciun utilizator selectat din %d utilizatori'; +$lang['No user selected, no action possible.'] = 'Niciun utilizator selectat, nicio acțiune posibilă'; +$lang['Password updated'] = 'Parolă adusă la zi'; +$lang['Showing %s to %s of %s users'] = 'Arăt de la %s la %s din %s utilizatori'; +$lang['Update user'] = 'Adu la zi utilizator'; +$lang['User %s updated'] = 'Utilizatorul %s adus la zi'; +$lang['Users modified'] = 'Utilizatori modificați'; +$lang['on the %d selected users'] = 'pe cei %d utilizatori selectați'; +$lang['%d of %d users selected'] = '%d din %d utilizatori selectați'; +$lang['(filtered from %s total users)'] = '(filtrat din %s utilizatori în total)'; +$lang['All %d users are selected'] = 'Toți %d utilizatorii sunt selectați'; +$lang['Change password'] = 'Schimbă parola'; +$lang['Change username'] = 'Schimbă numele de utilizator'; +$lang['General'] = 'General'; +$lang['Last visit on %s, %s.'] = 'Ultima vizită pe %s, %s'; +$lang['Loading...'] = 'Se încarcă'; +$lang['Mail theme'] = 'Temă e-mail'; +$lang['Registered on %s, %s.'] = 'Înregistrat pe %s, %s'; +$lang['Select at least one tag'] = 'Alege cel puțin o etichetă'; +$lang['Show %s users'] = 'Arată %s utilizatori'; +$lang['User %s added'] = 'Utilizatorul %s adăugat'; +$lang['Close user details'] = 'Închide detalii utilizator'; +$lang['Open user details'] = 'Deschide detalii utilizator'; +$lang['close'] = 'închide'; +?> \ No newline at end of file diff --git a/sources/language/ro_RO/common.lang.php b/sources/language/ro_RO/common.lang.php new file mode 100644 index 0000000..1e71476 --- /dev/null +++ b/sources/language/ro_RO/common.lang.php @@ -0,0 +1,423 @@ + \ No newline at end of file diff --git a/sources/language/ro_RO/help/cat_move.html b/sources/language/ro_RO/help/cat_move.html new file mode 100644 index 0000000..c5675d9 --- /dev/null +++ b/sources/language/ro_RO/help/cat_move.html @@ -0,0 +1,11 @@ +

              Mutând Albume virtuale

              + +

              Doar albumele virtuale pot avea un nou album originar

              + +

              Albume virtuale de mutat

              + +

              Selecteaza( unul sau mai multe albume virtuale pe care vrei sa( le mut,i. Daca( lista e goala(, înseamna( ca( nu ai creat înca( unul.

              + +

              Album originar nou

              + +

              Selecteaza( noul album originar (virtual sau fizic). Daca( nu selectezi niciunul originar, albumele virtuale selectate vor fi mutate la început. Un album nu poate fi mutat în el însus,i sau într-o copie de-a sa.

              \ No newline at end of file diff --git a/sources/language/ro_RO/index.php b/sources/language/ro_RO/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/ro_RO/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ro_RO/install.lang.php b/sources/language/ro_RO/install.lang.php new file mode 100755 index 0000000..9fe9571 --- /dev/null +++ b/sources/language/ro_RO/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Ai nevoie de ajutor? Intreaba pe Forumul Piwigo.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Poti sa schimbi configuratia manual si sa restartezi Piwigo dupa aceea.'; +$lang['Password [confirm]'] = 'Parola [confirma]'; +$lang['PHP 5 is required'] = 'PHP5 este necesar'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo va incerca sa treaca configuratia ta la PHP5 folosind o fila .htaccess'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nu a putut sa configureze PHP5'; +$lang['please enter your password again'] = 'Introduce parola inca o data'; +$lang['Sorry!'] = 'Imi pare rau!'; +$lang['Start Install'] = 'Incepe instalarea'; +$lang['Try to configure PHP 5'] = 'Incearca sa configurezi PHP5'; +$lang['user login given by your host provider'] = 'Userul oferit de providerul de host.'; +$lang['user password given by your host provider'] = 'Parola oferita de providerul de host'; +$lang['User'] = 'User'; +$lang['verification'] = 'verificarea'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Vizitatorii vor folosii aceasta adresa pentru a contacta administratorul'; +$lang['webmaster login can\'t contain characters \' or "'] = 'Userul nu poate sa contina caracterele \' sau "'; +$lang['Welcome to my photo gallery'] = 'Bine ati venit la galeria mea foto'; +$lang['Welcome to your new installation of Piwigo!'] = 'Bine ai venit la noua instalare Piwigo!'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Poti sa descarci fila de configurare si sa o uploadezi in folderul local/config al instalarii.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Ar trebui sa te adresezi hostului si sa intrebi cum poti sa treci la PHP5'; +$lang['localhost or other, supplied by your host provider'] = 'localhost sau alta, furnizat de furnizorul de găzduire'; +?> \ No newline at end of file diff --git a/sources/language/ro_RO/iso.txt b/sources/language/ro_RO/iso.txt new file mode 100644 index 0000000..759b5db --- /dev/null +++ b/sources/language/ro_RO/iso.txt @@ -0,0 +1 @@ +Română [RO] \ No newline at end of file diff --git a/sources/language/ro_RO/ro_RO.jpg b/sources/language/ro_RO/ro_RO.jpg new file mode 100644 index 0000000..622bb8d Binary files /dev/null and b/sources/language/ro_RO/ro_RO.jpg differ diff --git a/sources/language/ro_RO/upgrade.lang.php b/sources/language/ro_RO/upgrade.lang.php new file mode 100755 index 0000000..de0c4a7 --- /dev/null +++ b/sources/language/ro_RO/upgrade.lang.php @@ -0,0 +1,41 @@ +%s, before ?>, insert:'] = 'In %s, inainte de ?>, insert:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Numai un administrator poate face upgrade. Te rog logheaza-te mai jos.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Numai prefixurile thumbnailurilor si adresa de mail a webmasterului au fost salvate'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Ruleaza o verificare de mentenanta in [Administration>Tools>Maintenance] daca intampini probleme'; +$lang['SQL queries'] = 'Interogari SQL'; +$lang['Statistics'] = 'Statistici'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Aceasta pagina upgradeaza baza de date de la o versiunea mai veche de Piwigo la cea noua. +In acest moment rulezi release %s'; +$lang['total SQL time'] = 'timpul total SQL'; +$lang['total upgrade time'] = 'Timpul total pentru upgrade'; +$lang['Upgrade from version %s to %s'] = 'Upgradeaza de la versiunea %s la %s'; +$lang['Upgrade informations'] = 'Informatiile pentru upgrade'; +$lang['Upgrade'] = 'Upgradeaza'; +$lang['User permissions and group permissions have been erased'] = 'Userii si permisiunile grupurilor au fost sterse'; +$lang['You do not have access rights to run upgrade'] = 'Nu ai acces pentru a face upgrade'; +?> \ No newline at end of file diff --git a/sources/language/ru_RU/about.html b/sources/language/ru_RU/about.html new file mode 100644 index 0000000..a1b7c57 --- /dev/null +++ b/sources/language/ru_RU/about.html @@ -0,0 +1,18 @@ +

              Эта фотогалерея работает на Piwigo.

              + +

              Piwigo - система управления контентом (CMS) для сайта-фотогалереи, поддерживается активным сообществом пользователей и разработчиков. Разнообразные плагины делают Piwigo гибкой и легко модифицируемой системой. Особенно ценно то, что Piwigo - бесплатная CMS с открытым исходным кодом.

              + +

              Посетите официальный сайт Piwigo

              + +

              Актуальность русской локализации поддерживается (в алфавитном порядке): + +

              + .... спасибо вам большое

              \ No newline at end of file diff --git a/sources/language/ru_RU/admin.lang.php b/sources/language/ru_RU/admin.lang.php new file mode 100644 index 0000000..01fb011 --- /dev/null +++ b/sources/language/ru_RU/admin.lang.php @@ -0,0 +1,978 @@ +Piwigo Uploader
              . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader заменяет Piwigo Загрузчик. С помощью pLoader Вы можете локально подготовить Ваши фотографии и загрузить их в Вашу фотогалерею Piwigo.'; +$lang['Guest Settings'] = 'Установки пользователя Гость'; +$lang['Main Page'] = 'Главная страница'; +$lang['Photo Page'] = 'Страница фотографии'; +$lang['Activate Navigation Bar'] = 'Активизировать навигационную панель'; +$lang['Activate Navigation Thumbnails'] = 'Активизировать навигацию по миниатюрам'; +$lang['Activate icon "%s"'] = 'Активизировать иконку "%s"'; +$lang['Photo Properties'] = 'Свойства фотографии'; +$lang['Allow user customization'] = 'Разрешить пользователям изменять внешний вид галереи'; +$lang['Languages'] = 'Языки'; +$lang['Installed Languages'] = 'Установленные языки'; +$lang['Add New Language'] = 'Добавить новый язык'; +$lang['Language has been successfully installed'] = 'Язык был успешно установлен'; +$lang['Select:'] = 'Вы можете выбрать:'; +$lang['None'] = 'Ничего'; +$lang['Invert'] = 'Обратить'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Невозможный деактивировать эту тему, у Вас должна оставаться по крайней мере одна тема.'; +$lang['Webmaster status is required.'] = 'Требуется статус веб мастера.'; +$lang['Bound Theme'] = 'связанная тема'; +$lang['Allow rating'] = 'Разрешить оценивать'; +$lang['Select at least one comment'] = 'Выберите по крайней мере один комментарий'; +$lang['Active Plugins'] = 'Активные плагины'; +$lang['Inactive Plugins'] = 'Неактивные плагины'; +$lang['Missing Plugins'] = 'Потерянные плагины'; +$lang['Uninstalled Plugins'] = 'Удаленные плагины'; +$lang['By %s'] = ' %s'; +$lang['Visit plugin site'] = 'Страница плагина'; +$lang['Active Languages'] = 'Активные языки'; +$lang['Delete this language'] = 'Удалить этот язык'; +$lang['Forbid this language to users'] = 'Сделать недоступным этот язык для пользователей'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Невозможный деактивировать этот язык, сначала установите другой язык как значение по умолчанию.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Невозможный деактивировать этот язык, у Вас должен быть по крайней мере один язык.'; +$lang['Inactive Languages'] = 'Неактивные языки'; +$lang['Make this language available to users'] = 'Сделать этот язык доступным для пользователей'; +$lang['Set as default language for unregistered and new users'] = 'Установить язык по умолчанию для незарегистрированных и новых пользователей'; +$lang['Add Photos'] = 'Добавить фотографии'; +$lang['The following tag was deleted'] = 'Следущие метки были удалены'; +$lang['Miscellaneous'] = 'Разное'; +$lang['Virtual Links'] = 'Виртуальные ссылки'; +$lang['Templates configuration has been recorded.'] = 'Конфигурация шаблона перезаписана.'; +$lang['Modify information'] = 'Информация по изменению'; +$lang['There is no other language available.'] = 'Нет других доступных языков.'; +$lang['There is no other plugin available.'] = 'Нет других доступных плагинов.'; +$lang['There is no other theme available.'] = 'Нет других доступных тем.'; +$lang['By rank'] = 'По рейтингу'; +$lang['Manual order'] = 'Сортировать вручную'; +$lang['Add another set of photos'] = 'Добавить фотографии'; +$lang['Order of menubar items has been updated successfully.'] = 'Порядок расположения элементов меню изменен успешно.'; +$lang['This theme was not designed to be directly activated'] = 'В этой теме не предусмотрена активация напрямую'; +$lang['Who can see this photo?'] = 'Кто может смотреть это изображение?'; +$lang['Pending Comments'] = 'Проверка комментариев'; +$lang['Menu Management'] = 'Меню'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'В вашем файле php.ini, upload_max_filesize (%sB) больше, чем post_max_size (%sB), вы должны изменить это значение'; +$lang['Exif extension not available, admin should disable exif use'] = 'Расширение Exif не поддерживается, администратор должен отключить использование Exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Размер загружаемого файла превышает значение upload_max_filesize, указанное в php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Размер загружаемого файла превышает значение post_max_size, указанное in php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Размер загружаемого файла превышает значение MAX_FILE_SIZE, указанное в html форме'; +$lang['The uploaded file was only partially uploaded'] = 'Файл был загружен лишь частично'; +$lang['No file was uploaded'] = 'Файл не был загружен'; +$lang['Missing a temporary folder'] = 'Потеряна временная папка'; +$lang['Failed to write file to disk'] = 'Не удалось записать файл на диск'; +$lang['File upload stopped by extension'] = 'Загрузка файла остановлена из-за его расширения'; +$lang['Unknown upload error'] = 'Ошибка загрузки не известна'; +$lang['Error on file "%s" : %s'] = 'Ошибка в файле "%s": %s'; +$lang['automatic order'] = 'автоматический режим'; +$lang['manual order'] = 'ручной режим'; +$lang['Albums automatically sorted'] = 'Автоматическая сотрировка альбомов'; +$lang['Batch Manager'] = 'Пакетный менеджер'; +$lang['include child albums'] = 'включает вложенные альбомы'; +$lang['Selection'] = 'Выбор'; +$lang['Action'] = 'Действие'; +$lang['Set author'] = 'Установить автора'; +$lang['Set title'] = 'Установить название'; +$lang['Set creation date'] = 'Установить дату создания'; +$lang['Apply action'] = 'Добавить действие'; +$lang['on the %d selected photos'] = 'на %d выбранных фотографиях'; +$lang['%d of %d photos selected'] = '%d из %d фотографий выбрано'; +$lang['No photo selected, %d photos in current set'] = 'Ничего не выбрано, а всего в текущем наборе - %d изображений'; +$lang['All %d photos are selected'] = 'Все %d фотографии были выбраны'; +$lang['remove this filter'] = 'удалить этот фильтр'; +$lang['Duplicates'] = 'дубликаты'; +$lang['Add a filter'] = 'Добавить фильтр'; +$lang['Remove all filters'] = 'Удалить все фильтры'; +$lang['Refresh photo set'] = 'Обновить набор изображений'; +$lang['The whole page'] = 'Все на странице'; +$lang['The whole set'] = 'Все в наборе'; +$lang['No photo in the current set.'] = 'Нет фотографий в текущем наборе.'; +$lang['No photo selected, no action possible.'] = 'Ничего не выбрано, действие невозможно.'; +$lang['Choose an action'] = 'Выберите действие'; +$lang['remove author'] = 'удалить автора'; +$lang['Type here the author name'] = 'напечатайте имя автора здесь'; +$lang['remove title'] = 'удалить название'; +$lang['Type here the title'] = 'напечатайте название здесь'; +$lang['remove creation date'] = 'удалить дату создания'; +$lang['Album photos associated to the following albums: %s'] = 'Фотографии этого альбома связаны со следущими альбомами: %s'; +$lang['Delete orphan tags'] = 'Удалить тэги, с которыми не связано ни одно изображение'; +$lang['delete photo'] = 'удалить фотографию'; +$lang['Orphan tags deleted'] = 'Непривязанные метки удалены'; +$lang['Week starts on'] = 'Неделя начинается с'; +$lang['You have %d orphan tags: %s.'] = 'У Вас есть %d непривязанных меток: %s.'; +$lang['Remove from caddie'] = 'Очистить корзину'; +$lang['Themes which need upgrade'] = 'Темы, которые нужно обновить'; +$lang['Languages which need upgrade'] = 'Языки, которые нужно обновить'; +$lang['All themes are up to date.'] = 'Все темы обновлены до последней версии.'; +$lang['All plugins are up to date.'] = 'Все плагины обновлены до последней версии.'; +$lang['All languages are up to date.'] = 'Все языки обновлены до последней версии.'; +$lang['Visit theme site'] = 'Посмотреть полное описание темы'; +$lang['Visit language site'] = 'Посмотреть подробную страницу языка'; +$lang['New Version'] = 'Новая версия'; +$lang['Obsolete Plugins'] = 'Устаревшие плагины'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'ВНИМАНИЕ! По всей вероятности, этот плагин не совместим с данной версией Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Всё равно хотите активировать?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ЭТОТ ПЛАГИН СЕЙЧАС УЖЕ ЯВЛЯЕТСЯ ЧАСТЬЮ ЯДРА PIWIGO! УДАЛИТЕ ЕГО СЕЙЧАС!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ОШИБКА: НЕСМОТРЯ НА ТО, ЧТО ЭТОТ ПЛАГИН УСТАНОВЛЕН, ОН НЕ НАЙДЕН! УДАЛИТЕ ЕГО.'; +$lang['new'] = 'новый'; +$lang['No results'] = 'Ничего не найдено'; +$lang['Searching...'] = 'Выполняется поиск...'; +$lang['Type in a search term'] = 'Определите критерий поиска'; +$lang['display'] = 'показать'; +$lang['Activate icon "new" next to albums and pictures'] = 'Активировать иконку "new" рядом с альбомами и фотографиями'; +$lang['Deactivate all'] = 'Деактивировать все'; +$lang['Default photos order'] = 'Порядок фотографий по умолчанию'; +$lang['Restore'] = 'Восстановить'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Восстановление конфигурации по умолчанию. Ваши настройки плагинов будут потеряны!'; +$lang['Show menubar'] = 'Показать меню'; +$lang['Thumbnails generation in progress...'] = 'Идет генерация миниатюр ...'; +$lang['Photos generation in progress...'] = 'Идет генерация фотографий ...'; +$lang['%s photos have been regenerated'] = '%s фотографий было создано заново'; +$lang['%s photos can not be regenerated'] = '%s фотографий не было создано заново'; +$lang['Updates'] = 'Обновление'; +$lang['Update in progress... Please wait.'] = 'Процесс обновления... Пожалуйста, подождите.'; +$lang['Ignore this update'] = 'Пропустить это обновление'; +$lang['Reset ignored updates'] = 'Сбросить проигнорированные обновления'; +$lang['Update All'] = 'Обновить все'; +$lang['ERROR'] = 'ОШИБКА'; +$lang['Update Complete'] = 'Обновление завершено'; +$lang['Piwigo Update'] = 'Обновление Piwigo'; +$lang['Extensions Update'] = 'Обновление плагинов'; +$lang['All extensions are up to date.'] = 'Все плагины обновлены.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Следующие плагины, возможно, не являются совместимыми с новой версией Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Следующие темы, возможно, не являются совместимыми с новой версией Piwigo:'; +$lang['I decide to update anyway'] = 'Всё равно обновить!'; +$lang['Update to Piwigo %s'] = 'Обновление до версии Piwigo %s'; +$lang['Two updates are available'] = 'Два апдейта доступны'; +$lang['This is a minor update, with only bug corrections.'] = 'Это незначительный апдейт, исправлены небольшие ошибки.'; +$lang['This is a major update, with new exciting features.'] = 'Это основной апдейт, с новыми восхитительными возможностями.'; +$lang['Some themes and plugins may be not available yet.'] = 'Некоторые темы и плагины все же могут быть не доступны.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Вы можете обновиться до версии Piwigo %s, минуя апдейт до версии Piwigo %s (рекомендуется).'; +$lang['Save Template Directory'] = 'Сохранить папку шаблонов'; +$lang['Dump Database'] = 'Дамп базы данных'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Включить данные истории (Предупреждение: память сервера может быть превышена)'; +$lang['Unable to dump database.'] = 'Невозможно сделать дамп базы данных.'; +$lang['Some upgrades are available for extensions.'] = 'Для некоторых плагинов доступны обновления.'; +$lang['Ignore All'] = 'Пропустить все'; +$lang['Crop'] = 'Обрезать'; +$lang['Width'] = 'Ширина'; +$lang['Height'] = 'Высота'; +$lang['Follow Orientation'] = 'Изменить ориентацию'; +$lang['Graphics Library'] = 'Библиотека изображений'; +$lang['Add a criteria'] = 'Добавить критерий'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Вы не можете определить порядок сортировки фотографий по умолчанию, так как он переопределен в локальных настройках.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Вы использовали $conf[\'order_by\'] в качестве порядка сортировки в локальном файле конфигурации. Этот параметр не рекомендуется для использования. Пожалуйста, удалите его или переименуйте в $conf[\'order_by_custom\'] !'; +$lang['Learn more'] = 'Узнать больше'; +$lang['Rate'] = 'Оценка'; +$lang['Average rate'] = 'Средний балл'; +$lang['Rate date'] = 'Дата оценки'; +$lang['... or '] = '... или '; +$lang['Create'] = 'Создать'; +$lang['Start Upload'] = 'Начать загрузку'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Вы используете Flash-загрузчик. Возникли проблемы? Попробуйте браузерный загрузчик.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Вы используете браузерный загрузчик. Попробуйте Flash-загрузчик.'; +$lang['Maximum file size: %sB.'] = 'Максимальный размер файла: %sB.'; +$lang['Allowed file types: %s.'] = 'Допустимые типы файлов: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Максимальное разрешение: %dM пикселей (то есть %dx%d пикселей).'; +$lang['Manage Permissions'] = 'Настройка прав доступа'; +$lang['Photo %s of %s'] = 'Фотография %s из %s'; +$lang['show details'] = 'показать подробности'; +$lang['hide details'] = 'скрыть подробности'; +$lang['Merge tags'] = 'Объединить метки'; +$lang['Select the destination tag'] = 'Выбрать метку-получатель'; +$lang['(this tag will be deleted)'] = '(эта метка будет удалена)'; +$lang['Confirm merge'] = 'Подтвердите объединение'; +$lang['Merge selected tags'] = 'Объединить выбранные метки'; +$lang['No destination tag selected'] = 'Метка-получатель не выбрана'; +$lang['Tags %s merged into tag %s'] = 'Метки %s объединены в метку %s'; +$lang['Select at least two tags for merging'] = 'Выберите по крайней мере две метки для объединения'; +$lang['Select an album'] = 'Выберите альбом'; +$lang['An error has occured during upgrade.'] = 'Во время обновления произошла ошибка.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
              Click here to show log error.'] = 'Во время распаковки произошла ошибка. Пожалуйста, проверьте права доступа к папке установки piwigo.
              Нажмите, чтобы посмотреть лог ошибки.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не может получить файлы обновления с сервера'; +$lang['Zoom'] = 'увеличение'; +$lang['Add to caddie'] = 'Добавить в корзину'; + +$lang['%s has been successfully updated.'] = '%s успешно обновлено.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Приложение Piwigo для iOS позволяет Вам соединяться с Вашей галереей Piwigo с Вашего iPhone, iPad или iPod touch, создавать альбомы и загружать несколько фотографий сразу.'; +$lang['A locked gallery is only visible to administrators'] = 'Заблокированная галерея видна только администраторам'; +$lang['Activate comments'] = 'Активировать комментарии'; +$lang['Add tags'] = 'Добавить тэги'; +$lang['Applications'] = 'Приложения'; +$lang['Available versions for'] = 'Доступные версии для'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'По умолчанию Piwigo создает новые изображения формата web из HD (высокого разрешения) версий фотографий.'; +$lang['Default comments order'] = 'Порядок комментариев по умолчанию'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Если HD-изображение недоступно и если существующее изображение web-размера больше чем получается при изменении размеров, Piwigo запишет его как HD и создаст из него web-размер.'; +$lang['Last import'] = 'Последняя загрузка'; +$lang['List'] = 'Список'; +$lang['Original Size'] = 'Размер оригинала'; +$lang['Photo name'] = 'Название фотографии'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo для iOS (iPhone, iPad, iPod Touch)'; +$lang['Predefined filter'] = 'Префильтр'; +$lang['Resize after upload'] = 'Изменение размеров после загрузки'; +$lang['Send connection settings by email'] = 'Отправить настройки подключения по электронной почте'; +$lang['The original image quality must be a number between %d and %d'] = 'Качество изображения оригинала должно быть числом между %d и %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Максимальная высота оригинала должна быть числом между %d и %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Максимальная ширина оригинала должна быть числом между %d и %d'; +$lang['Unlock gallery'] = 'Разблокировать галерею'; +$lang['Web Form'] = 'Web-форма'; +$lang['With no album'] = 'Без альбома'; +$lang['With no tag'] = 'Без меток'; +$lang['With no virtual album'] = 'Без виртуальных альбомов'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'Пользователи %u автоматически получили разрешение, так как входят в группу, которой дано разрешение.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Приложение Piwigo для Android позволяет Вам соединяться с Вашей галереей Piwigo с Вашего Android телефона, создавать альбомы и загружать несколько фотографий сразу.'; +$lang['add a new watermark'] = 'добавить новый водяной знак'; +$lang['administrators'] = 'администраторов'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom - это софт для фотографов, созданный для систематизации большого количества фотографий, их обработки и последующего использования.'; +$lang['any visitor can see this album'] = 'все посетители видят этот альбом'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture - мощный инструмент для улучшения изображений и управления большими библиотеками изображений для Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture создан для профессиональных фотографов с простотой iPhoto.'; +$lang['apply automatic sort order'] = 'применить автоматическую сортировку'; +$lang['Apply watermark if height is bigger than'] = 'Применять водяной знак, если высота больше'; +$lang['Apply watermark if width is bigger than'] = 'Применять водяной знак, если ширина больше'; +$lang['Automatic sort order'] = 'Автоматическая сортировка'; +$lang['Available on'] = 'Доступно'; +$lang['bottom left corner'] = 'левый нижний угол'; +$lang['bottom right corner'] = 'правый нижний угол'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'По умолчанию, центром композиции считается геометрический центр изображения.'; +$lang['cancel manual order'] = 'отменить ручную сортировку'; +$lang['Cancel'] = 'Отмена'; +$lang['Center of interest'] = 'Центр интереса'; +$lang['custom'] = 'Пользовательский'; +$lang['Delete multiple size images'] = 'Удалить изображения разных размеров'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam - продвинутый и бесплатный менеджер фотографий для Linux, Windows и MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam создан для фотографов которым нужно просматривать, управлять, редактировать, каталогизировать, проставлять метки и публиковать фотографии.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Среди его возможностей просмотр галереи, создание альбома и загрузка фотографий.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'При обрезке изображения, например квардратная миниатюра, Piwigo старается максимально отобразить центр композиции.'; +$lang['Gallery unlocked'] = 'Галерея разблокирована'; +$lang['Generate multiple size images'] = 'Сгенерировать изображения разных размеров'; +$lang['Groups and users'] = 'Пользователи и группы'; +$lang['include photos with lower privacy level'] = 'включены фотографии с более низким уровнем приватности'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto - менеджер фото по умолчанию для MacOSX. Плагин публикации фотографий Piwigo позволяет создавать новые альбомы и загружать фотографии напрямую из iPhoto в Вашу галерею Piwigo.'; +$lang['middle'] = 'середина'; +$lang['modified'] = 'изменен'; +$lang['Move to album'] = 'Переместить в альбом'; +$lang['No group is permitted to see this private album'] = 'Нет групп, которым открыт доступ к этому приватному альбому'; +$lang['Not cropped correctly?'] = 'Вырезано некорректно?'; +$lang['Notify administrators when a comment is'] = 'Уведомить администраторов когда комментарий'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'В Linux, просто установите Shotwell с диспетчером пакетов и активируйте опцию публикации в Piwigo.'; +$lang['Opacity'] = 'Прозрачность'; +$lang['pending validation'] = 'ожидает проверки'; +$lang['Permission granted for groups'] = 'Разрешение предоставлено для групп'; +$lang['Permission granted for users'] = 'Разрешение предоставлено для пользователей'; +$lang['Permission management'] = 'Управление доступом'; +$lang['Photo sizes with crop'] = 'Размеры изображений с кропом'; +$lang['Piwigo export plugin for Aperture'] = 'Плагин публикации фотографий для Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Плагин публикации фотографий для iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo для Android'; +$lang['Piwigo publish plugin for digiKam'] = 'Плагин публикации фотографий для digiKam'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Плагин публикации фотографий в Piwigo из Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Плагин публикации фотографий для Shotwell'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (клиент RemoteGallery для Android) - это клиент для Piwigo с открытым кодом (GPL v3) для платформы Android.'; +$lang['registered users'] = 'зарегистрированных пользователей'; +$lang['Save manual order'] = 'Сохранить ручную сортировку'; +$lang['Save visits in history for'] = 'Сохранять посещения в истории для'; +$lang['Select a file'] = 'Выберите файл'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Выделите необходимую зону мышкой, и она станет новым отображаемым центром композиции.'; +$lang['Select groups...'] = 'Выбрать группы...'; +$lang['Select users...'] = 'Выбрать пользователей...'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell - приложение с открытым кодом для каталогизации фотографий под Linux. Является менеджером фото по умолчанию для Ubuntu и Fedora.'; +$lang['simple visitors'] = 'простых посетителей'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Центр композиции - самая значимая зона в фотографии.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Плагин публикации фотографий Piwigo позволяет создавать новые альбомы и загружать фотографии напрямую в Вашу галерею Piwigo.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Плагин публикации Piwigo позволяет экспортировать и синхронизировать фотографии из Lightroom напрямую в Вашу галерею Piwigo.'; +$lang['There is no group in this gallery.'] = 'В галерее нет групп.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Этот альбом содержит фотографий: %d, добавлен между %s и %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Этот альбом содержит фотографий: %d, добавлен %s.'; +$lang['This album contains no photo.'] = 'Этот альбом не содержит фотографий.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Для экспорта фото из digiKam в Piwigo, просто установите digiKam и плагин Kipi.'; +$lang['top left corner'] = 'левый верхний угол'; +$lang['top right corner'] = 'правый верхний угол'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'посетители должны авторизоваться и иметь соответствующие права для просмотра этого альбома'; +$lang['X Position'] = 'Координата X'; +$lang['X Repeat'] = 'X Повтор'; +$lang['Y Position'] = 'Координата Y'; +$lang['You can activate only one mobile theme.'] = 'Вы можете активировать только одну мобильную тему.'; +$lang['Multiple Size'] = 'Размеры'; +$lang['%d day'] = '%d день'; +$lang['%d days'] = '%d дней'; +$lang['%d hour'] = '%d час'; +$lang['%d hours'] = '%d часов'; +$lang['%d minute'] = '%d минута'; +$lang['%d minutes'] = '%d минуты'; +$lang['%d month'] = '%d месяц'; +$lang['%d months'] = '%d месяцев'; +$lang['%d second'] = '%d секунд'; +$lang['%d seconds'] = '%d секунды'; +$lang['%d year'] = '%d год'; +$lang['%d years'] = '%d лет'; +$lang['%s ago'] = '%s назад'; +$lang['%s in the future'] = '%s в будущем'; +$lang['Added by %s'] = 'Добавлен %s'; +$lang['Numeric identifier : %d'] = 'Идентификатор: %d'; +$lang['Original file : %s'] = 'Оригинал: %s'; +$lang['Posted %s on %s'] = 'Опубликован %s в %s'; +$lang['Rated %d times, score : %.2f'] = 'Оценок: %d, средняя: %.2f'; +$lang['Sharpen'] = 'Резкость'; +$lang['Visited %d times'] = 'Просмотров: %d'; +$lang['Watermark'] = 'Водяной знак'; +$lang[' and %d virtuals'] = ' и виртуальных: %d'; +$lang['%d physicals'] = 'реальных: %d'; +$lang['%d week'] = '%d недель'; +$lang['%d weeks'] = '%d недель'; +$lang['Edit photo'] = 'Редактировать фото'; +$lang['create a new site'] = 'создать новый сайт'; +$lang['No order field selected'] = 'Не выбран порядок полей'; +$lang['Duplicate selected tags'] = 'Дублировать выделенные теги'; +$lang['Name of the duplicate'] = 'Название дубля'; +$lang['Source tag'] = 'Тег-источник'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Тег "%s" теперь дубликат "%s"'; +$lang['Landscape'] = 'Ландшафт'; +$lang['Minimum height'] = 'Минимальная высота'; +$lang['Minimum width'] = 'Минимальная ширина'; +$lang['Panorama'] = 'Панорама'; +$lang['Portrait'] = 'Портрет'; +$lang['Manage photos'] = 'Управление фотографиями'; +$lang['Number of albums per page'] = 'Количество альбомов на странице'; +$lang['View in gallery'] = 'Смотреть в галерее'; +$lang['Ratio'] = 'способ'; +$lang['between %.2f and %.2f'] = 'между %.2f и %.2f'; +$lang['between %d and %d pixels'] = 'между %d и %d пикселями'; +$lang['Duplicate'] = 'Дубликат'; +$lang['Manage the members'] = 'Управление участниками'; +$lang['Merge selected groups'] = 'Объединить выбранные группы'; +$lang['No group selected, no action possible.'] = 'Группы не выбраны, поэтому сделать ничего нельзя'; +$lang['No members to manage'] = 'Не выбраны пользователи для управления'; +$lang['Please select at least two groups'] = 'Пожалуйста, выберите хотя бы две группы'; +$lang['Rename'] = 'Переименовать'; +$lang['This group will be set to default'] = 'Эта группа будет использоваться по умолчанию'; +$lang['This group will be unset to default'] = 'Эта группа не будет теперь использоваться по умолчанию'; +$lang['Type here the name of the new group'] = 'Введите имя новой группы'; +$lang['Purge user cache'] = 'Очистить кэш пользователя'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Размер изображения будет уменьшен до %dx%d пикселей.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Изменение размеров изображений отключено из-за использования GD в качестве графической библиотеки'; +$lang['Select at least one tag'] = 'Выберите хотя бы один тэг'; +$lang['Basic settings'] = 'Основные установки'; +$lang['General'] = 'Общее'; +$lang['Mail theme'] = 'Тема почты'; +$lang['%d of %d users selected'] = '%d пользователей выбрано из %d'; +$lang['(filtered from %s total users)'] = '(отобрано из %s - общее число пользователей)'; +$lang['All %d users are selected'] = '%d - все пользователи выбраны'; +$lang['No matching user found'] = 'Соответствующих пользователей не найдено'; +$lang['No user selected of %d users'] = 'Не выбраны из %d пользователей'; +$lang['No user selected, no action possible.'] = 'Пользователи не выбраны; действие невозможно.'; +$lang['Registered on %s, %s.'] = 'Зарегистрировано %s, %s.'; +$lang['Show %s users'] = '%s пользователей паказано'; +$lang['Showing %s to %s of %s users'] = 'Показ %s от %s до %s пользователей'; +$lang['User %s added'] = 'Добавлен пользователь %s '; +$lang['User %s updated'] = 'Обновлен пользователь %s'; +$lang['Users modified'] = 'Пользователи изменены'; +$lang['on the %d selected users'] = 'на %d выбранных пользователей'; +$lang['Change password'] = 'Сменить пароль'; +$lang['Change username'] = 'Сменить имя пользователя'; +$lang['Last visit on %s, %s.'] = 'Последний визит был %s, %s.'; +$lang['Loading...'] = 'Загрузка...'; +$lang['Password updated'] = 'Пароль обновлен'; +$lang['Update user'] = 'Пользователь обновлен'; +$lang['Close user details'] = 'Закрыть детали пользователя'; +$lang['Open user details'] = 'Открыть детали пользователя'; +$lang['close'] = 'закрыть'; +?> \ No newline at end of file diff --git a/sources/language/ru_RU/common.lang.php b/sources/language/ru_RU/common.lang.php new file mode 100644 index 0000000..2be4778 --- /dev/null +++ b/sources/language/ru_RU/common.lang.php @@ -0,0 +1,425 @@ + \ No newline at end of file diff --git a/sources/language/ru_RU/help/cat_modify.html b/sources/language/ru_RU/help/cat_modify.html new file mode 100644 index 0000000..20a1eaf --- /dev/null +++ b/sources/language/ru_RU/help/cat_modify.html @@ -0,0 +1,137 @@ +

              Редактирование категорий

              + +

              Информация

              + +
                + +
              • Название: дает возможность переименовать категорию + (похоже на псевдоним в случае реальной категории).
              • + +
              • Описание: можно описать содержимое категории. + Этот текст будет показан внизу на странице с миниатюрами.
              • + +
              + +

              Перемещение

              + +

              Если категория виртуальная, Вы можете ее перемещать. Перемещение категории + означает изменение родительской категории.

              + +

              Опции

              + +
                + +
              • Тип доступа: Управление доступом. Если сделать категорию + приватной, все вложенные категории тоже станут приватными. Если сделать категорию + общедоступной, все вложенные категории тоже станут общедоступными.
              • + +
              • Блокировка: Категория и ее подкатегории временно будут + закрыты на обслуживание.
              • + +
              • Комментарии: Управление возможностью комментировать + элементы категории для пользователей.
              • + +
              • Разрешить загрузку: Управление доступом для загрузки + файлов пользователями. Эта опция доступна только для обычных категорий (не виртуальных).
              • + +
              + +

              Также вы можете управлять этими настройками на странице "Свойства" + (вкладки Загрузка, Комментарии, Блокировка, +Общедоступные / Приватные), все это в меню Администрирование, Галереи, Свойства.

              + +

              Порядок сортировки

              + +

              Первый чекбокс определяет сортировку по умолчанию.

              +

              Второй чекбокс определяет распространяет правила сортировки на подкатегории.

              + +

              Выберите другую сортировку, если это необходимо.

              +
                +
              • Дата съемки: Дата создания фотографии
              • +
              • Дата публикации: Дата добавления фотографии в галерею
              • +
              • Средний балл (*): По рейтингу, за который голосуют посетители
              • +
              • По популярности (*): По числу посещений посетителями страниц с фотографиями
              • +
              • Имя файла: Сортировка по имени файла фотографий
              • +
              • Id: Внутренний идентификатор (недавние категории имеют более высокий идентификатор, чем более ранние).
              • + +
              +

              (*) Попробуйте эти значения. Часто они дают непрогнозируемые +результаты.

              + + +

              Представитель

              + +

              Представитель категории - это миниатюра, которая представляет категорию на +главной странице (category.php) когда категория +содержит только подкатегории (как корнревая, например).

              + +

              Существует 4 способа назначить представителя категории:

              + +
                + +
              • Страница с фотографией: в ряду кнопок на + панели есть кнопка, назначающая эту фотографию представителем отображаемой + категории. Эта кнопка доступна только администратору.
              • + +
              • Редактирование информации о фотографии в + разделе администрирования. Эта функция доступна со страницы с фотографией picture.php или Управление корзиной + в групповом режиме. См. помощь этого экрана для уточнения деталей.
              • + +
              • Администрирование, Галереи, Свойства, + Представитель. См. помощь этого экрана для уточнения деталей.
              • + +
              • Редактирование категории (этот экран).
              • + +
              + +

              Представление зависит от параметра конфигурации +allow_random_representative (см. include/config_default.inc.php).

              + +

              По умолчанию (allow_random_representative установлен на false) +каждая категория, содержащая по крайней мере один элемент, представлена +фиксированным элементом. Установленный однажды (при создании категории), +представитель изменяется только когда администратор сделает это. +Если представительне устраивает, Вы можете выбрать Найти нового +представителя случайным образом.

              + +

              Если параметр конфигурации allow_random_representative установлен на + true, категория, имеющая элементы не имеет фиксированного представителя. Используйте + кнопку Удалить представителя.

              + +

              Если категория не содержит элементов (но содердит подкатегории), она может +быть представлеа любым элементом установленным с помощью страницы Изменить информацию о фотографии. + +

              Привязать все элементы этой категории к новой

              + +
                + +
              • Название виртуальной категории: Новая категория с этим именем будет создана, +все фотографии этой категории будут привязаны к ней.
              • + +
              • Родительская категория: Где будет создана новая категория, +если это должна быть верхняя категория, оставьте параметр пустым.
              • + +
              + +

              Привязать все элементы этой категории к одной из существующих

              + +
                + +
              • Галереи: Выберите категорию, к которой нужно привязать элементы.
              • + +
              + +

              Отправить информационное письмо для группы

              + +
                + +
              • Группа: группа-адресат
              • + +
              • Содержание: Текст, который будет отправлен ее участникам.
              • + +
              \ No newline at end of file diff --git a/sources/language/ru_RU/help/cat_move.html b/sources/language/ru_RU/help/cat_move.html new file mode 100644 index 0000000..3f624c8 --- /dev/null +++ b/sources/language/ru_RU/help/cat_move.html @@ -0,0 +1,14 @@ +

              Перемещение виртуальных категорий

              + +

              Только виртуальные категории могут быть перемещены в новую родительскую категорию.

              + +

              Виртуальные категории для перемещения

              + +

              Выберите виртуальные категории, которые хотите переместить. +Если список пуст, то Вы еще не создавали виртуальных категорий.

              + +

              Новая родительская категория

              + +

              Выберите новую родительскую категорию (виртуальную или реальную). +Если ничего не выбрать, виртуальные категории, отмеченные на предыдущем этапе, будут перемещены в корневую галерею. +Вы не можете переместить категорию в саму себя или в одну из собственных подкатегорий.

              \ No newline at end of file diff --git a/sources/language/ru_RU/help/cat_options.html b/sources/language/ru_RU/help/cat_options.html new file mode 100644 index 0000000..991cdaf --- /dev/null +++ b/sources/language/ru_RU/help/cat_options.html @@ -0,0 +1,34 @@ +

              Свойства категорий

              + +

              Этот экран позволяет администратору изменять свойства нескольких категорий одновременно.

              + +
              + +
              Загрузка
              +
              Открывает категории для загрузки файлов пользователями. Показаны только не + виртуальные и не удаленные категории.
              + +
              Комментарии
              +
              Открывает категории для комментирования. +Выберите категории, которые хотите открыть для комментирования. +Изображение открыто для комментариев, если хотя бы одна категория открыта для +комментариев.
              + +
              Блокировка
              +
              Выбранные категории будут временно заблокированы для обслуживания. Все + подкатегории заблокированной категории также будут заблокированы. Если разблокировать + категорию, все ее родительские категории также разблокируются.
              + +
              Общедоступные / Приватные
              +
              Управление доступом к выбранным категориям. Если сделать категорию приватной, + нужно дать права пользователям и/или группам для доступа к ним. + Если сделать категорию приватной, все ее подкатегории тоже станут приватными. + Если сделать категорию общедоступной, все родительские категории также станут общедоступными.
              + +
              Представители
              +
              Этот раздел доступен, если параметр allow_random_representative + (см. include/config_defaults.inc.php) установлен в + true. Каждая категория может иметь случайно выбранного представителя + или единственного представителя (выбранного администратором).
              + +
              diff --git a/sources/language/ru_RU/help/cat_perm.html b/sources/language/ru_RU/help/cat_perm.html new file mode 100644 index 0000000..4b35199 --- /dev/null +++ b/sources/language/ru_RU/help/cat_perm.html @@ -0,0 +1,15 @@ +

              Управление разрешениями для категории

              + +

              Этот экран доступен только для приватной категории. Здесь можно выбрать +пользователей и группы, которые имеют доступ к этой категории.

              + +

              Группы

              + +

              Вы можете разрешить или запретить группам доступ к этой категории. Изменяя доступность для групп, +Вы изменяете доступность для пользователей, входящих в соответствующие группы.

              + +

              Пользователи

              + +

              Так же как с группами, можно поступать с отдельными пользователями. +Пользователь допущенный к категории по участию в группе, может быть ограничен в +правах персонально с помощью доступа пользователя.

              diff --git a/sources/language/ru_RU/help/configuration.html b/sources/language/ru_RU/help/configuration.html new file mode 100644 index 0000000..fbf4f2e --- /dev/null +++ b/sources/language/ru_RU/help/configuration.html @@ -0,0 +1,136 @@ +

              Настройка

              + +

              Этот экран позволяет администратору делать простейшие настройки. На самом деле, этот +экран всего лишь показывает простейшие настройки, которых будет достаточно для +большинства администраторов. Если Вы хотите увидеть другие настройки (дополнительные), +смотрите файл include/config_default.inc.php.

              + +

              Экран разбит на несколько секций, группирующих настройки по темам.

              + + +

              Главная

              +
                +
              • Название галереи: используется в ленте RSS и уведомлениях по email.
              • + +
              • Надпись на баннере: показывается вверху всех страниц.
              • + +
              • Адрес галереи: используется в ленте RSS.
              • + +
              • Заблокировать галерею: Закрыть галерею на обслуживание. + Доступ к галерее будет открыт только администратору.
              • + +
              • Оценки: Разрешить выставлять оценки.
              • + +
              • Оценки от гостей: Даже не зарегистрированные пользователи + смогут оценивать фотографии.
              • + +
              • Разрешить регистрацию пользователей: Любой может свободно + зарегистрироваться.
              • + +
              • Адрес электронной почты обязателен для всех пользователей: + Наличие адреса будет проверено при регистрации или изменении профиля если это + действие задано в административной части.
              • + +
              • Сообщать администратору когда зарегистрировался новый посетитель: + Администратор получает письмо при каждой регистрации.
              • + +
              + +

              История

              + +

              Посещения страниц category.php и + picture.php будут записываться в таблицу history.

              + +

              Посещения показаны на Администрирование, Спец функции, История.

              + +
                +
              • Сохранять страницы посещенные гостями: страницы посещенные + гостями будут сохраняться.
              • + +
              • Сохранять страницы посещенные пользователями: страницы + посещенные зарегистрированными пользователями будут сохраняться.
              • + +
              • Сохранить страницы посещенные администраторами: страницы + посещенные администратором будут сохраняться.
              • + +
              + +

              Комментарии

              +
                + +
              • Комментарии для всех: Даже не зарегистрированные + пользователи могут комментировать фотографии.
              • + +
              • Количество комментариев на странице.
              • + +
              • Проверка: администратор проверяет комментарии написанные + пользователями прежде чем они будут показаны на сайте. Проверка комментариев + осуществляется на странице Администрирование, Фотографии, + Комментарии.
              • + +
              • Сообщать администратору когда появился комментарий: +Посылать email администратору когда пользователь внесет комментарий.
              • + +
              • Сообщать администратору когда появился комментарий для проверки: +Посылать email администратору когда пользователь внесет комментарий для проверки администратором. +Комментарии для проверки находятся на странице +Администрирование, Фотографии, Комментарии.
              • + +
              + +

              Загрузки

              +
                +
              • Показывать ссылку на загрузку постоянно: Если +есть категории, куда разрешена загрузка, добавляется ссылка, которая показывается +в каждой категории.
              • +
              • Уровень доступа пользователя для загрузки: +Позволяет ограничит загрузку для пользователей
              • +
              • Сообщать администратору когда загружена фотография: + Администратор получает письмо при загрузке фотографии каждым пользователем.
              • +
              + +

              Вид по умолчанию

              + +

              Здесь можно изменить параметры отображения по умолчанию для пользователя +Гость или не авторизованного пользователя. +После авторизации параметры отображения изменятся на пользовательские (заданные +на странице профайла).

              + +

              Параметры отображения для всех существующих пользователей можно изменить на +странице Администрирование, +Идентификация, Пользователи, где можно сделать настройки для отмеченных пользователей.

              + +
                + +
              • Язык: влияет только на надписи. Названия категорий, + фотографий и все описания не локализуются.
              • + +
              • Число фотографий в строке
              • + +
              • Число строк на странице
              • + +
              • Оформление
              • + +
              • Срок "новых": В днях. Период в течение которого фотография + показывается как новая. Должен быть больше 1 дня.
              • + +
              • Раскрыть все категории: Раскрыть все категории в меню? + Внимание: этот вариант ресурсоемок и может сгенерировать очень большое + меню, если дерево категорий Вашей галереи содержит много категорий.
              • + +
              • Показывать количество комментариев: показывать количество комментариев + для каждой фотографии на странице миниатюр.
              • + +
              • Показывать количество просмотров: показывать количество + просмотров фотографии под миниатюрой фотографии на странице миниатюр. + Действует когда параметр:
                $conf['show_nb_hits'] = true;
                + Примечание: параметр по умолчанию установлен в false.
              • + +
              • Максимальная ширина изображения: максимальная отображаемая + ширина. Если фотография больше по ширине, она будет уменьшена при показе. + Если Вы устанавливаете эту настройку, лучше будет изменить ширину фотографий заранее.
              • + +
              • Максимальная высота изображения: те же комментарии, что и у ширины.
              • + +
              + diff --git a/sources/language/ru_RU/help/extend_for_templates.html b/sources/language/ru_RU/help/extend_for_templates.html new file mode 100644 index 0000000..7fb7d93 --- /dev/null +++ b/sources/language/ru_RU/help/extend_for_templates.html @@ -0,0 +1,96 @@ +

              Настройка расширений для шаблонов

              + +

              Цель

              +

              Определите условия замены каждого шаблона на шаблон-расширение (шаблон, +названный "заменяющим").

              + +

              "Исходный шаблон" из ./template/yoga (или другой) будет заменен на + "заменяющий" если заменяющий связан с этим "исходным" + (и, опционально, если URL содержит "Опциональное ключевое слово URL").

              + +

              "Опциональное ключевое слово URL" это те, которые Вы можете найти после названия модуля в URL.

              + +

              Поэтому "Опциональные ключевые слова URL" могут быть активным "прямыми ссылками" +(см. соответствующий раздел в нашей документации для дальнейшего объяснения).

              + +

              Читайте: `Предупреждение` условий использования.

              + +

              Что такое шаблон-расширение?

              + +

              Этот инструмент конфигурации - мощный для новичков и продвинутых пользователей. +С помощью FTP, в папке template-extension, Web-мастер может дублировать много +разных .tpl файлов ("исходный шаблон") с различным названием ("заменяющим"). + + + "Исходные шаблоны", текущие оригинальные поддерживаемые шаблоны:

              +
                +
              • index.tpl
              • +
              • mainpage_categories.tpl и/или thumbnails.tpl
              • +
              • menubar.tpl
              • +
              • header.tpl и/или footer.tpl
              • +
              • picture_content.tpl и/или picture.tpl
              • + +
              • profile.tpl и/или profile_content.tpl
              • +
              • tags.tpl
              • +
              • upload.tpl
              • +
              • about.tpl
              • +
              • popuphelp.tpl
              • +
              • search.tpl и/или search_rules.tpl
              • +
              • nbm.tpl и/или notification.tpl
              • +
              • identification.tpl и/или register.tpl
              • +
              • redirect.tpl
              • +
              + +

              Где мне найти "исходные шаблоны"?

              + +

              Находятся исходные шаблоны в template/yoga/ +(не редактируйте их там для сохранения возможности обновления). Так, с "исходными шаблонами", +любой web-мастер может создать свои "заменяющие (пользовательские шаблоны)".

              + +

              Куда записать "заменяющие"?

              + +

              Заменяющие (пользовательские шаблоны) должны находиться в папке +template-extension (или ее подпапке). +Заменяющие могут иметь любые имена файлов с расширением .tpl. Например: template-extension/my-extension/video.tpl.

              + + +

              Как мне активировать мои "заменяющие шаблоны"?

              +

              Каждый исходный шаблон должен быть сопоставлен со своим + заменяющим (пользовательским шаблоном) чтобы активировать связанные замены. + Это является целью "Настройки расширений для шаблонов" в меню Настроек.

              + +

              Если Вы выберете Опциональное ключевое слово URL тогда замена +будет производиться только на страницах с этим ключевым словом. Например: index.php?/most_visited

              + +

              Продвинутые пользователи могут использовать прямую ссылку как Опциональное +ключевое слово URL.

              + +

              Как мне деактивировать мои "заменяющие шаблоны"?

              +
                +
              • Отмените выбранный "Исходный шаблон".
              • +
              • Через FTP удалите "заменяющий".
              • +
              + +

              Предупреждение

              +
                + +
              • Оригинальный шаблон должен быть "исходным" шаблоном, + иначе результат может быть непредсказуемым!
              • + +
              • При наличии нескольких заменяющих (пользовательских шаблонов) + с одинаковыми исходными шаблонами и одинаковыми опциональным + ключевым словом URL только последний заменяющий будет активным.
              • + +
              • Отмена выбора опционального ключевого слова URL сделает + активной заменяющий шаблон для всех. Как в предыдущем пункте, следующий выбор может + отменить предыдущий.
              • + +
              • Подпапки: +Подпапки игнорируются, но они удобны для смены текущих установок.
                +
              • + +
              • При удалении замещающего Исходный шаблон будет снова активным.
              • + +
              \ No newline at end of file diff --git a/sources/language/ru_RU/help/group_list.html b/sources/language/ru_RU/help/group_list.html new file mode 100644 index 0000000..4ef14fd --- /dev/null +++ b/sources/language/ru_RU/help/group_list.html @@ -0,0 +1,22 @@ +

              Список групп

              + +

              Здесь Вы можете управлять созданными группами.

              + +

              Добавить группу

              + +

              Администратор может добавлять группы.

              + +

              Список групп

              + +

              Из списка для каждого элемента можно сделать:

              + + +
                +
              • перейти к списку участников
              • +
              • перейти к разрешениям
              • +
              • удалить группу (require a confirmation checkbox)
              • +
              • toggle status "default" (выдается запрос подтверждения)
              • +
              + +

              Группа по умолчанию

              +

              Новые пользователи автоматически попадают в эту группу.

              \ No newline at end of file diff --git a/sources/language/ru_RU/help/help_add_photos.html b/sources/language/ru_RU/help/help_add_photos.html new file mode 100644 index 0000000..9420c29 --- /dev/null +++ b/sources/language/ru_RU/help/help_add_photos.html @@ -0,0 +1,22 @@ +

              Существует несколько способов добавить фотографии в галерею:

              + +
                +
              • Загрузка через браузер – это самый простой и оперативный способ. Надежность загрузки при этом зависит от возможностей вашего браузера и веб-сервера. Если вам нужно загрузить очень большое количество фотографий, или если вы столкнулись с какими-то трудностями, всегда можно воспользоваться альтернативными способами загрузки. +
              • +
              + + + +
                +
              • pLoader – это приложение, которое запускается у вас на компьютере. Перетащите & фотографии для загрузки на окно pLoader, кликните "Upload to Piwigo" и pLoader приступит к работе. Существуют и другие приложения, например, WinToPiwigo и плагин для экспорта фотографий из программы Digikam в Piwigo.
              • +
              + + + +
              +
                +
              • Загрузка по FTP – наиболее рекомендуемый способ загрузки очень большой коллекции фотографии при минимальном количестве кликов. Подготовьте фотографии, воспользовавшись инструкцией. Загрузка по FTP позволит вам организовать фотографии на сервере именно так, как нужно.
              • +
              + + +
              \ No newline at end of file diff --git a/sources/language/ru_RU/help/help_groups.html b/sources/language/ru_RU/help/help_groups.html new file mode 100644 index 0000000..cb6de82 --- /dev/null +++ b/sources/language/ru_RU/help/help_groups.html @@ -0,0 +1,6 @@ +

              Piwigo позволяет управлять группами пользователей. Это удобно для установки прав доступа к приватным категориям.

              + +

              Вы можете создать группы на странице Администрирование, Идентификация, Группы и добавить пользователей в созданную группу на странице Администрирование, Идентификация, Пользователи.

              + +

              Пользователь может входить в несколько групп. Разрешение сильнее чем запрет: если пользователь "jack" входит в группы "family" и "friends", и есть категория "Christmas 2003", доступ к которой открыт только для группы "family", пользователь "jack" будет иметь доступ к категории "Christmas 2003".

              + diff --git a/sources/language/ru_RU/help/help_misc.html b/sources/language/ru_RU/help/help_misc.html new file mode 100644 index 0000000..f6b09b7 --- /dev/null +++ b/sources/language/ru_RU/help/help_misc.html @@ -0,0 +1,9 @@ +

              После того, как вы создали галерею, вы можете настроить ее вид по умолчанию для посетителей +

                +
              • отображение: Панель администирования » Настройки » Параметры закладка Установки пользователя Гость
              • +
              • тема: Панель администирования » Настройки » Темы
              • +
              • язык: Панель администирования » Настройки » Языки
              • +
              +Каждый новый пользователь сразу после регистраци будет видеть галерею так, как описано в этих настройках. Впоследствии он сможет изменить вид галереи. +

              +

              Если у вас есть вопросы, члены сообщества разработчиков и пользователей Piwigo будут рады ответить на них на форуме.

              diff --git a/sources/language/ru_RU/help/help_permissions.html b/sources/language/ru_RU/help/help_permissions.html new file mode 100644 index 0000000..2ad2531 --- /dev/null +++ b/sources/language/ru_RU/help/help_permissions.html @@ -0,0 +1,45 @@ +
              +Допуск к фотографиям + +

              Для каждой фотографии можно определить уровень доступа (блокировка). Каждого пользователя также можно отнести к определенному уровню доступа (ключ). Представляем вашему вниманию 5 уровней доступа:

              +
                +
              1. Закрыто для всех
              2. +
              3. Знакомые
              4. +
              5. Друзья (те, что больше, чем друзья)
              6. +
              7. Семья (важнее друзей)
              8. +
              9. Администраторы (превыше всех)
              10. +
              + +

              Более высокий уровнь включает в себя разрешения более низких уровней. Для каждого пользователя, чем выше уровень доступа, тем больше фотографий он может видеть.

              + +

              Например, если фото "peter_wedding-0024.jpg" ("свадьба-пети-0024.jpg") имеет уровень доступа"Семья" это значит, что:

              +
                +
              • Peter (Пети) (он "Администратор") может любоваться этой фотографией потому, что "Администраторы" могут видеть все фото
              • +
              • Beth (Оля)(она член "Семьи" ) тоже может смотреть это фото
              • +
              • Mary (Маша)(она всего лишь "Друг") увы, не сможет увидеть фото
              • +
              + +

              Пользователь, у которого нет разрешения смотреть какие-либо фотографии, не будет видеть ни информационное наполнение категории, ни категорию непосредственно, не говоря уже о ее заголовке. Тот же самый принцип относится и к метке.

              + +

              Вы можете установить уровень доступа для пользователя в меню Администратор » Пользователь » Управление.

              + +
              + +
              +Допуск к категориям + +

              Если уровни допуска не соответствуют Вашим потребностям, Вы можете также управлять разрешениями определенных категорий для пользователя или группы. Вы можете управлять разрешениями на фотографиях и категориях одновременно - конфликта не возникнет.

              + + +

              Вы можете запретить доступ к категориям. Категории могут быть "публичными" или "приватными". Права доступа (для групп и пользователей) могут быть установлены только для приватных категорий.

              + +

              Вы можете сделать приватной категорию редактируя свойства каждой категории (Администрирование, Галереи, Управление, редактировать) или просматривая дерево категорий (Администрирование, Галереи, Свойства, Общедоступные / Приватные).

              + +

              Если категория приватная, права доступа к ней можно установить для групп и пользователей тремя способами:

              + +
                +
              • Администрирование » Идентификация » Пользователи » разрешения (последний столбец в таблице с пользователем)
              • +
              • Администрирование » Идентификация » Группы » разрешения (последний столбец в таблице с группой)
              • +
              • Администрирование » Галереи » Управление » редактировать (ссылка для каждой категории)
              • +
              +
              \ No newline at end of file diff --git a/sources/language/ru_RU/help/help_virtual_links.html b/sources/language/ru_RU/help/help_virtual_links.html new file mode 100644 index 0000000..8a01942 --- /dev/null +++ b/sources/language/ru_RU/help/help_virtual_links.html @@ -0,0 +1,8 @@ +

              Piwigo различает категории где хранятся элементы и категории где они показаны.

              + +

              По умолчанию, элементы показываются только в реальных категориях: тех, которые связаны с папками на сервере.

              + +

              Чтобы привязать элемент к категории, нужно только указать это на странице редактирования элемента или в информации обо всех элементах категории.

              + +

              Зная этот принцип, легко понять что такое виртуальные категории: это те, которым не соответствуют папки на сервере. Виртуальные категории можно создать на странице Администрирование, Категории, Управление.

              + diff --git a/sources/language/ru_RU/help/history.html b/sources/language/ru_RU/help/history.html new file mode 100644 index 0000000..2624806 --- /dev/null +++ b/sources/language/ru_RU/help/history.html @@ -0,0 +1,45 @@ +

              История

              + +

              Этот экран позволяет просматривать историю посещений согласно опциям, которые +выбраны в Администрирование - Настройки - История.

              + +

              Статистика

              +
                +

                Если Вы выбрали сохранение истории посещений (index.php и picture.php) в таблице history. +То здесь Вы увидите статистику посещений этих страниц.

                + +
              • Вся: просмотр статистики по годам.
              • + +
              • Годовая статистика: просмотр помесячной статистики за выбранный год.
              • + +
              • Статистика за месяц: просмотр статистики по дням за выбранный месяц.
              • + +
              • Дневная статистика: просмотр статистики по часам за выбранный день.
              • + +
              + +

              Поиск

              +
                +

                Если Вы выбрали сохранение истории посещений (index.php и picture.php) в таблице history. +То здесь Вы увидите статистику посещений этих страниц сгруппированную с помощью +фильтров.

                + +
              • Фильтр на дату: выберите интервал дат для отображения + статистики активности.
              • + +
              • Фильтр на тип элемента: выберите тип элемента для + отображения статистики активности.
              • + +
              • Фильтр на пользователя: выберите пользователя для + отображения статистики активности.
              • + +
              • Фильтр на имя файла: выберите имя файла для отображения + статистики активности.
              • + +
              • Фильтр на номер изображения: выберите номер изображения + для отображения статистики активности.
              • +
              \ No newline at end of file diff --git a/sources/language/ru_RU/help/index.php b/sources/language/ru_RU/help/index.php new file mode 100644 index 0000000..5ba26cd --- /dev/null +++ b/sources/language/ru_RU/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ru_RU/help/maintenance.html b/sources/language/ru_RU/help/maintenance.html new file mode 100644 index 0000000..97af5a5 --- /dev/null +++ b/sources/language/ru_RU/help/maintenance.html @@ -0,0 +1,60 @@ +

              Обслуживание

              + +

              Чтобы оптимизировать время создания страницы, Piwigo использует кэширование +информации. Например, вместо того, чтобы считать число фотографий, содержащихся в +каждой категории при каждом обновлении, эту информация хранят в базе данных. В +теории, эта информация должна быть корректной, но иногда при ошибках кэшированная +информация становится неверной.

              + +

              Некоторая информации становится бесполезным со временем. Удаление этой бесполезной +информации из базы данных позволит сохранить дисковое пространство.

              + +
                + +
              • + Не привязанные элементы: + Показывает фотографии которые не связаны ни с одной виртуальной категорией. +
              • +
              • + Файлы с одинаковыми именами в разных папках: + Показывает фотографии или другие файлы имеющие одинаковые имена и находящиеся в разных категориях. +
              • + +
              + +
                + +
              • Обновить информацию о категориях: Для каждой категории + обновляется или контролируется следующая информация: список родительских категорий, + число фотографий, дата последней фотографии, положение среди категорий одного + уровня, положение среди всех категорий.
              • + +
              • Обновить информацию о фотографиях: Для каждой фотографии + обновляется или контролируется следующая информация: полный путь к файлу, рейтинг. + Предупреждение: не путайте с метаданными которые синхронизируются из + Администрирование, Галереи, Синхронизация или + через страницу редактирования фотографии.
              • + +
              • Исправить и оптимизировать базу данных: + Для каждой таблицы будут проведены переупорядочивание, восстановление и оптимизация. +
              • +
              + +
                +
              • Очистить историю: Удаляются все строки из таблицы history. + На странице Администрирование, Спец. функции, История + не будет информации относительно истории до этой операции. Предупреждение: + все данные будут потеряны и нет никакого способа вернуть информацию.
              • + +
              • Очистить всю историю: Удаляется вся итоговая информаци об + истории посещений. Эта итоговая информация вычисляется из деталей истории.
              • + +
              • Очистить сессии: Удаляются истекшие пользовательские сеансы.
              • + +
              • Очистить неиспользуемые каналы уведомлений
              • + +
              • Purge search history
              • + +
              • Очистить созданные шаблоны
              • + +
              diff --git a/sources/language/ru_RU/help/notification_by_mail.html b/sources/language/ru_RU/help/notification_by_mail.html new file mode 100644 index 0000000..1158d7f --- /dev/null +++ b/sources/language/ru_RU/help/notification_by_mail.html @@ -0,0 +1,16 @@ +

              Уведомления

              + +

              Этот раздел создан для настройки и управления уведомлениями по электронной +почте пользователей о новостях на сайте.

              + +

              Страница содержит три вкладки:

              + +

              Параметры

              +

              Доступные только вебмастеру, это параметры уведомлений.

              + +

              Список рассылки

              +

              Доступно только вебмастеру, эта вкладка управляет подпиской пользователей на уведомления.

              + +

              Отправка

              +

              Доступно только вебмастеру и администратору, эта вкладка позволяет производить рассылку уведомлений.

              + diff --git a/sources/language/ru_RU/help/permalinks.html b/sources/language/ru_RU/help/permalinks.html new file mode 100644 index 0000000..4e9485d --- /dev/null +++ b/sources/language/ru_RU/help/permalinks.html @@ -0,0 +1,12 @@ +

              Постоянные ссылки

              + +

              Постоянные ссылки используют чтобы сделать URL категории более удобным. Когда +для категории определена прямая ссылка, id категории в URL более не используется.

              + +

              После удаления прямой ссылки, Вы можете сохранить ее в истории прямых ссылок, +чтобы сохранить работоспособность внешних ссылок. В таблице истории прямых ссылок + можно посмотреть дату удаления прямой ссылки, когда ей последний раз пользовались, + сколько всего раз ей пользовались.

              + +

              Заметьте, допускается только одна прямая ссылка на каждую категорию. +Аналогично и в истории прямых ссылок нельзя определить одну и ту же прямую ссылку несколько раз.

              diff --git a/sources/language/ru_RU/help/photos_add_ftp.html b/sources/language/ru_RU/help/photos_add_ftp.html new file mode 100644 index 0000000..c02a68c --- /dev/null +++ b/sources/language/ru_RU/help/photos_add_ftp.html @@ -0,0 +1,69 @@ +
              + Быстрый старт + +
                +
              1. Создайте локальную папку.
              2. +
              3. Скопируйте несколько фотографий в эту папку, измените размер для web. Внимание: названия папок и файлов должны содержать только латинские буквы, цифры, "-", "_" или ".". Без пробелов и спецсимволов.
              4. + +
              5. С помощью FTP-клиента, скопируйте вашу папку в папку "galleries" на сервере где установлен ваш Piwigo.
              6. + +
              7. Авторизуйтесь в вашей галерее и выберите Администрирование и нажмите большую кнопку Быстрая синхронизация.
              8. +
              + +

              Поздравляем! Вы успешно создали первый альбом в вашей галерее.

              +
              + +
              + Структура папок и файлов + +
                + +
              • + +

                Папки альбомов расположены в папке Piwigo "galleries". + Ниже смотрите дерево небольшой галереи:

                + +
                +galleries
                +|-- wedding
                +|   |-- celebration
                +|   |   |-- arrival
                +|   |   |   |-- paul-alone.jpg
                +|   |   |   +-- sarah-alone.jpg
                +|   |   +-- departure
                +|   |       +-- paul-and-sarah.jpg
                +|   +-- party
                +|       |-- dancers001.jpg
                +|       |-- dancers002.jpg
                +|       +-- dancers003.jpg
                ++-- honeymoon
                +    |-- hotel.png
                +    |-- video-from-plane.avi
                +    +-- pwg_representative
                +        +-- video-from-plane.jpg
                +
                + +
              • + +
              • В простейшем случае, категории представлены как папки любого уровня в + папке "galleries". Каждая категория может содержать столько подкатегорий, + сколько хотите.
              • + +
              • Каждый элемент - это файл. Файл может быть элементом Piwigo если его + тип описан в параметре file_ext + (см файл include/config_default.inc.php). + Файл может быть изображением если его тип описан в параметре picture_ext.
              • + +
              • Элементы, не являющиеся изображениями (видео, музыка, тексты и др.) по определению + представлены иконками соответствующими расширению файла. Дополнительно, Вы можете + связать миниатюру и представительный файл (см. video.avi в примере выше).
              • + +
              • Внимание: имена папок и файлов должны содержать только латинские буквы, + цифры, "-", "_" или ".". Не используйте пробелы и спецсимволы.
              • + +
              • Когда файлы правильно размещены в папках, выберите: + Администрирование » Инструменты » Синхронизация
              • + +
              + +
              \ No newline at end of file diff --git a/sources/language/ru_RU/help/search.html b/sources/language/ru_RU/help/search.html new file mode 100644 index 0000000..1a3e6d3 --- /dev/null +++ b/sources/language/ru_RU/help/search.html @@ -0,0 +1,22 @@ +

              Поиск

              + +

              Эта страница позволяет искать фотографии по всей галерее.

              + +
              + +
              Поиск по словам
              +
              Поиск по всем словам во всех атрибутах во всех изображениях галереи. + Используйте * как подстановочный знак для частичных соответствий.
              + +
              Поиск по автору
              +
              Используйте * как подстановочный знак для частичных соответствий.
              + +
              Поиск по дате
              +
              Выберите начальную и/или конечную дату запроса. Оставьте пустой начальную + дату для поиска "ранее". Год должен вводиться в последнее поле в формате 0000 (т.е. 2004)
              + +
              Поиск в Категориях
              +
              Выберите категорию или категории для ограничения области поиска. Для поиска + во всех подкатегориях можно выбратьродительскую категорию и установить флаг поиска в подкатегориях.
              + +
              diff --git a/sources/language/ru_RU/help/synchronize.html b/sources/language/ru_RU/help/synchronize.html new file mode 100644 index 0000000..448a2b5 --- /dev/null +++ b/sources/language/ru_RU/help/synchronize.html @@ -0,0 +1,12 @@ +

              Синхронизация

              + +

              Возможны 2 типа синхронизации: папки/файлы и метаданные. +Папки/файлы синхронизируют дерево папок с деревом категорий в базе данных. +Метаданные синхронизируют информацию элементов, такую как размер файла, размеры +в пикселях, информацию EXIF или IPTC.

              + +

              Сначала должны быть синхронизированы папки/файлы.

              + +

              Процесс синхронизации может занять много времени (в зависимости от загрузки +сервера и количества синхронизируемых элементов) то есть возможно стоит продвигаться +пошагово: от категории к категории.

              diff --git a/sources/language/ru_RU/help/user_list.html b/sources/language/ru_RU/help/user_list.html new file mode 100644 index 0000000..786e6f4 --- /dev/null +++ b/sources/language/ru_RU/help/user_list.html @@ -0,0 +1,32 @@ +

              Список пользователей

              + +

              На этой странице Вы можете управлять зарегистрированными пользователями. +Только разрешениями управляют в нескольких различных экранах.

              + +

              Добавление пользователей

              + +

              Администратор может вручную добавить пользователя.

              + +

              Список пользователей

              + +

              Список может быть отфильтрован по имени пользователя (используйте * как +подстановочный знак), группе или статусу. Список можно отсортировать по дате +регистрации или имени пользователя, по возрастанию или по убыванию.

              + +

              Этот экран позволяет производить над несколькими пользователями одно или несколько действий:

              + +
                + +
              • удаление пользователей (требуется подтвердить установкой галочки)
              • + +
              • изменение статуса
              • + +
              • включение или исключение из группы
              • + +
              • редактирование свойств отображения
              • + +
              • редактирование дополнительных свойств
              • + +
              + +

              Настройки применяются к выбранным пользователям (по умолчанию) или ко всем.

              diff --git a/sources/language/ru_RU/index.php b/sources/language/ru_RU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/ru_RU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/ru_RU/install.lang.php b/sources/language/ru_RU/install.lang.php new file mode 100644 index 0000000..e4908c7 --- /dev/null +++ b/sources/language/ru_RU/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Нужна помощь? Задайте свои вопросы на Форуме Piwigo.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Будет использоваться для контакта посетителей с администратором'; +$lang['PHP 5 is required'] = 'Требуется PHP 5'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Кажется, что Ваш хостинг в настоящее время под управлением PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo может попытаться переключить Вашу конфигурацию на PHP 5, создавая или изменяя .htaccess файл.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Отметьте, что Вы можете изменить конфигурацию самостоятельно и перезапустите Piwigo после этого.'; +$lang['Try to configure PHP 5'] = 'Попытаться переконфигурировать PHP 5'; +$lang['Sorry!'] = 'Извините!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo не в состоянии переконфигурировать PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Вы должны обратиться к своему провайдеру за поддержой и разъяснениями, как переключиться на PHP 5.'; +$lang['Hope to see you back soon.'] = 'Надеемся скоро увидеть Вас вновь.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Поздравляем, установка Piwigo полностью завершена'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Альтернативное решение состоит в том, чтобы скопировать текст в блоке выше и вставить это в файл "local/config/database.inc.php" (Предупреждение: database.inc.php должен только содержать то, что находится в текстовом поле, без символов возврата строки или пробелов)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Создать файл конфигурации local/config/database.inc.php не удалось.'; +$lang['Download the config file'] = 'Загрузить файл конфигурации'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Вы можете загрузить файл конфигурации и передать его в local/config directory.'; +$lang['Just another Piwigo gallery'] = 'Еще одна галерея Piwigo'; +$lang['Welcome to my photo gallery'] = 'Добро пожаловать в мою фотогалерею'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не стесняйтесь консультироваться на наших форумах для получения любой помощи, %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'Добро пожаловать в новую установку Piwigo!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost или другой, который указан провайдером'; +?> \ No newline at end of file diff --git a/sources/language/ru_RU/iso.txt b/sources/language/ru_RU/iso.txt new file mode 100644 index 0000000..77381dd --- /dev/null +++ b/sources/language/ru_RU/iso.txt @@ -0,0 +1 @@ +Русский [RU] \ No newline at end of file diff --git a/sources/language/ru_RU/ru_RU.jpg b/sources/language/ru_RU/ru_RU.jpg new file mode 100644 index 0000000..f2286f8 Binary files /dev/null and b/sources/language/ru_RU/ru_RU.jpg differ diff --git a/sources/language/ru_RU/upgrade.lang.php b/sources/language/ru_RU/upgrade.lang.php new file mode 100644 index 0000000..2f8eeff --- /dev/null +++ b/sources/language/ru_RU/upgrade.lang.php @@ -0,0 +1,41 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Выполните обслуживание [Администрирование> Инструменты > Обслуживание], если Вы столкнулись с какими-либо проблемами.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Только администратор может запустить обновление: проверьте ниже.'; +$lang['You do not have access rights to run upgrade'] = 'У вас нет прав на запуск обновлений'; +$lang['All sub-albums of private albums become private'] = 'Все альбомы, вложенные в приватный альбом, тоже становятся приватными'; +$lang['User permissions and group permissions have been erased'] = 'Разрешения пользователей и групп были стерты'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Только префикс эскизов и адрес почты вебмастера были сохранены от предыдущей конфигурации'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Эта страница предлагает модернизировать базу данных от Вашей старой версии Piwigo до новой версии. Помощник обновления думает, что Вы используете в настоящее время выпуск %s (или эквивалентный).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Желательно, чтобы следующие плагины были дезактивированы. Вы должны проверить обновления плагинов прежде, чем активировать их снова:'; +$lang['In %s, before ?>, insert:'] ='В %s, до ?>, вставить:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Предварительно эти темы были деактивированы. Вы должны проверить актуальность их версии, прежде чем реактивировать их:'; +?> \ No newline at end of file diff --git a/sources/language/sh_RS/about.html b/sources/language/sh_RS/about.html new file mode 100644 index 0000000..5c3c7cb --- /dev/null +++ b/sources/language/sh_RS/about.html @@ -0,0 +1,13 @@ +
            • Piwigo je web aplikacija koja vam omogućava izradu web galerije na lak način.
            • + +
            • Tehnički, Piwigo je potpuno razvijen korišćenjem PHP (the elePHPant) te MySQL baze podataka (the SQuirreL).
            • + +
            • Ako imate predloga i komentara, molimo posjetite Piwigo službenu stranicu, i njoj posvećen forum.
            • + +

              The serbia translation is maintained by (in alphabetical order): + +

              +.... Many thanks to you

              \ No newline at end of file diff --git a/sources/language/sh_RS/admin.lang.php b/sources/language/sh_RS/admin.lang.php new file mode 100644 index 0000000..b700570 --- /dev/null +++ b/sources/language/sh_RS/admin.lang.php @@ -0,0 +1,901 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader označava Piwigo Uploader. Sa Vašeg racunara, pLoader priprema Vaše fotografije i šalje ih u Piwigo foto galeriju.'; +$lang['Guest Settings'] = 'Podešenja za goste'; +$lang['Main Page'] = 'Glavna strana'; +$lang['Photo Page'] = 'Foto strana'; +$lang['Activate Navigation Bar'] = 'Aktiviraj liniju za navigaciju'; +$lang['Activate Navigation Thumbnails'] = 'Aktiviraj povezne sličice za navigaciju'; +$lang['Activate icon "%s"'] = 'Aktiviiraj ikonu "%s"'; +$lang['Photo Properties'] = 'Osobine slike'; +$lang['Allow user customization'] = 'Dozvoli podešavanja korisniku'; +$lang['Languages'] = 'Jezici'; +$lang['Installed Languages'] = 'Instalirani jezici'; +$lang['Add New Language'] = 'Dodaj novi jezik'; +$lang['Language has been successfully installed'] = 'Jezik je uspešno instaliran'; +$lang['Select:'] = 'Odaberi:'; +$lang['None'] = 'Ništa'; +$lang['Invert'] = 'Suprotno'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nemoguće deaktivirati ovu temu, treba Vam bar jedna tema.'; +$lang['Webmaster status is required.'] = 'Webmaster status je potreban.'; +$lang['Bound Theme'] = 'Povezana tema'; +$lang['Allow rating'] = 'Dozvoli rangiranje'; +$lang['Select at least one comment'] = 'Odaberi najmanje jedan komentar'; +$lang['Active Plugins'] = 'Aktivni dodaci'; +$lang['Inactive Plugins'] = 'Neaktivni dodaci'; +$lang['Missing Plugins'] = 'Nedostajući dodaci'; +$lang['Uninstalled Plugins'] = 'Deinstalirani dodaci'; +$lang['By %s'] = 'Od %s'; +$lang['Visit plugin site'] = 'Poseti stranicu sa dodacima'; +$lang['Active Languages'] = 'Aktivni jezici'; +$lang['Delete this language'] = 'Obriši ovaj jezik'; +$lang['Forbid this language to users'] = 'Zabrani ovaj jezik za korisnike'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nemoguće deaktivirati ovaj jezik, prvo odaberite drugi jezik kao podrazumevani.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nemoguće deaktivirati ovaj jezik, treba Vam najmanje jedan jezik.'; +$lang['Inactive Languages'] = 'Neaktivni jezici'; +$lang['Make this language available to users'] = 'Omogući ovaj jezik korisnicima'; +$lang['Set as default language for unregistered and new users'] = 'Postavi kao podrazumevani jezik za neregistrovane i nove korisnike'; +$lang['Add Photos'] = 'Dodaj fotografije'; +$lang['The following tag was deleted'] = 'Tekuća oznaka je obrisana'; +$lang['Miscellaneous'] = 'Ostalo'; +$lang['Virtual Links'] = 'Virtualne veze'; +$lang['There is no other language available.'] = 'Drugi jezik nije dostupan.'; +$lang['There is no other plugin available.'] = 'Drugi dodatak nije dostupan.'; +$lang['There is no other theme available.'] = 'Druga tema nije dostupna.'; +$lang['By rank'] = 'Po rangu'; +$lang['Manual order'] = 'Ručno poređano'; +$lang['Add another set of photos'] = 'Dodaj drugi set fotografija'; + $lang['Order of menubar items has been updated successfully.'] = ' Poredak elemenata u izborniku je uspešno ažuriran.'; +$lang['Menu Management'] = 'Izbornik'; +$lang['%d of %d photos selected'] = '%d od %d fotografija odabrano'; +$lang['%s has been successfully updated.'] = '%s je uspešno ažiran'; +$lang['(this tag will be deleted)'] = '(ova oznaka će biti obrisana)'; +$lang['... or '] = '... ili'; +$lang['Action'] = 'Akcija'; +$lang['Activate comments'] = 'Aktivira komentare'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivira ikonicu "novo" pored albuma i slika'; +$lang['Add a criteria'] = 'Dodaj kriterijum'; +$lang['Add a filter'] = 'Dodaj filter'; +$lang['Add tags'] = 'Dodaj oznake'; +$lang['Add to caddie'] = 'Dodaj u fioku'; +$lang['Album photos associated to the following albums: %s'] = 'Fotografije albuma povezane sa sledećim albumima: %s'; +$lang['Albums automatically sorted'] = 'Albumi automatski poređani'; +$lang['All %d photos are selected'] = 'Svih %d fotografija je odabrano'; +$lang['All extensions are up to date.'] = 'Sve ekstenzije su ažurne.'; +$lang['All languages are up to date.'] = 'Svi jezici su ažurni.'; +$lang['All plugins are up to date.'] = 'Svi plaginovi su ažurni.'; +$lang['All themes are up to date.'] = 'Sve teme su ažurne.'; +$lang['Allowed file types: %s.'] = 'Dozvoljeni tipovi fajlova: %s'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
              Click here to show log error.'] = 'Dogodila se greška u toku raspakivanja. Molimo proverite dozvole na fajlovima Vaše piwigo instalacije. +
              Kliknite ovde da biste videli zapis greške.'; +$lang['An error has occured during upgrade.'] = 'Dogodila se greška u toku nadgradnje.'; +$lang['Apply action'] = 'Primeni akciju'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približna maksimalna rezolucija: %dM piksela (odnosno %dx%d piksela)'; +$lang['automatic order'] = 'automatski poredak'; +$lang['Average rate'] = 'Prosečna ocena'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Podrazumevano, Piwigo će kreirati novu veličinu prilagođenu web-u od HD verzije (visoke definicije) Vaše fotografije'; +$lang['Choose an action'] = 'Izaberi akciju'; +$lang['Confirm merge'] = 'Potvrdi pripajanje'; +$lang['Create'] = 'Kreiraj'; +$lang['Crop'] = 'Iseci'; +$lang['Deactivate all'] = 'Isključi sve'; +$lang['Default comments order'] = 'Podrazumevani poredak komentara'; +$lang['Default photos order'] = 'Podrazumevani poredak fotografija'; +$lang['Delete orphan tags'] = 'Obriši napuštene oznake'; +$lang['delete photo'] = 'obriši fotografiju'; +$lang['display'] = 'prikaži'; +$lang['Do you want to activate anyway?'] = 'Da li želite ipak da uključite?'; +$lang['Dump Database'] = 'Obriši bazu podataka'; +$lang['Duplicates'] = 'Duplikati'; +$lang['Error on file "%s" : %s'] = 'Greška u fajlu "%s": %s'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'GREŠKA: OVAJ PLAGIN NEDOSTAJE IAKO JE INSTALIRAN! DEINSTALIRAJTE GA ODMAH.'; +$lang['ERROR'] = 'GREŠKA'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif ekstenzija nije dostupna, admin bi trebalo da onemogući njeno korišćenje'; +$lang['Extensions Update'] = 'Ažuriranja ekstenzija'; +$lang['Failed to write file to disk'] = 'Nije uspelo pisanje fajla na disk'; +$lang['File upload stopped by extension'] = 'Otpremanje fajla je zaustavila ekstenzija'; +$lang['Follow Orientation'] = 'Prati orjentaciju'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Sledeći plaginovi mogu biti nekompatibilni sa novom verzijom Piwigo-a:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Sledeće teme mogu biti nekompatibilne sa novom verzijom Piwigo-a:'; +$lang['Graphics Library'] = 'Biblioteka grafika'; +$lang['Height'] = 'Visina'; +$lang['hide details'] = 'sakrij detalje'; +$lang['I decide to update anyway'] = 'Odlučio sam da ipak ažuriram'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ako je HD nedostupna i ako je trenutna web-veličina veća od promenjene veličine, Piwigo će ukloniti HD i kreirati smanjenu web-veličinu fotografije.'; +$lang['Ignore All'] = 'Ignoriši sve'; +$lang['Ignore this update'] = 'Ignoriši ovo ažuriranje'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'U Vašem php.ini fajlu upload_max_filesize(%sB) je veći od post_max_size(%sB), trebalo bi da promenite ovo podešavanje'; +$lang['include child albums'] = 'uključi podređene albume'; +$lang['Languages which need upgrade'] = 'Jezici kojima treba ažuriranje'; +$lang['Last import'] = 'Poslednji uvoz'; +$lang['%s photos can not be regenerated'] = '%s fotografija ne može biti regenerisano'; +$lang['%s photos have been regenerated'] = '%s fotografija je regenerisano'; +$lang['A locked gallery is only visible to administrators'] = 'Zaključana galerija je vidljiva samo administratorima'; +$lang['administrators'] = 'administratori'; +$lang['Applications'] = 'Aplikacije'; +$lang['apply automatic sort order'] = 'primeni automatski poredak'; +$lang['Automatic sort order'] = 'Automatski poredak'; +$lang['Batch Manager'] = 'Menadžer automatizma'; +$lang['cancel manual order'] = 'poništi ručni poredak'; +$lang['Cancel'] = 'Odustani'; +$lang['Center of interest'] = 'Interesno središte'; +$lang['Delete Representant'] = 'Obriši ikonice albuma'; +$lang['Gallery unlocked'] = 'Galerija otključana'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Uključi istoriju podataka (Upozorenje: može se premašiti limit memorije na serveru)'; +$lang['Learn more'] = 'Nauči više'; +$lang['List'] = 'Lista'; +$lang['Manage Permissions'] = 'Uredi dozvole'; +$lang['manual order'] = 'ručni poredak'; +$lang['Maximum file size: %sB.'] = 'Maksimalna veličina fajla: %sB.'; +$lang['Merge selected tags'] = 'Spoj odabrane oznake'; +$lang['Merge tags'] = 'Spoj oznake'; +$lang['Missing a temporary folder'] = 'Nedostaje privremeni direktorijum'; +$lang['modified'] = 'izmenjen'; +$lang['Move to album'] = 'Premesti u album'; +$lang['New Version'] = 'Nova verzija'; +$lang['new'] = 'novo'; +$lang['No destination tag selected'] = 'Nije odabrana odredišna oznaka'; +$lang['No file was uploaded'] = 'Nije poslat ni jedan fajl'; +$lang['No photo in the current set.'] = 'Nema fotografija u trenutnom skupu'; +$lang['No photo selected, %d photos in current set'] = 'Nema odabranih fotografija, %d fotografija u trenutnom skupu'; +$lang['No photo selected, no action possible.'] = 'Nema odabranih fotografija, nema dozvoljenih akcija'; +$lang['No results'] = 'Nema rezultata'; +$lang['Not cropped correctly?'] = 'Pogrešno isečeno?'; +$lang['Notify administrators when a comment is'] = 'Obavesti administratore kada je komentar'; +$lang['Obsolete Plugins'] = 'Zastareli plagin'; +$lang['on the %d selected photos'] = 'od %d odabranih fotografija'; +$lang['Original Size'] = 'Originalna veličina'; +$lang['Orphan tags deleted'] = 'Napuštena oznaka obrisana'; +$lang['Pending Comments'] = 'Komentari na čekanju'; +$lang['pending validation'] = 'čeka validaciju'; +$lang['Photo %s of %s'] = 'Fotografija %s od %s'; +$lang['Photo name'] = 'Naziv fotografije'; +$lang['Photos generation in progress...'] = 'Generisanje fotografija...'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne može preuzeti nadogradnju sa servera'; +$lang['Piwigo Update'] = 'Piwigo nadogradnja'; +$lang['Predefined filter'] = 'Predefinisani filter'; +$lang['Rate'] = 'Ocena'; +$lang['Refresh photo set'] = 'Osveži skup fotografija'; +$lang['registered users'] = 'registrovani korisnici'; +$lang['Remove all filters'] = 'Ukloni sve filtere'; +$lang['remove author'] = 'ukloni autora'; +$lang['remove creation date'] = 'ukloni datum kreiranja'; +$lang['Remove from caddie'] = 'Ukloni iz fioke'; +$lang['remove this filter'] = 'ukloni ovaj filter'; +$lang['remove title'] = 'ukloni naslov'; +$lang['Reset ignored updates'] = 'Resetuj ignorisane nadogradnje'; +$lang['Resize after upload'] = 'Promeni veličinu posle slanja'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Vrati podrazumevana podešavanja. Izgubićete podešavanja plaginova!'; +$lang['Restore'] = 'Vrati'; +$lang['Save manual order'] = 'Sačuvaj ručni poredak'; +$lang['Save Template Directory'] = 'Sačuvaj privremeni direktorijum'; +$lang['Save visits in history for'] = 'Sačuvaj posete u istoriji za '; +$lang['Searching...'] = 'Traženje...'; +$lang['Select an album'] = 'Izaberite album'; +$lang['Select at least two tags for merging'] = 'Odaberite najmanje dve oznake za spajanje'; +$lang['Select the destination tag'] = 'Odaberite odredišnu oznaku'; +$lang['Selection'] = 'Odabir'; +$lang['Send connection settings by email'] = 'Pošalji podešavanja veze mejlom'; +$lang['Set author'] = 'Postavi autora'; +$lang['Set creation date'] = 'Postavi datum kreiranja'; +$lang['Set title'] = 'Postavi naslov'; +$lang['show details'] = 'prikaži detalje'; +$lang['Show menubar'] = 'Prikaži meni bar'; +$lang['simple visitors'] = 'obični posetioci'; +$lang['Some themes and plugins may be not available yet.'] = 'Neke teme i plaginovi neće biti dostupni odmah.'; +$lang['Some upgrades are available for extensions.'] = 'Neke nadogradnje su dostupne za proširenja.'; +$lang['Start Upload'] = 'Počni slanje'; +$lang['Tags %s merged into tag %s'] = 'Oznake %s spojene u oznaku %s'; +$lang['The original image quality must be a number between %d and %d'] = 'Kvalitet originalne slike mora biti broj između %d i %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Visina originalne slike mora biti broj između %d i %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Širina originalne slike mora biti broj između %d i %d'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Poslati fajl prelazi MAX_FILE_SIZE direktivu koja je specificirana u HTML formi'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Poslati fajl prelazi upload_max_filesize direktivu u php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Poslati fajl je nije kompletan'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Poslati fajlovi prelaze post_max_size direktivu u php.ini: %sB'; +$lang['The whole page'] = 'Kompletna strana'; +$lang['The whole set'] = 'Kompletan skup'; +$lang['Themes which need upgrade'] = 'Theme koje je potrebno nadograditi'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Ovaj album sadrži %d fotografija, dadatih od %s do %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Ovaj album sadrži %d fotografija, dodatih %s.'; +$lang['This album contains no photo.'] = 'Ovaj album ne sadrži fotografije.'; +$lang['This is a major update, with new exciting features.'] = 'Ovo je bitna nadogradnja, sa novim mogućnostima.'; +$lang['This is a minor update, with only bug corrections.'] = 'Ovo je manja nadogradnja, sa ispravkama bagova.'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'OVAJ PLAGIN JE SADA DEO PIWIGO JEZGRA! OBRIŠITE GA SADA!'; +$lang['This theme was not designed to be directly activated'] = 'Ova tema nije dizajnirana da bude direktno aktivirana'; +$lang['Thumbnails generation in progress...'] = 'Generisanje sličica...'; +$lang['Two updates are available'] = 'Dve nadogradnje su dostupne'; +$lang['Type here the author name'] = 'Unesite ime autora'; +$lang['Type here the title'] = 'Unesite naslov'; +$lang['Type in a search term'] = 'Unesite pojam za pretragu'; +$lang['Unable to dump database.'] = 'Neuspelo brisanje baze.'; +$lang['Unknown upload error'] = 'Nepoznata greška slanja'; +$lang['Unlock gallery'] = 'Otključaj galeriju'; +$lang['Update All'] = 'Nadogradi sve'; +$lang['Update Complete'] = 'Nadogradnja završena'; +$lang['Update in progress... Please wait.'] = 'Nadogradnja... Molimo sačekajte.'; +$lang['Update to Piwigo %s'] = 'Nadogradnja Piwiga %s'; +$lang['Updates'] = 'Nadogradnje'; +$lang['Visit language site'] = 'Poseti sajt jezika'; +$lang['Visit theme site'] = 'Poseti sajt tema'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UPOZORENJE! Ovaj plagin nije kompatibilan sa trenutnom verzijom Piwiga'; +$lang['Web Form'] = 'Web forma'; +$lang['Week starts on'] = 'Dan kada počinje sedmica:'; +$lang['Who can see this photo?'] = 'Ko može videti fotografiju?'; +$lang['Width'] = 'Širina'; +$lang['With no album'] = 'Bez albuma'; +$lang['With no tag'] = 'Bez oznake'; +$lang['With no virtual album'] = 'Bez virtuelnog albuma'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Koristite slanje iz brauzera. Probajte slanje iz Flash-a.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Koristite slanje iz Flash-a. Imate problem? Probajte slanje iz brauzera.'; +$lang['You can activate only one mobile theme.'] = 'Možete aktivirati samo jednu pokretnu temu.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Možete nadograditi Piwigo %s direktno, bez nadogradnji na Piwigo %s (preporučeno).'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Ne možete postaviti podrazumevani poredak fotografija jer je drugačije podešeno u vašem lokalnom podešavanju.'; +$lang['You have %d orphan tags: %s.'] = 'Imate %d napuštenih oznaka: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Označili ste $conf[\'order_by\'] u svom lokalnom podešavanju, ovaj parametar je zastareo, molimo uklonite ga ili ga preimenujte u $conf[\'order_by_custom\']!'; +$lang['Zoom'] = 'Uvećaj'; +$lang['Delete selected tags'] = 'Obriši odabrane oznake'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo for Android aplikacija omogućava Vam da se povežete sa Vašom Piwigo galerijom preko Adroid telefona ili tablet računara, možete da kreirate albume i pošaljete nekoliko slika odjednom.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo za iOS aplikacija omogućava Vam da se povežete sa Vašom Piwigo galerijom preko iPhone, iPad ili iPod Touch uređaja, možete da kreirate albume i pošaljete nekoliko slika odjednom.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je softver za fotografije dizajniran da upravlja velikom količinom digitalnih slika i za postprodukciju.'; +$lang['Available on'] = 'Dostupno na'; +$lang['Available versions for'] = 'Dostupna verzija za'; +$lang['Delete selected users'] = 'Obriši odabrane korisnike'; +$lang['Piwigo for Android'] = 'Piwigo za Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo za iOs (iPhone, iPad, iPod Touch)'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish plagin za Ligtroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish plagin za Shotwell'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo Publish plagin omogućava Vam da izvezete i sinhronizujete fotografije iz Lightroom-a direktno u Vašu Piwigo foto-galeriju.'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u korisnici imaju dozvole jer pripadaju grupi kojoj je data dozvola.'; +$lang['any visitor can see this album'] = 'bilo koji posetilac može videti ovaj album'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je moćan alat za poboljšanje slika i upravljanje velikim bibliotekama na Mac-u.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je dizajniran za profesionalne fotografe sa iPhoto jednostavnošću.'; +$lang['Delete multiple size images'] = 'Obriši višestruke veličine slika'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je besplatni, napredni menadžer digitalnih fotografija za Linux, Windows i MacOSX'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je dizajniran za fotografe koji žele da pregledaju, upravljaju, urede, poboljšaju, organizuju, označe i dele fotografije.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Karakteristike uključuju pregled galerije, kreiranje albuma i slanje fotografija.'; +$lang['Generate multiple size images'] = 'Generiši višestruke veličine slika'; +$lang['Groups and users'] = 'Grupe i korisnici'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je podrazumevani menadžer fotografijama na MacOSX. Piwigo izvozni dodatak omogućava Vam da kreirate novi album i da izvezete Vaše fotografije direktno iz iPhoto u Vašu Piwigo foto-galeriju.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Na Linux-u, jednostavno instalirajte Shotwell preko Vašeg menadžera paketa i onda aktivirajte Piwigo opciju objavljivanja.'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Trajni-link %s je prethodno korišćen od strane albuma %s. Obrišite ga prvo iz istorije trajnih linkova'; +$lang['Permission granted for groups'] = 'Dozvola pridodata grupama'; +$lang['Permission granted for users'] = 'Dozvola data korisnicima'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo izvozni dodatak za Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo izvozni dodatak za iPhoto'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo dodatak za objavljivanje za digiKam'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klient za Android) je Piwigo klient otvorenog koda (GPL v3) za Adroid platformu.'; +$lang['Select groups...'] = 'Odaberi grupe...'; +$lang['Select users...'] = 'Odaberi korisnike...'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je organizator digitalnih fotografija otvorenog koda za Linux. To je podrazumevani menadžer fotografija u Ubuntu-u i Fedori.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo izvozni dodatak omogućava Vam da kreirate albume i da izvezete fotografije.'; +$lang['There is no group in this gallery.'] = 'Ne postoje grupe u ovoj galeriji'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Da biste izvezli fotografije iz digiKam-a u Piwigo, samo instalirajte digiKam i the Kipi dodatke'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'posetioci moraju biti prijavljeni i imati odgovarajuće dozvole da bi videli ovaj album'; +$lang['custom'] = 'Po izboru'; +$lang['include photos with lower privacy level'] = 'Uključi fotografije sa nižim nivoom privatnosti'; +$lang['No group is permitted to see this private album'] = 'Ni jednoj grupi nije dozvoljeno da vidi ovaj privatni album'; +$lang['Permission management'] = 'Upravljanje dozvolama'; +$lang['Apply watermark if height is bigger than'] = 'Primeni vodeni žig ako je visina veća od'; +$lang['Apply watermark if width is bigger than'] = 'Primeni vodeni žig ako je širina veća od '; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Podrazumevano, interesni centar je postavljen na sredinu fotografije.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Za veličine fotografija sa odsecanjem, kao što je "kvadrat", Piwigo će uraditi najbolje što je moguće da uključi interesni centar.'; +$lang['Opacity'] = 'Neprovidnost'; +$lang['Photo sizes with crop'] = 'Veličina fotografija sa odsecanjem'; +$lang['Select a file'] = 'Odaberite fajl'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Odaberite mišem zonu da bi ste definisali novi interesni centar.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Interesni centar je najbitnija zona fotografije.'; +$lang['X Position'] = 'X pozicija'; +$lang['X Repeat'] = 'X ponavljanja'; +$lang['Y Position'] = 'Y pozicija'; +$lang['add a new watermark'] = 'dodajte novi vodeni žig'; +$lang['bottom left corner'] = 'donji levi ugao'; +$lang['bottom right corner'] = 'donji desni ugao'; +$lang['middle'] = 'sredina'; +$lang['top left corner'] = 'gornji lefi ugao'; +$lang['top right corner'] = 'gornji desni ugao'; +?> \ No newline at end of file diff --git a/sources/language/sh_RS/common.lang.php b/sources/language/sh_RS/common.lang.php new file mode 100644 index 0000000..57f77c3 --- /dev/null +++ b/sources/language/sh_RS/common.lang.php @@ -0,0 +1,420 @@ +Uredi album

            + +

            Informacije

            + +
              + +
            • ime: preimenuj album (virtuelno preimenovanje u slučaju fizičkog albuma).
            • + +
            • opis: kratak tekst sa opštim podacima o sadržaju, ovaj tekst će biti prikazan na dnu strane sličica.
            • + +
            + +

            Premesti

            + +

            Ako je album virtuelni, možete ga pomeriti. Pomeranje albuma znači promenu njegovog roditeljskog albuma.

            + +

            Opcije

            + +
              + +
            • Tip pristuma: Upravljanje dozvolama. Ako napravite privatni album, + svi njegovi podređeni albumi postaju privatni. Ako napravite album javnim, svi njegovi nadređeni albumi postaju javni.
            • + +
            • Zaključaj: The album and its sub-albums will + be temporary disabled for maintenance.
            • + +
            • Comments: Authorize users to comment photos of this + album.
            • + +
            + +

            You can also manage these options on the "Properties" +management screen (screens Comments, Lock, +Public/Private, Representative available from Administration » Albums » Properties).

            + +

            Sort order

            + +

            Use the default images sort order.

            + +

            Indicate whether this sort order will apply to subalbums also.

            + +

            Select specific sorting criteria to be used with this album.

            +
              +
            • Creation date: Photo shooting date
            • +
            • Post date: Synchronization date
            • +
            • Average rate (*): Average rate could be changed by the visitor rating
            • +
            • Most visited (*): The current visit might change the most visited order
            • +
            • File name: Name given in information field
            • +
            • Id: Internal Id (recent categories have an higher id than previous ones.
            • + +
            +

            (*)Warning: Be sure to test these sort orders by yourself as they can give unexpected results.

            + + +

            Representant

            + +

            The album representative is the thumbnail displayed on the main page (category.php) to represent +the album when +it contains only sub-albums and no direct photo (just as the root album).

            +photo of a album :

            + +
              + +
            • Photo page: one of the action buttons let you set the current photo as the representative for the + displayed album. This button is available only for administrators.
            • + +
            • Modify informations about a photo in + administration. This screen can be reached from picture.php or Batch + management in unit mode. See the help of this screen for + details.
            • + +
            • Administration » Albums » Properties, + Representative. See the help of this screen for details.
            • + +
            • Edit album (the present screen).
            • + +
            + +

            The choice of a representative depends on the +allow_random_representative configuration parameter (see include/config_default.inc.php).

            + +

            In default mode (allow_random_representative set to false), +each album containing at least one element is represented by a fixed +element. Once set (at album creation), the representative changes only +when an administrator ask for it. If the representative is not appropriate, +you can ask to Find a new representant by random.

            + +

            If the allow_random_representative configuration parameter is +set to true, a category containing photos may have no fixed +representant. Just use Delete representant button.

            + +

            If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to Modify +informations about a photo screen. The only option on the current screen +is the Delete representant button.

            + +

            Link all album photos to a new album

            + +
              + +
            • Virtual album name: Name of the new album to be created, +all photos of the current category will be linked to the new one.
            • + +
            • Parent album: Where the new album will be, +leave empty to create it at root.
            • + +
            + +

            Link all album photos to existing albums

            + +
              + +
            • Albums: Choose the destination album.
            • + +
            + +

            Send an information email to group members

            + +
              + +
            • Group: recipients group
            • + +
            • Mail content: Free text to send to them.
            • + +
            \ No newline at end of file diff --git a/sources/language/sh_RS/help/help_add_photos.html b/sources/language/sh_RS/help/help_add_photos.html new file mode 100644 index 0000000..c8f4312 --- /dev/null +++ b/sources/language/sh_RS/help/help_add_photos.html @@ -0,0 +1,25 @@ +

            Nekoliko načina da dodate Vaše slike u galeriju:

            + +
              +
            • Direktno slanje u Vašem web pretraživaču je najjednostavniji i najdirektniji način. Zavisi od mogućnosti Vašeg web pretraživača + i Vašeg web servera. Za veliki broj fotografija ili u slučaju da imate neki problem, + druge metode Vas čekaju!
            • +
            + + + +
              +
            • pLoader je aplikacija za računar, koju trebate da instalirate. Pokupite i ubacite slike u pLoader prozor, kliknite na "Upload to Piwigo" i pustite pLoader da uradi posao. Možete naći drugu desktop aplikaciju kaoWinToPiwigo ili Digikam dodatak za slanje na Piwigo.
            • +
            + + + +
            +
              +
            • FTP prenosje najčešće preporučen način da dodate + jako veliku kolekciju fotografija sa najmanjim brojem klikova. Sledite uputstvo da biste pripremili Vaše fotografije. FTP metoda Vam omogućava kontrolu + organizacije Vaših fotografija na severu.
            • +
            + + +
            \ No newline at end of file diff --git a/sources/language/sh_RS/help/index.php b/sources/language/sh_RS/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/sh_RS/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/sh_RS/index.php b/sources/language/sh_RS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/sh_RS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/sh_RS/install.lang.php b/sources/language/sh_RS/install.lang.php new file mode 100644 index 0000000..cf839e4 --- /dev/null +++ b/sources/language/sh_RS/install.lang.php @@ -0,0 +1,67 @@ +Piwigo message board.'] = 'Potrebna Vam je pomoc? Pitajte na Piwigo tabli za poruke.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Posetioci ce biti u mogucnosti da koriste ovaj mail da kontaktiraju administratora stranice'; +$lang['PHP 5 is required'] = 'PHP 5 je neophodan'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Izgleda da Vaš webhost trenutno koristi PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo može pokušati da promeni Vašu konfiguraciju na PHP 5 kreiranjem ili menjanjem .htaccess datoteke.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Imajte u vidu da možete sami izmeniti Vašu konfiguraciju restartovati Piwigo posle toga.'; +$lang['Try to configure PHP 5'] = 'Pokušajte da podestite PHP 5'; +$lang['Sorry!'] = 'Žao nam je!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo wnije uspeo da podesi PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Trebalo bi da se obartite podršci Vašeg hosting provajdera za uputstvo kako da promenite na PHP 5 sami.'; +$lang['Hope to see you back soon.'] = 'Nadamo se da se uskoro vidimo.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Cestitamo, Piwigo instalacija je završena'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Alternativno rešenje je da kopirate tekst iz kutije iznad i nalepite u datoteku "local/config/database.inc.php" (Upozorenje : database.inc.php mora sadržati samo tekst iz kutije, bez linije ili praznih karaktera)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Kreiranje konfiguracione datoteke local/config/database.inc.php neuspešno.'; +$lang['Download the config file'] = 'Snimi na racunar konfiguracionu datoteku'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Možete snimiti na racunar konfiguracionu datoteku i poslati je na local/config direktorijum Vaše instalacije.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Ne oklevajte da zatražite pomoć na našem forumu oko bilo čega: %s'; +$lang['Just another Piwigo gallery'] = 'Još jedna Piwigo galerija'; +$lang['Welcome to my photo gallery'] = 'Dobrodošli u moju foto galeriju'; +$lang['Welcome to your new installation of Piwigo!'] = 'Dobrodošli na Vašu novu instalaciju Piwigo-a!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost ili drugi naziv koji ste dobili od provajdera'; \ No newline at end of file diff --git a/sources/language/sh_RS/iso.txt b/sources/language/sh_RS/iso.txt new file mode 100644 index 0000000..bdc9107 --- /dev/null +++ b/sources/language/sh_RS/iso.txt @@ -0,0 +1 @@ +Srpski [SR] \ No newline at end of file diff --git a/sources/language/sh_RS/sh_RS.jpg b/sources/language/sh_RS/sh_RS.jpg new file mode 100644 index 0000000..a803c9b Binary files /dev/null and b/sources/language/sh_RS/sh_RS.jpg differ diff --git a/sources/language/sh_RS/sr_RS.jpg b/sources/language/sh_RS/sr_RS.jpg new file mode 100644 index 0000000..a803c9b Binary files /dev/null and b/sources/language/sh_RS/sr_RS.jpg differ diff --git a/sources/language/sh_RS/upgrade.lang.php b/sources/language/sh_RS/upgrade.lang.php new file mode 100644 index 0000000..4719b80 --- /dev/null +++ b/sources/language/sh_RS/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s (or equivalent).'] = "Ova stranica predlaže nadogradnju baze sa Piwigo stare verzije na novu. +Asistent nadogradnje procenjuje da trenutno koristite izdanje %s (ili ekvivalentnu)."; +$lang['Upgrade from version %s to %s'] = "Nadogradnja sa verzije %s na %s"; +$lang['Statistics'] = "Statistika"; +$lang['total upgrade time'] = "ukupno vreme nadogradnje"; +$lang['total SQL time'] = "ukupno SQL vreme"; +$lang['SQL queries'] = "SQL upiti"; +$lang['Upgrade informations'] = "Informacije o nadogradnji"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Izvršiti proveru održavanja u [Administracija>Alati>Održavanje] ako naiđšete na neki problem."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Kao meru predostrožnost, dati dodaci su deaktivirani. Morate proveriti za nadogradnju dodataka pre nego ih ponovo aktivirate :"; +$lang['Only administrator can run upgrade: please sign in below.'] = "Samo administrator može da pokrene nadogradnju: prijavite se ispod."; +$lang['You do not have access rights to run upgrade'] = "Nemate pristupna prava da pokrenete nadogradnju"; +$lang['All sub-albums of private albums become private'] = "Sve podkategorije privatnih kategorija postaju privatne"; +$lang['User permissions and group permissions have been erased'] = "Korisničke i grupne dozvole su obrisane"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Samo prefix za povezne sličice i webmaster e-mail adresa su sačuvane iz prethodne konfiguracije"; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Iz predustrožnosti, sledeće teme su deaktivirane. Proverite nadogradnje tema pre nego što ih reaktivirate:'; +$lang['In %s, before ?>, insert:'] = 'U %s, pre ?>, dodajte:'; +?> \ No newline at end of file diff --git a/sources/language/sk_SK/about.html b/sources/language/sk_SK/about.html new file mode 100644 index 0000000..c34e2d7 --- /dev/null +++ b/sources/language/sk_SK/about.html @@ -0,0 +1,11 @@ +

            Táto web fotogaléria je založená na aplikáci Piwigo.

            + +

            Piwigo je softvér fotogalérie pre web vytvorený aktívnou komunitou používateľov a vývojárov. Rozšírenia a doplnky robia Piwigo jednoducho prispôsobiteľné. Zásadná výhoda nakoniec: Piwigo je bezplatné a opensource.

            + +

            Navštívte Piwigo web stránky

            + +

            Slovenské Piwigo udržuje: + +

            \ No newline at end of file diff --git a/sources/language/sk_SK/admin.lang.php b/sources/language/sk_SK/admin.lang.php new file mode 100644 index 0000000..147cc29 --- /dev/null +++ b/sources/language/sk_SK/admin.lang.php @@ -0,0 +1,979 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader je Piwigo nahrávač. pLoader pripraví Vaše fotografie na Vašom počítači a nahraje ich na Vašu Piwigo fotogalériu.'; +$lang['Guest Settings'] = 'Nastavenie pre hostí'; +$lang['Main Page'] = 'Hlavná stránka'; +$lang['Photo Page'] = 'Fotostránka'; +$lang['Activate Navigation Bar'] = 'Aktivovať navigačnú lištu'; +$lang['Activate Navigation Thumbnails'] = 'Aktivovať navigačné náhľady'; +$lang['Activate icon "%s"'] = 'Aktivovať ikonu "%s"'; +$lang['Photo Properties'] = 'Vlastnosti fotografie'; +$lang['Allow user customization'] = 'Povoliť používateľskú úpravu nastavení'; +$lang['Languages'] = 'Jazyky'; +$lang['Installed Languages'] = 'Inštalované jazyky'; +$lang['Add New Language'] = 'Pridať nový jazyk'; +$lang['Language has been successfully installed'] = 'Jazyk bol úspešne nainštalovaný'; +$lang['Select:'] = 'Vybrať:'; +$lang['None'] = 'Žiadny'; +$lang['Invert'] = 'Obrátiť'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Nie je možné deaktivovať túto tému, potrebujete aspoň jednu tému.'; +$lang['Webmaster status is required.'] = 'Je požadovaný status webmastra.'; +$lang['Bound Theme'] = 'Zviazať témy'; +$lang['Allow rating'] = 'Povoliť hodnotenie'; +$lang['Select at least one comment'] = 'Vyberte aspoň jeden komentár'; +$lang['Active Plugins'] = 'Aktivovať doplnky'; +$lang['Inactive Plugins'] = 'Deaktivovať doplnky'; +$lang['Missing Plugins'] = 'Chýbajúce doplnky'; +$lang['Uninstalled Plugins'] = 'Nenainštalované doplnky'; +$lang['By %s'] = 'Od %s'; +$lang['Visit plugin site'] = 'Navštívte web portál doplnkov'; +$lang['Active Languages'] = 'Aktívne jazyky'; +$lang['Delete this language'] = 'Odstrániť tento jazyk'; +$lang['Forbid this language to users'] = 'Zneprístupniť tento jazyk používateľom'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Nie je možné deaktivovať tento jazyk, najprv vyberte iný východzí jazyk.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Nie je možné deaktivovať tento jazyk, potrebujete aspoň jeden jazyk.'; +$lang['Inactive Languages'] = 'Deaktivované jazyky'; +$lang['Make this language available to users'] = 'Sprístupniť tento jazyk používateľom'; +$lang['Set as default language for unregistered and new users'] = 'Nastaviť ako východzí jazyk pre nezaregistrovaných a nových používateľov'; +$lang['Add Photos'] = 'Pridať fotografie'; +$lang['The following tag was deleted'] = 'Nasledujúce kľúčové slovo bolo odstránené'; +$lang['Miscellaneous'] = 'Rôzne'; +$lang['Virtual Links'] = 'Virtuálne odkazy'; +$lang['There is no other language available.'] = 'Nie je dostupný žiadny ďalší jazyk.'; +$lang['There is no other plugin available.'] = 'Nie je dostupný žiadny ďalší doplnok.'; +$lang['There is no other theme available.'] = 'Nie je dostupná žiadna ďalšia téma.'; +$lang['Add another set of photos'] = 'Pridať ďalšiu množinu fotografií'; +$lang['user_status_generic'] = 'Všeobecné'; +$lang['IP'] = 'IP'; +$lang['By rank'] = 'Podľa hodnotenia'; +$lang['Manual order'] = 'Radené ručne'; +$lang['Order of menubar items has been updated successfully.'] = 'Poradie položiek v menu bolo úspešne aktualizované.'; +$lang['This theme was not designed to be directly activated'] = 'Táto téma nebola navrhnutá tak, aby bola priamo aktivovateľná'; +$lang['Menu Management'] = 'Ďalšie funkcie'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'V súbore php.ini, upload_max_filesize (%sB) je väčší ako post_max_size (%sB), mali by ste zmeniť toto nastavenie'; +$lang['Exif extension not available, admin should disable exif use'] = 'Doplnok Exif nie je dostupný, administrátor by mal deaktivovať jeho použitie'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Nahrané súbory presahujú upload_max_filesize ako je uvedené v php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Nahrané súbory presahujú post_max_size ako je uvedené v php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Nahraný súbor presahuje MAX_FILE_SIZE ako je uvedené v HTML formulári'; +$lang['The uploaded file was only partially uploaded'] = 'Súbor bol iba čiastočne nahraný'; +$lang['No file was uploaded'] = 'Súbor nebol nahraný'; +$lang['Missing a temporary folder'] = 'Chýbajúci dočasný adresár'; +$lang['Failed to write file to disk'] = 'Chyba zápisu súboru na disk'; +$lang['File upload stopped by extension'] = 'Nahrávanie súboru zastavené doplnkom'; +$lang['Unknown upload error'] = 'Neznáma chyba nahrávania'; +$lang['Error on file "%s" : %s'] = 'Chyba súboru "%s" : %s'; +$lang['automatic order'] = 'automatické zoradenie'; +$lang['manual order'] = 'manuálne zoradenie'; +$lang['Albums automatically sorted'] = 'Automaticky triedené albumy'; +$lang['Batch Manager'] = 'Správca dávky'; +$lang['include child albums'] = 'vrátane podalbumov'; +$lang['Selection'] = 'Výber'; +$lang['Action'] = 'Akcia'; +$lang['Set author'] = 'Nastavenie autora'; +$lang['Set title'] = 'Nastavenie názvu'; +$lang['Set creation date'] = 'Nastavenie dátumu vytvorenia'; +$lang['Apply action'] = 'Pridaj akciu'; +$lang['on the %d selected photos'] = 'na %d vybraných fotografií'; +$lang['%d of %d photos selected'] = '%d z %d vybraných fotografií'; +$lang['No photo selected, %d photos in current set'] = 'Žiadna fotografia vybraná, %d fotografií v súčasnom súbore'; +$lang['All %d photos are selected'] = 'Všetkých %d fotografií vybraných'; +$lang['remove this filter'] = 'odstráň tento filter'; +$lang['Duplicates'] = 'duplicity'; +$lang['Add a filter'] = 'Pridaj filter'; +$lang['Remove all filters'] = 'Odstráň všetky filtre'; +$lang['Refresh photo set'] = 'Obnoviť foto súbor'; +$lang['The whole page'] = 'Celá stránka'; +$lang['The whole set'] = 'Celý súbor'; +$lang['No photo in the current set.'] = 'Žiadna fotografia v súčasnom súbore.'; +$lang['No photo selected, no action possible.'] = 'Nie je označená žiadna fotografia, nie je možné pokračovať v akcii.'; +$lang['Choose an action'] = 'Zvoľ akciu'; +$lang['remove author'] = 'odstrániť autora'; +$lang['Type here the author name'] = 'Sem napíšte meno autora'; +$lang['remove title'] = 'odstrániť názov'; +$lang['Type here the title'] = 'Sem napíšte názov'; +$lang['remove creation date'] = 'odstrániť dátum vytvorenia'; +$lang['Album photos associated to the following albums: %s'] = 'Fotografie prepojené na nasledujúce albumy: %s'; +$lang['Delete orphan tags'] = 'Vymazanie nepriradených kľúčových slov'; +$lang['delete photo'] = 'vymazať fotografiu'; +$lang['Orphan tags deleted'] = 'Nepriradené kľúčové slová boli vymazané'; +$lang['Week starts on'] = 'Týždenné spustenie'; +$lang['You have %d orphan tags: %s.'] = 'Máte %d nepriradených kľúčových slov: %s.'; +$lang['Remove from caddie'] = 'Vymazať z krabičky'; +$lang['Themes which need upgrade'] = 'Témy potrebujúce aktualizáciu'; +$lang['Languages which need upgrade'] = 'Jazyky potrebujúce aktualizáciu '; +$lang['All themes are up to date.'] = 'Všetky témy sú aktuálne.'; +$lang['All plugins are up to date.'] = 'Všetky doplnky sú aktuálne.'; +$lang['All languages are up to date.'] = 'Všetky jazyky sú aktuálne.'; +$lang['Visit theme site'] = 'Navštívte stránku tém'; +$lang['Visit language site'] = 'Navštívte stránku jazykov'; +$lang['New Version'] = 'Nová verzia'; +$lang['Obsolete Plugins'] = 'Zastaralé doplnky'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UPOZORNENIE! Tento doplnok nemusí byť kompatibilný s touto verziou Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Chtete ho aj tak aktivovať?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TENTO DOPLNOK JE TERAZ SÚČASŤOU JADRA PIWIGO! ODINŠTALUJTE HO TERAZ!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'CHYBA: TENTO DOPLNOK CHÝBA ALE JE NAINŠTALOVANÝ! ODINŠTALUJTE HO TERAZ.'; +$lang['display'] = 'zobrazenie'; +$lang['Thumbnails generation in progress...'] = 'Prebieha tvorba náhľadov...'; +$lang['Photos generation in progress...'] = 'Prebieha tvorba fotografií...'; +$lang['%s photos have been regenerated'] = '%s fotografií bolo vytvorených'; +$lang['%s photos can not be regenerated'] = '%s fotografií nebolo vytvorených'; +$lang['new'] = 'nové'; +$lang['No results'] = 'Bez výsledkov'; +$lang['Searching...'] = 'Vyhľadávam...'; +$lang['Type in a search term'] = 'Napíšte vo vyhľadávaní'; +$lang['Deactivate all'] = 'Ukončiť všetko'; +$lang['Restore'] = 'Obnoviť'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Obnoviť východiskovú konfiguráciu. Stratíte nastavenia Vašich doplnkov!'; +$lang['Show menubar'] = 'Zobraziť menu'; +$lang['Updates'] = 'Aktualizácie'; +$lang['Update in progress... Please wait.'] = 'Prebieha aktualizácia... Prosím čakajte.'; +$lang['Ignore this update'] = 'Ignorovať túto aktualizáciu'; +$lang['Reset ignored updates'] = 'Obnoviť ignorované aktualizácie'; +$lang['Update All'] = 'Aktualizovať všetko'; +$lang['ERROR'] = 'CHYBA'; +$lang['Update Complete'] = 'Aktualizácia kompletná'; +$lang['Piwigo Update'] = 'Piwigo aktualizácia'; +$lang['Extensions Update'] = 'Aktualizácia doplnkov'; +$lang['All extensions are up to date.'] = 'Všetky doplnky sú aktuálne.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Nasledovné doplnky nemusia byť kompatibilné s novou verziou Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = ' Nasledovné témy nemusia byť kompatibilné s novou verziou Piwigo:'; +$lang['I decide to update anyway'] = 'Rozhodol som sa aktualizovať každopádne'; +$lang['Update to Piwigo %s'] = 'Aktualizovať na Piwigo %s'; +$lang['Two updates are available'] = 'Dve aktualizácie sú dostupné'; +$lang['This is a minor update, with only bug corrections.'] = 'Toto je malá aktualizácia opravujúca chyby.'; +$lang['This is a major update, with new exciting features.'] = 'Toto je veľká aktulizácia s novými funkciami.'; +$lang['Some themes and plugins may be not available yet.'] = 'Niektoré témy a doplnky nemusia byť prístupné.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Môžete aktualizovať na Piwigo %s priamo bez aktualizácie na Piwigo %s (odporúčané).'; +$lang['Save Template Directory'] = 'Uložiť adresár šablón'; +$lang['Dump Database'] = 'Vyčistiť databázu'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Vrátane histórie údajov (Upozornenie: limit pamäte servera môže byť prekročený)'; +$lang['Unable to dump database.'] = 'Nemožno vyčistiť databázu.'; +$lang['Some upgrades are available for extensions.'] = 'Niektoré aktualizácie sú dostupné pre doplnky.'; +$lang['Ignore All'] = 'Ignorovať všetko'; +$lang['Crop'] = 'Orezať'; +$lang['Width'] = 'Šírka'; +$lang['Height'] = 'Výška'; +$lang['Follow Orientation'] = 'Nasledovať orientáciu'; +$lang['Graphics Library'] = 'Grafická knižnica'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivovať ikonu "new" pre ďalšie albumy a fotky'; +$lang['Default photos order'] = 'Predvolené zoradenie fotiek'; +$lang['Average rate'] = 'Priemerné hodnotenie'; +$lang['Rate'] = 'Hodnotenie'; +$lang['Add a criteria'] = 'Pridať kritéria'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Nemožno definovať prednastavené zoradenie fotiek, pretože ho máte inak nastavené lokálnej konfigurácii.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Máte špecifikované $conf[\'order_by\'] vo Vašom lokálnom konfiguračnom súbore, tento parameter je neprípustný, prosím vymažte ho alebo premenujte v $conf[\'order_by_custom\'] !'; +$lang['Learn more'] = 'Zistiť viac'; +$lang['... or '] = '... alebo '; +$lang['Create'] = 'Vytvoriť'; +$lang['Start Upload'] = 'Spustiť nahrávanie'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Používate Flash uploader. Problemy? Skúste Browser uploader miesto toho.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Používate prehliadačový uploader. Skúste Flash uploader miesto toho.'; +$lang['Maximum file size: %sB.'] = 'Maximálna veľkosť súboru: %sB.'; +$lang['Allowed file types: %s.'] = 'Povolené typy súborov: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približné maximálne rozlíšenie: %dM pixelov (teda %dx%d pixelov).'; +$lang['Manage Permissions'] = 'Riadenie prístupov'; +$lang['Photo %s of %s'] = 'Fotka %s z %s'; +$lang['show details'] = 'ukázať detaily'; +$lang['hide details'] = 'schovať detaily'; +$lang['Merge tags'] = 'Zlúčiť kľúčové slová'; +$lang['Select the destination tag'] = 'Označiť cieľové kľúčové slovo'; +$lang['(this tag will be deleted)'] = '(toto kľúčové slovo bude vymazané)'; +$lang['Confirm merge'] = 'Potvrdiť zlúčnie'; +$lang['Merge selected tags'] = 'Zlúčiť označené kľúčové slová'; +$lang['No destination tag selected'] = 'Žiadne cieľové kľúčové slovo nie je označené'; +$lang['Tags %s merged into tag %s'] = 'Kľúčové slová %s sú zlúčené do kľúčového slova %s'; +$lang['Select at least two tags for merging'] = 'Označiť najmenej dve kľúčové slová pre zlúčenie'; +$lang['Select an album'] = 'Označiť album'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Štandardne Piwigo vytvorí novú veľkosť pre web z HD (high definition) verzie fotky.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Ak nie je k dispozícii HD a ak súčasná veľkosť pre web je väčšia ako rozmer zmeny veľkosti, Piwigo fotku presunie ako HD a vytvorí z nej menšiu veľkosť pre web.'; +$lang['An error has occured during upgrade.'] = 'Pri upgrade sa vyskytla chyba.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
            Click here to show log error.'] = 'Pri rozbaľovaní sa vyskytla chyba. Prosím skontrolujte prístupové práva súborov Vašej inštalácie piwigo.
            Kliknite sem na zobrazenie logu chyby.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo nemôže získať upgradovací súbor zo servra'; +$lang['Zoom'] = 'Zväčšenie'; +$lang['Add to caddie'] = 'Pridať do košíku'; +$lang['%s has been successfully updated.'] = '%s bol úspešne aktualizovaný.'; +$lang['Add tags'] = 'Pridať kľúčové slová'; +$lang['Last import'] = 'Ostatný import'; +$lang['Predefined filter'] = 'Predefinovaný filter'; +$lang['With no album'] = 'Bez albumu'; +$lang['With no tag'] = 'Bez kľúčového slova'; +$lang['With no virtual album'] = 'Bez virtuálneho albumu'; +$lang['Activate comments'] = 'Aktívne komentáre'; +$lang['Default comments order'] = 'Predvolené zoradenie komentárov'; +$lang['GD version'] = 'GD verzia'; +$lang['Photo name'] = 'Názov fotky'; +$lang['Send connection settings by email'] = 'Poslať nastavenie pripojenia mailom'; +$lang['The original image quality must be a number between %d and %d'] = 'Originálna kvalita fotky musí byť číslo medzi %d a %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Originálna maximálna výška musí byť číslo medzi %d a %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Originálna maximálna šírka musí byť číslo medzi %d a %d'; +$lang['Resize after upload'] = 'Zmeniť rozmer po nahratí'; +$lang['Original Size'] = 'Originálna veľkosť'; +$lang['A locked gallery is only visible to administrators'] = 'Uzamknutý album je viditeľný len administrátorom'; +$lang['Unlock gallery'] = 'Odomknúť album'; +$lang['Gallery unlocked'] = 'Album odomknutý'; +$lang['Notify administrators when a comment is'] = 'Upozorniť administrátorov, keď je komentár'; +$lang['modified'] = 'upravené'; +$lang['pending validation'] = 'čakajúce na potvrdenie'; +$lang['Save visits in history for'] = 'Uložiť návštevy do histórie'; +$lang['simple visitors'] = 'obyčajní návštevníci'; +$lang['registered users'] = 'registrovaní používatelia'; +$lang['administrators'] = 'administrátori'; +$lang['This album contains %d photos, added on %s.'] = 'Tento album obsahuje %d fotiek, pridaných %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Tento album obsahuje %d fotiek, pridaných medzi %s a %s.'; +$lang['This album contains no photo.'] = 'Tento album neobsahuje fotky.'; +$lang['Not cropped correctly?'] = 'Nesprávne orezanie?'; +$lang['Center of interest'] = 'Stred záujmu'; +$lang['Move to album'] = 'Premiestniť do albumu'; +$lang['You can activate only one mobile theme.'] = 'Môžete aktivovať len jednu tému pre mobil.'; +$lang['Automatic sort order'] = 'Automatické zoradenie'; +$lang['apply automatic sort order'] = 'použiť automatické zoradenie'; +$lang['Save manual order'] = 'Uložiť manuálne zoradenie'; +$lang['cancel manual order'] = 'zrušiť manuálne zoradenie'; +$lang['Cancel'] = 'Zrušiť'; +$lang['List'] = 'Zoznam'; +$lang['Web Form'] = 'Web formulár'; +$lang['Applications'] = 'Aplikácie'; +$lang['Available versions for'] = 'Dostupné verzie pre'; +$lang['Available on'] = 'K dispozícii'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo pre iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo pre iOS aplikácie umožňujúcej spojenie na Vašu Piwigo galériu pre Váš iPhone, iPad alebo iPod Touch, vytváranie albumov a nahrávanie fotografií.'; +$lang['Piwigo for Android'] = 'Piwigo pre Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo pre Android aplikácie umožňujúcej spojenie na Vašu Piwigo galériu pre Váš iPhone, iPad alebo iPod Touch, vytváranie albumov a nahrávanie fotografií.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo publikačný doplnok pre Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je fotografický softvér určený na správu väčšieho počtu digitálnych fotografií a postprodukčnú prácu.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publikačný doplnok umožňuje export a synchronizáciu fotografií z Lightroomu priamo do Vašej Piwigo foto galérie.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publikačný doplnok pre Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je open source digitálny foto organizér pracujúci pod Linuxom. Je to predvolený foto správca v Ubuntu a Fedore.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Vo Vašom Linuxe jednoducho nainštalujte Shotwell so správcovským balíkom a aktivujte Piwigo publikačnú voľbu.'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publikačný doplnok pre digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je pokročilý digitálny foto správca a to voľne šíriteľný pre Linux, Windows, a MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je navrhnutý pre fotografov, ktorí chcú prezerať, spravovať, upravovať, vylepšovať, organizovať, označovať a zdieľať fotografie.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Pre export Vašich fotografií z digiKam do Piwigo jednoducho nainštalujte digiKam a Kipi-doplnky.'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export doplnok pre iPhoto'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je predvolený foto správca na MacOSX. Piwigo export doplnok umožňuje vytvárať nové albumy a exportovať Vaše fotografie priamo z iPhoto do Vašej Piwigo foto galérie.'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo export doplnok pre Aperture'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je výkonný nástroj na vylepšovanie fotografií a správu veľkých knižníc na Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je navrhnutý pre profesionálnych fotografov s jednoduchosťou iPhoto.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export doplnok umožňuje vytváranie albumov a export fotografií.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery klient pre Android) je open source (GPL v3) Piwigo klient pre platformu Android.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Funkcie vrátane prehliadania galérií, vytvárania albumov a nahrávania fotografií.'; +$lang['Generate multiple size images'] = 'Tvorba početných veľkostí fotografií'; +$lang['Delete multiple size images'] = 'Vymazanie početných veľkostí fotografií'; +$lang['any visitor can see this album'] = 'ktorýkoľvek návštevník môže vidieť tento album'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'návštevníci sa musia prihlásiť a mať povolené vidieť tento album'; +$lang['Groups and users'] = 'Skupiny a používatelia'; +$lang['Permission granted for groups'] = 'Práva udelené pre skupiny'; +$lang['Select groups...'] = 'Výber skupín...'; +$lang['There is no group in this gallery.'] = 'Nie je definovaná skupina v tejto galérii.'; +$lang['Permission granted for users'] = 'Povolenia udelené pre používateľov'; +$lang['Select users...'] = 'Výber používateľov...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u používateľov má automaticky oprávnenia, pretože patria do skupiny s prideleným oprávnením.'; +$lang['include photos with lower privacy level'] = 'vrátane fotografií s nízkou súkromnou úrovňou'; +$lang['custom'] = 'Voliteľné'; +$lang['No group is permitted to see this private album'] = 'Žiadna skupina nemá oprávnenie vidieť tento súkromný album'; +$lang['Permission management'] = 'Správa oprávnení'; +$lang['add a new watermark'] = 'pridať novú vodotlač'; +$lang['Apply watermark if height is bigger than'] = 'Použiť vodotlač ak výška je väčšia ako'; +$lang['Apply watermark if width is bigger than'] = 'Použiť vodotlač ak šírka je väčšia ako'; +$lang['bottom left corner'] = 'ľavý dolný roh'; +$lang['bottom right corner'] = 'pravý dolný roh'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Ako predvolené, stred záujmu je umiestnený do stredu fotky.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Pre fotku s orezom, takým ako "Štvorec", Piwigo ju urobí čo najlepšie so stredom záujmu.'; +$lang['middle'] = 'stred'; +$lang['Opacity'] = 'Nepriehľadnosť'; +$lang['Photo sizes with crop'] = 'Veľkosť fotky s orezom'; +$lang['Select a file'] = 'Označiť súbor'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Označiť zónu Vašou myšou na definovanie nového stredu záujmu.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Stred záujmu je veľmi významná zóna na fotke'; +$lang['top left corner'] = 'ľavý horný roh'; +$lang['top right corner'] = 'pravý horný roh'; +$lang['X Position'] = 'X Pozícia'; +$lang['X Repeat'] = 'X Opakovanie'; +$lang['Y Position'] = 'Y Pozícia'; +$lang['Multiple Size'] = 'Viacnásobná veľkosť'; +$lang['%d day'] = '%d deň'; +$lang['%d days'] = '%d dní'; +$lang['%d hour'] = '%d hodina'; +$lang['%d hours'] = '%d hodín'; +$lang['%d minute'] = '%d minúta'; +$lang['%d minutes'] = '%d minút'; +$lang['%d month'] = '%d mesiac'; +$lang['%d months'] = '%d mesiacov'; +$lang['%d second'] = '%d sekunda'; +$lang['%d seconds'] = '%d sekúnd'; +$lang['%d year'] = '%d rok'; +$lang['%d years'] = '%d rokov'; +$lang['%s ago'] = 'pred %s'; +$lang['%s in the future'] = '%s v budúcnosti'; +$lang['Added by %s'] = 'Pridané %s'; +$lang['Numeric identifier : %d'] = 'Číselný identifikátor: %d'; +$lang['Original file : %s'] = 'Originálny súbor: %s'; +$lang['Posted %s on %s'] = 'Poslaný %s na %s'; +$lang['Rated %d times, score : %.2f'] = 'Hodnotené %d krát, skóre: %.2f'; +$lang['Sharpen'] = 'Zaostriť'; +$lang['Visited %d times'] = 'Zobrazené %d krát'; +$lang['Watermark'] = 'Vodoznak'; +$lang[' and %d virtuals'] = 'a %d virtuálna'; +$lang['%d physicals'] = '%d fizický'; +$lang['%d week'] = '%d týždeň'; +$lang['%d weeks'] = '%d týždňov'; +$lang['Edit photo'] = 'Upraviť fotku'; +$lang['create a new site'] = 'vytvoriť novú stránku'; +$lang['No order field selected'] = 'Nie je určené zoradenie'; +$lang['Duplicate selected tags'] = 'Duplikovať označené kľúčové slová'; +$lang['Name of the duplicate'] = 'Názov duplikácie'; +$lang['Source tag'] = 'Zdrojové kľúčové slovo'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Kľúčové slovo "%s" je teraz duplikácia "%s"'; +$lang['Portrait'] = 'Na výšku'; +$lang['Panorama'] = 'Panoráma'; +$lang['Minimum width'] = 'Minimálna šírka'; +$lang['Minimum height'] = 'Minimálna výška'; +$lang['Landscape'] = 'Na šírku'; +$lang['Manage photos'] = 'Spravovať fotky'; +$lang['View in gallery'] = 'Zobraziť v galérii'; +$lang['Number of albums per page'] = 'Počet albumov na stránku'; +$lang['Ratio'] = 'Hodnotenie'; +$lang['between %.2f and %.2f'] = 'medzi %.2f and %.2f'; +$lang['between %d and %d pixels'] = 'medzi %d and %d pixelmi'; +$lang['Type here the name of the new group'] = 'Sem napíšte názov novej skupiny'; +$lang['This group will be unset to default'] = 'Táto skupina už viac nebude použitá ako predvolená'; +$lang['This group will be set to default'] = 'Táto skupina bude použitá ako predvolená'; +$lang['Rename'] = 'Premenovať'; +$lang['Please select at least two groups'] = 'Prosím označte aspoň dve skupiny'; +$lang['No group selected, no action possible.'] = 'Žiadna skupina nie je označená, žiadna akcia nie je možná.'; +$lang['No members to manage'] = 'Žiadni používatelia na spravovanie'; +$lang['Manage the members'] = 'Spravovať používateľov'; +$lang['Merge selected groups'] = 'Pridať označené skupiny'; +$lang['Duplicate'] = 'Duplikovať'; +$lang['Purge user cache'] = 'Vyčistiť cache používateľa'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Fotka bola zmenšená na %dx%d pixelov.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Zmena veľkosti po odoslaní zakázaná kvôli použitiu GD ako grafickej knižnice'; +$lang['Select at least one tag'] = 'Vyberte aspoň jedno kľúčové slovo'; +$lang['Mail theme'] = 'Témy mailu'; +$lang['General'] = 'Hlavné'; +$lang['Basic settings'] = 'Základné nastavenie'; +$lang['on the %d selected users'] = 'na %d označených používateľov'; +$lang['Users modified'] = 'Používatelia zmenení'; +$lang['User %s updated'] = 'Používateľ %s aktualizovaný'; +$lang['User %s added'] = 'Používateľ %s pridaný'; +$lang['Update user'] = 'Používateľ aktualizovaný'; +$lang['Showing %s to %s of %s users'] = 'Zobrazených %s až %s z %s používateľov'; +$lang['Show %s users'] = 'Zobrazených %s používateľov'; +$lang['Registered on %s, %s.'] = 'Registrované na %s, %s.'; +$lang['Password updated'] = 'Heslo aktualizované'; +$lang['No user selected, no action possible.'] = 'Žiaden používateľ označený, žiadna akcia možná.'; +$lang['No user selected of %d users'] = 'Žiaden používateľ z %d používateľov označený'; +$lang['No matching user found'] = 'Nenájdený požívateľ'; +$lang['Loading...'] = 'Nahrávam...'; +$lang['Last visit on %s, %s.'] = 'Naposledy videný %s, %s.'; +$lang['Change username'] = 'Zmeniť používateľské meno'; +$lang['Change password'] = 'Zmeniť heslo'; +$lang['All %d users are selected'] = 'Všetkých %d používateľov je označených'; +$lang['(filtered from %s total users)'] = '(odfotrovaných %s z celkového počtu používateľov)'; +$lang['%d of %d users selected'] = '%d z %d používateľov označených'; +$lang['Close user details'] = 'Uzavrieť detaily používateľa'; +$lang['Open user details'] = 'Otvoriť detaily používateľa'; +$lang['close'] = 'zavrieť'; +?> \ No newline at end of file diff --git a/sources/language/sk_SK/common.lang.php b/sources/language/sk_SK/common.lang.php new file mode 100644 index 0000000..a77c932 --- /dev/null +++ b/sources/language/sk_SK/common.lang.php @@ -0,0 +1,431 @@ + \ No newline at end of file diff --git a/sources/language/sk_SK/help/cat_modify.html b/sources/language/sk_SK/help/cat_modify.html new file mode 100755 index 0000000..bae573c --- /dev/null +++ b/sources/language/sk_SK/help/cat_modify.html @@ -0,0 +1,117 @@ +

            Editovanie albumov

            + +

            Informácie

            + +
              + +
            • názov: premenujte album (virtuálne premenovanie v prípade fyzických albumov).
            • + +
            • popis: krátky text všeobecne popisujúci obsah, tento text sa zobrazí v spodnej časti pod stránkou s náhľadmi.
            • + +
            + +

            Presun

            + +

            Ak je album virtuálny, môžete ho presunúť. Presun albumu znamená zmenu jeho rodičovského (nadradeného) albumu.

            + +

            Možnosti

            + +
              + +
            • Typ prístupu: Správa oprávnení. Keď album nastavíte ako súkromný, všetci jeho potomkovia (podalbumy) sa stanú súkromnými. Keď nastavíte album ako verejný, stanú sa verejnými aj jeho nadradené albumy.
            • + +
            • Zámok: Album a jeho podalbumy sa dočasne kvôli údržbe zneprístupnia.
            • + +
            • Komentáre: Oprávení užívatelia, ktorí môžu komentovať obrázky tohto albumu.
            • + +
            + +

            Tieto možnosti môžete tiež spravovať v správe "Vlastnosti" (záložky Komentáre, Zámok, +Verejný/Súkromný, Reprezentatívny dostupné vAdministrácia » Albumov » Vlastnosti).

            + +

            Poradie

            + +

            Použiť východzie poradie obrázkov.

            + +

            Určuje, či toto radenie použiť tiež na podalbumy.

            + +

            Vyberte špecifické radenie, ktoré sa použije na tento album.

            +
              +
            • Dátum vytvorenia: Dátum vytvorenia obrázku
            • +
            • Dátum zverejnenia: Dátum synchronizácie
            • +
            • Priemerné hodnotenie (*): Priemer sa mení podľa hodnotenia návštevníkov
            • +
            • Najčastejšie navštevované (*): Poradie je ovlyvnené aktuálnou návštevnosťou
            • +
            • Názov súboru: Názov určený v informačnom poli
            • +
            • ID: Interné ID (novšie albumy majú vyššie ID než predchádzajúce).
            • + +
            +

            (*)Varovanie: Vlastné radenie vždy otestujte, občas vie dať neočakávané výsledky.

            + + +

            Reprezentant

            + +

            Reprezentant albumu je náhľad, ktorý sa zobrazí na hlavnej stránke (category.php) v prípade, keď obsahuje len podalbumy a nie priamo obrázky (rovnako ako koreňový album).

            + +
              + +
            • Stránka s obrázkami: Jedným z tlačidiel nastavíte aktuálny obrázok ako reprezentatívny. Toto tlačidlo je prístupné len administrátorom.
            • + +
            • Úprava informácii o obrázku v administrácii. Dostupné z picture.phpalebo v Správe dávky pri móde jednotlivo. Viac v zodpovedajúcom pomocníkovi.
            • + +
            • Administrácia » Albumy » Vlastnosti, + Reprezentatívny. Viac v zodpovedajúcom pomocníkovi.
            • + +
            • Editácia albumu (súčasná obrazovka).
            • + +
            + +

            Voľba reprezentanta záleží na +allow_random_representative konfiguračnom parametre (v súbore include/config_default.inc.php).

            + +

            Vo defaultnom móde (allow_random_representative nastavená na false), +každý album, ktorý obsahuje aspoň jeden prvok, je reprezentovaný fixným prvkom. +Keď sa reprezentant nastaví (pri tvorbe albumu), môže ho zmeniť len administrátor. Pokiaľ reprezentant nevyhovuje, +môžete použiť Nájsť reprezentanta pomocou náhodného výberu.

            + +

            Ak je konfiguračný parameter allow_random_representative nastavený na true, album obsahujúci obrázky nemusí mať fixného reprezentanta. +Len použite tlačidlo Vymazať reprezentanta .

            + +

            Ak album obstahuje len podalbumy a žiadne obrázky, aj tak môže byť reprezentovaný ľubovoľným prvkom vďaka oknu Zmena informácii o obrázku. Jediná možnosť v aktuálnom okne +je tlačidlo Vymazať reprezentanta.

            + +

            Napojiť všetky obrázky albumu na nový album

            + +
              + +
            • Názov virtuálneho albumu: Názov novo vytvoreného albumu, +všetky obrázky z aktuálneho albumu sa napoja na tento album.
            • + +
            • Nadradený album: Kde sa bude nachádzať nový album, +Nechajte prázdne, ak má byť v koreňovom adresári.
            • + +
            + +

            Napojiť všetky obrázky na existujúci album

            + +
              + +
            • Albums: Vyberte cieľový album.
            • + +
            + +

            Poslať informačný email členom skupiny

            + +
              + +
                + +
              • Skupina: skupina adresátov
              • + +
              • Obsah emailu: ľubovoľný text emailu, ktorý sa odošle.
              • + +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/cat_move.html b/sources/language/sk_SK/help/cat_move.html new file mode 100755 index 0000000..c7f6a66 --- /dev/null +++ b/sources/language/sk_SK/help/cat_move.html @@ -0,0 +1,14 @@ +

              Premiestnenie virtuálneho albumu

              + +

              Len virtuálne albumy môžu mať nový rodičovský album.

              + +

              Virtuálne albumy na premiestnenie

              + +

              Označte jeden alebo viac virtuálnych albumov, ktoré chcete premiestniť. +Ak je zoznam prázdny, to zanmená, že nemáte vytvorený žiaden.

              + +

              Nový rodičovský album

              + +

              Vyberte nový rodičovský album (virtuálny alebo fyzický). +Ak nevyberiete žiaden rodičovský budú virtuálne vybrané albumy presunuté do rootu. +Album nemôže byť presunutý do seba alebo do jedného z jeho podriadených.

              \ No newline at end of file diff --git a/sources/language/sk_SK/help/cat_options.html b/sources/language/sk_SK/help/cat_options.html new file mode 100755 index 0000000..cd762f1 --- /dev/null +++ b/sources/language/sk_SK/help/cat_options.html @@ -0,0 +1,22 @@ +

              Vlastnosti albumu

              + +

              Správa vlastností pre viac albumov naraz

              + +
              + +
              Komentáre
              +
              Komentár k obrázkom je možné pridať, ak sú zaradené do albumu, ktorý má aktivované komentáre.
              + +
              Zamknúť
              +
              Zamknuté albumy sú kvôli údržbe neprístupné. V galérii ich vidia len administrátori.
              + +
              Verejný / súkromný
              +
              Keď nastavíte album ako súkromný, udeľte prístupové práva užívateľom a skupinám
              + +
              Reprezentatívny
              +
              Táto voľba je prístupná, keď je v konfigurácii nastavené +allow_random_representative (viď include/config_defaults.inc.php) na +true. Každý album môže byť reprezentovaný náhodným obrázkom alebo obrázkom vami určeným.
              + +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/cat_perm.html b/sources/language/sk_SK/help/cat_perm.html new file mode 100755 index 0000000..a9535ba --- /dev/null +++ b/sources/language/sk_SK/help/cat_perm.html @@ -0,0 +1,11 @@ +

              Nastavenie oprávnení pre albumy

              + +

              Toto nastavenie je prístupné len pre súkromné albumy (galérie). Tu si môžete zvoliť užívateľov a skupiny, pre ktoré je album prístupný.

              + +

              Skupiny

              + +

              Pre aktuálny album môžete odobrať alebo umožniť prístup skupine. Tým, že zmeníte oprávnenia skupín, užívateľom patriacim do týchto skupín sa odoprie alebo umožní prístu do albumu.

              + +

              Užívatelia

              + +

              Tiež môžete odobrať alebo udeliť prístup jednotlivým užívateľom. Užívateľom, ktorí majú prístup cez skupinu, sa môže odoprieť prístup cez výnimky.

              \ No newline at end of file diff --git a/sources/language/sk_SK/help/configuration.html b/sources/language/sk_SK/help/configuration.html new file mode 100755 index 0000000..819f6c3 --- /dev/null +++ b/sources/language/sk_SK/help/configuration.html @@ -0,0 +1,100 @@ +

              Konfigurácia

              + +

              Na tejto stránke je možné vykonávať základné nastavenie. Okno zobrazuje jednoduché konfiguračné parametre, ktoré by mali stačiť väčšine administrátorov. Ďalšie nastavenia nájdete v súboreinclude/config_default.inc.php.

              + +

              Stránka je rozdelená do niekoľkých záložiek, ktoré zoskupujú konfiguračné nastavenia podľa ich typu.

              + +

              Hlavné

              + +
                +
              • Názov galérie: používa sa v RSS vláknach a emailových upozorneniach.
              • + +
              • Banner stránky: zobrazuje sa v hornej časti každej verejnej stránky.
              • + +
              • URL galérie: používa sa RSS vláknach.
              • + +
              • Zamknúť galériu: Uzavrie galériu, aby sa mohla vykonať údržba. Ku galérii budú mať prístup len užívatelia s oprávnením administrátor.
              • + +
              • Povoliť hodnotenia: Hodnotenie obrázkov je povolené.
              • + +
              • Hodnotenie hosťami: Hodnotiť obrázky môže aj neregistrovaný užívateľ.
              • + +
              • Povoliť registráciu užívateľov: Ktokoľvek sa môže registrovať ako užívateľ.
              • + +
              • E-mailová adresa je povinná pre všetkých užívateľov: pri registrácii alebo aktualizácii profilu sa skontroluje e-mailová adresa, s výnimkou situácii, kedy akciu vykonal administrátor.
              • + +
              • Poslať e-mail administrátorovi pri registrácii nového užívateľa: na každú novú registráciu užívateľa budú upozornení administrátori.
              • + +
              • Východzie poradie fotografií: výberom z drop-menu môžete určiť prispôsobené poradie.
              • +
              + +

              História

              + +

              Návšteva stránok category.php a picture.php bude uložená v tabuľke história.

              + +

              Návštevy se zobrazujú v menu:Administrácia, Nástroje, História.

              + +
                +
              • Ukladať stránky navštívené hosťami: uložia se návštevy hosťov.
              • + +
              • Ukladať stránky navštívené užívateľmi: uložia se návštevy registrovaných užívateľov.
              • + +
              • Ukládať stránky navštívené administrátormi: uložia se stránky navštívené administrátormi.
              • + +
              + +

              Komentáre

              + +
                + +
              • Komentáre pre všetkých: Aj neregistrovaný užívateľ môže zanechať komentár.
              • + +
              • Počet komentárov na stránke.
              • + +
              • Schválenie: Pred zobrazením na stránke musí byť každý komentár schválený administrátorom. Schvaľovanie komentárov sa vykonáva v menuAdministrácia, Nástroje, Komentáre na schválenie.
              • + +
              • Poslať e-mail administrátorovi pri vložení nového komentára: +Pokiaľ je zadaný komentár, ktorý nevyžaduje schválenie, pošle se administrátorovi email.
              • + +
              • Poslať e-mail administrátorovi pri vložení nového komentáře vyžadujúceho schválenie.: +Pokiaľ je odoslaný komentár, ktorý vyžaduje schválenie, pošle se administrátorovi email. +Schvaľování komentárov možno vykonať v menu: Administrácia, Nástroje, Komentáre na schválenie.
              • + +
              + +

              Východzie nastavenie

              + +

              Tu sa nastavuje východzie nastavenie pre hosťov a neprihlásených užívateľov. Po prihlásení sa prestavia podľa vlastných nastavení užívateľa +(nastaviteľné v profil).

              + +

              Je možné zmeniť nastavenie zobrazenie pre všetkých existujúcich užívateľov v Administrácia, +Užívatelia, Správa: kde je možné vybrať zoznam užívateľov.

              + +
                + + +
              • Jazyk: týka sa iba Piwigo popisiek. Názvy kategórii, názvy obrázkov a všetky popisy nie sú lokalizované.
              • + +
              • Počet fotografií v riadku
              • + +
              • Počet riadkov na stránke
              • + +
              • Vzhľad užívatelského rozhrania
              • + +
              • Čas, počas ktorého sú fotografie zobrazené ako novo pridané: V dňoch. Musí byť väčší než jeden deň.
              • + +
              • Rozbaliť všetky albumy: Rozbalí všetky albumy. UPOZORNENIE: táto voľba je náročná na systémové zdroje a pokiaľ strom albumov obsahuje veľké množstvo položiek, môže vygenerovať rozsiahle menu.
              • + +
              • Zobraziť počet komentárov: Na stránke s náhľadmi zobrazí počet komentárov u každého obrázku. Spomaľuje systém.
              • + +
              • Ukázať počet zobrazení: zobrazí počet návštěv priamo pod náhľaom obrázku. Voľba je funkčná iba ak je nastavený rozšířený konfiguračný parametr:
                + $conf['show_nb_hits'] = true;
                + poznámka: východzia hodnota je false.
              • + +
              • Maximálna šířka fotografií: maximálna zobrazená šírka. Obrázky, ktoré sú väčšie, sa zmenšia. Je lepšie rovno obrázky pred nahratím zmenšiť, než používať túto voľbu.
              • + +
              • Maximálna výška fotografií: maximálna zobrazená výška. To isté platí aj pre výšku.
              • + +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/extend_for_templates.html b/sources/language/sk_SK/help/extend_for_templates.html new file mode 100755 index 0000000..2661c44 --- /dev/null +++ b/sources/language/sk_SK/help/extend_for_templates.html @@ -0,0 +1,55 @@ +

              Konfigurácia rozšírenia šablóny

              + +

              O čom je

              +

              Vaša Piwigo galéria sa dá prispôsobiť tým, že nahradíte existujúce súbory šablóny upravenými verziami. Napr. defaultná šablóna hlavičky (header.tpl) sa dá nahradiť upravenou šablónou hlavičky (my-header.tpl). +Po odoslaní zmien do databázy sa galéria zobrazí s upravenou hlavičkou namiesto originálnej hlavičky.
              +Rozšírenia šablóny sú mocným nástrojom ako vytvoriť upravené témy aj pre nových aj pre pokročilých užívateľov. Pri použití spolu s LocalFiles Editor dokážete vytvoriť svoje vlastné child témy.

              + +

              Originálna šablóna

              +

              Téma obsahuje množstvo súborov šablóny, ktoré vytvárajú stránky galérie. To sú originálne (pôvodné) šablóny.

              + +

              Voliteľné kľúčové URL slovo

              +

              Toto sú slová, ktorá sa nachádzajú v URL galérie po názve modulu. Tiež to môžu byť aktívne trvalé odkazy (Pre viac informácii pozrite dokumentáciu k trvalým odkazom). VAROVANIE: +Ak je na viac než na jednej upravenej šablóne použitá tá istá originálna šablóna a to isté URL kľúčové slovo, je aktívne len to posledné.

              + +

              Zviazaná téma

              +

              Zviazaná (prepojená) téma je téma, z ktorej sú nahradzované súbory šablóny.

              + +

              Kde sa nachádzajú originálne šablóny?

              +

              Originálne šablóny sú súbory šablony, ktoré sú dodávané s každou témou. Sú uložené v /themes/default/template +(or themes//template). Tieto súbory by sa nemali editovať, aby ste neprišli o zmeny pri ďalšej aktualizácii.
              +Podporované originálne šablóny zahŕňajú:

              +
                +
              • index.tpl
              • +
              • mainpage_categories.tpl and/or thumbnails.tpl
              • +
              • menubar.tpl
              • +
              • header.tpl and/or footer.tpl
              • +
              • picture_content.tpl and/or picture.tpl
              • + +
              • profile.tpl and/or profile_content.tpl
              • +
              • tags.tpl
              • +
              • upload.tpl
              • +
              • about.tpl
              • +
              • popuphelp.tpl
              • +
              • search.tpl and/or search_rules.tpl
              • +
              • nbm.tpl and/or notification.tpl
              • +
              • identification.tpl and/or register.tpl
              • +
              • redirect.tpl
              • +
              +

              Uloženie upravených šablón

              +

              Upravené šablóny by mali byť uložené v sdresári template-extension alebo podadresároch. Napríklad, /template-extension/my-default/header.tpl (alebo /template-extension//header.tpl) +Súbory šablónu môžu mať akýkoľvek názov s koncovkou .tpl. Súbory šablóny v podadresároch sa zobrazia v okne Konfigurácia šablóny ako dostupné custom šablóny.

              +

              Aktivácia upravených šablón

              +

              Zvoľte originálnu šablónu, ktorú chcete nahradiť. Voliteľne zvoľne kľúčové URL slovo, aby ste sa uistili, že sa upravená šablóna zobrazí len na stránkach s týmto slovom. Zvoľte spojenú tému a zmeny budú účinné v tejto téme.Odošlite zmeny do databázy.

              +

              Deaktivácia upravených šablón

              +

              Zrušte výber pôvodnej šablóny a odošli zmeny do databázy.
              +Vymažte upravené šablóny z adresára template-extension.

              + + +

              Varovania

              +
                +
              • Originálna šablóna musí byť originálna šablóna, inak môžete dosiahnuť neočakávané výsledky.
              • +
              • Ak je na viac než na jednej upravenej šablóne použitá tá istá originálna šablóna a to isté URL kľúčové slovo, je aktívne len to posledné.
              • +
              • Distribuované príklady súborov šablón sú len na testovacie účely. Nemeňte ich. Vytvorte si svoje vlastné alebo skopírujte existujúce súbory z témy do /template-extension//
              • +
              • Keď sa vymaže upravená šablóna, okamžite sa znova aktivuje originálny súbor šablóny.
              • +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/group_list.html b/sources/language/sk_SK/help/group_list.html new file mode 100755 index 0000000..f610946 --- /dev/null +++ b/sources/language/sk_SK/help/group_list.html @@ -0,0 +1,21 @@ +

              Skupiny

              + +

              Na tomto mieste sa spravujú skupiny užívateľov.

              + +

              Pridať skupinu

              + +

              Skupinu môžu pridať administrátori.

              + +

              Zoznam skupín

              + +

              Pre každú skupinu je možné vykonať nasledovné akcie:

              + +
                +
              • prejsť na zoznam užívateľov
              • +
              • prejsť na administráciu užívateľských oprávnení
              • +
              • vymazať skupinu (vyžaduje potvrdenie)
              • +
              • nastaviť ako východziu (vyžaduje potvrdenie)
              • +
              + +

              Východzie skupiny

              +

              Východzia skupina je automaticky priradená k novému užívateľovi po jeho registrácii alebo po pridaní administrátorom.

              \ No newline at end of file diff --git a/sources/language/sk_SK/help/help_add_photos.html b/sources/language/sk_SK/help/help_add_photos.html new file mode 100644 index 0000000..5c12978 --- /dev/null +++ b/sources/language/sk_SK/help/help_add_photos.html @@ -0,0 +1,22 @@ +

              Existuje niekoľko možností ako pridať fotografie do Vašej Piwigo galérie:

              + +
                +
              • priame nahranie vo Vašom web prehliadači je najjednoduchšia a najpriamejšia cesta. Záleží na možnostiach Vašeho prehliadača a Vašeho web servera. + Pre nahranie veľkého množstva fotografií, alebo v prípade, že tento spôsob sklame, sú tu ďalšie možnosti.
              • +
              + + + +
                +
              • pLoader je aplikácia, ktorú musíte nainštalovať na Váš počítač. Pretiahnite fotografie do okna pLoader, kliknite na "Upload to Piwigo" a nechajte pLoader nahrať fotografie na server. Existujú taktiež ďalšie aplikácie ako WinToPiwigo, alebo Digikam, doplnok pre nahrávanie fotografií do Piwigo.
              • +
              + + + +
              +
                +
              • FTP prenos je najviac odporúčaná cesta, ako nahrať veľké množstvo fotografií s minimálnym úsilím. Nasledujte návod, ako pripraviť Vaše fotografie. Táto metóda Vám dáva možnosť presne riadiť usporiadanie Vašich fotografií na Vašom serveri.
              • +
              + + +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/help_groups.html b/sources/language/sk_SK/help/help_groups.html new file mode 100644 index 0000000..8f360ac --- /dev/null +++ b/sources/language/sk_SK/help/help_groups.html @@ -0,0 +1,8 @@ +

              Skupiny predstavujú spôsob ako nastaviť rovnaké oprávnenia pre viacero používateľov.

              + +

              Vytvorte skupinu pomocou Administrácia » Používatelia » Skupiny a priraďte používateľov do tejto skupiny pomocou +Administrácie » Používatelia » +Správa.

              + +

              Používateľ môže patriť do viacerých skupín. Používateľ potom získava práva súčtom práv všetkých týchto skupín: pokiaľ používateľ "janko" patrí do skupín "rodina" aj "priatelia" a len "rodina" má oprávnenie na kategóriu "Vianoce", tak +"janko" kategóriu "Vianoce" uvidí.

              diff --git a/sources/language/sk_SK/help/help_misc.html b/sources/language/sk_SK/help/help_misc.html new file mode 100644 index 0000000..bbde439 --- /dev/null +++ b/sources/language/sk_SK/help/help_misc.html @@ -0,0 +1,9 @@ +

              Akonáhle ste vytvorili Vašu galériu, môžete ju nakonfigurovať pre Vašich návštevníkov. +

                +
              • Predvolené zobrazenie ako chcete v Administrácia » Konfigurácia » Možnosti tab Nastavenie návštevníka
              • +
              • Predvolený motív v Administrácia » Konfigurácia » Motívy
              • +
              • Predvolený jazyk v Administrácia » Konfigurácia » Jazyky
              • +
              +Štandardne každý nový používateľ bude mať tieto základné nastavenia po registrácii. +

              +

              Ak máte nejaké otázky, Piwigo komunita Vás rada privíta na jej fórume.

              \ No newline at end of file diff --git a/sources/language/sk_SK/help/help_permissions.html b/sources/language/sk_SK/help/help_permissions.html new file mode 100644 index 0000000..90a48f9 --- /dev/null +++ b/sources/language/sk_SK/help/help_permissions.html @@ -0,0 +1,54 @@ +
              +Oprávnenia na fotografiách + +

              Každá fotografia má úroveň súkromia (zámok). Každý používateľ má úroveň prístupu (kľúč). Existuje 5 úrovní:

              +
                +
              1. Žiadna
              2. +
              3. Kontakty
              4. +
              5. Priatelia (vyššia ako kontakty)
              6. +
              7. Rodina (vyššia ako priatelia)
              8. +
              9. Adminstrátori (nejvyššia)
              10. +
              + +

              Vyššie úrovne majú oprávnenia na nižšie úrovne. Pre daného upoužívateľa to znamená, že čím vyššiu úroveň prístupu má, tým viac fotografií vidí.

              + +

              Napríklad, pokiaľ fotografie "svatba-0011.jpg" má úroveň súkromia "Rodina" tak:

              +
                +
              • Peter (ktorý je "Administrátor") ju uvidí, protože "Administrátori" môžu vidieť všetky fotografie
              • +
              • Barbora (ktorá je "Rodina") tiež uvidí
              • +
              • Mária (ktorá je len "Priateľ") ale fotografiu neuvidí
              • +
              + +

              Používateľ, ktorý nemá právo vidieť obsah kategórie, neuvidí ani kategóriu ako takú a teda ani jej názov. Rovnaký princíp platí pre kľúčové slová.

              + +

              Úroveň prístupu (kľúč) môžete nastaviť na obrazovke Administrácia » Používatelia » Správa.

              + +
              + +
              +Oprávnenia na kategóriach + +

              Pokiaľ Vám vyššie popísané úrovne súkromia nevyhovujú, môžete tiež spravovať oprávnenia pre používateľov a pre skupiny. Môžete spravovať oprávnenia pre používateľov aj pre skupiny naraz, bez rizika, že by došlo ku konfliktom.

              + +

              Môžete zakázať prístup do kategórií. Prepnite prístup do kategórie na +"súkromný" pokiaľ chcete riadiť prístup.

              + +

              Môžete nastaviť prístup do kategórie na "súkromný" pri editácii jednej kategórie (Administrácia » Kategória » Správa +» editovať), alebo nastavením vlastností pre celý strom kategórií +(Administrácia » Kategórie » +Vlastnosti » Verejná / Súkromná).

              + +

              Keď je prístup do kategórie nastavený na "súkromný", môžete riadiť prístup pre skupiny a používateľov na troch obrazovkách:

              + +
                + +
              • Administrácia » Používatelia » Správa » + akcia oprávnenia
              • + +
              • Administrácia » Používatelia » Skupiny » + akcia oprávnenia
              • + +
              • Administrácia » Kategória » Správa » editovať
              • + +
              +
              diff --git a/sources/language/sk_SK/help/help_virtual_links.html b/sources/language/sk_SK/help/help_virtual_links.html new file mode 100644 index 0000000..41e05ce --- /dev/null +++ b/sources/language/sk_SK/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

              Fotografie sú zobrazené v kategórii, ktorá zodpovedá adresáru, v ktorom sú uložené.

              + +

              Môžete ale tiež zobraziť rovnakú fotografiu vo viacerých kategóriách bez toho, že by museli byť uložené na servri viackrát. urobíte to tak, že spojíte fotografiu s akoukoľvek inou kategóriou pomocou obrazovky Upraviť informácie o fotografii, ktorú môže administrátor vyvolať zo stránky zobrazenia fotografie.

              + +

              Virtuálne kategórie sú založené na tomto koncepte: nemajú žiaden odpovedajúci adresá na servri. Virtuálne kategórie môžete vytvoriť pomocou Administrácia » Kategória » +Správa.

              diff --git a/sources/language/sk_SK/help/history.html b/sources/language/sk_SK/help/history.html new file mode 100755 index 0000000..cc5ecd5 --- /dev/null +++ b/sources/language/sk_SK/help/history.html @@ -0,0 +1,31 @@ +

              História

              + +

              V týchto oknách môžete sledovať históriu návštev vašej galérie v závislosti na zvolených možnostiach v: Administrácii, Konfigurácii, Možnosti, História

              +

              Štatistiky

              +
                +

                Ak ste nastavili zaznamenávanie navštívených stránok (index.php a picture.php), môžete ich sledovať na tomto tabu.

                + +
              • Celkové štatistky: návštevy za rok.
              • + +
              • Ročné štatistiky: návštevnosť po mesiacoch vo zvolenom roku.
              • + +
              • Mesačné štatistiky: denná návštevnosť v jednotlivých dňoch zvoleného mesiaca.
              • + +
              • Denné štatistiky: návštevnosť po hodinách počas zvoleného dňa.
              • + +
              + +

              Vyhľadávanie

              +
                +

                Ak ste nastavili zaznamenávanie navštívených stránok(index.php a picture.php), môžete prechádzať detaily z tohto tabu pomocou rôznych filtrov.

                + +
              • Filter podľa dátumu: vyberte časové rozpätie, v ktorom chcete sledovať aktivitu na stránkách.
              • + +
              • Filter podľa typu položky: vyberte typ položky, u kterej chcete sledovať dianie na stránke.
              • + +
              • Filter podľa užívateľa: vyberte užívateľa,u ktorého vás zaujímajú jeho navštívené stránky.
              • + +
              • Filter podľa názvu súboru: zvoľte méno súboru, ktorého návštevnosť vás zaujíma.
              • + +
              • Filter podľa ID fotografie: zadajte ID fotografie, ktorú chcete sledova5.
              • +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/index.php b/sources/language/sk_SK/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/sk_SK/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/sk_SK/help/maintenance.html b/sources/language/sk_SK/help/maintenance.html new file mode 100755 index 0000000..9b3c996 --- /dev/null +++ b/sources/language/sk_SK/help/maintenance.html @@ -0,0 +1,32 @@ +

              Údržba

              + +

              Pre optimalizáciu času generovania stránok využívá Piwigo informácie uložené v medzipaměti. Napríklad, miesto zisťovania počtu fotografií, ktoré albumy obsahujú, pri každom nahratí stránky, je táto informácia uložena v databáze. +Teoreticky by táto informácia mala býť vždy správna, avšak občas môže dojsť k chybe a informácia uložená v databáze je zastaralá.

              + +

              Niektoré informácie sa po čase stanú nepotrebnými. Vymazanie týchto zbytočných informácii z databázy uvoľní miesto na disku.

              + +
                +
              • Vymazať opustené (nepriradené) tagy
              • +
              +
                +
              • Aktualizovať informácie albumov: + Pre každý album sa kontrolujú nasledovné informácie a aktualizujú sa, ak je to potrebné: zoznam rodičovských albumov, počet fotiek, posledný dátum fotografie, + pozícia medzi sesterskými albumami, pozícia medzi všetkými albumami. Táto akcia taktiež kontroluje konzistenciu reprezentatívnych fotografii.
              • +
              • Aktualizovať informácie fotiek: Pre každú fotografiu sa aktualizujú informácie: plná cesta k súboru, priemerné hodnotenie. + Varovanie, nezameňte si to: Informácie metadát musia byť synchronizované z Administrácia, Nástroje, Synchronizácia, + alebo na stránke úprav jednotlivých fotografií (cez Photo napríklad).
              • +
              +
                +
              • Opraviť a optimalizovať databázu:Vykoná operácie: Opätovné zoradenie, oprava a optimalizácie na každej tabuľke v databáze.
              • +
              • Znovu spustiť kontrolu integrity
              • +
              + +
                +
              • Vykonať údržbu detailov histórie: Vymaže všetky riadky z tabuľky histórie. Okno Administrácia » Nástroje + » História potom nezobrazí žiadne informácie ohľadne histórie. Varovanie: všetky dáta(história a štatistiky) budú NENÁVRATNE zmazané!
              • +
              • Vykonať údržbu celej histórie: Vymaže všetky sumárne informácie o histórii návštev. Tento sumár je počítaný z detailov histórie.
              • +
              • Vykonať údržbu relácii:Vymaže expirované užívateľské sessions.
              • +
              • Vykonať údržbu nepoužitých RSS vlákien
              • +
              • Vykonať údržbu histórie hľadaní
              • +
              • Vykonať údržbu kompilovaných šablón
              • +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/notification_by_mail.html b/sources/language/sk_SK/help/notification_by_mail.html new file mode 100755 index 0000000..72a8f16 --- /dev/null +++ b/sources/language/sk_SK/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

              Emailové upozornenia

              + +

              Konfigurácia a správa notifikácii emailom, ktoré upozorňujú užívateľov na zmeny na vašej stránke.

              + +

              K dipozícii sú tieto tri záložky:

              + +

              Parametre

              +

              Dostupné len pre webmasterov. Slúži k nastaveniu parametrov upozorňovacích mailov

              + +

              Prihlasenie k odberu

              +

              Dostupné len pre webmasterov. Umožní pridať alebo odobrať užívateľ zo zoznamu príjemncov emailu.

              + +

              Odoslanie

              +

              Dostupné pro webmasterov a administrátorov. Slúži k odosielaniu upozorňovacích mailov.

              \ No newline at end of file diff --git a/sources/language/sk_SK/help/permalinks.html b/sources/language/sk_SK/help/permalinks.html new file mode 100755 index 0000000..93de1a3 --- /dev/null +++ b/sources/language/sk_SK/help/permalinks.html @@ -0,0 +1,8 @@ +

              Trvalé odkazy

              + +

              Trvalé odkazy slúžia na to, aby URL jednotlivých albumov vyzerali lepšie . Po definovaní trvalých odkazov už nie je nutné mať ID kategórie v URL.

              + +

              Keď sa trvalý odkaz vymaže, môžete ho uložiť do histórie trvalých odkazov, takže externé linky k stránkam Piwigo budú stále fungovať. +V tabuľke histórie trvalých odkazov je zobrazené dátum vymazania linku, čas posledného použitia a počet použití.

              + +

              Všimnite si, že každý album musí mať unikátny názov trvalého odkazu. Rovnako nie je možné uložiť do histórie rovnaký link viac než raz.

              \ No newline at end of file diff --git a/sources/language/sk_SK/help/photos_add_ftp.html b/sources/language/sk_SK/help/photos_add_ftp.html new file mode 100644 index 0000000..5130063 --- /dev/null +++ b/sources/language/sk_SK/help/photos_add_ftp.html @@ -0,0 +1,102 @@ +
              + Rýchly návod + +
                +
              1. Vytvorte kategóriu (adresár) na Vašom počítači.
              2. + +
              3. Skopírujte nejaké fotografie do tohto adresára, zmeňte ich veľkosť pre zobrazenie na webe. Varovanie: názvy adresárov a súborov musia obsahovať len písmena, čísla, "-", "_" alebo ".". Žiadne medzery alebo znaky s diakritikou.
              4. + +
              5. Pomocou FTP skopírujte Váš adresár do adresára "galleries" vašej inštalácie Piwigo.
              6. + +
              7. Prihláste sa do Vašej Piwigo galérie a prejdite na Administrácia » Nástroje » Náhľady aby ste vytvorili chýbajúce náhľady.
              8. + +
              9. Choďte na Adminstrácia a stlačte veľké tlačidlo Rýchla miestna synchronizácia.
              10. +
              + +Gratulujeme! Práve ste vytvorili vašu prvú galériu fotografií vo Vašej Piwigo galérii. +
              + +
              + Organizácia súborov a adresárov + +
                + +
              • + +

                Adresáre kategórií sú v Piwigo adresári + "galleries". Tu je ukážka malej adresárovej štruktúry Piwigo (ktorá ale využívá veľa vlastností Piwigo):

                + +
                +.
                +|-- admin
                +|-- doc
                +|-- galleries
                +|   |-- kategoria-1
                +|   |   |-- kategoria-1.1
                +|   |   |   |-- kategoria-1.1.1
                +|   |   |   |   |-- kategoria-1.1.1.1
                +|   |   |   |   |   |-- pwg_high
                +|   |   |   |   |   |   +-- svatba.jpg
                +|   |   |   |   |   |-- thumbnail
                +|   |   |   |   |   |   +-- TN-svatba.jpg
                +|   |   |   |   |   +-- svatba.jpg
                +|   |   |   |   +-- kategoria-1.1.1.2
                +|   |   |   +-- kategoria-1.1.2
                +|   |   |-- kategoria-1.2
                +|   |   |   |-- slon.jpg
                +|   |   |   +-- thumbnail
                +|   |   |       +-- TN-slon.jpg
                +|   |   +-- kategoria-1.3
                +|   +-- kategoria-2
                +|       |-- teliatko.gif
                +|       |-- pwg_representative
                +|       |   +-- video.jpg
                +|       |-- thumbnail
                +|       |   +-- TN-teliatko.jpg
                +|       +-- video.avi
                +|-- include
                +|-- install
                +|-- language
                +|-- template
                ++-- tool
                + +
              • + +
              • Okrem adresárov pomenovaných "thumbnail", "pwg_high" alebo "pwg_representative" (čítajte vysvetlenie nižšie), každý adresár v "galleries" vytvorí kategóriu. Nie je tu omedzenie hĺbky adresárov.
              • + +
              • Každý element kategórie je reprezentovaný súborom. Súbor môže byť elementom Piwigo pokiaľ jeho prípona odpovedá parametru konfigurácie file_ext + (viz. súbor include/config_default.inc.php). Súbor môže byť obrázok (fotografia) ak jeho prípona je uvedená v parametri picture_ext.
              • + +
              • Obrázky musia mať priradený náhľad (viz. sekcia o náhľadoch nižšie)
              • + +
              • Obrázky môžu mať priradenú verziu vo vysokej kvalite. Ako napríklad svatba.jpg v príklade vyššie. Verzia vo vysokej kvalite nemá, na rozdiel od náhľadu, žiaden prefix v názve.
              • + +
              • Elementy, ktoré nie sú obrázky (video, zvuk, textové súbory, čokoľvek chcete...) majú ako východzí náhľad ikonu, ktorá odpovedá ich prípone. Voliteľne môžete priradiť náhľad a reprezentatívny súbor (viď. video.avi v príklade vyššie).
              • + +
              • Varovanie: názvy adresárov a súborov musia obsahovať len písmená, čísla, "-", "_" alebo ".". Žiadne medzery alebo znaky s diakritikou.
              • + +
              • Keď sú elementy, obrázky, náhľady a reprezentatívne súbory umiestnené v adresárovej štruktúre, prejdite na: Administrácia » Kategória » + Synchronizácia
              • + +
              +
              + +
              + Náhľady +
                + +
              • Všetky obrázky (fotografie) musia mať priradený náhľad.
              • + +
              • Náhľady sú umiestnené v podadresári "thumbnail", ktorý je v adresári kategórie. Náhľad má rovnaký názov ako jemu odpovídajúci obrázok s prefixom podľa konfiguračného parametra prefix_thumbnail (viď. include/config.inc.php).
              • + +
              • Náhľad nemusí mať nutne rovnakú príponu ako jemu odpovedajúcí obrázok (napríklad ".jpg", obrázok môže mať náhľad s ".GIF" príponou).
              • + +
              • Odporúčame použiť externú aplikáciu pre tvorbu náhľadov.
              • + +
              • Vytváranie náhľadov pomocou Piwigo môže viesť k zlej kvalite vytvorených náhľadov, protože tá závisí na zdrojoch servra (a toto môže byť na zdielaných servroch (webhosting) problém). + +
              • Pokiaľ budete aj tak vytvárať náhľady pomocou Piwigo na servri, tak musíte povoliť prístup pre zápis do všetkých adresárov "galleries" a všetkých podadresárov.
              • + +
              +
              diff --git a/sources/language/sk_SK/help/search.html b/sources/language/sk_SK/help/search.html new file mode 100755 index 0000000..e04bf05 --- /dev/null +++ b/sources/language/sk_SK/help/search.html @@ -0,0 +1,19 @@ +

              Vyhľadávanie

              + +

              Táto stránka umožňuje vyhľadávať obrázky z celej galérie.

              + +
              + +
              Vyhľadávanie podľa zadaných slov
              +
              Vyhľadávanie jedného alebo viac slov podľa atribútu priradeného k obrázku v galérii. Pre vyhľadávanie slov s čiastočnou zhodou je možné použiť * ako zástupný znak.
              + +
              Vyhľadávanie podľa autora
              +
              Pre čiastočnú zhodu použite * ako zástupný znak.
              + +
              Vyhľadávanie podľa dátumu
              +
              Vyberte počiatočný a/alebo koncový dátum. Pole ponechajte prázdne, ak chcete vyhľadávať "doteraz". Rok v poslednom poli musí by v nasledujúcom tvare : RRRR (napr. 2004)
              + +
              Vyhľadávanie v albumoch
              +
              Vyberte jeden či viac albumov, v ktorých chcete vyhľadávať. Vo všetkých podalbumoch sa dá vyhľadávať výberom rodičovského albumu a nastavením voľby "prehľadávať aj podalbumy".
              + +
              \ No newline at end of file diff --git a/sources/language/sk_SK/help/synchronize.html b/sources/language/sk_SK/help/synchronize.html new file mode 100755 index 0000000..4df820f --- /dev/null +++ b/sources/language/sk_SK/help/synchronize.html @@ -0,0 +1,14 @@ +

              Synchronizácia

              + +

              Existujú dve rôzne typy synchronizácie:

              +
                +
              • adresáre/soubory
              • +
              • metadáta súboru
              • +
              + +

              Synchronizácia adresárov a súborov slúži k aktualizácii vášho stromu adresárov so stromom albumov v databáze. +Synchronizácia súborových metadát slúži k aktualizácii informácii o fotografii, napr. veľkosť súboru, rozmery v pixeloch, EXIF či IPTC informácii v databáze.

              + +

              Keď synchronizujete svoje nahrávky s vašou galériou, najprv musíte synchronizovať adresáre a súbory.

              + +

              Synchronizácia môže trvať nejaký čas (závisí od zaťaženia a rýchlosti servera a počtu položiek, ktoré treba zvládnuť, takže je možné robiť ju album po albume).

              diff --git a/sources/language/sk_SK/help/user_list.html b/sources/language/sk_SK/help/user_list.html new file mode 100755 index 0000000..e549b06 --- /dev/null +++ b/sources/language/sk_SK/help/user_list.html @@ -0,0 +1,26 @@ +

              Zoznam užívateľov

              + +

              Na tomto mieste môžete spravovať užívateľov vašej Piwigo galérie.

              + +

              Pridať užívateľa

              + +

              Administrátor môže pridať užívateľa ručne. Pre každého užívateľa vytvorte užívateľské meno, heslo a odošlite platnú emailovú adresu

              + +

              Zoznam užívateľov

              + +

              Zoznam užívateľov je možné filtrovať podľa užívateľského mena (použite * pre čiastočnú zhodu), skupiny alebo stavu. +Výpis môžete nechať zoradiť podľa dátumu registrácie, vo vzostupnom alebo zostupnom poradí.

              + +

              Tu je možné editovať niekoľko užívateľov naraz. Môžete použiť tieto akcie:

              + +
                + +
              • zmazanie užívateľov (vyžaduje potvrdenie)
              • +
              • zmena stavu užívateľa
              • +
              • zaradenie alebo vyradenie zo skupiny
              • +
              • úprava vlastností zobrazenia
              • +
              • úprava dodatočných vlastností
              • + +
              + +

              Cieľom je vybraný užívateľ (východzie nastavenie) alebo všetci užívatelia zobrazení po použití filtra.

              \ No newline at end of file diff --git a/sources/language/sk_SK/index.php b/sources/language/sk_SK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/sk_SK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/sk_SK/install.lang.php b/sources/language/sk_SK/install.lang.php new file mode 100644 index 0000000..fc898ee --- /dev/null +++ b/sources/language/sk_SK/install.lang.php @@ -0,0 +1,72 @@ +Piwigo message board.'] = 'Potrebujete pomoc? Opýtajte sa na Piwigo fóre.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Návštevníci môžu pomocou tohto e-mailu kontaktovať správcu'; +$lang['PHP 5 is required'] = 'Je nutné PHP 5'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Na Vašom webhostingu je PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo sa môže pokúsiť zmeniť Vaše nastavenie na PHP 5 tým, že vytvorí alebo zmení súbor .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Prípadne môžete zmeniť Vašu konfiguráciu sami a potom reštartovať Piwigo.'; +$lang['Try to configure PHP 5'] = 'Pokúste sa zmeniť Vaše nastavenie na PHP 5'; +$lang['Sorry!'] = 'Bohužiaľ!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo nebolo schopné zmeniť Vaše nastavenie na PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Obráďte sa na poskytovateľa Vašeho webhostingu, aby ste zistili, ako môžete zmeniť Vaše nastavenie na PHP 5.'; +$lang['Hope to see you back soon.'] = 'Veríme, že sa čoskoro uvidíme.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulujeme, Piwigo inštalácia je ukončená'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Náhradným riešením je skopírovať text z boxu vyššie a vložiť ho do súboru "local/config/database.inc.php" (Upozornenie: súbor database.inc.php môže obsahovať len to, čo je v tomto boxe, žiadne znaky odriadkovania alebo medzery)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Vytvorenie súboru local/config/database.inc.php sa nepodarilo.'; +$lang['Download the config file'] = 'Stiahnuť konfiguračný súbor'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Môžete stiahnuť konfiguračný súbor a nahrať ho do adresára local/config Vašej inštalácie.'; +$lang['Just another Piwigo gallery'] = 'Len iná Piwigo galéria'; +$lang['Welcome to my photo gallery'] = 'Vitajte v mojej foto galérii'; +$lang['Welcome to your new installation of Piwigo!'] = 'Vitajte vo Vašej novej inštalácii Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Neváhajte konzultovať na našom fóre každú pomoc: %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost alebo iné, obdržíte od poskytovateľa hostu'; +?> \ No newline at end of file diff --git a/sources/language/sk_SK/iso.txt b/sources/language/sk_SK/iso.txt new file mode 100644 index 0000000..d10f2ca --- /dev/null +++ b/sources/language/sk_SK/iso.txt @@ -0,0 +1 @@ +Slovensky [SK] \ No newline at end of file diff --git a/sources/language/sk_SK/sk_SK.jpg b/sources/language/sk_SK/sk_SK.jpg new file mode 100644 index 0000000..75db966 Binary files /dev/null and b/sources/language/sk_SK/sk_SK.jpg differ diff --git a/sources/language/sk_SK/upgrade.lang.php b/sources/language/sk_SK/upgrade.lang.php new file mode 100644 index 0000000..21f2122 --- /dev/null +++ b/sources/language/sk_SK/upgrade.lang.php @@ -0,0 +1,46 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Vykonanie kontroly údržby v [Administrácia>Nástroje>Údržba] ak narazíte na problém.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Len administrátor môže spustiť aktualizáciu: prosím prihláste sa nižšie.'; +$lang['You do not have access rights to run upgrade'] = 'Nemáte prístupové práva na spustenie aktualizácie'; +$lang['All sub-albums of private albums become private'] = 'Všetky subalbumy súkromných albumov budú súkromné'; +$lang['User permissions and group permissions have been erased'] = 'Používateľské oprávnenia a oprávnenia skupín boli vymazané'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Z predchádzajúcej konfigurárie boli zachované len predpony náhľadov a mailová adresa webmastra.'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Navrhujeme aktualizovať databázu Vašej galérie Piwigo zo staršej na novú verziu. +Asistent aktualizácie sa domnieva, že aktuálne používate verziu %s (alebo obdobnú).'; +$lang['In %s, before ?>, insert:'] = 'V %s, pred ?>, vložte:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Z opatrnosti boli nasledovné témy deaktivované. Musíte skontrolovať aktualizácie tém pred ich reaktiváciou:'; + +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Ako predbežné opatrenie boli deaktivované nasledujúce doplnky. Prosím skontrolujte aktualizácie týchto doplnkov predtým, než ich znovu aktivujete:'; +?> \ No newline at end of file diff --git a/sources/language/sl_SI/about.html b/sources/language/sl_SI/about.html new file mode 100644 index 0000000..dab4fe2 --- /dev/null +++ b/sources/language/sl_SI/about.html @@ -0,0 +1,18 @@ +

              Piwigo foto galerija

              + +

              Piwigo je spletna foto galerija, zgrajena s pomočjo aktivne skupnosti uporabnikov in razvijalcev. + Piwigo je možno preko razširitev na hiter in enostaven način prilagoditi vašim zahtevam. + Piwigo je odprto kodni projekt in je brezplačen.

              + +

              Obiščite Piwigo spletno stran

              + + +

              Slovenski prevod vzdržujejo (v abecednem vrstnem redu ): + +

              + .... zahvala vsem

              diff --git a/sources/language/sl_SI/admin.lang.php b/sources/language/sl_SI/admin.lang.php new file mode 100644 index 0000000..8eb01d2 --- /dev/null +++ b/sources/language/sl_SI/admin.lang.php @@ -0,0 +1,974 @@ +Click here to show log error.'] = 'Med razširjanjem je prišlo do napake. Prosimo preverite pravice datotek vaše piwigo namestitve.
              Prikaži dnevnik napak.'; +$lang['An error has occured during upgrade.'] = 'Med nadgradnjo je prišlo do napake .'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Približna maksimalna resolucija: %dM pik (to je %dx%d pik).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = ' Privzeto bo Piwigo ustvaril nove spletne slike iz vaših slik visoke ločljivosti.'; +$lang['Can\'t connect to server.'] = 'Ne morem vzpostaviti povezave s strežnikom.'; +$lang['Can\'t create temporary file.'] = 'Ne morem ustvariti začasne datoteke.'; +$lang['Check all'] = 'Preveri vse'; +$lang['Choose an action'] = 'Izberi dejanje'; +$lang['Create'] = 'Ustvari'; +$lang['created'] = 'ustvarjeno'; +$lang['%d days'] = '%d dnevi'; +$lang['%d hour'] = '%d ura'; +$lang['%d hours'] = '%d ure'; +$lang['%d minute'] = '%d minuta'; +$lang['%d minutes'] = '%d minute'; +$lang['%d second'] = '%d sekunda'; +$lang['%d seconds'] = '%d sekunde'; +$lang['Database'] = 'Podatkovna baza'; +$lang['Date'] = 'Datum'; +$lang['Day'] = 'Dan'; +$lang['Deactivate all'] = 'Deaktiviraj vse'; +$lang['Deactivate'] = 'Deaktiviraj'; +$lang['Detailed informations'] = 'Podrobne informacije'; +$lang['Directory does not exist'] = 'Imenik ne obstaja'; +$lang['Directory'] = 'Imenik'; +$lang['Documentation'] = 'Dokumentacija'; +$lang['Drop into album'] = 'Izberi album'; +$lang['Edit album'] = 'Uredi album'; +$lang['default values'] = 'privzete vrednosti'; +$lang['default'] = 'privzeto'; +$lang['directories + files'] = 'imeniki + datoteke'; +$lang['display'] = 'prikaz'; +$lang['Added by %s'] = 'Dodal'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom je program, ki je namenjen upravljanju velikega števila digitalnih fotografij ter za kasnejše urejanje.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture je zmogljivo orodje za izboljšavo fotografij in za upravljanje velikih knjižnic na Mac sistemih'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture je namenjen profesionalnim fotografom hkrati pa vsebuje iPhoto preprostost'; +$lang['Applications'] = 'Aplikacije'; +$lang['Activate comments'] = 'Omogoči komentarje'; +$lang['%d week'] = '%d teden'; +$lang['%d weeks'] = '%d tednov'; +$lang['%d year'] = '%d leto'; +$lang['%d years'] = '%d let'; +$lang['%s ago'] = '%d nazaj'; +$lang['%s in the future'] = '%s naprej'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u uporabniki imajo samodejno dovoljenje ker pripadajo odobreni skupini'; +$lang['A locked gallery is only visible to administrators'] = 'Zaklenjeno galerijo lahko vidijo le Administratorji'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo za iOS je aplikacija, ki vam omogoči povezavo z vašo Piwigo galerijo preko iOS naprave (iPhone, iPad ali iPod Touch) . Ustvarite nove albume in naložite več fotografij hkrati.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo za Android je aplikacija, ki vam omogoči povezavo z vašo Piwigo galerijo preko Andriod naprave. Ustvarite nove albume in naložite več fotografij hkrati.'; +$lang['%d physicals'] = ' %d fizičen'; +$lang['%d month'] = '%d mesec'; +$lang['%d months'] = '%d mesecev'; +$lang['%d day'] = '%d dni'; +$lang[' and %d virtuals'] = ' in %d navidezen'; +$lang['ERROR'] = 'NAPAKA'; +$lang['Discover album:'] = 'Razišči album:'; +$lang['Drag to re-order'] = 'Klikni in spusti za spreminjanje vrstnega reda'; +$lang['Downloads'] = 'Prenosi'; +$lang['Download,'] = 'Prenesi'; +$lang['Crop'] = 'Izreži'; +$lang['Current name'] = 'Trenutno ime'; +$lang['Database synchronization with files'] = 'Sinhroniziranje podatkovne baze z datotekami'; +$lang['Confirm merge'] = 'Potrdi spajanje'; +$lang['Classic display'] = 'Klasičen prikaz'; +$lang['Apply watermark if height is bigger than'] = 'Vstavi vodni žig, če je višina večja kot'; +$lang['Apply watermark if width is bigger than'] = 'Vstavi vodni žig, če je širina večja kot'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Privzeto je središče pozornosti umeščena na sredino fotografije.'; +$lang['Choose an option'] = 'Izberi možnost.'; +$lang['Check integrity'] = 'Preverjanje integritete.'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Preverjanje nadgradnje neuspešno zaradi neznanega razloga.'; +$lang['Check for upgrade'] = 'Preveri za nadgradnjo'; +$lang['Check for updates'] = 'Preveri za posodobitve'; +$lang['Check automatic corrections'] = 'Preveri avtomatske popravke'; +$lang['Change Admin Colors'] = 'Spremeni administratorsko barvno paleto'; +$lang['Center of interest'] = 'Središče pozornosti'; +$lang['Cannot delete the old permalink !'] = 'Stari permalink ni mogoče izbrisati.'; +$lang['Cancel'] = 'Razveljavi'; +$lang['Can\'t read or extract archive.'] = 'Arhiva ni bilo mogoče prebrati ali razširiti.'; +$lang['Can\'t download archive.'] = 'Arhiva ni bilo mogoče naložiti.'; +$lang['Caddie management'] = 'Upravljanje košarice'; +$lang['Caddie'] = 'Košarica'; +$lang['Available versions for'] = 'Na voljo različice za'; +$lang['Available on'] = 'Na voljo na'; +$lang['Automatic sort order'] = 'Avtomatsko razvrščanje'; +$lang['Languages which need upgrade'] = 'Jeziki, ki potrebujejo posodobitev'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Teme ni mogoče izbrisati ker se navezuje na drugo temo.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Ni mogoče deaktivirati jezika, potrebuješ vsaj en jezik.'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Ni mogoče deaktivirati jezika, označiti moraš nadomestni jezik'; +$lang['Invert'] = 'Obrni'; +$lang['Last import'] = 'Zadnji uvoz'; +$lang['Last revisions'] = 'Zadnja revizija'; +$lang['Level 1'] = 'Kontakti'; +$lang['Level 0'] = '---'; +$lang['Learn more'] = 'Več o tem...'; +$lang['Last send'] = 'Nazadnje poslano'; +$lang['Last hit'] = 'Zadnji zadetek'; +$lang['Languages'] = 'Jeziki'; +$lang['Language has been successfully installed'] = 'Jezik je bil uspešno posodobljen'; +$lang['Landscape'] = 'Pokrajina'; +$lang['Instructions to use Piwigo'] = 'Navodila za uporabo Piwigo'; +$lang['Installed Themes'] = 'Nameščene teme'; +$lang['Inactive Languages'] = 'Neaktivni jeziki.'; +$lang['Inactive Plugins'] = 'Neaktivni vtičniki.'; +$lang['Inactive Themes'] = 'Neaktivne teme'; +$lang['Install on your computer,'] = 'Namesti na svoj računalnik'; +$lang['Installed Languages'] = 'Nameščeni jeziki'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Ni mogoče deaktivirati teme, potrebna je vsaj še ena tema.'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Vključi podatke o zgodovini (Opozorilo: presežena je lahko strežniška pomnilniška omejitev)'; +$lang['Information data registered in database'] = 'Podatki Informacij zabeleženi v podatkovni bazi'; +$lang['Informations'] = 'Informacije'; +$lang['Install'] = 'Namesti'; +$lang['Image Quality'] = 'kakovost slike'; +$lang['Impossible automatic correction'] = 'Avtomatski popravek ni mogoč'; +$lang['Images manual order was saved'] = 'Ročni vrstni red slik shranjen'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Teme ni mogoče aktivirati, manjka nadrejena tema'; +$lang['Image id'] = 'id slike'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Če HD ni na voljo in je trenutna spletna velikost večja kot pomanjšana dimenzija bo Piwigo umaknil sliko kot HD in kreiral pomanjšano spletno sliko iz nje.'; +$lang['Height'] = 'Višina'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Dodatki vsebujejo možnosti za brskanje po galeriji, kreiranje albumov in nalaganje fotografij.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Za velikosti slik z izrezom, kot npr. "Kvadrat", bo Piwigo poskušal kar najbolje vključiti središče pozornosti'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Čas izvajanja je prekoračen, postopek se mora nadaljevati (Preostali čas: %sekund)'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Čas izvajanja je potekel, postopek se mora nadaljevati (Preostali čas: %sekund)'; +$lang['Graphics Library'] = 'Grafična knjižnica'; +$lang['Groups and users'] = 'Skupine in uporabniki'; +$lang['High definition'] = 'Visoka ločljivost (HD)'; +$lang['High definition enabled'] = 'Visoka ločljivost omogočena'; +$lang['History'] = 'Zgodovina'; +$lang['Hit'] = 'Zadetek'; +$lang['Hour'] = 'Ura'; +$lang['Hoverbox display'] = 'Hoverbox prikaz'; +$lang['I decide to update anyway'] = 'Vseeno nadaljuj s posodobitvijo'; +$lang['IP'] = 'IP'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Če naletiš na težavo ali imaš kakršnokoli vprašanje, prosim pošlji sporočilo na'; +$lang['Ignore All'] = 'Prezri vse'; +$lang['Ignore selected anomalies'] = 'Prezri označene nepravilnosti'; +$lang['Ignore this update'] = 'Prezri to posodobitev'; +$lang['File upload stopped by extension'] = 'Nalaganje datoteke ustavljeno zaradi končnice'; +$lang['File/directory read error'] = 'Napaka pri branju Datoteke/Mape'; +$lang['Find a new representant by random'] = 'Poišči naključno sličico za album'; +$lang['Follow Orientation'] = 'Sledi orientaciji'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Sledeči vtičniki morda niso združljivi z novo verzijo Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Sledeče preobleke morda niso združljive z novo verzijo Piwigo:'; +$lang['Forbid this language to users'] = 'Uporabnikom prepreči uporabo tega jezika'; +$lang['Forbid this theme to users'] = 'Uporabnikom prepreči uporabo te preobleke'; +$lang['Forbidden'] = 'Prepovedano'; +$lang['Form'] = 'Obrazec'; +$lang['GD library is missing'] = 'GD knjižnica ni nameščena'; +$lang['GD version'] = 'GD različica'; +$lang['Gallery title'] = 'Naslov galerije'; +$lang['Gallery unlocked'] = 'Galerija je odklenjena'; +$lang['Generate multiple size images'] = 'Ustvari slike različnih velikosti'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Omogoči dovoljenje za pisanje (chmod 777) na "%s" mapi v korenu vaše Piwigo namestitve'; +$lang['File'] = 'Datoteka'; +$lang['Extensions Update'] = 'Posodobitev razširitev'; +$lang['FTP + Synchronization'] = 'FTP + Sinhronizacija'; +$lang['Failed to write file to disk'] = 'Napaka pri zapisu datoteke na disk'; +$lang['Edit ranks'] = 'Urejanje uvrstitvenih nivojev'; +$lang['Edit selected tags'] = 'Uredi izbrane oznake'; +$lang['Edit tags'] = 'Uredi oznake'; +$lang['Element'] = 'Predmet'; +$lang['Element type'] = 'Tip predmeta'; +$lang['Email administrators when a comment is deleted'] = 'E-mail skrbnikom, ko je komentar izbrisan'; +$lang['Email administrators when a comment is modified'] = 'E-mail skrbnikom, ko je komentar spremenjen'; +$lang['Email admins when a comment requires validation'] = 'E-mail skrbnikom, ko komentar potrebuje potrditev'; +$lang['Email admins when a new user registers'] = 'E-mail skrbnikom, ob registraciji novega uporabnika'; +$lang['Email admins when a valid comment is entered'] = 'E-mail skrbnikom, ko je objavljen veljaven komentar'; +$lang['Environment'] = 'Okolje'; +$lang['Error list'] = 'Seznam napak'; +$lang['Error on file "%s" : %s'] = 'Napaka v datoteki "%s" : %s '; +$lang['Error when sending email to %s [%s].'] = 'Napaka pri pošiljanju e-pošte za: %s [%s].'; +$lang['Errors caption'] = 'Legende napak'; +$lang['Everybody'] = 'Vsi'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif dodatek ni na voljo, skrbnik naj ga onemogoči'; +$lang['Extend for templates'] = 'Razširi predloge'; +$lang['Delete multiple size images'] = 'Izbriši slike večih velikosti'; +$lang['Display options'] = 'Možnosti prikaza'; +$lang['Dissociate from album'] = 'Loči od albuma'; +$lang['Dissociated'] = 'Loči'; +$lang['Do you want to activate anyway?'] = 'Ĺ˝elite vseeno aktivirati?'; +$lang['Does not represent'] = 'Ni sličica za'; +$lang['Dump Database'] = 'Odloži podatkovno bazo'; +$lang['Duplicate'] = 'Podvoji'; +$lang['Duplicate selected tags'] = 'Podvoji izbrane oznake'; +$lang['Duplicates'] = 'Podvojeni'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'NAPAKA: TA VTIČNIK MANJKA VENDAR JE NAMEĹ ČEN! ODSTRANITE GA ZDAJ.'; +$lang['Edit album permissions'] = 'Uredi dovoljenja albuma'; +$lang['Edit photo'] = 'Uredi sliko'; +$lang['Edit photo information'] = 'Uredi informacije o sliki'; +$lang['Default comments order'] = 'Privzeti vrstni red komentarjev'; +$lang['Default display'] = 'Privzeti prikaz'; +$lang['Default photos order'] = 'Privzeti vrstni red slik'; +$lang['Default user cannot be deleted'] = 'Privzetega uporabnika se ne da izbrisati'; +$lang['Default user does not exist'] = 'Privzeti uporabnik ne obstaja'; +$lang['No photo selected, %d photos in current set'] = 'Označene ni nobene fotografije, %d fotografije v trenutnem nizu'; +$lang['No photo can be deleted'] = 'Ni fotografij, ki bi jih bilo mogoče izbrisati'; +$lang['No photo in the current set.'] = 'V tem nizu ni fotografij'; +$lang['No mail to send.'] = 'Ni maila, ki bi ga lahko poslali'; +$lang['No group selected, no action possible.'] = 'Označena ni nobena skupina, izvesti ni mogoče nobenega ukaza'; +$lang['No group is permitted to see this private album'] = 'Nobena skupina nima dovoljenja za ogled tega privatnega albuma'; +$lang['No members to manage'] = 'Ni članov za upravljanje'; +$lang['No order field selected'] = 'Ni označenega vrstnega reda polj'; +$lang['No photo in this album'] = 'V tem albumu ni fotografij'; +$lang['New tag'] = 'Nova oznaka'; +$lang['No destination tag selected'] = 'Označena ni bila ustrezna oznaka'; +$lang['No file was uploaded'] = 'Nobena datoteka ni bila naložena'; +$lang['No display'] = 'Ni prikaza'; +$lang['New photos were added'] = 'Nove fotografije bodo dodane'; +$lang['New parent album'] = 'Nov starševski album'; +$lang['New photos added'] = 'Dodane so bile nove fotografije'; +$lang['New Version'] = 'Nova verzija'; +$lang['New name'] = 'Novo ime'; +$lang['Name of the duplicate'] = 'Ime duplikata'; +$lang['Name'] = 'Ime'; +$lang['Miscellaneous'] = 'Različno'; +$lang['Missing Plugins'] = 'Manjka vtičnik'; +$lang['Modify information'] = 'Spremeni informacije'; +$lang['Missing a temporary folder'] = 'Manjka začasna mapa'; +$lang['Month'] = 'Mesec'; +$lang['Move'] = 'Premakni'; +$lang['Move albums'] = 'Premakni albume'; +$lang['Move to album'] = 'Premakni v album'; +$lang['Multiple Size'] = 'Več strani'; +$lang['Minimum privacy level'] = 'Minimalni nivo zasebnosti'; +$lang['Minimum width'] = 'Minimalna širina'; +$lang['Minimum height'] = 'Minimalna višina'; +$lang['Metadata synchronized from file'] = 'Metapodatki so bili sinhronizirani z datoteko'; +$lang['Merge tags'] = 'Združi oznake'; +$lang['Metadata synchronization results'] = 'Rezultati sinhronizacije metapodatkov'; +$lang['Merge selected tags'] = 'Združi označene oznake'; +$lang['Merge selected groups'] = 'Združi označene skupine'; +$lang['Menu Management'] = 'Meni'; +$lang['Members'] = 'Člani'; +$lang['Maximum width'] = 'Maksimalna širina'; +$lang['Main "guest" user status is incorrect'] = 'Status osnovnega uporabnika "Gost" je napačen'; +$lang['Main "webmaster" user does not exist'] = 'Osnoven "webmaster" uporabnik ne obstaja'; +$lang['Main "webmaster" user status is incorrect'] = 'Osnoven "webmaster" uporabniški status je napačen'; +$lang['Make this theme available to users'] = 'Potrdi dostopnost te teme uporabnikom'; +$lang['Make this language available to users'] = 'Potrdi dostopnost tega jezika vsem uporabnikom'; +$lang['Maintenance'] = 'Vzdrževanje'; +$lang['Main Page'] = 'Glavna stran'; +$lang['Manage'] = 'Upravljaj'; +$lang['Manage authorizations for selected albums'] = 'Upravljaj avtorizacije za izbrane albume'; +$lang['Manage Permissions'] = 'Upravljaj dovoljenja'; +$lang['Manage permissions for user "%s"'] = 'Upravljaj dovoljenja za uporabnika "%s"'; +$lang['Manage permissions for group "%s"'] = 'Upravljaj dovoljenja za skupino "%s"'; +$lang['Manage photo ranks'] = 'Upravljanje uvrstitve fotografij'; +$lang['Manage photos'] = 'Upravljaj fotografije'; +$lang['Manage tags'] = 'Urejanje oznak'; +$lang['Manage the members'] = 'Urejanje članov'; +$lang['Manage this set of %d photos'] = 'Upravljal ta sklop %d fotografij.'; +$lang['Maximum height'] = 'Maksimalna višina'; +$lang['Manual order'] = 'Ročni vrstni red'; +$lang['Maximum file size: %sB.'] = 'Maksimalna velikost datoteke: %sB.'; +$lang['Mail sent to %s [%s].'] = 'e-mail poslan za %s [%s].'; +$lang['Link all album photos to some existing albums'] = 'Poveži vse fotografije albuma v nek že obstoječi album'; +$lang['Link all album photos to a new album'] = 'Poveži vse fotografije tega albuma v nov album'; +$lang['Level 8'] = 'Administratorji'; +$lang['Level 2'] = 'Prijatelji'; +$lang['Level 4'] = 'Družina'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'V vaši php.ini datoteki, je dodeljen upload_max_filsezie (%B) večji kot post_max_size(%B), spremeniti morate nastavitve!'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Ostanite v stiku s projektom Piwigo, naročite se na obvestila o spremembah in novostih. Poslali vam bomo obvestilo z informacijami o novih verzijah programa Piwigo, ki lahko vključujejo tudi pomembne varnostne popravke in ostale pomembnejše posodobitve. Obvestila pošiljamo samo takrat, ko je to nujno potrebno.'; +$lang['Include display of recent photos grouped by dates'] = 'Vključi pogled novejših fotografij združenih po datumu'; +$lang['Linked albums'] = 'Povezani albumi'; +$lang['Main "guest" user does not exist'] = 'Osnoven uporabnik "gost" ne obstaja'; +$lang['Mail content'] = 'Vsebina e-pošte'; +$lang['Mail address is obligatory for all users'] = 'E-mail naslov je obvezen za vse uporabnike'; +$lang['Locked'] = 'Zaklenjeno'; +$lang['Lock gallery'] = 'Zakleni galerijo'; +$lang['Lock albums'] = 'Zakleni albume'; +$lang['Lock'] = 'Zakleni'; +$lang['Local'] = 'Lokalno'; +$lang['List'] = 'Seznam'; +$lang['test'] = 'test'; +$lang['test this remote site'] = 'preveri to oddaljeno stran'; +$lang['the forum'] = 'forum'; +$lang['the wiki'] = 'wiki'; +$lang['top left corner'] = 'zgornji levi kot'; +$lang['top right corner'] = 'zgornji desni kot'; +$lang['total time'] = 'skupen čas'; +$lang['unit mode'] = 'enojen način'; +$lang['unknown'] = 'nepoznan'; +$lang['unset'] = 'razveljavi nastavitev'; +$lang['update the database from files'] = 'posodobi podatkovno datoteko z datotekami'; +$lang['user "%s" added'] = 'uporabnikr "%s" dodan'; +$lang['user_status_admin'] = 'Administrator'; +$lang['user_status_generic'] = 'Splošen'; +$lang['user_status_guest'] = 'Gost'; +$lang['user_status_normal'] = 'Uporabnik'; +$lang['user_status_webmaster'] = 'Skrbnik'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'obiskovalci se morajo vpisati in imeti ustrezna dovoljenja za ogled tega albuma'; +$lang['width must be a number superior to'] = 'širina mora biti število večje od'; +$lang['wrong filename'] = 'napačno ime datoteke'; +$lang['randomly represented'] = 'naključna sličica albuma'; +$lang['ranks'] = 'uvrstitve'; +$lang['reduce to single existing albums'] = 'zmanjšaj na en sam obstoječ album'; +$lang['registered users'] = 'registrirani uporabniki'; +$lang['registration date'] = 'datum registracije'; +$lang['remove author'] = 'odstrani avtorja'; +$lang['remove creation date'] = 'odstrani datum nastanka'; +$lang['remove tags'] = 'odstrani oznake'; +$lang['remove this filter'] = 'odstrani ta filter'; +$lang['remove title'] = 'odstrani ime'; +$lang['selection'] = 'izbor'; +$lang['set to'] = 'nastavi na'; +$lang['show details'] = 'prikaži podrobnosti'; +$lang['simple visitors'] = 'preprosti obiskovalci'; +$lang['singly represented'] = 'stalna sličica albuma'; +$lang['status'] = 'stanje'; +$lang['sub-albums'] = 'pod-albumi'; +$lang['synchronize files metadata with database photos informations'] = 'sinhroniziraj podatkovno bazo slik z metapodatki datotek'; +$lang['synchronize files structure with database'] = 'sinhroniziraj strukturo datotek s podatkovno bazo'; +$lang['target'] = 'cilj'; +$lang['none'] = 'noben'; +$lang['nothing'] = 'nič'; +$lang['number of miniaturized photos'] = 'število ustvarjenih sličic'; +$lang['on'] = 'na'; +$lang['on the %d selected photos'] = 'na %d izbranih slikah'; +$lang['only directories'] = 'samo direktoriji'; +$lang['only perform a simulation (no change in database will be made)'] = 'izvedi le simulacijo (v podatkovni bazi ne bo prišlo do sprememb)'; +$lang['other'] = 'ostalo'; +$lang['overrides existing values with empty ones'] = 'prepiše obstoječe vrednosti s praznimi'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader je ime za Piwigo prenašalnik. Na vašem računalniku pLoader pripravi vaše slike in jih prenese v vašo Piwigo foto galerijo.'; +$lang['pending validation'] = 'na čakanju odobritve'; +$lang['photos added in the database'] = 'slike dodate v podatkovno bazo'; +$lang['photos candidates for metadata synchronization'] = 'možne slike za sinhronizacijo metapodatkov'; +$lang['photos deleted from the database'] = 'slike izbrisane iz podatkovne baze'; +$lang['photos informations synchronized with files metadata'] = 'informacije slik sinhronizirane z metapodatki datotek'; +$lang['photos per page'] = 'slik na stran'; +$lang['photos updated in the database'] = 'slike posodobljene v podatkovni bazi'; +$lang['pixels'] = 'piksli'; +$lang['private'] = 'zasebno'; +$lang['public'] = 'javno'; +$lang['even already synchronized photos'] = 'tudi že sinhronizirane slike'; +$lang['existing album'] = 'obstoječ album'; +$lang['first photo added on %s'] = 'prva slika dodana: %s'; +$lang['for the file format'] = 'za obliko datoteke'; +$lang['for this file format'] = 'za to obliko datoteke'; +$lang['hide details'] = 'skrij podrobnosti'; +$lang['high'] = 'visoko'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto je privzet upravljalec slik na MacOSX. Piwigo izvozni vtičnik vam omogoča da ustvarite nove albume in jih izvozite neposredno iz iPhoto v vašo Piwigo foto galerijo.'; +$lang['include child albums'] = 'vključi podrejene albume'; +$lang['include photos with lower privacy level'] = 'vključi slike z nižjim nivojem zasebnosti'; +$lang['jump to album'] = 'pojdi v album'; +$lang['jump to photo'] = 'pojdi na sliko'; +$lang['leave'] = 'pusti'; +$lang['manage album photos'] = 'upravljaj slike albuma'; +$lang['manage sub-albums'] = 'upravljaj pod-albume'; +$lang['manual order'] = 'raočno razvrstitev'; +$lang['middle'] = 'sredina'; +$lang['modified'] = 'spremenjeno'; +$lang['new'] = 'novo'; +$lang['no write access'] = 'ni dostopa za pisanje'; +$lang['Your configuration settings are saved'] = 'Vaše nastavitve so shranjene'; +$lang['Zoom'] = 'Povečava'; +$lang['[%s] Visit album %s'] = '[%s] Obišči album %s'; +$lang['[NBM] Problems or questions'] = '[NBM] Težave ali vprašanja'; +$lang['add a new watermark'] = 'dodaj nov vodni žig'; +$lang['administrators'] = 'skrbniki'; +$lang['any visitor can see this album'] = 'vsak obiskovalec lahko vidi ta album'; +$lang['apply automatic sort order'] = 'uveljavi samodejno razvrščanje'; +$lang['between %.2f and %.2f'] = 'med %.2f in %.2f'; +$lang['between %d and %d pixels'] = 'med %d in %d pikslov'; +$lang['bottom left corner'] = 'spodnji levi kot'; +$lang['bottom right corner'] = 'spodnji desni kot'; +$lang['cancel manual order'] = 'prekliči ročno razvrščanje'; +$lang['create a new site'] = 'Ustvari novo stran'; +$lang['custom'] = 'Po meri'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam je napreden, brezplačen program za delo z digitalnimi fotografijami na sistemih Linux, Windows in MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam je namenjen fotografom, ki želijo pregledovati, upravljati, urejati, izboljšati, organizirati, označevati in dati svoje fotografije v skupno rabo.'; +$lang['dissociate from group'] = 'loči od skupine'; +$lang['errors during synchronization'] = 'napake med sinhronizacijo'; +$lang['With no virtual album'] = 'Brez navideznega albuma'; +$lang['X Position'] = 'X Pozicija'; +$lang['X Repeat'] = 'X ponavljanje'; +$lang['Y Position'] = 'Y pozicija'; +$lang['Year'] = 'Leto'; +$lang['You are running on development sources, no check possible.'] = 'Uporabljate razvojno kodo, preverjanje ni na voljo.'; +$lang['You are running the latest version of Piwigo.'] = 'Uporabljate zadnjo različico Piwigo'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Uporabljate prenašalnik brskalnika. Preizkusite Flash prenašalnik če želite.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Uporabljate Flash prenašalnik. Če imate težave poizkusite z Brskalnikovim prenašalnikom. '; +$lang['You can activate only one mobile theme.'] = 'Aktivirate lahko le eno mobilno temo.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Posodobitev na Piwigo %s je možna brez nadgradnje na Piwigo %s (priporočeno).'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Ne morete določiti privzetega razvrščanja slik ker imate v vaši lokalni nastavitveni datoteki nastavljeno razvrščanje po vaši meri.'; +$lang['You cannot delete your account'] = 'Vašega računa ne morete izbrisati.'; +$lang['You cannot move an album in its own sub album'] = 'Albuma ne morete premakniti v njegov pod-album'; +$lang['You have %d orphan tags: %s.'] = 'Imate %d osirotelih oznak: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Določili ste $conf[\'order_by\'] v vaši lokalni nastavitveni datoteki. Ta parameter je opuščen zato ga prosimo odstranite ali spremenite v: $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Naročili ste se na prejemanje novic na e-pošto.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Odjavili ste obveščanje po e-pošti.'; +$lang['You need to confirm deletion'] = 'Izbris morate potrditi'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Razmislite o nadgradnji vašega sistema! Le tako boste lahko uporabljali vse možnosti aplikacije. V nasprotnem primeru aplikacija morda ne bo delovala ali ne bo delovala pravilno.'; +$lang['Visit Gallery'] = 'Obišči galerijo'; +$lang['Visit Piwigo project website'] = 'Obiščite spletno stan projekta Piwigo'; +$lang['Visit language site'] = 'Obiščite stran z jeziki'; +$lang['Visit plugin site'] = 'Obiščite stran z vtičniki'; +$lang['Visit theme site'] = 'Obiščite stran z temami'; +$lang['Visited %d times'] = 'Obiskano %d '; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'OPOZORILO! Kot kaže, ta vtičnik ni v skladu z vašo verzijo Piwigo.'; +$lang['Waiting'] = 'Čakanje'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Opozorilo: naročanje ali odjavljanje bo poslalo obvestilo na e-pošto uporabnikov'; +$lang['Watermark'] = 'Vodni žig'; +$lang['Web Form'] = 'Spletni obrazec'; +$lang['Webmaster cannot be deleted'] = 'Skrbnika ne morete izbrisati'; +$lang['Webmaster status is required.'] = 'Status skrbnika je obvezen.'; +$lang['Week starts on'] = 'Teden se začne z'; +$lang['Who can see these photos?'] = 'Kdo lahko vidi te slike?'; +$lang['Who can see this photo?'] = 'Kdo lahko vidi to sliko?'; +$lang['Width'] = 'Širina'; +$lang['With blank value, gallery title will be used'] = 'Če je prazno bo uporabljen naslov galerije'; +$lang['With no album'] = 'Brez albuma'; +$lang['With no tag'] = 'Brez oznake'; +$lang['User "%s" created with "%s" like password'] = 'Uporabnik "%s" ustvarjen z geslom "%s"'; +$lang['User %s [%s] added.'] = 'Uporabnik %s [%s] dodan.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Uporabnik %s [%s] dodan na seznam naročnikov.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Uporabnik %s [%s] ni dodan na seznam naročnikov.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Uporabnik %s [%s] ni bil odstranjen s seznama naročnikov.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Uporabnik %s [%s] je bil odstranjen s seznama naročnikov.'; +$lang['User comments validation'] = 'Potrditev komentarjev uporabnikov'; +$lang['User list'] = 'Seznam uporabnikov'; +$lang['User status'] = 'Stanje uporabnika'; +$lang['Users'] = 'Uporabniki'; +$lang['Validate'] = 'Potrdi'; +$lang['Validation'] = 'Potrditev'; +$lang['Version'] = 'Različica'; +$lang['View in gallery'] = 'Poglej v galeriji'; +$lang['Virtual Links'] = 'Navidezne povezave'; +$lang['Virtual album'] = 'Navidezni album'; +$lang['Virtual album added'] = 'Navidezni album dodan'; +$lang['Virtual album deleted'] = 'Navidezni album izbrisan'; +$lang['Virtual album name'] = 'Ime navideznega albuma'; +$lang['Virtual albums to move'] = 'Navidezni album za premikanje'; +$lang['Unable to dump database.'] = 'Ne morem zavreči podatkovne baze'; +$lang['Uncheck all'] = 'Odznači vse'; +$lang['Unknown upload error'] = 'Nepoznana napaka pri nalaganju'; +$lang['Unlock gallery'] = 'Odkleni galerijo'; +$lang['Unlocked'] = 'Odklenjeno'; +$lang['Unsubscribe from notification by mail'] = 'Odjavi obvestila na e-pošto'; +$lang['Unsubscribed'] = 'Odjavljen'; +$lang['Update All'] = 'Posodobi vse'; +$lang['Update Complete'] = 'Posodobitev končana'; +$lang['Update albums informations'] = 'Posodobi informacije albumov'; +$lang['Update in progress... Please wait.'] = 'Posodabljanje je v teku... Prosimo počakajte.'; +$lang['Update photos information'] = 'Posodobi informacije slik'; +$lang['Update to Piwigo %s'] = 'Posodobi na Piwigo %s'; +$lang['Updates'] = 'Posodobitve'; +$lang['Upload'] = 'Naloži'; +$lang['Upload Photos'] = 'Naloži slike'; +$lang['Uploaded Photos'] = 'Naložene slike'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Uporabi privzeto razvrščanje slik (določeno v konfiguracijski datoteki)'; +$lang['Used metadata'] = 'Metadata uporabljen'; +$lang['User'] = 'Uporabnik'; +$lang['This site already exists'] = 'Ta stran že obstaja'; +$lang['This theme was not designed to be directly activated'] = 'Ta tema ni bila narejena tako da bi jo neposredno aktivirali.'; +$lang['Thumbnail'] = 'Sličica'; +$lang['Thumbnails generation in progress...'] = 'Ustvarjanje sličic je v teku.....'; +$lang['Time'] = 'Čas'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Čas za pošiljanje pošte je omejen. Ostala pošta je bila prezrta.'; +$lang['Title'] = 'Naslov'; +$lang['To send ?'] = 'Poslati?'; +$lang['To subscribe'] = 'Naročiti se'; +$lang['To unsubscribe'] = 'Odjaviti se'; +$lang['Toggle \'default group\' property'] = 'Preobrni lstnosti "privzete skupine"'; +$lang['Tools'] = 'Orodja'; +$lang['Two updates are available'] = 'Na voljo stad ve posodobitvi'; +$lang['Type here the author name'] = 'Tu vpišite ime avtorja'; +$lang['Type here the name of the new group'] = 'Tu vpišite ime nove skupine'; +$lang['Type here the title'] = 'Tu vpišite naslov'; +$lang['Type in a search term'] = 'Vpišite iskalni niz'; +$lang['Unable to check for upgrade.'] = 'Ne morem preveriti za nadgradnjo'; +$lang['This name is already used by another group.'] = 'To ime že uporablja druga skupina'; +$lang['This is a minor update, with only bug corrections.'] = 'To je le manjša posodobitev s popravki hroščev'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Naložena datoteka presega upload_max_filesize direktivo v php.ini , ki je: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Naložena datoteka je bila prenešena le delno'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Naložena datoteka presega post_max_size direktivo v php.ini , ki je: %sB'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Skrbnik vas je dodal med naročnike prejemnikov obvestil na e-pošto'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Skrbnik vas je odjavil s seznama prejemnikov obvestil na e-pošto'; +$lang['The whole page'] = 'Cela stran'; +$lang['The whole set'] = 'Cel nabor'; +$lang['Themes'] = 'Teme'; +$lang['Themes which need upgrade'] = 'Teme ki potrebujejo nadgradnjo'; +$lang['There is no available subscribers to mail.'] = 'Ni naročnikov ki bi jih obveščali na e-mail.'; +$lang['There is no group in this gallery.'] = 'V tej galeriji ni skupine'; +$lang['There is no other language available.'] = 'Na voljo ni drugega jezika.'; +$lang['There is no other plugin available.'] = 'Na voljo ni drugih vtičnikov.'; +$lang['There is no other theme available.'] = 'Na voljo ni drugih tem.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Ta album vsebuje %d slik, dodanih med %s in %s.'; +$lang['This album contains %d photos, added on %s.'] = 'Ta album vsebuje %d slik, dodanih na dan %s.'; +$lang['This album contains no photo.'] = 'Ta album ne vsebuje slik.'; +$lang['This group will be set to default'] = 'Ta skupina bo uporabljena kot privzeta.'; +$lang['This group will be unset to default'] = 'Ta skupina ne bo več uporabljena kot privzeta.'; +$lang['This is a major update, with new exciting features.'] = 'To je pomembna posodobitev z novimi, zanimivimi funkcijami.'; +$lang['Storage album'] = 'Album za shranjevanje'; +$lang['Templates configuration has been recorded.'] = 'Nastavitev predloge je bila zabeležena'; +$lang['The %d following tags were deleted'] = 'Sledeče %d oznake so bile izbrisane'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo vtičnik za izvoz vam omogoča da ustvarite albume in izvozite slike.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo Objavni vtičnik vam omogoča da izvozite in sinhronizirate slike iz programa Lightroom neposredno v Piwigo foto galerijo.'; +$lang['The anomaly will be ignored until next application version'] = 'Nepravilnost bo spregledana do naslednje različice programa.'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Središče pozornosti je najbolj pomembno območje na fotografiji'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Ne morem dostopati do datoteke ali direktorija (ali ne obstaja ali pa ni pravic za dostop)'; +$lang['The following tag was deleted'] = 'Sledeča oznaka je bila izbrisana'; +$lang['The gallery URL is not valid.'] = 'URL galerije ni pravilen'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Ime skupine ne sme vsebovati "or" in ne sme biti prazno.'; +$lang['The name of an album must not be empty'] = 'Ime albuma ne sme biti prazno'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Imena direktorijev in datotek morajo vsebovati le črke, številke, "-", "_" ali "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Število komentarjev na stran mora biti med 5 in 50.'; +$lang['The original image quality must be a number between %d and %d'] = 'Izvirna kakovost slike mora biti število med %d in %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Izvirna maksimalna višina mora biti število med %d in %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Izvirna maksimalna širina mora biti število med %d in %d'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Ime stalne povezave (permalink) mora biti sestavljeno iz: a-z, A-Z, 0-9, "-", "_" ali "/". Ne sme biti numerična in ne sme se začeti s številko ki ji sledi "-"'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Dimenzija slike bo pomanjšana na %dx%d pikslov'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Naložena datoteka presega direktivo MAX_FILE_SIZE , ki je bila določena v HTML obrazcu'; +$lang['Subscribe'] = 'Naroči se'; +$lang['Subscribe %s'] = 'Naroči %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Naroči %s se na Piwigo Obvestilne novice'; +$lang['Subscribe to notification by mail'] = 'Naroči se na obvestila na e-pošto'; +$lang['Subscribe/unsubscribe users'] = 'Naroči/odjavi uporabnike'; +$lang['Subscribed'] = 'Naročen'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Prikaz seznama naročnikov je možen le če obstajajo nove vsebine za obvestila.'; +$lang['Sum of rates'] = 'Vsota ocen'; +$lang['Summary'] = 'Povzetek'; +$lang['Support'] = 'Podpora'; +$lang['Switch to clear or dark colors for administration'] = 'S klikom preklopi med čisto ali temnejšo preobleko za admin panel'; +$lang['Synchronize'] = 'Sinhroniziraj'; +$lang['Synchronize metadata'] = 'Sinhroniziraj metadata'; +$lang['Tag "%s" already exists'] = 'Oznaka "%s" že obstaja'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Oznaka "%s" je sedaj dvojnik od "%s"'; +$lang['Tag "%s" was added'] = 'Oznaka "%s" je bila dodana'; +$lang['Tag selection'] = 'Izbira oznak'; +$lang['Tags %s merged into tag %s'] = 'Oznake %s združene v oznako %s'; +$lang['Templates'] = 'Predloge'; +$lang['Send connection settings by email'] = 'Pošlji mi prijavne informacije na e-pošto'; +$lang['Remove from caddie'] = 'Odstrani iz košarice'; +$lang['Status of user "%s" updated'] = 'Status uporabnika "%s" posodobljen'; +$lang['Send mail to users'] = 'Pošlji pošto uporabnikom'; +$lang['Set as default language for unregistered and new users'] = 'Nastavi za privzet jezik za neregistrirane in nove uporabnike'; +$lang['Set as default theme for unregistered and new users'] = 'Nastavi kot privzeto temo za neregistrirane in nove uporabnike'; +$lang['Set author'] = 'Nastavi avtorja'; +$lang['Set creation date'] = 'Nastavi datum nastanka'; +$lang['Set title'] = 'Nastavi ime'; +$lang['Settings'] = 'Nastavitve'; +$lang['Sharpen'] = 'OStrenje'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell je odprtokodni program za delo z digitalnimi fotografijami in je privzeti program za organiziranje fotografij v Linux distribuciji Ubuntu in Fedora.'; +$lang['Show info'] = 'Prikaži info'; +$lang['Show menubar'] = 'Prikaži menijsko vrstico'; +$lang['Simulation'] = 'Simulacija'; +$lang['Site manager'] = 'Upravljalec strani'; +$lang['Some themes and plugins may be not available yet.'] = 'Nekatere teme in vtičniki morda še niso na voljo.'; +$lang['Some upgrades are available for extensions.'] = 'Na voljo je nekaj posodobitev za razširitve.'; +$lang['Source tag'] = 'Izvorna oznaka'; +$lang['Start Upload'] = 'Začni prenos'; +$lang['Start pLoader and add your photos.'] = 'Zaženi pLoader in dodaj svoje fotografije.'; +$lang['Statistics'] = 'Statistika'; +$lang['Status'] = 'Stanje'; +$lang['Select a file'] = 'Izberi datoteko'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Z miško izberite področje, da določite novo polje zanimivosti slike'; +$lang['Select an album'] = 'Izberite album'; +$lang['Select at least one album'] = 'Izberite vsaj en album'; +$lang['Select at least one comment'] = 'Izberite vsaj en komentar'; +$lang['Select at least one photo'] = 'Izberite vsaj eno sliko'; +$lang['Select at least one user'] = 'Izberite vsaj enega uporabnika'; +$lang['Select at least two tags for merging'] = 'Izberite vsaj dve oznaki za združitev'; +$lang['Select files'] = 'Izberite datoteke'; +$lang['Select groups...'] = 'Izberite skupine'; +$lang['Select recipients'] = 'Izberite prejemnike'; +$lang['Select the destination tag'] = 'Izberite ciljno oznako'; +$lang['Select users...'] = 'Izberite uporabnike'; +$lang['Select:'] = 'Izberite:'; +$lang['Selection'] = 'Izbor'; +$lang['Send'] = 'Pošlji'; +$lang['Send an information email to group members'] = 'Pošlji obvestilni email članom skupine'; +$lang['Send mail as'] = 'Pošlji pošto kot'; +$lang['Send mail on HTML format'] = 'Pošlji pošto v HTML obliki'; +$lang['Theme has been successfully installed'] = 'Predloga je bila uspešno nameščena.'; +$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Različica %s [%s] ki je nameščena ni v skladu z zahtevano različico [%s]'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'TA VTIČNIK JE SEDAJ ŽE DEL PIVIGO PROGRAMA. ODSTRANITE VTIČNIK!'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Da bi vaše slike prenesli iz digiKam v Piwigo preprosto namestite digiKam in Kipi-vtičnike.'; +$lang['Uninstall'] = 'Odstrani'; +$lang['Uninstalled Plugins'] = 'Nenameščeni vtičniki'; +$lang['You might go to plugin list to install and activate it.'] = 'Za namestitev in aktiviranje pojdi na seznam vtičnikov'; +$lang['Representant'] = 'Sličica albuma'; +$lang['Representation of albums'] = 'Sličica albuma'; +$lang['Representative'] = 'Sličica albuma'; +$lang['Represents'] = 'je sličica za'; +$lang['Reset ignored updates'] = 'Ponastaviti prezrte posodobitve'; +$lang['Resize'] = 'Spremeni velikost'; +$lang['Resize after upload'] = 'Spremeni velikost po nalaganju'; +$lang['Restore'] = 'Obnovi'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Obnovi privzete nastavitve. Nastavitve vtičnikov bodo izgubljene.'; +$lang['Save Settings'] = 'Shrani nastavitve'; +$lang['Save Template Directory'] = 'Shrani imenik predlog'; +$lang['Save manual order'] = 'Shrani ročno razvrstitev'; +$lang['Save order'] = 'Shrani razvrstitev'; +$lang['Save to permalink history'] = 'Shrani v zgodovino stalnih povezav (permalinks-ov)'; +$lang['Save visits in history for'] = 'Shrani obiske v zgodovino za'; +$lang['Search for new images in the directories'] = 'Išči nove slike v direktorijih'; +$lang['Searching...'] = 'Iskanje poteka...'; +$lang['Section'] = 'Razdelek'; +$lang['See you soon,'] = 'Se vidimo kmalu,'; +$lang['See you soon.'] = 'Se vidimo kmalu.'; +$lang['Random photo'] = 'Naključna slika'; +$lang['Rate date'] = 'Datum ocene'; +$lang['Rated %d times, score : %.2f'] = 'Število ocen: %d , skupna ocena : %.2f'; +$lang['Rating'] = 'Ocena'; +$lang['Rating by guests'] = 'Ocene gostov'; +$lang['Ratio'] = 'Razmerje'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) je odprtokodni (GPL v3) Piwigo odjemalec za Android platformo'; +$lang['Read Piwigo Documentation'] = 'Preberi Piwigo dokumentacijo'; +$lang['Refresh'] = 'Osveži'; +$lang['Refresh photo set'] = 'Osveži komplet slik'; +$lang['Reinitialize check integrity'] = 'Ponovi preverjanje celovitosti'; +$lang['Reject'] = 'Zavrni'; +$lang['Released on'] = 'Datum izdaje'; +$lang['Remote'] = 'Oddaljeno'; +$lang['Remove all filters'] = 'Odstrani vse filtre'; +$lang['Rename'] = 'Preimenuj'; +$lang['Repair and optimize database'] = 'Popravi in optimiziraj podatkovno bazo'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Zamenjava izvirne predloge s prirejeno predlogo iz direktorija template-extension'; +$lang['Replacers (customized templates)'] = 'Nadomestki (prirejene predloge)'; +$lang['Portrait'] = 'Pokončno'; +$lang['Position'] = 'Položaj'; +$lang['Posted %s on %s'] = 'Objavljeno %s na %s'; +$lang['Predefined filter'] = 'Prednastavljeni filter'; +$lang['Preferences'] = 'Izbire'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Čas za pripravo seznama uporabnikov katerim bo poslan e-mail je omejen. OStalih uporabnikov ni na seznamu.'; +$lang['Privacy level'] = 'Nivo zasebnosti'; +$lang['Privacy level set to "%s"'] = 'Nivo zasebnosti nastavljen na "%s"'; +$lang['Private'] = 'Zasebno'; +$lang['Properties'] = 'Lastnosti'; +$lang['Public'] = 'Javno'; +$lang['Public / Private'] = 'Javno / Zasebno'; +$lang['Purge compiled templates'] = 'Izbriši sestavljene predloge'; +$lang['Purge history detail'] = 'Izbriši podrobnosti zgodovine'; +$lang['Purge history summary'] = 'Izbriši povzetek zgodovine'; +$lang['Purge never used notification feeds'] = 'Izbriši nikoli uporabljene vire obvestil'; +$lang['Purge search history'] = 'Izbriši zgodovino iskanja'; +$lang['Purge sessions'] = 'Izbriši seje'; +$lang['Purge user cache'] = 'Izbriši predpomnilnik (cache) uporabnika'; +$lang['Quick Local Synchronization'] = 'Hitra lokalna sinhronizacija'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo obvestila'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Objavni vtičnik za Lightroom'; +$lang['Piwigo Update'] = 'Piwigo posodobitev'; +$lang['Piwigo Uploader'] = 'Piwigo prenašalnik'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ne more prenesti nadgradnje s strežnika'; +$lang['Piwigo configuration'] = 'Piwigo nastavitve'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo izvoz vtičnika za Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo izvoz vtičnika za iPhoto'; +$lang['Piwigo for Android'] = 'Piwigo za Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Pivigo za iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo objavni vtičnik za Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo objavni vtičnik za digiKam'; +$lang['Piwigo version'] = 'Piwigo različica'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Prosimo preverite doveljenja za "plugins" direktorij in poddirektorije (chmod)'; +$lang['Please select at least two groups'] = 'Prosimo iberite vsaj dve skupini'; +$lang['Please wait...'] = 'Prosimo počakajte...'; +$lang['Plugin has been successfully copied'] = 'Ta vtičnik je bil uspešno kopiran.'; +$lang['Plugin list'] = 'Seznam Vtičnikov'; +$lang['Plugins'] = 'Vtičniki'; +$lang['Plugins which need upgrade'] = 'Vtičniki, ki jih je potrebno nadgraditi'; +$lang['Permalink %s is already used by album %s'] = 'Permalink %s je že uporabljen za album %s.'; +$lang['Permalink history'] = 'Zgodovina stalnih povezav (Permalinks-ov)'; +$lang['Permalinks'] = 'Stalne povezave'; +$lang['Permission denied'] = 'Dostop zavrnjen'; +$lang['Permission granted'] = 'Dostop omogočen'; +$lang['Permission granted for groups'] = 'Dostop omogočen za skupino'; +$lang['Permission granted for users'] = 'Dostop omogočen za uporabnike'; +$lang['Permission granted thanks to a group'] = 'Dostop omogočen na račun (zaradi) skupine'; +$lang['Permission management'] = 'Upravljanje dovoljenj'; +$lang['Permissions'] = 'Dovoljenja'; +$lang['Photo %s of %s'] = 'Slika %s od %s'; +$lang['Photo Page'] = 'Stran slik'; +$lang['Photo Properties'] = 'Lastnosti slike'; +$lang['Photo informations updated'] = 'Informacije o sliki posodobljene'; +$lang['Photo name'] = 'Ime slike'; +$lang['Photo sizes with crop'] = 'Velikosti slik z obrezovanjem'; +$lang['Photo unreachable or no support'] = 'Slika ni dosegljiva ali pa je v nepodprti obliki'; +$lang['Photos'] = 'Slike'; +$lang['Photos generation in progress...'] = 'Izdelava slik v teku...'; +$lang['Piwigo Administration'] = 'Piwigo Administracija'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'prikaži največ informacij (dodani albumi in slike, izbrisani albumi in slike)'; +$lang['Original Size'] = 'Originalna velikost'; +$lang['Original file : %s'] = 'Izvirna datoteka : %s'; +$lang['Original templates'] = 'Izvirna preobleka'; +$lang['Orphan tags deleted'] = 'OSirotele oznake izbrisane'; +$lang['Other plugins'] = 'Na voljo so drugi vtičniki'; +$lang['Other private albums'] = 'Drugi zasebni albumi'; +$lang['Overall'] = 'Pregled'; +$lang['Page banner'] = 'Naslovni napis strani'; +$lang['Page end'] = 'Konec strani'; +$lang['Pages seen'] = 'Ogledanih strani'; +$lang['Panorama'] = 'Panorama'; +$lang['Parameter'] = 'Nastavitve'; +$lang['Parameters'] = 'Parametri'; +$lang['Parent album'] = 'Nadrejeni album'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Manjka potrditev gesla. Prosimo potrdite izbrano geslo.'; +$lang['Password is missing. Please enter the password.'] = 'Manjka geslo. Prosimo vpišite geslo.'; +$lang['Path'] = 'Pot'; +$lang['Pending Comments'] = 'Komentarji na čakanju'; +$lang['Permalink'] = 'Permalink (stalna povezava)'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Permalink %s je bil prej uporabljen za album %s. Najprej ga izbrišite iz zgodovine stalnih povezav '; +$lang['None'] = 'Noben'; +$lang['Not cropped correctly?'] = 'Ni pravilno obrezano?'; +$lang['Notification'] = 'Obvestilo'; +$lang['Notify administrators when a comment is'] = 'Obvestilo administratorju ko je komentar'; +$lang['Number of albums per page'] = 'Število albumov na stran'; +$lang['Number of comments per page'] = 'Število komentarjev na stran'; +$lang['Number of downloads'] = 'Število prenosov'; +$lang['Number of rates'] = 'Število ocen'; +$lang['Number of thumbnails to create'] = 'Število sličic za kreiranje'; +$lang['Numeric identifier : %d'] = 'Številčna oznaka: %d'; +$lang['Obsolete Plugins'] = 'Zastareli vtičniki'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'V Linuxu namestite Shotwell in nato aktivirajte možnost Piwigo objavljanje.'; +$lang['Only private albums are listed'] = 'Navedeni so le zasebni albumi'; +$lang['Opacity'] = 'Prosojnost'; +$lang['Operating system'] = 'Operacijski sistem'; +$lang['Operation in progress'] = 'Obdelava v teku'; +$lang['Optimizations have been completed with some errors.'] = 'Optimizacija se je zaključila z nekaj napakami'; +$lang['Optional URL keyword'] = 'Opcijska URL ključna beseda'; +$lang['Options'] = 'Možnosti'; +$lang['Order of menubar items has been updated successfully.'] = 'Razvrstitev elementov menijske vrstice je bila uspešno posodobljena'; +$lang['No photo selected, no action possible.'] = 'Ker ni izbrana nobena slika, ni možno nobeno dejanje.'; +$lang['No results'] = 'Ni rezultatov'; +$lang['No user to send notifications by mail.'] = 'Noben uporabnik ne bo obveščen preko e-pošte.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Stiskanje fotografij pred nalaganjem je onemogočeno zaradi uporabe GD grafične knjižnice.'; +$lang['Select at least one tag'] = 'Izberite vsaj eno oznako'; +$lang['Basic settings'] = 'Osnovne nastavitve'; +$lang['General'] = 'Splošno'; +$lang['Mail theme'] = 'Videz e-pošte'; +$lang['%d of %d users selected'] = 'Izbranih %d od %d uporabnikov'; +$lang['(filtered from %s total users)'] = '(filtrirano od %s vseh uporabnikov)'; +$lang['All %d users are selected'] = 'Izbranih vseh %d uporabnikov'; +$lang['Change password'] = 'Spremeni geslo'; +$lang['Change username'] = 'Spremeni uporabniško ime'; +$lang['Last visit on %s, %s.'] = 'Zadnji obisk %s, %s.'; +$lang['Loading...'] = 'Nalaganje...'; +$lang['No matching user found'] = 'Ne najdem ustreznih uporabnikov'; +$lang['No user selected of %d users'] = 'Izbran ni noben uporabnik od %d uporabnikov'; +$lang['No user selected, no action possible.'] = 'Izbran ni noben uporabnik, nobeno dejanje ni mogoče'; +$lang['Password updated'] = 'Geslo posodobljeno'; +$lang['Registered on %s, %s.'] = 'Registrirani %s, %s.'; +$lang['Show %s users'] = 'Prikaži %s uporabnikov'; +$lang['Showing %s to %s of %s users'] = 'Prikazanih %s do %s od %s uporabnikov'; +$lang['Update user'] = 'Posodobi uporabnika'; +$lang['User %s added'] = 'Uporabnik %s dodan'; +$lang['User %s updated'] = 'Uporabnik %s posodobljen'; +$lang['Users modified'] = 'Uporabnik spremenjen'; +$lang['on the %d selected users'] = ' na %d izbranih uporabnikih'; +$lang['Close user details'] = 'Zapri uporabniške podate'; +$lang['Open user details'] = 'Odpri uporabniška navodila'; +$lang['close'] = 'zapri'; +?> \ No newline at end of file diff --git a/sources/language/sl_SI/common.lang.php b/sources/language/sl_SI/common.lang.php new file mode 100644 index 0000000..ebd10b1 --- /dev/null +++ b/sources/language/sl_SI/common.lang.php @@ -0,0 +1,420 @@ + \ No newline at end of file diff --git a/sources/language/sl_SI/help/cat_move.html b/sources/language/sl_SI/help/cat_move.html new file mode 100755 index 0000000..002d622 --- /dev/null +++ b/sources/language/sl_SI/help/cat_move.html @@ -0,0 +1,14 @@ +

              Premakni virtualne Albume

              + +

              Samo virtualni albumi lahko imajo nove starševske albume.

              + +

              Virtualni albumi za premik

              + +

              Označi virtualne albume, ki jih želiš premakniti. +Če je seznam prazen, to pomeni da še ni kreiran.

              + +

              Nov starševski album

              + +

              Označi nov starševski album (virtualnega ali fizičnega). +If you do not select any parent, the virtual selected albums will be moved to the root. +Album ni mogoče premakniti v samega sebe ali v nižji (child) nivo.

              \ No newline at end of file diff --git a/sources/language/sl_SI/help/search.html b/sources/language/sl_SI/help/search.html new file mode 100755 index 0000000..65108e7 --- /dev/null +++ b/sources/language/sl_SI/help/search.html @@ -0,0 +1,24 @@ +

              Iskanje

              + +

              Ta stran vam omogoča iskanje fotografij po celi galeriji.

              + +
              + +
              Išči besede
              +
              Iskanje besede ali več besed med lastnostimi povezanimi s fotografijami + galerije. Uporabite * kot wildcard za delne zadetke.
              + +
              Iskanje po avtorju
              +
              Uporabite * kot wildcard za delne zadetke.
              + +
              Iskanje po datumu
              +
              Izberite datum in/ali končni datum za poizvedbo. Polje datum pustite prazno + če želite izvesti poizvedbo "pred". Letnica v zadnjem polju + mora biti v formatu : AAAA (npr. 2004)
              + +
              Iskanje v albumih
              +
              Izberite album ali albume v katerih želite iskati. V iskanje so lahko + vključeni vsi podalbumi, če izberete nadrejeni album in spodaj izberete možnost + iskanja v podalbumih.
              + +
              \ No newline at end of file diff --git a/sources/language/sl_SI/help/synchronize.html b/sources/language/sl_SI/help/synchronize.html new file mode 100755 index 0000000..0bc0b30 --- /dev/null +++ b/sources/language/sl_SI/help/synchronize.html @@ -0,0 +1,14 @@ +

              Usklajevanje (sinhronizacija)

              + +

              Obstajata dva tipa usklajevanja:

              +
                +
              • imeniki/datoteke
              • +
              • metapodatki datoteke
              • +
              + +

              Usklajevanje imenikov(direktorijev) in datotek se nanaša na uskladitev drevesa imenikov in datotek z drevesom albumov v podatkovni bazi. +Usklajevanje metapodatkov datotek se nanaša na uskladitev informacij o slikah kot so velikost, dimenzije, pixli, EXIF ali IPTC informacij s podatkovno bazo.

              + +

              Kadar usklajujete vaše dodane slike z galerijo, morate najprej uskladiti imenike in datoteke.

              + +

              Proces usklajevanja lahko traja dolgo (odvisno od obremenitve strežnika in števila elementov za obdelavo) zato lahko usklajevanje izvajate tudi po posameznih albumih.

              \ No newline at end of file diff --git a/sources/language/sl_SI/help/user_list.html b/sources/language/sl_SI/help/user_list.html new file mode 100755 index 0000000..9f173ac --- /dev/null +++ b/sources/language/sl_SI/help/user_list.html @@ -0,0 +1,23 @@ +

              Seznam uporabnikov

              + +

              Tu lahko urejate uporabnike vaše Piwigo galerije.

              + +

              Dodaj uporabnika

              + +

              Administrator lahko ročno doda uporabnika. Za vsakega uporabnika ustvarite uporabniško ime in geslo, in vpišite veljaven elektronski naslov.

              + +

              Seznam uporabnikov

              + +

              Seznam obstoječih uporabnikov je možno filtrirati po uporabniškem imenu (uporabi * kot wildcard), ali po skupini ter statusu. Razvrstitev je možna po datumu registracije ali po uporabniškem imenu, in sicer v naraščajočem ali padajočem vrstnem redu.

              + +

              Ta stran omogoča upravljanje več uporabnikov hkrati. Možna so različna dejanja:

              + +
                +
              • izbris uporabnikov (zahtevana potrditev)
              • +
              • spremeba statusa uporabnikov
              • +
              • povezava ali razveza s skupinami
              • +
              • spreminjanje lastnosti prikaza
              • +
              • spreminjanje dodatnih nastavitev
              • +
              + +

              Izvedba dejanj velja za izbranega uporabnika (privzeto) ali za vse uporabnike prikazane na filtriranem seznamu.

              \ No newline at end of file diff --git a/sources/language/sl_SI/index.php b/sources/language/sl_SI/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/language/sl_SI/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/language/sl_SI/install.lang.php b/sources/language/sl_SI/install.lang.php new file mode 100755 index 0000000..1b66192 --- /dev/null +++ b/sources/language/sl_SI/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Potrebujete dodatno pomoč? Zastavite vprašanje na Piwigo oglasni deski.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Upoštevajte da lahko sami spremenite nastavitve in nato ponovno zaženete Piwigo.'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Druga rešitev je, da kopirate besedilo v polje zgoraj in ga prilepite v datoteko "local/config/database.inc.php" (Opozorilo: database.inc.php mora vsebovati le to kar je v besedilnem polju, brez znakov prehoda v novo vrstico(line return)ali znakov za presledke)'; +$lang['Keep it confidential, it enables you to access administration panel'] = 'Varno shranite, omogoča vam dostop do administratorske nadzorne plošče!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost ali drug naslov ki ga imate pri svojem ponudniku gostovanja'; +?> \ No newline at end of file diff --git a/sources/language/sl_SI/iso.txt b/sources/language/sl_SI/iso.txt new file mode 100644 index 0000000..580b986 --- /dev/null +++ b/sources/language/sl_SI/iso.txt @@ -0,0 +1 @@ +Slovenščina [SI] \ No newline at end of file diff --git a/sources/language/sl_SI/sl_SI.jpg b/sources/language/sl_SI/sl_SI.jpg new file mode 100644 index 0000000..7569c72 Binary files /dev/null and b/sources/language/sl_SI/sl_SI.jpg differ diff --git a/sources/language/sl_SI/upgrade.lang.php b/sources/language/sl_SI/upgrade.lang.php new file mode 100755 index 0000000..ec5abab --- /dev/null +++ b/sources/language/sl_SI/upgrade.lang.php @@ -0,0 +1,40 @@ +Tools>Maintenance] if you encounter any problem.'] = 'V primeru težav naredite vzdrževalno preverjanje preko [Administracija>Orodja>Vzdrževanje]'; +$lang['SQL queries'] = 'SQL poizvedbe'; +$lang['Statistics'] = 'Statistika'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Ta stran predlaga, da nadgradite podatkovno bazo vaše Piwigo različice na novejšo različico. Čarovnik nadgradnje je zaznal, da trenutno uporabljate različico %s (ali enakovredno).'; +$lang['Upgrade'] = 'Nadgradi'; +$lang['Upgrade from version %s to %s'] = 'Nadgradi iz različice %s na različico %s'; +$lang['Upgrade informations'] = 'Informacije nadgradnje'; +$lang['User permissions and group permissions have been erased'] = 'Dovoljenja uporabnikov in skupin so bila izbrisana'; +$lang['You do not have access rights to run upgrade'] = 'Nimate dovoljenja za izvedbo nadgradnje'; +$lang['total SQL time'] = 'skupen SQL čas'; +$lang['total upgrade time'] = 'skupen čas nadgradnje'; +$lang['In %s, before ?>, insert:'] = 'V %s, pred ?>, vstavi:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Nadgradnjo lahko opravi le Administrator. Prosimo prijavite se spodaj:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Kot previdnostni ukrep so sledeče preobleke onemogočene. Preveriti morate posodobitve za te preobleke in jih nato ponovno omogočiti:'; +$lang['All sub-albums of private albums become private'] = 'Vsi pod-albumi zasebnega albuma postanejo zasebni'; +?> \ No newline at end of file diff --git a/sources/language/sr_RS/about.html b/sources/language/sr_RS/about.html new file mode 100644 index 0000000..7ace028 --- /dev/null +++ b/sources/language/sr_RS/about.html @@ -0,0 +1,6 @@ +
            • Piwigo је интернет апликација која вам омогућава израду интернет галерије на лак начин.
            • + +
            • Технички, Piwigo је потпуно развијен коришћењем PHP (the elePHPant) као и MySQL базе података (the SQuirreL).
            • + +
            • Ако имате предлога и коментара, молимо посјетите Piwigo службену страницу, и њој посвећен форум.
            • + diff --git a/sources/language/sr_RS/admin.lang.php b/sources/language/sr_RS/admin.lang.php new file mode 100644 index 0000000..1452b00 --- /dev/null +++ b/sources/language/sr_RS/admin.lang.php @@ -0,0 +1,907 @@ +// +-----------------------------------------------------------------------+ +// | Piwigo - a PHP based photo gallery | +// +-----------------------------------------------------------------------+ +// | Copyright(C) 2008-2014 Piwigo Team http://piwigo.org | +// | Copyright(C) 2003-2008 PhpWebGallery Team http://phpwebgallery.net | +// | Copyright(C) 2002-2003 Pierrick LE GALL http://le-gall.net/pierrick | +// +-----------------------------------------------------------------------+ +// | This program is free software; you can redistribute it and/or modify | +// | it under the terms of the GNU General Public License as published by | +// | the Free Software Foundation | +// | | +// | This program is distributed in the hope that it will be useful, but | +// | WITHOUT ANY WARRANTY; without even the implied warranty of | +// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | +// | General Public License for more details. | +// | | +// | You should have received a copy of the GNU General Public License | +// | along with this program; if not, write to the Free Software | +// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, | +// | USA. | +// +-----------------------------------------------------------------------+ + +$lang['%d association'] = '%d веза'; +$lang['%d associations'] = '%d везе'; +$lang['%d album including'] = '%d категорија обухвата '; +$lang['%d albums including'] = '%d категорије обухватају '; +$lang['%d physical'] = '%d стварна'; +$lang['%d physicals'] = '%d стварних'; +$lang[' and %d virtual'] = ' и %d виртуална'; +$lang[' and %d virtuals'] = ' и %d виртуалних'; +$lang['%d album moved'] = '%d категорија премештена'; +$lang['%d albums moved'] = '%d категорија премештено'; +$lang['%d group'] = '%d група'; +$lang['%d groups'] = '%d група'; +$lang['%d member'] = '%d члан'; +$lang['%d members'] = '%d чланова'; +$lang['%d tag'] = '%d ознака'; +$lang['%d tags'] = '%d ознака'; +$lang['%d user comment rejected'] = '%d кориснички коментар одбачен'; +$lang['%d user comments rejected'] = '%d корисничких коментара одбачено'; +$lang['%d user comment validated'] = '%d кориснички кометар одобрен'; +$lang['%d user comments validated'] = '%d корисничких коментара одобрено'; +$lang['%d user deleted'] = '%d корисник избрисан'; +$lang['%d users deleted'] = '%d корисника избрисано'; +$lang['%d user'] = '%d корисник'; +$lang['%d users'] = '%d корисника'; +$lang['%d waiting for validation'] = '%d чекање на оверу'; +$lang['Actions'] = 'Поступци'; +$lang['Activate'] = 'Укључи'; +$lang['Add/delete a permalink'] = 'Додај/избриши сталну везу'; +$lang['Add a tag'] = 'Додај ознаку'; +$lang['Add a user'] = 'Додај корисника'; +$lang['Add group'] = 'Додај групу'; +$lang['Add'] = 'Додај'; +$lang['Allow user registration'] = 'Одобри упис корисника'; +$lang['Apply to sub-albums'] = 'Примени на подкатегорије'; +$lang['Associated'] = 'Повезаност'; +$lang['Caddie management'] = 'Контрола фиоке'; +$lang['Caddie'] = 'Фиока'; +$lang['Albums authorized thanks to group associations'] = 'Категорије оверене захваљујући групној вези'; +$lang['Album manual order was saved'] = 'Редослед категорија је сачуван'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Провера надоградње неуспешна из непознатог разлога.'; +$lang['Check for upgrade'] = 'Провера надоградње'; +$lang['Comments for all'] = 'Коментари за све'; +$lang['Current name'] = 'Тренутни назив'; +$lang['Database'] = 'База података'; +$lang['Deactivate'] = 'Искључи'; +$lang['Delete Representant'] = 'Избриши представника'; +$lang['Delete selected tags'] = 'Избриши одабране ознаке'; +$lang['Delete selected users'] = 'Избриши одабране кориснике'; +$lang['Deletions'] = 'Брисања'; +$lang['Deny selected groups'] = 'Забрани одабране групе'; +$lang['Deny selected users'] = 'Забрани одабране кориснике'; +$lang['Description'] = 'Опис'; +$lang['Display options'] = 'Могућности приказа'; +$lang['Dissociated'] = 'Одвојено'; +$lang['Does not represent'] = 'Не представља'; +$lang['Edit selected tags'] = 'Уреди одабране ознаке'; +$lang['Edit tags'] = 'Уреди ознаке'; +$lang['Email admins when a new user registers'] = 'Пошаљи електронску пошту администраторима при упису нових корисника'; +$lang['Email admins when a valid comment is entered'] = 'Пошаљи електронску пошту администраторима при упису нових коментара'; +$lang['Email admins when a comment requires validation'] = 'Пошаљи електронску пошту администраторима када коментар треба оверу'; +$lang['Environment'] = 'Окружење'; +$lang['Form'] = 'Облик'; +$lang['Gallery title'] = 'Назив галерије'; +$lang['Grant selected groups'] = 'Овласти одабране групе'; +$lang['Grant selected users'] = 'Овласти одабране кориснике'; +$lang['Group name'] = 'Назив групе'; +$lang['Groups'] = 'Група'; +$lang['Guests'] = 'Гостију'; +$lang['History'] = 'Историја'; +$lang['Informations'] = 'Информације'; +$lang['Install'] = 'Инсталирај'; +$lang['Link all album photos to a new album'] = 'Повежи све елементе категорије са новом категоријом'; +$lang['Link all album photos to some existing albums'] = 'Повежи све елементе категорије са неком постојећом категоријом'; +$lang['Linked albums'] = 'Повезане категорије'; +$lang['Lock gallery'] = 'Закључај галерију'; +$lang['Maintenance'] = 'Одржавање'; +$lang['Edit album permissions'] = 'Управљање дозволама за категорију'; +$lang['Manage permissions for group "%s"'] = 'Управљање дозволама за групу "%s"'; +$lang['Manage permissions for user "%s"'] = 'Управљање дозволама за корисника "%s"'; +$lang['Manage tags'] = 'Управљање ознакама'; +$lang['Members'] = 'Чланови'; +$lang['Metadata synchronized from file'] = 'Усклађивање мета података из датотеке'; +$lang['Move albums'] = 'Премести категорије'; +$lang['Move'] = 'Премести'; +$lang['Name'] = 'Назив'; +$lang['New name'] = 'Нови назив'; +$lang['New parent album'] = 'Нова надређена категорија'; +$lang['New tag'] = 'Нова ознака'; +$lang['Number of comments per page'] = 'Број коментара по страници'; +$lang['Number of rates'] = 'Број оцена'; +$lang['Number of thumbnails to create'] = 'број повезних сличица за израду'; +$lang['Only private albums are listed'] = 'Само личне категорије су исписане'; +$lang['Operating system'] = 'Оперативни систем'; +$lang['Options'] = 'Могућности'; +$lang['Other private albums'] = 'Остале личне категорије'; +$lang['Page banner'] = 'Банер странице'; +$lang['Parent album'] = 'Надређена категорија'; +$lang['Path'] = 'Путања'; +$lang['Permalink'] = 'Стална веза'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Стална веза %s је претходно коришћтена од категорије %s. Прво је избришите из старих записа'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Стална веза мора бити састављена од знакова a-z, A-Z, 0-9, "-", "_" или "/". Не сме бити бројчана вриједност или почињати бројем па знаком "-"'; +$lang['Permalink %s is already used by album %s'] = 'Сталну везу %s већ користи категорија %s'; +$lang['Permalink history'] = 'Историја сталних веза'; +$lang['Permalinks'] = 'Сталне везе'; +$lang['Permission denied'] = 'Дозвола ускраћена'; +$lang['Permission granted thanks to a group'] = 'Дозвола одобрена захваљујући групи'; +$lang['Permission granted'] = 'Дозвола одобрена'; +$lang['Photo informations updated'] = 'Подаци о сликама обновљени'; +$lang['Plugins'] = 'Додаци'; +$lang['Position'] = 'Положај'; +$lang['Preferences'] = 'Подешавања'; +$lang['Properties'] = 'Карактеристике'; +$lang['Random photo'] = 'Слика случајног избора'; +$lang['Rate date'] = 'Датум оцене'; +$lang['Rating by guests'] = 'Оцене гостију'; +$lang['Rating'] = 'Оцењивање'; +$lang['Reject'] = 'Одбаци'; +$lang['Representant'] = 'Представник'; +$lang['Representation of albums'] = 'Представљање категорија'; +$lang['Representative'] = 'Представљено'; +$lang['Represents'] = 'Представља'; +$lang['Save order'] = 'Сними распоред'; +$lang['Save to permalink history'] = 'Сними у историју сталних веза'; +$lang['Select at least one album'] = 'Одаберите најмање једну категорију'; +$lang['Select at least one photo'] = 'Одаберите најмање једну слику'; +$lang['Select at least one user'] = 'Одаберите најмање једног корисника'; +$lang['Show info'] = 'Приказ података'; +$lang['Site manager'] = 'Администратор галерије'; +$lang['Status'] = 'Стање'; +$lang['Statistics'] = 'Статистика'; +$lang['Storage album'] = 'Категорија снимања'; +$lang['Sum of rates'] = 'Збир оцена'; +$lang['Tag "%s" already exists'] = 'Ознака "%s" већ постоји'; +$lang['Tag "%s" was added'] = 'Ознака "%s" додата'; +$lang['Tag selection'] = 'Избор ознаке'; +$lang['The %d following tags were deleted'] = 'Следеће %d ознаке су избрисане'; +$lang['Unable to check for upgrade.'] = 'Не могу проверити за надоградњу.'; +$lang['Uninstall'] = 'Уклони'; +$lang['Use the default photo sort order (defined in the configuration file)']='Користи подразумевани редослед слагања слика (одређено у датотеци за подешавање)'; +$lang['User comments validation'] = 'Овера корисничких коментара'; +$lang['Users'] = 'Корисници'; +$lang['Validate'] = 'Овери'; +$lang['Validation'] = 'Овера'; +$lang['Version'] = 'Верзија'; +$lang['Virtual albums to move'] = 'Виртуелне категорије за премештање'; +$lang['Virtual album name'] = 'Назив виртуелне категорије'; +$lang['Webmaster cannot be deleted'] = 'Мајстор интернет страница не може бити избрисан'; +$lang['You are running on development sources, no check possible.'] = 'Ви користите развојни изворни код, провера немогућа.'; +$lang['You cannot delete your account'] = "Не можете избрисати свој налог"; +$lang['You cannot move an album in its own sub album'] = 'Не можете преместити категорију у њену подкатегорију'; +$lang['You need to confirm deletion'] = 'Потврди брисање'; +$lang['Associate to album'] = 'повежи са категоријом'; +$lang['associate to group'] = 'повежи са групом'; +$lang['Authorized'] = 'Овлашћено'; +$lang['Add a virtual album'] = 'Додај виртуелну категорију'; +$lang['Authorize users to add comments on selected albums'] = 'Овластите кориснике за давање коментара у одабраним категоријама'; +$lang['The name of an album must not be empty'] = 'Назив категорије не би требао бити празан'; +$lang['Lock albums'] = 'Закључај категорије'; +$lang['Private'] = 'Лична категорија'; +$lang['Public'] = 'Јавна категорија'; +$lang['Find a new representant by random'] = 'Избор новог представника случајним избором'; +$lang['Public / Private'] = 'Јавно / Лично'; +$lang['Manage authorizations for selected albums'] = 'Управљање овлашћењима за одабране категорије'; +$lang['Virtual album added'] = 'Виртуелна категорија додата'; +$lang['Virtual album deleted'] = 'Виртуелна категорија избрисана'; +$lang['Access type'] = 'Врста приступа'; +$lang['Information data registered in database'] = 'Подаци уписани у базу података'; +$lang['Default display'] = 'Подразумевани приказ'; +$lang['The gallery URL is not valid.'] = 'URL галерије није одговарајући.'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Број коментара по страници мора бити између 5 и 50.'; +$lang['Configuration'] = 'Подешавање'; +$lang['confirm'] = 'потврди'; +$lang['Date'] = 'Датум'; +$lang['delete album'] = 'обриши категорију'; +$lang['Dissociate from album'] = 'одвоји од категорије'; +$lang['dissociate from group'] = 'одвоји од групе'; +$lang['Album updated successfully'] = 'Подаци категорије успешно обновљени.'; +$lang['photos per page'] = 'елемената по страници'; +$lang['High definition enabled'] = 'Висока резолуција омогућена'; +$lang['File'] = 'Датотека'; +$lang['first photo added on %s'] = 'први елемент додат %s'; +$lang['Forbidden'] = 'Забрањено'; +$lang['global mode'] = 'општи начин'; +$lang['group "%s" added'] = 'група "%s" додата'; +$lang['group "%s" deleted'] = 'група "%s" избрисана'; +$lang['group "%s" updated'] = 'група "%s" обновљена'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Назив групе не може садржати " или \' или бити празан.'; +$lang['This name is already used by another group.'] = 'Овај назив већ користи друга група.'; +$lang['High definition'] = 'Висока резолуција'; +$lang['jump to album'] = 'прелазак на категорију'; +$lang['jump to photo'] = 'прелазак на слику'; +$lang['leave'] = 'остави'; +$lang['Lock'] = 'Закључај'; +$lang['Locked'] = 'Закључано'; +$lang['manage album photos'] = 'управљање елементима категорије'; +$lang['manage sub-albums'] = 'управљање подкатегоријама'; +$lang['Manage'] = 'Управљај'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Време извршења је истекло, обрада се мора наставити [Процењено време: %d секунде].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Време извршења је истекло, обрада се мора наставити [Процењено време: %d секунди].'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Предвиђено време за попис корисника за слање порука је ограничено. Остали корисници нису излистани.'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Време за слање поруке је ограничено. Остале поруке су прескочене.'; +$lang['To send ?'] = 'Послати ?'; +$lang['Last send'] = 'Задње послато'; +$lang['User'] = 'Корисник'; +$lang['See you soon,'] = 'Видимо се ускоро,'; +$lang['Go to'] = 'Иди на '; +$lang['Hello'] = 'Поздрав '; +$lang['New photos were added'] = 'Нови елементи су додати '; +$lang['on'] = ' на '; +$lang['between'] = 'између '; +$lang['and'] = ' и '; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Мајстор интернет страница вас је претлатио на примање електронских обавештења.'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Претплатили сте се на примање електронских обавештења.'; +$lang['To subscribe'] = 'Претплата'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Уколико сте наишли на проблеме или имате питања, молимо пошаљите поруку за '; +$lang['[NBM] Problems or questions'] = '[NBM] Проблеми или питања'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Мајстор интернет страница Вас је уклонио са листе за примање е-маил обавештења.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Уклонили сте се са листе за примање електронских обавештења.'; +$lang[', click on'] = ', кликните на '; +$lang['To unsubscribe'] = 'За уклањање'; +$lang['With blank value, gallery title will be used'] = 'Са празним пољем, користи ће се назив галерије'; +$lang['Notification'] = 'Обавештење'; +$lang['Error when sending email to %s [%s].'] = 'Грешка приликом слања електронске поруке за %s [%s].'; +$lang['Mail sent to %s [%s].'] = 'Порука послата за %s [%s].'; +$lang['%d mail was sent.'] = '%d порука послата.'; +$lang['%d mails were sent.'] = '%d поруке послате.'; +$lang['%d mail was not sent.'] = '%d порука није послата.'; +$lang['%d mails were not sent.'] = '%d поруке нису послате.'; +$lang['No mail to send.'] = 'Нема поруке за слање.'; +$lang['There is no available subscribers to mail.'] = 'Нема доступних примаоца за слање порука.'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Претплатници могу бити излистани (доступни) само ако има нових елемената за обавештење.'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'У сваком случају само мајстор интернет страница може приступити овој табли а никад администратори.'; +$lang['No user to send notifications by mail.'] = 'Нема корисника за слање електронских обавештења.'; +$lang['New photos added'] = 'Нови елементи додати'; +$lang['Subscribe to notification by mail'] = 'Претплатите се на електронска обавештења'; +$lang['Unsubscribe from notification by mail'] = 'Уклоните се из система примања електронских обавештења'; +$lang['Parameter'] = 'Ставка'; +$lang['Continue processing treatment'] = 'Настави обраду поступка'; +$lang['Complementary mail content'] = 'Комплетан садржај поруке'; +$lang['Add detailed content'] = 'Додај детаљни садржај'; +$lang['Send mail as'] = 'Пошаљи поруку као '; +$lang['Send mail to users'] = 'Пошаљи поруку корисницима'; +$lang['Send'] = 'Пошаљи'; +$lang['Options'] = 'Могућности'; +$lang['Send'] = 'Пошаљи'; +$lang['Subscribed'] = 'Претплаћен'; +$lang['Subscribe'] = 'Претплатите се'; +$lang['Parameters'] = 'Ставке'; +$lang['Select recipients'] = 'Одаберите примаоце'; +$lang['Subscribe/unsubscribe users'] = 'Претплати/поништи претплату корисника'; +$lang['Unsubscribed'] = 'Претплата поништена'; +$lang['%d parameter was updated.'] = '%d ставка је обновљена.'; +$lang['%d parameters were updated.'] = '%d ставке су поништене.'; +$lang['%d user was not updated.'] = '%d корисник није обновљен.'; +$lang['%d users were not updated.'] = '%d корисници нису обновљени.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Корисник %s [%s] је уклоњен из листе претплатника.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Корисник %s [%s] је додат на листу претплатника.'; +$lang['%d user was updated.'] = '%d корисник је обновљен.'; +$lang['%d users were updated.'] = '%d корисници су обновљени.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Корисник %s [%s] није уклоњен из листе претплатника.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Корисник %s [%s] није додат на листу претплатника.'; +$lang['User %s [%s] added.'] = 'Корисник %s [%s] додат.'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Упозорење: претплата или укидање претплате ће послати електронске поруке корисницима'; +$lang['Send mail on HTML format'] = 'Пошаљи поруку у ХТМЛ облику'; +$lang['Include display of recent photos grouped by dates'] = 'Укључи приказ недавних слика сложених по датумима'; +$lang['Available only with HTML format'] = 'Доступно само у ХТМЛ облику'; +$lang['no write access'] = 'нема дозволе уписа'; +$lang['Permissions'] = 'Дозволе'; +$lang['private'] = 'лично'; +$lang['public'] = 'јавно'; +$lang['Purge never used notification feeds'] = 'Испразни никад коришћене обаештавајуће изворе'; +$lang['Purge sessions'] = 'Испразни сесије'; +$lang['randomly represented'] = 'представљен случајним избором'; +$lang['registration date'] = 'датум уписа'; +$lang['clean'] = 'чисто'; +$lang['Create this site'] = 'Направи ову страницу'; +$lang['test'] = 'проба'; +$lang['test this remote site'] = 'испробајте ово удаљену страницу'; +$lang['remove tags'] = 'уклони ознаке'; +$lang['Repair and optimize database'] = 'Поправи и подеси базу података'; +$lang['selection'] = 'избор'; +$lang['set to'] = 'постављено на'; +$lang['singly represented'] = 'једнозначно представљено'; +$lang['This site already exists'] = 'Ова страница већ постоји'; +$lang['created'] = 'направљено'; +$lang['delete'] = 'обриши'; +$lang['delete this site and all its attached elements'] = 'обриши ову страницу и све њене придодате ставке'; +$lang['an error happened'] = 'дошло је до грешке'; +$lang['Local'] = 'Локално'; +$lang['Remote'] = 'Удаљено'; +$lang['update the database from files'] = 'обнови базу података помоћу датотеке'; +$lang['status'] = 'стање'; +$lang['Directory'] = 'Мапа'; +$lang['sub-albums'] = 'подкатегорије'; +$lang['Synchronize metadata'] = 'синхронизуј мета податке'; +$lang['target'] = 'одредиште'; +$lang['Thumbnail'] = 'Повезне сличице'; +$lang['Title'] = 'наслов'; +$lang['Album list management'] = 'Управљање категоријама'; +$lang['Piwigo configuration'] = 'Piwigo подешавања'; +$lang['Edit album'] = 'Уреди категорију'; +$lang['Group management'] = 'Управљање групама'; +$lang['User list'] = 'Листа корисника'; +$lang['Edit photo information'] = 'Промена података о слици'; +$lang['Database synchronization with files'] = 'Синхронизација базе података са датотекама'; +$lang['all'] = 'све'; +$lang['height must be a number superior to'] = 'висина мора бити број већи од '; +$lang['width must be a number superior to'] = 'ширина мора бити број већи од'; +$lang['for the file format'] = 'за датотечни облик'; +$lang['Photo unreachable or no support'] = 'Слика недоступна или без подршке'; +$lang['GD version'] = 'ГД верзија'; +$lang['General statistics'] = 'Главна статистика'; +$lang['average time'] = 'просечно време'; +$lang['number of miniaturized photos'] = 'број умањених слика'; +$lang['total time'] = 'укупно време'; +$lang['for this file format'] = 'за ову врсту датотеке'; +$lang['unit mode'] = 'појединачни начин'; +$lang['Unlocked'] = 'Откључано'; +$lang['unset'] = 'раздешено'; +$lang['Update albums informations'] = 'Обнови податке о категоријама'; +$lang['Update photos information'] = 'Обнови податке о сликама'; +$lang['Synchronize'] = 'Усагласи'; +$lang['reduce to single existing albums'] = 'сажми на једну постојећу категорију-е'; +$lang['Choose an option'] = 'Изаберите могућност'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'најопширнији могући приказ података (додате категорије и елементи, избрисане категорије и елементи)'; +$lang['Error list'] = 'Листа грешака '; +$lang['Errors caption'] = 'Заглавља грешака'; +$lang['Detailed informations'] = 'Детаљнија обавештења'; +$lang['File/directory read error'] = 'Грешка читања датотеке/директоријума'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Датотеци или директоријуму се не може приступити (не постоји или је приступ забрањен)'; +$lang['albums deleted in the database'] = 'категорије избрисане из базе података'; +$lang['photos deleted from the database'] = 'елементи избрисани из базе података'; +$lang['photos candidates for metadata synchronization'] = 'слика кандидата за синхронизацију мета података'; +$lang['photos informations synchronized with files metadata'] = 'података елемената синхронизовано са мета подацима датотеке'; +$lang['errors during synchronization'] = 'грешака током синхронизације'; +$lang['albums added in the database'] = 'категорија додато у базу података'; +$lang['photos added in the database'] = 'елемената додато у базу података'; +$lang['photos updated in the database'] = 'елемената обновљено у бази података'; +$lang['Search for new images in the directories'] = 'Претраживање нових слика у директоријумима'; +$lang['added'] = 'додато'; +$lang['deleted'] = 'обрисано'; +$lang['Metadata synchronization results'] = 'Резултат усклађивања мета података'; +$lang['only perform a simulation (no change in database will be made)'] = 'изврши само симулацију (нема промена у бази података)'; +$lang['Simulation'] = 'Симулација'; +$lang['directories + files'] = 'директоријуме + датотеке'; +$lang['only directories'] = 'само директоријуме'; +$lang['synchronize files structure with database'] = 'усклади структуру датотеке са базом података'; +$lang['synchronize files metadata with database photos informations'] = 'усклади мета податке датотеке са подацима о елементу из базе података'; +$lang['even already synchronized photos'] = 'чак и већ усклађене елементе'; +$lang['Used metadata'] = 'Коришћени мета подаци'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Називи директоријума и датотека морају бити састављени од слова, бројва, "-", "_" ili "."'; +$lang['wrong filename'] = 'лош назив датотеке'; +$lang['Upload'] = 'Пребаци'; +$lang['user "%s" added'] = 'корисник "%s" додат'; +$lang['User status'] = 'Стање корисника'; +$lang['user_status_admin'] = 'Администратор'; +$lang['user_status_generic'] = 'Општи'; +$lang['user_status_guest'] = 'Гост'; +$lang['user_status_normal'] = 'Корисник'; +$lang['user_status_webmaster'] = 'Мајстор интернет страница'; +$lang['Virtual album'] = 'Виртуелна кетегорија'; +$lang['Waiting'] = 'Чекање'; +$lang['default'] = 'подразумевано'; +$lang['Toggle \'default group\' property'] = 'Промени \'подразумевана група\' особине'; +$lang['Advanced features'] = 'Напредне могућности'; +$lang['Overall'] = 'Свеукупно'; +$lang['Year'] = 'Година'; +$lang['Month'] = 'Месец'; +$lang['Day'] = 'Дан'; +$lang['Pages seen'] = 'Страница виђенa'; +$lang['Time'] = 'Време'; +$lang['IP'] = 'IP'; +$lang['Element'] = 'Елемент'; +$lang['Section'] = 'Секција'; +$lang['An information email was sent to group "%s"'] = 'Електронска порука обавештења је послата групи "%s'; +$lang['Send an information email to group members'] = 'Пошаљи електронско обавештења члановима групе'; +$lang['Group'] = 'Група'; +$lang['[%s] Visit album %s'] = '[%s] Дођите и погледајте категорију %s'; +$lang['Hello,'] = 'Здраво,'; +$lang['See you soon.'] = 'До виђења.'; +$lang['Discover album:'] = 'Дођите и откријте категорију:'; +$lang['Mail content'] = 'садржај електронске поруке'; +$lang['none'] = 'ни један'; +$lang['high'] = 'високо'; +$lang['other'] = 'остало'; +$lang['Element type'] = 'Тип елемента'; +$lang['Image id'] = 'Шифра слике'; +$lang['Summary'] = 'Збирно'; +$lang['%d line filtered'] = '%d линија прочишћена'; +$lang['%d lines filtered'] = '%d линија прочишћено'; +$lang['%d guest'] = '%d гост'; +$lang['%d guests'] = '%d гостију'; +$lang['Hour'] = 'Сат'; +$lang['guest'] = 'гост'; +$lang['default values'] = 'подразумеване вредности'; +$lang['Guest cannot be deleted'] = 'Гост не може бити избрисан'; +$lang['Default user cannot be deleted'] = 'Подразумевани корисник не може бити избрисан'; +$lang['Purge history detail'] = 'Испразни детаље историје'; +$lang['Purge history summary'] = 'Испразни збирну историју'; +$lang['Check integrity'] = 'Провера целовитости'; +$lang['Anomaly'] = 'Неправилност'; +$lang['Correction'] = 'Исправка'; +$lang['Automatic correction'] = 'Аутоматско исправљање'; +$lang['Impossible automatic correction'] = 'Аутоматско исправљање немогуће'; +$lang['Correction applied with success'] = 'Исправка успешно примењена'; +$lang['Correction applied with error'] = 'Исправка примењена с грешком'; +$lang['%d anomaly has been detected.'] = '%d неправилност је откривена.'; +$lang['%d anomalies have been detected.'] = '%d неправилности су откривене.'; +$lang['%d anomaly has been corrected.'] = '%d неправилност је исправљена.'; +$lang['%d anomalies have been detected corrected.'] = '%d неправилности је исправљено.'; +$lang['%d anomaly has not been corrected.'] = '%d неправилност није исправљена.'; +$lang['%d anomalies have not been corrected.'] = '%d неправилности није исправљено.'; +$lang['Go to %s or %s for more informations'] = 'Идите на %s или %s за више детаља'; +$lang['the forum'] = 'форум'; +$lang['the wiki'] = 'wiki'; +$lang['%s value is not correct file because exif are not supported'] = '%s вредност није ваљана датотека јер exif није подржан'; +$lang['%s must be to set to false in your local/config/config.inc.php file'] = '%s мора бити постављено на false у config_local.inc.php датотеци'; +$lang['Main "guest" user does not exist'] = 'Главни "гост" корисник не постоји'; +$lang['Main "guest" user status is incorrect'] = 'Стање главног "гост" корисника је неисправно'; +$lang['Default user does not exist'] = 'Подразумевани корисник не постоји'; +$lang['Main "webmaster" user does not exist'] = 'Главни "мајстора интернет страница" као корисник не постоји'; +$lang['Main "webmaster" user status is incorrect'] = 'Стање главног "мајстора интернет страница" као корисника је неисправно'; +$lang['User "%s" created with "%s" like password'] = 'Корисник "%s" израђен са "%s" као лозинком'; +$lang['Status of user "%s" updated'] = 'Стање корисника "%s" обновљено'; +$lang['add new photos to caddie'] = 'додај нове елементе у фиоку'; +$lang['No display'] = 'Без приказа'; +$lang['Classic display'] = 'Класични приказ'; +$lang['Hoverbox display'] = 'Приказ лебдећим прозором'; +$lang['Mail address is obligatory for all users'] = 'Електронска адреса је обавезна за све кориснике'; +$lang['Minimum privacy level'] = 'Најнижи ниво приватности'; +$lang['Privacy level'] = 'Ниво приватности'; +$lang['Level 0'] = '---'; +$lang['Level 1'] = 'Познаници'; +$lang['Level 2'] = 'Пријатељи'; +$lang['Level 4'] = 'Породица'; +$lang['Level 8'] = 'Администратори'; +$lang['Reinitialize check integrity'] = 'Понови проверу целовитости'; +$lang['Check all'] = 'Означи све'; +$lang['Uncheck all'] = 'Одзначи све'; +$lang['Check automatic corrections'] = 'Означи аутоматске исправке'; +$lang['Apply selected corrections'] = 'Примени одабране исправке'; +$lang['Ignore selected anomalies'] = 'Занемари одабране неправилности'; +$lang['Refresh'] = 'Освежи'; +$lang['The anomaly will be ignored until next application version'] = 'Неправилност ће се занемарити до следеће верзије галерије'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Исправка неправилности ће поништити чињеницу да је занемарена'; +$lang['%d anomaly has been ignored.'] = '%d неправилност је занемарена.'; +$lang['%d anomalies have been ignored.'] = '%d неправилности су занемарене.'; +$lang['Plugins which need upgrade'] = 'Додаци који требају надоградњу'; +$lang['Plugin list'] = 'Листа додатака'; +$lang['Check for updates'] = 'Провера надоградње'; +$lang['Other plugins'] = 'Остали додаци'; +$lang['Last revisions'] = 'Задња издања'; +$lang['Are you sure you want to delete this plugin?'] = 'Сигурно желите уклонити овај додатак?'; +$lang['Are you sure you want to install this plugin?'] = 'Сигурно желите инсталирати овај додатак?'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Сигурно желите инсталирати овај додатак? Морате потврдити да ова пречица не треба уклањање.'; +$lang['Plugin has been successfully copied'] = 'Додатак је успјешно ископиран'; +$lang['Can\'t create temporary file.'] = 'Не могу направити привремени датотеку.'; +$lang['Can\'t download archive.'] = 'Не могу преузети датотеку.'; +$lang['Can\'t read or extract archive.'] = 'Не могу очитати или распаковати датотеку.'; +$lang['An error occured during extraction (%s).'] = 'Дошло је до грешке приликом распаковања (%s).'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Проверите "plugins" директоријум и дозволе поддиректоријума (CHMOD).'; +$lang['Can\'t connect to server.'] = 'Не могу се повезати на сервер.'; +$lang['Purge compiled templates'] = 'Испразни обрађене шаблоне'; +$lang['ACCESS_0'] = 'Слободан приступ'; +$lang['ACCESS_1'] = 'Приступ свима'; +$lang['ACCESS_2'] = 'Приступ претплатницима'; +$lang['ACCESS_3'] = 'Приступ администраторима'; +$lang['ACCESS_4'] = 'Приступ мајсторима интернет страница'; +$lang['ACCESS_5'] = 'Без приступа'; +$lang['Support'] = 'Подршка'; +$lang['Documentation'] = 'Документација'; +$lang['A new version of Piwigo is available.'] = 'Нова Piwigo vерзија је доступна.'; +$lang['Piwigo Administration'] = 'Piwigo администрација'; +$lang['Piwigo version'] = 'Piwigo верзија'; +$lang['You are running the latest version of Piwigo.'] = 'Користите најновију верзију Piwigo-a.'; +$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Верзија од %s [%s] постављене није одговарајућа потребној верзији [%s]'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'морате надоградити ваш систем да бисте имали све погодности у противном систем неће радити исправно или уопште неће радити'; +$lang['Deleted on'] = 'Избрисан на'; +$lang['Last hit'] = 'Задња посета'; +$lang['GD library is missing'] = 'Недостаје ГД библиотека'; +$lang['Templates'] = 'Шаблони'; +$lang['Extend for templates'] = 'Проширење за шаблоне'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = + 'Замена изворних шаблона прилагођеним из директоријума template-extension'; +$lang['Replacers (customized templates)'] = 'Замене (прилагођени шаблони)'; +$lang['Original templates'] = 'Изворни шаблони'; +$lang['Optional URL keyword'] = 'Изборна URL кључна реч'; +$lang['Templates configuration has been recorded.'] = 'Подешавње шаблона је сачувано.'; +$lang['All optimizations have been successfully completed.'] = 'Сва побољшања су успешно довршена.'; +$lang['Optimizations have been completed with some errors.'] = 'Побољшања су извршена уз неке грешке.'; +$lang['Modify information'] = 'Промени податак'; +$lang['nothing'] = 'ништа'; +$lang['overrides existing values with empty ones'] = 'прекуцава постојеће вредности празним пољима'; +$lang['Manage photo ranks'] = 'Управљање поретком'; +$lang['Edit ranks'] = 'Уреди поредак'; +$lang['No photo in this album'] = 'Нема елемената у овој категорији'; +$lang['Images manual order was saved'] = 'Сачуван је подешении редослед слика'; +$lang['ranks'] = 'поредак'; +$lang['Drag to re-order'] = 'Повуци за преређивање'; +$lang['Quick Local Synchronization'] = 'Брза Локална Синхронизација'; +$lang['No photo can be deleted'] = 'Нема слике која се може брисати'; +$lang['Delete selected photos'] = 'Бриши одабране слике'; +$lang['%d photo was deleted'] = '%d слика је избрисана'; +$lang['%d photos were deleted'] = '%d слике су избрисане'; +$lang['Downloads'] = 'Преузимања'; +$lang['Released on'] = 'Објављено дана'; +$lang['Number of downloads'] = 'Број преузимања'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo Announcements e-Новине'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Останите у вези са пројектом, претплатите се на Piwigo Announcement e-Новине. Добијаћете електронске поруке по изласку нових верзија (понекад са сигурносним закрпама, важно је знати да су доступне и треба их што пре уградити) те о свим важнијим десавањима и догађањима у вези са пројектом. Свега пар електронских порука годишње.'; +$lang['Subscribe %s'] = 'Претплатите %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Претплатите %s на Piwigo English Announcements e-Новине'; +$lang['Purge search history'] = 'Очисти историју претраживања'; +$lang['Hide'] = 'Сакриј'; +$lang['Operation in progress'] = 'Третирање процеса.'; +$lang['Please wait...'] = 'Молим сачекајте...'; +$lang['Password is missing. Please enter the password.'] = 'Лозинка недостаје. Молим унесите лозинку.'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Потврда лозинке недостаје. Молим потврдите изабрану лозинку.'; +$lang['Allow users to edit their own comments'] = 'Дозволи корисницима да уређују своје коментаре'; +$lang['Allow users to delete their own comments'] = 'Дозволи корисницима да бришу своје коментаре'; +$lang['Email administrators when a comment is modified'] = 'Пошаљи електронску поруку администратору када је коментар измењен'; +$lang['Email administrators when a comment is deleted'] = 'Пошаљи електронску поруку администратору када је коментар избрисан'; +$lang['Cannot delete the old permalink !'] = 'Стара интернет веза се не може обрисати!'; +$lang['Hit'] = 'Погодак'; +$lang['Tools'] = 'Алати'; +$lang['Photos'] = 'Фотографије'; +$lang['Themes'] = 'Теме'; +$lang['Instructions to use Piwigo'] = 'Инструкције како да користите Piwigo'; +$lang['Installed Themes'] = 'Инсталиране теме'; +$lang['Add New Theme'] = 'Додај нову тему'; +$lang['Forbid this theme to users'] = 'Забрани ову тему корисницима'; +$lang['Set as default theme for unregistered and new users'] = 'Постави као подразумевану тему за нерегистроване и нове кориснике'; +$lang['unknown'] = 'непознато'; +$lang['Upload Photos'] = 'Пошаљи фотографије'; +$lang['Drop into album'] = 'Баци у категорију'; +$lang['+ Add an upload box'] = '+ Додај кутију за слање'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Направи "%s" дирецторијум у корену Ваше Piwigo инсталације'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Дозволи упис (chmod 777) у "%s" директоријум у корену Ваше Piwigo инсталције'; +$lang['existing album'] = 'постојеће категорије'; +$lang['create a new album'] = 'направи нову категорију'; +$lang['Album name'] = 'Назив категорије'; +$lang['Album "%s" has been added'] = 'Категорија "%s" је додата'; +$lang['Uploaded Photos'] = 'Пошаљи фотографије'; +$lang['%d photos uploaded'] = '%d фотографије послате'; +$lang['Privacy level set to "%s"'] = 'Ниво приватности подешен на "%s"'; +$lang['Album "%s" now contains %d photos'] = 'Категорија "%s" сада садржи %d фотографија'; +$lang['Manage this set of %d photos'] = 'Уреди овај сет %d фотографија'; +$lang['Select files'] = 'Изабери датотеке'; +$lang['Everybody'] = 'Сви'; +$lang['Who can see these photos?'] = 'Ко може да види фотографије?'; +$lang['Settings'] = 'Подешења'; +$lang['Resize'] = 'Промени величину'; +$lang['Maximum width'] = 'Максимална ширина'; +$lang['pixels'] = 'тачака'; +$lang['Maximum height'] = 'Максимална висина'; +$lang['Image Quality'] = 'Квалитет слике'; +$lang['Save Settings'] = 'Сними подешења'; +$lang['Your configuration settings are saved'] = 'Ваша подешења су сачувана'; +$lang['Active Themes'] = 'Активне теме'; +$lang['Add write access to the "%s" directory'] = 'Дозволи упис "%s" директоријуму'; +$lang['Administration Home'] = 'Почетна администрације'; +$lang['Change Admin Colors'] = 'Промени администраторске боје'; +$lang['Delete this theme'] = 'Обриши ову тему'; +$lang['Directory does not exist'] = 'Директоријум не постоји'; +$lang['Download,'] = 'Сними на рачунар,'; +$lang['FTP + Synchronization'] = 'FTP + Синхронизација'; +$lang['Get Support on Piwigo Forum'] = 'Подршка он Пиwиго форуму'; +$lang['Help Me'] = 'Помоћ'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ова тема се не може активирати, јер тема не постоји: %s'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Ова тема се не може обрисати, јер друге теме зависе од ње: %s'; +$lang['Inactive Themes'] = 'Неактивне теме'; +$lang['Install on your computer,'] = 'Инсталирај на твом рачунару,'; +$lang['Make this theme available to users'] = 'Направи ову тему доступну корисницима'; +$lang['Page end'] = 'Крај стране'; +$lang['Piwigo Uploader'] = 'Piwigo пошиљаоц'; +$lang['Read Piwigo Documentation'] = 'Прочитај Piwigo документацију'; +$lang['Start pLoader and add your photos.'] = 'Покрени pLoader и додај твоје слике.'; +$lang['Switch to clear or dark colors for administration'] = 'Промени на светле или тамне боје за администратора'; +$lang['Theme has been successfully installed'] = 'тема је успешно инсталирана'; +$lang['Visit Gallery'] = 'Посети галерију'; +$lang['Visit Piwigo project website'] = 'Посети страницу Piwigo пројекта'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader означава Piwigo Uploader. Са Вашег рацунара, pLoader припрема Ваше фотографије и шаље их у Piwigo фото галерију.'; +$lang['Guest Settings'] = 'Подешења за госте'; +$lang['Main Page'] = 'Главна страна'; +$lang['Photo Page'] = 'Фото страна'; +$lang['Activate Navigation Bar'] = 'Активирај линију за навигацију'; +$lang['Activate Navigation Thumbnails'] = 'Активирај повезне сличице за навигацију'; +$lang['Activate icon "%s"'] = 'Активиирај икону "%s"'; +$lang['Photo Properties'] = 'Особине слике'; +$lang['Allow user customization'] = 'Дозволи подешавања кориснику'; +$lang['Languages'] = 'Језици'; +$lang['Installed Languages'] = 'Инсталирани језици'; +$lang['Add New Language'] = 'Додај нови језик'; +$lang['Language has been successfully installed'] = 'Језик је успешно инсталиран'; +$lang['Select:'] = 'Одабери:'; +$lang['None'] = 'Ништа'; +$lang['Invert'] = 'Супротно'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Немогуће деактивирати ову тему, треба Вам бар једна тема.'; +$lang['Webmaster status is required.'] = 'Потребан је статус мајстора интернет страница.'; +$lang['Bound Theme'] = 'Повезана тема'; +$lang['Allow rating'] = 'Дозволи рангирање'; +$lang['Select at least one comment'] = 'Одабери најмање један коментар'; +$lang['Active Plugins'] = 'Активни додаци'; +$lang['Inactive Plugins'] = 'Неактивни додаци'; +$lang['Missing Plugins'] = 'Недостајући додаци'; +$lang['Uninstalled Plugins'] = 'Деинсталирани додаци'; +$lang['By %s'] = 'Од %s'; +$lang['Visit plugin site'] = 'Посети страницу са додацима'; +$lang['Active Languages'] = 'Активни језици'; +$lang['Delete this language'] = 'Обриши овај језик'; +$lang['Forbid this language to users'] = 'Забрани овај језик за кориснике'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Немогуће деактивирати овај језик, прво одаберите други језик као подразумевани.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Немогуће деактивирати овај језик, треба Вам најмање један језик.'; +$lang['Inactive Languages'] = 'Неактивни језици'; +$lang['Make this language available to users'] = 'Омогући овај језик корисницима'; +$lang['Set as default language for unregistered and new users'] = 'Постави као подразумевани језик за нерегистроване и нове кориснике'; +$lang['Add Photos'] = 'Додај фотографије'; +$lang['The following tag was deleted'] = 'Текућа ознака је обрисана'; +$lang['Miscellaneous'] = 'Остало'; +$lang['Virtual Links'] = 'Виртуалне везе'; +$lang['There is no other language available.'] = 'Други језик није доступан.'; +$lang['There is no other plugin available.'] = 'Други додатак није доступан.'; +$lang['There is no other theme available.'] = 'Друга тема није доступна.'; +$lang['By rank'] = 'По рангу'; +$lang['Manual order'] = 'Ручно поређано'; +$lang['Add another set of photos'] = 'Додај други сет фотографија'; +$lang['Order of menubar items has been updated successfully.'] = ' Поредак елемената у избору је успешно ажуриран.'; +$lang['Menu Management'] = 'Контрола избора'; +$lang['Who can see this photo?'] = 'Ко може да види ову слику?'; +$lang['This theme was not designed to be directly activated'] = 'Ова тема није пројектована да може бити непосредно активирана'; +$lang['Pending Comments'] = 'Коментари који чекају на објављивање'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'У Вашој php.ini датотеци, upload_max_filesize (%sB) је већи од post_max_size (%sB), требало би да промените ову вредност'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif екстензија није на располагању, администратор треба да онемогућите коришћење Exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Пренешена датотека премашује upload_max_величину датотеке у php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Пренете датотеке су веће од post_max_size вредности у php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Пренета датотека је већа од MAX_FILE_SIZE вредности дефинисане у HTML обрасцу'; +$lang['The uploaded file was only partially uploaded'] = 'Преузимана датотека је само делимично преузета!'; +$lang['No file was uploaded'] = 'Ниједна датотека није преузета'; +$lang['Missing a temporary folder'] = 'Недостаје привремени директоријум'; +$lang['Failed to write file to disk'] = 'Грешка при упису на диск'; +$lang['File upload stopped by extension'] = 'Преузимање датотеке зауставњено због продужног имена'; +$lang['Unknown upload error'] = 'Непозната грешка преузимања!'; +$lang['Error on file "%s" : %s'] = 'Грешка код датотеке "%s" : %s'; +$lang['%d of %d photos selected'] = '%d од %d фотографија одабрано'; +$lang['Action'] = 'Операција'; +$lang['Add a filter'] = 'Додај филтер'; +$lang['Album photos associated to the following albums: %s'] = 'Слике албума се налазе и у следећим албумима: %s'; +$lang['Albums automatically sorted'] = 'Албуми су аутоматски уређени'; +$lang['All %d photos are selected'] = 'Одабране су све слике: %d '; +$lang['Apply action'] = 'Примени операцију'; +$lang['automatic order'] = 'аутоматско сређивање'; +$lang['Batch Manager'] = 'Менаџер операција'; +$lang['Choose an action'] = 'Одабери операцију'; +$lang['Delete orphan tags'] = 'Обриши orphan ознаку'; +$lang['delete photo'] = 'избриши фотографију'; +$lang['Duplicates'] = 'дупликати'; +$lang['include child albums'] = 'укључи подалбуме'; +$lang['manual order'] = 'ручно уређивање'; +$lang['No photo in the current set.'] = 'Нема фотографија у одабраном скупу.'; +$lang['No photo selected, %d photos in current set'] = 'Ниједна одабрана фотографија, број фотографија у одабраном скупу: %d'; +$lang['No photo selected, no action possible.'] = 'Ниједна одабрана фотографија, нема могућих операција.'; +$lang['on the %d selected photos'] = 'on the %d одабране слике'; +$lang['Orphan tags deleted'] = 'Orphan ознака обрисана'; +$lang['Refresh photo set'] = 'Обнови скуп слика'; +$lang['Remove all filters'] = 'Обриши све филтере'; +$lang['remove author'] = 'обриши аутора'; +$lang['remove creation date'] = 'обриши датум прављења'; +$lang['Remove from caddie'] = 'Избриши из caddie'; +$lang['remove this filter'] = 'избриши овај филтер'; +$lang['remove title'] = 'обриши наслов'; +$lang['Selection'] = 'Избор'; +$lang['Set author'] = 'Постави аутора'; +$lang['Set creation date'] = 'Постави датум прављења'; +$lang['Set title'] = 'Постави наслов'; +$lang['The whole page'] = 'Комплетна страница'; +$lang['The whole set'] = 'Комплетан скуп'; +$lang['Type here the author name'] = 'Откуцај овде име аутора'; +$lang['Type here the title'] = 'Откуцај овде наслов'; +$lang['Week starts on'] = 'Недеља стартује у'; +$lang['You have %d orphan tags: %s.'] = 'Имате %d orphan ознака: %s.'; +$lang['Themes which need upgrade'] = 'Теме које треба да унапредите'; +$lang['Languages which need upgrade'] = 'Језици које треба да унапредите'; +$lang['All themes are up to date.'] = 'Све теме су унапређене.'; +$lang['All plugins are up to date.'] = 'Сви додаци су унапређени.'; +$lang['All languages are up to date.'] = 'Сви језици су унапређени.'; +$lang['Visit theme site'] = 'Посетите страницу о теми'; +$lang['Visit language site'] = 'Посетите страницу о језику'; +$lang['New Version'] = 'Нова верзија'; +$lang['Obsolete Plugins'] = 'Застарели додаци'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'Упозорење! Овај додатак није компатибилан са овом верзијом Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Да ли ипак желите да је активирате?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'Овај додатак је сада део PIWIGO програма! Обришите га ОДМАХ!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ГРЕШКА: Овај додатак недостаје, али је инсталиран! Уклоните(деинсталирате) га ОДМАХ.'; +$lang['new'] = 'Ново'; +$lang['No results'] = 'Без резултата'; +$lang['Searching...'] = 'Тражење...'; +$lang['Type in a search term'] = 'Откуцајте тражени израз'; +$lang['display'] = 'приказ'; +$lang['Average rate'] = 'Просечна оцена'; +$lang['Rate'] = 'Оцена'; +$lang['Deactivate all'] = 'Искључи све'; +$lang['Restore'] = 'Обнови'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Обнови подразумевану конфигурацију. Изгубићете Ваша подешавања додатака!'; +$lang['Show menubar'] = 'Прикажи мени'; +$lang['Thumbnails generation in progress...'] = 'У току је генерисање сличица ...'; +$lang['Photos generation in progress...'] = 'У току је генерисање слика ...'; +$lang['%s photos have been regenerated'] = 'Број регенерисаних фотографија: %s'; +$lang['%s photos can not be regenerated'] = 'Број фотографија који се не може регенерисати: %s'; +$lang['Updates'] = 'Унапређење'; +$lang['Update in progress... Please wait.'] = 'У току је унапређење... Молимо Вас да сачеката.'; +$lang['Ignore this update'] = 'Занемари ово унапређење'; +$lang['Reset ignored updates'] = 'Обнови занемарена унапређења'; +$lang['Update All'] = 'Унапреди све'; +$lang['ERROR'] = 'Грешка'; +$lang['Update Complete'] = 'Унапређење је завршено'; +$lang['Piwigo Update'] = 'ПиВиГо је унапређен'; +$lang['Extensions Update'] = 'Додатаци су унапређени'; +$lang['All extensions are up to date.'] = 'Сви додаци су ажурирани.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Следећи додаци можда нису компатибилни са новом верзијом ПиВиГо-а:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Следеће теме можда нису компатибилне са новом верзијом ПиВиГо-а:'; +$lang['I decide to update anyway'] = 'Одлучио сам да унапредим у сваком случају'; +$lang['Update to Piwigo %s'] = 'Унапредите на ПиВиГо: %s'; +$lang['Two updates are available'] = 'Два унапређења су доступна'; +$lang['This is a minor update, with only bug corrections.'] = 'Ово је мање унапређење, само са мањим корекцијама грешака.'; +$lang['This is a major update, with new exciting features.'] = 'Ово је главно унапређење, са новим могућностима.'; +$lang['Some themes and plugins may be not available yet.'] = 'Неке теме и додаци можда још нису доступни.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Можете унапредити ПиВиГо директно на %s, без унапређења ПиВиГо-а %s (препоручено).'; +$lang['Save Template Directory'] = 'Снимање адресара шаблона'; +$lang['Dump Database'] = 'Дамповање базе података'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Укључи податке о историји (Упозорење: Меморијско ограничење сервера може бити прекорачено)'; +$lang['Unable to dump database.'] = 'Не могу да дампујем базу података.'; +$lang['Some upgrades are available for extensions.'] = 'Нека унапређења су доступна за проширења.'; +$lang['Ignore All'] = 'Занемари све'; +$lang['Crop'] = 'Одсецање'; +$lang['Width'] = 'Ширина'; +$lang['Height'] = 'Висина'; +$lang['Follow Orientation'] = 'Следећа орјентација'; +$lang['Graphics Library'] = 'Графичка библиотека'; +$lang['Learn more'] = 'Научите више'; +$lang['An error has occured during upgrade.'] = 'Појавила се грешка у току унапређења.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
              Click here to show log error.'] = 'Појавила се грешка у току распаковања. Молимо Вас, проверите дозволе приступа Вашој piwigo инсталацији.
              Притисните овде да видите извештај о грешкама.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не може да преузме датотеку за надоградњу са сервера'; +$lang['Add to caddie'] = 'додај у фиоку'; + +$lang['(this tag will be deleted)'] = '(ова ознака биће обрисана)'; +$lang['... or '] = '... или'; +$lang['Activate comments'] = 'Активирај коментар'; +$lang['Add a criteria'] = 'Додај критеријум'; +$lang['Add tags'] = 'Додај ознаке'; +$lang['Allowed file types: %s.'] = 'Дозвољене врсте датотека: %s.'; +$lang['Cancel'] = 'Откажи'; +$lang['Default comments order'] = 'Подразумевани редослед коментара'; +$lang['Default photos order'] = 'Подразумевани редослед фотографија'; +$lang['Merge selected tags'] = 'Споји одабране ознаке'; +$lang['Merge tags'] = 'Споји ознаке'; +$lang['Photo name'] = 'Назив фотографије'; +$lang['bottom left corner'] = 'горњи леви угао'; +$lang['bottom right corner'] = 'доњи десни угао'; +$lang['%d minute'] = 'минута: %d.'; +$lang['%d minutes'] = 'Број минута: %d.'; +$lang['%d month'] = 'месец: %d.'; +$lang['%d months'] = 'број месеци: %d.'; +$lang['%d second'] = 'секунди: %d.'; +$lang['%d seconds'] = 'Број секунди: %d.'; +$lang['%d week'] = 'недеља број: %d.'; +$lang['%d year'] = 'година: %d'; +$lang['%d years'] = 'број година: %d.'; +$lang['%s has been successfully updated.'] = '%s је успешно унапређено.'; +$lang['Confirm merge'] = 'Потврдите спајање'; +$lang['Create'] = 'Направи'; +$lang['Edit photo'] = 'Измени фотографију'; +$lang['Manage Permissions'] = 'Управљај дозволама приступа'; +$lang['Maximum file size: %sB.'] = 'Максимална величина датотеке: %sB.'; +$lang['Select a file'] = 'Одаберите датотеку'; +$lang['Select an album'] = 'Одаберите албум'; +$lang['Sharpen'] = 'Изоштри'; +$lang['hide details'] = 'сакриј појединости'; +$lang['middle'] = 'средина'; +$lang['show details'] = 'прикажи појединости'; +$lang['top left corner'] = 'горњи леви угао'; +$lang['top right corner'] = 'горњи десни угао'; +$lang['Groups and users'] = 'Групе и корисници'; +$lang['Original Size'] = 'Почетна величина'; +$lang['Photo %s of %s'] = 'Слика %s од %s'; +$lang['Start Upload'] = 'Почни пренос'; +$lang['This album contains no photo.'] = 'Албум не садржи фотографије'; +$lang['%d day'] = 'број дана: %d'; +$lang['%d days'] = 'број дана: %d'; +$lang['registered users'] = 'регистровани корисник'; +$lang['simple visitors'] = 'обичан посетилац'; +$lang['modified'] = 'промењено'; +$lang['Move to album'] = 'Пребаци у албум'; +$lang['Minimum width'] = 'Минимална ширина'; +$lang['Minimum height'] = 'Минимална висина'; +$lang['Landscape'] = 'Положено'; +$lang['Piwigo for Android'] = 'ПиВиГо за Андроид'; +$lang['Panorama'] = 'Панорама'; +$lang['Select groups...'] = 'Одабери групе ...'; +$lang['Select users...'] = 'Одабери кориснике ...'; +$lang['Y Position'] = 'позиција Y'; +$lang['X Position'] = 'позиција Х '; +$lang['Visited %d times'] = 'Број посета: %d'; +$lang['Unlock gallery'] = 'Откључај галерију'; +$lang['Activate icon "new" next to albums and pictures'] = 'Активирај„ново“ уз албум и слику'; +$lang['Added by %s'] = 'Додао %s'; +$lang['A locked gallery is only visible to administrators'] = 'Закључана галерија је видљива само администраторима'; +$lang['%d hour'] = 'Број сати: %d'; +$lang['%d hours'] = 'Број сати: %d'; +$lang['%d weeks'] = 'Број недеља: %d'; +$lang['Save manual order'] = 'Сними ручни редослед'; +$lang['Rename'] = 'Промени име'; +$lang['Ratio'] = 'Однос'; +$lang['Portrait'] = 'Усправно'; +$lang['apply automatic sort order'] = 'Примени аутоматски редослед'; +$lang['cancel manual order'] = 'Откажи ручни редослед'; +$lang['administrators'] = 'администратори'; +$lang['Name of the duplicate'] = 'Име дупликата'; +$lang['Multiple Size'] = 'Вишеструке величине'; +$lang['Merge selected groups'] = 'Управљај одабраним групама'; +$lang['Manage the members'] = 'Управљај члановима'; +$lang['Manage photos'] = 'Управљај фотографијама'; +$lang['List'] = 'Списак'; +$lang['Last import'] = 'Последљи увоз'; +$lang['Gallery unlocked'] = 'Галерија откључана'; +$lang['Duplicate'] = 'Дупликат'; +$lang['Delete multiple size images'] = 'Избришите вишеструке величине слика'; +$lang['Zoom'] = 'Увећање'; +$lang['Watermark'] = 'Водени жиг'; +$lang['With no album'] = 'Без албума'; +$lang['any visitor can see this album'] = 'било који посетилац може видети овај албум'; +$lang['add a new watermark'] = 'додајте нови водени жиг'; +$lang['custom'] = 'По избору'; +$lang['With no tag'] = 'Без ознаке'; +$lang['Resize after upload'] = 'Промени величину после слања'; +$lang['Select at least two tags for merging'] = 'Одаберите најмање две ознаке за спајање'; +$lang['Select the destination tag'] = 'Одаберите одредишну ознаку'; +$lang['The original maximum height must be a number between %d and %d'] = 'Висина оригиналне слике мора бити број између %d и %d'; +$lang['The original image quality must be a number between %d and %d'] = 'Квалитет оригиналне слике мора бити број између %d и %d'; +$lang['Send connection settings by email'] = 'Пошаљи подешавања везе електронском поштом'; +$lang['Save visits in history for'] = 'Сачувај посете у историји за '; +$lang['Not cropped correctly?'] = 'Погрешно исечено?'; +$lang['Opacity'] = 'Непровидност'; +$lang['Permission granted for users'] = 'Дозвола дата корисницима'; +$lang['Generate multiple size images'] = 'Направи вишеструке величине слика '; +$lang['No destination tag selected'] = 'Није одабрана одредишна ознака'; +$lang['No group is permitted to see this private album'] = 'Ни једној групи није дозвољено да види овај приватни албум'; +$lang['Apply watermark if height is bigger than'] = 'Примени водени жиг ако је висина већа од'; +$lang['Apply watermark if width is bigger than'] = 'Примени водени жиг ако је ширина већа од '; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u корисници имају дозволе јер припадају групи којој је дата дозвола.'; +$lang['%s in the future'] = '%s у будућности'; +$lang['Available versions for'] = 'Доступна верзија за'; +$lang['Available on'] = 'Доступно на'; +$lang['Automatic sort order'] = 'Аутоматски редослед'; +$lang['Users modified'] = 'Корисник промењен'; +$lang['Number of albums per page'] = 'Број албума по страници'; +$lang['Permission management'] = 'Управљање дозволама'; +$lang['Password updated'] = 'Лозинка је промењена'; +$lang['Loading...'] = 'Учитавање...'; +$lang['General'] = 'Опште'; +$lang['create a new site'] = 'направи ново место (енгл. site)'; +$lang['Duplicate selected tags'] = 'Одабрана ознака је дупликат'; +$lang['Basic settings'] = 'Основна подешавања'; +$lang['Change password'] = 'Промени лозинку'; +$lang['Change username'] = 'Промени корисничко име'; +$lang['%d of %d users selected'] = 'Изабрано је %d од %d корисника'; +$lang['%s ago'] = 'Пре %s'; +$lang['Applications'] = 'Апликације'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Тренутно користите интернет прегледач за додавање слика. Испробајте додавање из Флеш програмчета.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Тренутно додајете слике помоћу Флеш програмчета. Ако имате проблема испробајте обично додавање из интернет прегледача.'; +$lang['You can activate only one mobile theme.'] = 'Можете да користите само једну тему за мобилне уређаје.'; +$lang['close'] = 'затвори'; +$lang['Update user'] = 'Уреди корисника'; +$lang['User %s added'] = 'Додат је корисник %s'; +$lang['User %s updated'] = 'Уређен је корисник %s'; +$lang['View in gallery'] = 'Погледај у галерији'; +$lang['Web Form'] = 'Веб формулар'; +$lang['With no virtual album'] = 'Без виртуелних албума'; +$lang['X Repeat'] = 'X понављања'; +$lang['pending validation'] = 'чека на потврду'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'посетиоци морају бити пријављени и да поседују одговарајуће дозволе како би видели овај албум'; +$lang['(filtered from %s total users)'] = '(изфилтрирано од %s корисника)'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Апликација Piwigo за Андроид вам омогућава да повежете телефон или таблет са Piwigo галеријом, правите албуме и шаљете по неколико слика одједном.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Апликација Piwigo за iOS бам омогућава да повежете Piwigo галерију са iPhone, iPad или iPod Touch уређајима, правите албуме и шаљете по неколико слика одједном.'; +$lang['Activate it now'] = 'Активирај сада'; +$lang['Center of interest'] = 'Центар интереса'; +$lang['Last visit on %s, %s.'] = 'Последња посета %s, %s.'; \ No newline at end of file diff --git a/sources/language/sr_RS/common.lang.php b/sources/language/sr_RS/common.lang.php new file mode 100644 index 0000000..8b90711 --- /dev/null +++ b/sources/language/sr_RS/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/sr_RS/index.php b/sources/language/sr_RS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/sr_RS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/sr_RS/install.lang.php b/sources/language/sr_RS/install.lang.php new file mode 100644 index 0000000..744ea55 --- /dev/null +++ b/sources/language/sr_RS/install.lang.php @@ -0,0 +1,67 @@ +Piwigo message board.'] = 'Потребна Вам је помоц? Питајте на Piwigo табли за поруке.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Посетиоци ће бити у могућности да са ове електронске адресе контактирају администратора странице'; +$lang['PHP 5 is required'] = 'PHP 5 је неопходан'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Изгледа да Ваш сервер тренутно користи PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'ПиВиГо може покушати да промени Вашу конфигурацију на PHP 5 формирањем или мењањем .htaccess датотеке.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Имајте у виду да можете сами изменити Вашу конфигурацију рестартовати Piwigo после тога.'; +$lang['Try to configure PHP 5'] = 'Покушајте да подестите PHP 5'; +$lang['Sorry!'] = 'Жао нам је!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'ПиВиГо није успео да подеси PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Требало би да се обартите подршци Вашег хостинг провајдера за упутство како да промените на PHP 5 сами.'; +$lang['Hope to see you back soon.'] = 'Надамо се да се ускоро поново видимо.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Честитамо, ПиВиГо инсталација је завршена'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Алтернативно решење је да копирате текст из кутије изнад и налепите у датотеку "local/config/database.inc.php" (Упозорење : database.inc.php мора садржати само текст из кутије, без линије или празних карактера)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Формирање конфигурационе датотеке local/config/database.inc.php неуспешно.'; +$lang['Download the config file'] = 'Сними на рачунар конфигурациону датотеку'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Можете снимити на рачунар конфигурациону датотеку и послати је на local/config директоријум Ваше инсталације.'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Не устручавајте се да посетите наш форум за помоћ: %s'; +$lang['Just another Piwigo gallery'] = 'ПиВиГо фото галерија'; +$lang['Welcome to my photo gallery'] = 'Добродошли у фото галерију'; +$lang['Welcome to your new installation of Piwigo!'] = 'Добродошли у нову инсталацију ПиВиГо!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost или други назив који сте добили од провајдера'; \ No newline at end of file diff --git a/sources/language/sr_RS/iso.txt b/sources/language/sr_RS/iso.txt new file mode 100644 index 0000000..a2536be --- /dev/null +++ b/sources/language/sr_RS/iso.txt @@ -0,0 +1 @@ +Српски [SR] \ No newline at end of file diff --git a/sources/language/sr_RS/sr_RS.jpg b/sources/language/sr_RS/sr_RS.jpg new file mode 100644 index 0000000..a803c9b Binary files /dev/null and b/sources/language/sr_RS/sr_RS.jpg differ diff --git a/sources/language/sr_RS/upgrade.lang.php b/sources/language/sr_RS/upgrade.lang.php new file mode 100644 index 0000000..b3336cd --- /dev/null +++ b/sources/language/sr_RS/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s (or equivalent).'] = "Ова страница предлаже надоградњу базе са Piwigo старе верзије на нову. +Асистент надоградње процењује да тренутно користите издање %s (или еквивалентну)."; +$lang['Upgrade from version %s to %s'] = "Надоградња са верзије %s на %s"; +$lang['Statistics'] = "Статистика"; +$lang['total upgrade time'] = "укупно време надоградње"; +$lang['total SQL time'] = "укупно SQL време"; +$lang['SQL queries'] = "SQL упити"; +$lang['Upgrade informations'] = "Информације о надоградњи"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "Извршити проверу одржавања у [Администрација>Алати>Одржавање] ако наиђете на неки проблем."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "Као меру предострожност, дати додаци су деактивирани. Морате проверити за надоградњу додатака пре него их поново активирате: "; +$lang['Only administrator can run upgrade: please sign in below.'] = "Само администратор може да покрене надоградњу: пријавите се испод."; +$lang['You do not have access rights to run upgrade'] = "Немате приступна права да покренете надоградњу"; +$lang['All sub-albums of private albums become private'] = "Све подкатегорије приватних категорија постају приватне"; +$lang['User permissions and group permissions have been erased'] = "Корисничке и групне дозволе су обрисане"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "Само префиx за повезне сличице и адреса електронске поште уредника интернет страница су сачуване из претходне конфигурације"; +$lang['In %s, before ?>, insert:'] = 'У %s, испред ?>, уметни:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Као мера предострожности, следеће теме су деактивиране. Ви треба да проверите да ли теме имају унапређење пре него што их поново активирате:'; +?> \ No newline at end of file diff --git a/sources/language/sv_SE/about.html b/sources/language/sv_SE/about.html new file mode 100644 index 0000000..4dc493e --- /dev/null +++ b/sources/language/sv_SE/about.html @@ -0,0 +1,16 @@ +

              Det här fotogalleriet är baserat på Piwigo.

              + +

              Piwigo är en fotogalleriprogramvara för internet, byggt av en aktiv gemenskap av användare och utvecklare. Påbyggnadsmoduler gör Piwigo lätt att anpassna och utöka. Piwigio är licensierat under GPL vilket innebär att det är fri programvara.

              + +

              Besök Piwigo's hemsida

              + +

              + +

              För den svenska översättningen riktas ett särskilt tack till (i alfabetisk ordning): +

              +

              \ No newline at end of file diff --git a/sources/language/sv_SE/admin.lang.php b/sources/language/sv_SE/admin.lang.php new file mode 100644 index 0000000..5f03ca7 --- /dev/null +++ b/sources/language/sv_SE/admin.lang.php @@ -0,0 +1,977 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader står för Piwigo Uploader. pLoader förbereder bilder från din dator och laddar upp dom i ditt Piwigo galleri.'; +$lang['Guest Settings'] = 'Gästinställningar'; +$lang['Main Page'] = 'Huvudsida'; +$lang['Photo Page'] = 'Fotosida'; +$lang['Activate Navigation Bar'] = 'Aktivera navigeringsfältet'; +$lang['Activate Navigation Thumbnails'] = 'Aktivera navigations miniatyrer'; +$lang['Activate icon "%s"'] = 'Aktivera ikon "%s"'; +$lang['Photo Properties'] = 'Fotoinställningar'; +$lang['Allow user customization'] = 'Tillåt användaranpassning'; +$lang['Languages'] = 'Språk'; +$lang['Installed Languages'] = 'Installerade Språk'; +$lang['Add New Language'] = 'Lägg till nytt språk'; +$lang['Language has been successfully installed'] = 'Språket har installerats'; +$lang['Select:'] = 'Markera:'; +$lang['None'] = 'Inget'; +$lang['Invert'] = 'Invertera'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Det går inte att inaktivera detta tema, minst ett tema måste vara aktiverat.'; +$lang['Webmaster status is required.'] = 'Webmaster status krävs.'; +$lang['Bound Theme'] = 'Bundet tema'; +$lang['Allow rating'] = "Tillåt röstning"; +$lang['Select at least one comment'] = 'Markera minst en kommentar'; +$lang['Active Plugins'] = 'Aktivera insticksmoduler'; +$lang['Inactive Plugins'] = 'Inaktivera insticksmoduler'; +$lang['Missing Plugins'] = 'Insticksmodul som saknas'; +$lang['Uninstalled Plugins'] = 'Avinstallerade insticksmoduler'; +$lang['By %s'] = 'Av %s'; +$lang['Visit plugin site'] = 'Besök hemsida för insticksmodul'; +$lang['Active Languages'] = 'Aktiva språk'; +$lang['Delete this language'] = 'Ta bort det här språket'; +$lang['Forbid this language to users'] = 'Förbjud språket för användare'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Det är inte möjligt att inaktivera detta språk, först ange ett annat språk som standard.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Det är inte möjligt att inaktivera detta språk, du måste ha minst ett språk.'; +$lang['Inactive Languages'] = 'Inaktivera språk'; +$lang['Make this language available to users'] = 'Gör detta språk tillgängligt för användare'; +$lang['Set as default language for unregistered and new users'] = 'Ange som standard språk för oregistrerade och nya användare'; +$lang['Add Photos'] = 'Lägg till foton'; +$lang['The following tag was deleted'] = 'Följande tagg blev borttagen'; +$lang['Miscellaneous'] = 'Diverse'; +$lang['Virtual Links'] = 'Virtuella Länkar'; +$lang['There is no other language available.'] = 'Det finns inget annat språk tillgängligt.'; +$lang['There is no other plugin available.'] = 'Det finns ingen annan insticksmodul tillgänglig.'; +$lang['There is no other theme available.'] = 'Det finns inget annat tema tillgängligt.'; +$lang['Add another set of photos'] = 'Lägg till en ny uppsättning foton'; +$lang['Order of menubar items has been updated successfully.'] = 'Ordningen för objekt i menyraden har blivit uppdaterad.'; +$lang['This theme was not designed to be directly activated'] = 'Detta tema är inte anpassat för att bli direkt aktiverat'; +$lang['Pending Comments'] = 'Väntande kommentarer'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'I din php.ini fil, upload_max_filesize (%sB) är större än post_max_size (%sB), du rekomenderas att ändra detta'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif extension är inte tillgänglig, admin borde avaktivera användandet av exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Den uppladdade filen överskrider upload_max_filesize direktionerna i php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Den uppladdade filen överskrider post_max_size direktionerna i php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Den uppladdade filen överskrider MAX_FILE_SIZE direktiv som var specifierat i HTML form'; +$lang['The uploaded file was only partially uploaded'] = 'Den uppladdade filen blev bara delvis uppladdad'; +$lang['No file was uploaded'] = 'Ingen fil laddades upp'; +$lang['Missing a temporary folder'] = 'Saknar en temporär mapp'; +$lang['Failed to write file to disk'] = 'Kunde inte skriva filen till disk'; +$lang['File upload stopped by extension'] = 'Uppladdning av filen stoppades av ett tillägg'; +$lang['Unknown upload error'] = 'Okänt fel uppstod under uppladdning'; +$lang['Error on file "%s" : %s'] = 'Fel på fil "%s" : %s'; +$lang['Menu Management'] = 'Hantera menyer'; +$lang['automatic order'] = 'automatisk beställning'; +$lang['manual order'] = 'manuell beställning'; +$lang['Albums automatically sorted'] = 'Album sorteras automatiskt'; +$lang['Batch Manager'] = 'Batchhanteraren'; +$lang['include child albums'] = 'innefattar under album'; +$lang['Selection'] = 'Urval'; +$lang['Action'] = 'Åtgärd'; +$lang['Set author'] = 'Ange författare'; +$lang['Set title'] = 'Sätt rubriken'; +$lang['Set creation date'] = 'Sätt datum för skapande'; +$lang['Apply action'] = 'Utför åtgärder'; +$lang['on the %d selected photos'] = 'på %d valda bilder'; +$lang['%d of %d photos selected'] = '%d av %d markerade bilder'; +$lang['No photo selected, %d photos in current set'] = 'Inga bilder markerat, %d bilder i aktuella uppsättningen'; +$lang['All %d photos are selected'] = 'Alla %d bilder väljs'; +$lang['remove this filter'] = 'Ta bort det här filtret'; +$lang['Duplicates'] = 'Dubbletter'; +$lang['Add a filter'] = 'Lägg till ett filter'; +$lang['Remove all filters'] = 'Ta bort alla filter'; +$lang['Refresh photo set'] = 'Uppdatera bilder'; +$lang['The whole page'] = 'Hela sidan'; +$lang['The whole set'] = 'Hela markeringen'; +$lang['No photo in the current set.'] = 'inga bilder i den aktuella markeringen..'; +$lang['No photo selected, no action possible.'] = 'Inga foton är valda, inga åtgärder är möjlig.'; +$lang['Choose an action'] = 'Välj en åtgärd'; +$lang['remove author'] = 'ta bort författaren'; +$lang['Type here the author name'] = 'Skriv författarens namn här'; +$lang['remove title'] = 'Ta bort rubriken'; +$lang['Type here the title'] = 'Skriv rubriken här'; +$lang['remove creation date'] = 'Ta bort skapande datum '; +$lang['Album photos associated to the following albums: %s'] = 'Album bilder associerade till följande album: %s'; +$lang['Delete orphan tags'] = 'Ta bort anonyma taggar'; +$lang['delete photo'] = 'Ta bort bild'; +$lang['Orphan tags deleted'] = 'Anonyma taggar är readerade'; +$lang['Week starts on'] = 'Veckan börjar på'; +$lang['You have %d orphan tags: %s.'] = 'Du har %d anonyma taggar: %s.'; +$lang['Remove from caddie'] = 'Ta bort från korg'; +$lang['Themes which need upgrade'] = 'Teman som behöver uppgraderas'; +$lang['Languages which need upgrade'] = 'Språk som behöver uppgradera'; +$lang['All themes are up to date.'] = 'Alla teman är uppdaterade.'; +$lang['All plugins are up to date.'] = 'Alla insticksmoduler are up to date.'; +$lang['All languages are up to date.'] = 'Alla språk är aktuella.'; +$lang['Visit theme site'] = 'Besök temats webbplats'; +$lang['Visit language site'] = 'Besök språkets webbplats'; +$lang['New Version'] = 'Ny version'; +$lang['Obsolete Plugins'] = 'Föråldrade insticksmoduler'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'VARNING! Denna insticksmodul verkar inte vara kompatibel med denna version av Piwigo.'; +$lang['Do you want to activate anyway?'] = 'Vill du aktivera ändå?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'Dennna insticksmodul är nu del av PIWIGO CORE! Avinstallera det NU!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'FEL: Denna insticksmodul saknas men installerad! Avinstallera den nu!'; +$lang['display'] = 'Visa'; +$lang['Thumbnails generation in progress...'] = 'generering av miniatyr bilder pågår ......'; +$lang['Photos generation in progress...'] = 'Bild generering pågår..'; +$lang['%s photos have been regenerated'] = '%s foton har skapats'; +$lang['%s photos can not be regenerated'] = '%s foton har inte skapats'; +$lang['new'] = 'ny'; +$lang['No results'] = 'Inga poster hittades'; +$lang['Searching...'] = 'Söker...'; +$lang['Type in a search term'] = 'Ange nytt sökord'; +$lang['Activate icon "new" next to albums and pictures'] = 'Aktivera ikonen "ny" intill album och bilder'; +$lang['Deactivate all'] = 'Avaktivera allt'; +$lang['Default photos order'] = 'Standardordning för bilder'; +$lang['Restore'] = 'Återställ'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Återställ standardkonfiguration. Du kommer att förlora inställingarna för dina insticksmoduler!'; +$lang['Show menubar'] = 'Visa verktygsfält'; +$lang['Updates'] = 'Uppdateringar'; +$lang['Update in progress... Please wait.'] = 'Uppdatering körs... Var vänlig vänta.'; +$lang['Ignore this update'] = 'Ignorera denna uppdatering'; +$lang['Reset ignored updates'] = 'Nollställ ignorerade uppdateringar'; +$lang['Update All'] = 'Uppdatera allt'; +$lang['ERROR'] = 'FEL'; +$lang['Update Complete'] = 'Uppdatering avslutad'; +$lang['Piwigo Update'] = 'Piwigo Uppdatering'; +$lang['Extensions Update'] = 'Uppdatering av tillägg'; +$lang['Rate'] = 'Betygsätt'; +$lang['Average rate'] = 'Genomsnittligt betyg'; +$lang['Learn more'] = 'Läs mer'; +$lang['Some upgrades are available for extensions.'] = 'Det finns uppdateringar till några insticksmoduler.'; +$lang['Ignore All'] = 'Ignorera alla'; +$lang['Crop'] = 'Klipp'; +$lang['Width'] = 'Bredd'; +$lang['Height'] = 'Höjd'; +$lang['Follow Orientation'] = 'Följ bildformat'; +$lang['Graphics Library'] = 'Grafikbibliotek'; +$lang['... or '] = '... eller '; +$lang['Create'] = 'Skapa'; +$lang['Start Upload'] = 'Börja uppladdning'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Du använder Flash-uppladaren. Har du problem, försök med webbläsaruppladdaren istället.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Du använder webbläsaruppladdaren, prova gärna Flash-uppladdaren istället.'; +$lang['Maximum file size: %sB.'] = 'Maximal filstorlek: %sB.'; +$lang['Allowed file types: %s.'] = 'Tillåtna filtyper: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Ungefärlig maximal upplösning: %dM pixlar (motsvarande %dx%d pixlar).'; +$lang['Manage Permissions'] = 'Hantera rättigheter'; +$lang['Photo %s of %s'] = 'Bild %s av %s'; +$lang['show details'] = 'visa detaljer'; +$lang['hide details'] = 'dölj detaljer'; +$lang['Merge tags'] = 'Sammanfoga taggar'; +$lang['Select the destination tag'] = 'Välj mål-tagg'; +$lang['(this tag will be deleted)'] = '(den här taggen kommer raderas)'; +$lang['Confirm merge'] = 'Bekräfta sammanfogning'; +$lang['Merge selected tags'] = 'Sammanfoga valda taggar'; +$lang['No destination tag selected'] = 'Ingen mål-tagg har valts'; +$lang['Tags %s merged into tag %s'] = 'Taggar %s sammanfogade som %s'; +$lang['Select at least two tags for merging'] = 'Välj minst två taggar för sammanfogning'; +$lang['Select an album'] = 'Välj ett album'; +$lang['Add a criteria'] = 'Lägg till ett kriterium'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Du kan inte ange en standardsortering för foton på grund av en vald inställning i din lokala konfiguration.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Du har specifierat $conf[\'order_by\'] i din lokala konfigurationsfil, den här parametern är ersatt. Ta bort den eller döpom till $conf[\'order_by_custom\'] !'; +$lang['All extensions are up to date.'] = 'Alla insticksmoduler är de senaste.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Följande insticksmoduler kan vara inkompatibla med senaste Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Följande teman kan vara inkompatibla med senaste Piwigo:'; +$lang['I decide to update anyway'] = 'Jag uppdaterar ändå'; +$lang['Update to Piwigo %s'] = 'Uppdatera till Piwigo %s'; +$lang['Two updates are available'] = 'Två uppdateringar är tillgängliga'; +$lang['This is a minor update, with only bug corrections.'] = 'Det här är en mindre uppdatering med bug-fixar.'; +$lang['This is a major update, with new exciting features.'] = 'Det här är en stor uppdatering med nya spännande funktioner.'; +$lang['Some themes and plugins may be not available yet.'] = 'Några teman och insticksmoduler kan vara otillgängliga ännu.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Du kan uppdatera till to Piwigo %s direkt, utan att uppgradera till Piwigo %s (rekommenderat).'; +$lang['Save Template Directory'] = 'Spara mallkatalogen'; +$lang['Dump Database'] = 'Dumpa databasen'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Inkludera historiska data (Varning: serverns minnesgräns kan överskridas)'; +$lang['Unable to dump database.'] = 'Kan inte dumpa databasen.'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Som standard kommer Piwigo skapa en ny webbstorlek från HD (high definition) versionen av din bild.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Om ingen HD-bild är tillgänglig och den nuvarande webbstorleken är större än skalningsdimensionerna så kommer Piwigo flytta bilden till HD och skapa en nedskalad version av den.'; +$lang['An error has occured during upgrade.'] = 'Det uppstod ett fel under uppgraderingen.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
              Click here to show log error.'] = 'Ett fel uppstod vid dekomprimeringen. Kontrollera rättigheterna på din Piwigo-installation och försök igen.
              Klicka här för att visa felloggen.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo kan inte hämta uppgraderingen från servern'; +$lang['Zoom'] = 'förstora'; +$lang['Add to caddie'] = 'lägg i korgen'; +$lang['%s has been successfully updated.'] = '%s har uppdaterats.'; +$lang['Add tags'] = 'Lägg till taggar'; +$lang['Last import'] = 'Senaste import'; +$lang['Predefined filter'] = 'Fördefinierat filter'; +$lang['With no album'] = 'Utan album'; +$lang['With no tag'] = 'Utan tag'; +$lang['With no virtual album'] = 'Utan virtuellt album'; +$lang['Activate comments'] = 'Aktivera komentarer'; +$lang['Default comments order'] = 'Standardordning för kommentarer'; +$lang['Photo name'] = 'Fotonamn'; +$lang['Send connection settings by email'] = 'Skicka anslutningsinställningar med e-post'; +$lang['The original image quality must be a number between %d and %d'] = 'Originalets bildkvalitet måste vara ett nummer mellan %d %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Originalets maxhöjd måste vara ett nummer mellan %d och %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Originalets maxbredd måste vara ett nummer mellan %d och %d'; +$lang['Resize after upload'] = 'Skala om efter upppladdning'; +$lang['Original Size'] = 'Originalstorlek'; +$lang['A locked gallery is only visible to administrators'] = 'Ett låst galleri är bara synligt för administratörer'; +$lang['Unlock gallery'] = 'Lås upp galleri'; +$lang['Gallery unlocked'] = 'Galleri upplåst'; +$lang['Notify administrators when a comment is'] = 'Meddela administratörer när en kommentar är'; +$lang['modified'] = 'redigerad'; +$lang['pending validation'] = 'väntar på validering'; +$lang['Save visits in history for'] = 'Sparar besök i historik för'; +$lang['simple visitors'] = 'enkla användare'; +$lang['registered users'] = 'registrerade användare'; +$lang['administrators'] = 'administratörer'; +$lang['This album contains %d photos, added on %s.'] = 'Det här albumet innehåller %d foton, tillagda på %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Det här albumet innehåller %d foton, tillagda mellan %s och %s.'; +$lang['This album contains no photo.'] = 'Det här albumet innehåller inga foton.'; +$lang['Not cropped correctly?'] = 'Ej beskuren korrekt?'; +$lang['Center of interest'] = 'Intressefokus'; +$lang['Move to album'] = 'Flytta till album'; +$lang['You can activate only one mobile theme.'] = 'Du kan enbart aktivera ett mobilt tema.'; +$lang['Automatic sort order'] = 'Automatisk sorteringsordning'; +$lang['apply automatic sort order'] = 'tillämpa automatisk sorteringsordning'; +$lang['Save manual order'] = 'Spara manuell sorteringsordning'; +$lang['cancel manual order'] = 'avbryt manuell sorteringsordning'; +$lang['Cancel'] = 'Avbryt'; +$lang['List'] = 'Lista'; +$lang['Web Form'] = 'Webbformulär'; +$lang['Applications'] = 'Applikationer'; +$lang['Available versions for'] = 'Tillgängliga versioner för'; +$lang['Available on'] = 'Tillgängliga på'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo för iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo för iOS applikationer tillåter dig ansluta till ditt Piwigo galleri från din iPhone, iPad eller iPod Touch, skapa några album och ladda upp flera bilder på en gång.'; +$lang['Piwigo for Android'] = 'Piwigo för Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo för Android applikationer tillåter dig ansluta till ditt Piwigo galleri från din Android telefon eller tablet, skapa några album och ladda upp flera bilder på en gång.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Publish insticksmodul för Lightroom'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom är en fotoredigeringsmjukvara designad för att hantera stora mängder bilder och göra efterredigering.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Insticksmodulen för Piwigo publicering möjliggör export och synkronisering av bilder mellan Lightroom och ditt bildgalleri.'; +$lang['Piwigo publish plugin for Shotwell'] = 'Insticksmodul för Piwigo publicering via Shotwell'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell är en Open Source digital fotohanterare för Linux som används som standard av Ubuntu och Fedora.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'I din Linux distribution, installera Shotwell via pakethanteraren och aktivera valmöjligheten Piwigo publicering.'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publicering via digiKam'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam är ett avancerat program för digital mediahantering, framför allt bilder, för Linux, Windows och MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam är designat för fotografer som vill se, hantera, förbättra, organisera, märka och distribuera bilder.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'För att exportera bilder från digiKam till Piwigo, installera digiKam och Kipi-insticksmodul för export till Piwigo.'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo insticksmodul för iPhoto export'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto är standard för MacOSX. Piwigo export insticksmodul låter dig skapa album och exportera dina bilder från iPhoto till ditt Piwigo galleri.'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo insticksmodul för Aperture export'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture är ett kraftfullt verktyg för bildhantering för Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture är designat för proffs med iPhotos enkelhet.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export modulen låter dig skapa och exportera bilder.'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client for Android) är en open source (GPL v3) Piwigo klient för the Android.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Bland annat ingår galleri-utforskning, skapande av nya album och uppladdning av bilder.'; +$lang['Generate multiple size images'] = 'Skapa flera storlekar av bilder'; +$lang['Delete multiple size images'] = 'Ta bort flera storlekar av bilder'; +$lang['any visitor can see this album'] = 'alla besökare kan se detta album'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'besökare måste lpgga in med korrekta rättigheter för att se detta album'; +$lang['Groups and users'] = 'Grupper och användare'; +$lang['Permission granted for groups'] = 'Tillstånd för följande grupper'; +$lang['Select groups...'] = 'Välj grupper...'; +$lang['There is no group in this gallery.'] = 'Det finns inga grupper i det här galleriet.'; +$lang['Permission granted for users'] = 'Tillstånd utfärdat för valda användare'; +$lang['Select users...'] = 'Välj användare...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u användare har automatiskt tillstånd eftersom de tillhör en grupp med rättigheter utfärdade.'; +$lang[' and %d virtuals'] = ' och %d virtuell'; +$lang['%d physicals'] = ' %d fysisk'; +$lang['include photos with lower privacy level'] = 'inkludera bilder med lägre sekretessnivå'; +$lang['custom'] = 'Anpassad'; +$lang['No group is permitted to see this private album'] = 'Ingen grupp tillåts se detta privata album'; +$lang['Permission management'] = 'Behörighetshantering'; +$lang['Photo sizes with crop'] = 'Bildstorlekar med beskärning'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Bildens mittpunkt är den mest meningsfulla delen (intressefokus).'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'För beskärda bilder, såsom "Fyrkant", kommer Piwigo försöka inkludera bildens intressefokus.'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Som standard antas intressefokus vara i mitten på bilden.'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Välj en zon med musen för att definiera ett nytt intressefokus.'; +$lang['X Position'] = 'X Position'; +$lang['Y Position'] = 'Y Position'; +$lang['X Repeat'] = 'X Repetition'; +$lang['Opacity'] = 'Ogenomskinlighet'; +$lang['top left corner'] = 'övre vänstra hörn'; +$lang['top right corner'] = 'övre högra hörn'; +$lang['middle'] = 'mitt'; +$lang['bottom left corner'] = 'nedre vänstra hörn'; +$lang['bottom right corner'] = 'nedre högra hörn'; +$lang['Select a file'] = 'Välj en fil'; +$lang['add a new watermark'] = 'lägg till vattenstämpel'; +$lang['Apply watermark if width is bigger than'] = 'Lägg till vattenstämpel om bredden är större än'; +$lang['Apply watermark if height is bigger than'] = 'Lägg till vattenstämpel om höjden är större än'; +$lang['Multiple Size'] = 'Multiplicera storlek'; +$lang['Watermark'] = 'Vattenstämpel'; +$lang['Original file : %s'] = 'Originalfil : %s'; +$lang['Posted %s on %s'] = 'Upladdad %s on %s'; +$lang['Added by %s'] = 'Tillagd av %s'; +$lang['Visited %d times'] = 'Besökt %d gånger'; +$lang['Numeric identifier : %d'] = 'Numeriskt id : %d'; +$lang['%s ago'] = '%s sedan'; +$lang['%s in the future'] = '%s i framtiden'; +$lang['Rated %d times, score : %.2f'] = 'Betygsatt %d gånger, betyg : %.2f'; +$lang['%d year'] = '%d år'; +$lang['%d years'] = '%d år'; +$lang['%d month'] = '%d månad'; +$lang['%d months'] = '%d månader'; +$lang['%d week'] = '%d vecka'; +$lang['%d weeks'] = '%d veckor'; +$lang['%d day'] = '%d dag'; +$lang['%d days'] = '%d dagar'; +$lang['%d hour'] = '%d timme'; +$lang['%d hours'] = '%d timmar'; +$lang['%d minute'] = '%d minut'; +$lang['%d minutes'] = '%d minuter'; +$lang['%d second'] = '%d sekund'; +$lang['%d seconds'] = '%d sekunder'; +$lang['Sharpen'] = 'Skärpa'; +$lang['Edit photo'] = 'Redigera bild'; + +$lang['create a new site'] = 'skapa en ny site'; +$lang['No order field selected'] = 'Inget ordningsfält valt'; +$lang['Manage the members'] = 'Hantera medlemmar'; +$lang['Manage photos'] = 'Hantera bilder'; +$lang['Landscape'] = 'Liggande'; +$lang['Duplicate selected tags'] = 'Duplicera markerade taggar'; +$lang['Duplicate'] = 'Duplicera'; +$lang['This group will be set to default'] = 'Denna grupp kommer att användas som standard'; +$lang['View in gallery'] = 'Visa i galleriet'; +$lang['Type here the name of the new group'] = 'Skriv här namnet på den nya gruppen'; +$lang['This group will be unset to default'] = 'Denna grupp kommer inte längre att användas som standard'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Tagg "%s" är nu en kopia av "%s"'; +$lang['Source tag'] = 'Källtagg'; +$lang['between %d and %d pixels'] = 'mellan %d och %d pixlar'; +$lang['between %.2f and %.2f'] = 'mellan %.2f och %.2f'; +$lang['Portrait'] = 'Stående'; +$lang['Ratio'] = 'Förhållande'; +$lang['Rename'] = 'Byt namn'; +$lang['Please select at least two groups'] = 'Vänligen välj minst två grupper'; +$lang['Panorama'] = 'Panorama'; +$lang['Number of albums per page'] = 'Antal album per sida'; +$lang['No members to manage'] = 'Inga medlemmar att hantera'; +$lang['No group selected, no action possible.'] = 'Ingen grupp vald, ingen åtgärd möjlig'; +$lang['Name of the duplicate'] = 'Namn på kopia'; +$lang['Minimum width'] = 'Minsta bredd'; +$lang['Minimum height'] = 'Minsta höjd'; +$lang['Merge selected groups'] = 'Sammanfoga markerade grupper'; +$lang['Purge user cache'] = 'Rensa användarecache'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Skalning efter uppladdning är inaktiverat eftersom GD används som grafikbibliotek.'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Bildens dimension kommer att reduceras till %dx%d pixlar.'; +$lang['Select at least one tag'] = 'Välj minst en etikett'; +$lang['(filtered from %s total users)'] = '(filtrerat från totalt %s användare)'; +$lang['No user selected, no action possible.'] = 'Ingen användare vald, ingen åtgärd möjlig.'; +$lang['No matching user found'] = 'Ingen matchande användare funnen'; +$lang['Registered on %s, %s.'] = 'Registrerad %s, %s.'; +$lang['Users modified'] = 'Användare modifierade'; +$lang['on the %d selected users'] = 'på de %d valda användarna'; +$lang['%d of %d users selected'] = '%d av %d användare valda'; +$lang['All %d users are selected'] = 'Alla %d användare är valda'; +$lang['Basic settings'] = 'Grundläggande inställningar'; +$lang['Change password'] = 'Ändra lösenord'; +$lang['Change username'] = 'Ändra användarnamn'; +$lang['General'] = 'Generellt'; +$lang['Last visit on %s, %s.'] = 'Senast besökt %s, %s.'; +$lang['Loading...'] = 'Laddar...'; +$lang['Mail theme'] = 'Mailtema'; +$lang['No user selected of %d users'] = 'Inga användare valda av %d användare'; +$lang['Password updated'] = 'Lösenord uppdaterat'; +$lang['Show %s users'] = 'Visa %s användare'; +$lang['Showing %s to %s of %s users'] = 'Visar %s till %s av %s användare'; +$lang['Update user'] = 'Uppdatera användare'; +$lang['User %s added'] = 'Användare %s tillagd'; +$lang['User %s updated'] = 'Användare %s uppdaterad'; +$lang['close'] = 'stäng'; +$lang['Close user details'] = 'Stäng användar detaljer'; +$lang['Open user details'] = 'Öppna användar detaljer'; +?> \ No newline at end of file diff --git a/sources/language/sv_SE/common.lang.php b/sources/language/sv_SE/common.lang.php new file mode 100644 index 0000000..4285083 --- /dev/null +++ b/sources/language/sv_SE/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/sv_SE/help/cat_modify.html b/sources/language/sv_SE/help/cat_modify.html new file mode 100644 index 0000000..9919a75 --- /dev/null +++ b/sources/language/sv_SE/help/cat_modify.html @@ -0,0 +1,130 @@ +

              Redigera en kategori

              + +

              Information

              + +
                + +
              • namn: Byt namn på kategori (virtuellt namn byte + av en fysisk kategori).
              • + +
              • beskrivning: en kort text ger en allmän uppfattning om innehållet, + Denna text kommer att visas längst ned på miniatyrer sidan.
              • + +
              + +

              Flytta

              + +

              Om kategorin är virtuell, kan du flytta den. Flytta en kategori innebär +att ändra den överordnade kategorin.

              + +

              Alternativ

              + +
                + +
              • Åtkomsttyp: Behörigheter hantering. Om du gör en + kategori privat, så blir alla dess underordnade kategorier blir privata. Om du gör en + kategori allmän, blir alla dess överordnade kategorier allmänna.
              • + +
              • Låst: Den kategori och dess underkategorier kommer att + vara tillfällig inaktiverad för underhåll.
              • + +
              • Kommentarer: Auktorisera användare kan kommentera delar av dena + kategorin. + +
              • Auktoriserad att ladda upp: Auktorisera användare kan ladda upp + bildfiler. Det här alternativet är tillgängligt för fysisk (inte + virtuella) kategorier.
              • + +
              + +

              Du kan också hantera dessa alternativ på "Egenskaper" +management skärmen (screensLadda upp, Kommentarer,Låst, +Offentlig-Privata,Representant tillgänglig från Administration, kategorier, Egenskaper).

              + +

              Sorteringsordning

              + +

              Använd standard sorteringsordningen för bilderna.

              + +

              Ange om denna sorteringsordningen kommer att gälla även underkategorier.

              + +

              Välj specifika sorterings kriterier som skall användas med på den här kategorin.

              +
                +
              • Skapande datum: Bild fotograferingsdatum
              • +
              • Publilerings datum: Synkronisering datum
              • +
              • Genomsnittskurs (*): Genomsnittlig kan ändras av besökarnas röstning
              • +
              • Mest besökta (*): Det aktuella besöket kan ändra mest besökta ordning
              • +
              • Filnamn: Namn anges i information område +
              • Id :. Internt id (senare kategorierna har ett högre id än tidigare
              • + +
              +

              (*)Varning: Var noga med att testa dessa sorteringsordningsinställningar själv, då de kan ge oväntade resultat

              . + + + +

              Representant

              + +

              Albumet representeras av miniatyren som visas på huvudsidan (category.php) när albumet enbart består av underalbum och inga direkta bilder + (enbart rotalbumet).

              +bild av ett album :

              + +
                + +
              • Fotosida: en av action-knapparna låter dig ange nuvarande foto som representant för det visade albumet. Detta album är tillgängligt enbart för administratörer.
              • + +
              • Redigera information om en bild under administration. Denna sida kan nås via + picture.php eller Batch + hantering i unit mode. Se hjälpen på den här sidan för detaljer.
              • + +
              • Administration » Album » Egenskaper, + Representant. Se hjälpen på den här sidan för detaljer.
              • + +
              • Redigera album (nuvarande sida).
              • + +
              + +

              Val av representant beror på +allow_random_representative inställningsparametern (se include/config_default.inc.php).

              + +

              I default mode (allow_random_representative satt till falskt), +representeras varje album som innehåller minst en bild av en statisk bild. När den har angetts (vid albumets skapande), ändras representanten enbart när en administratör begär det. Om representanten inte är representativ så kan du begära att + Hitta en slumpmässig representant.

              + +

              Om allow_random_representative inställningsparametern är 'sant' +så kan en kategori inte ha en statisk representant. Använd Radera representant knappen.

              + +

              Om albumet enbart innehåller underalbum och ingen bild, så kan den ändå representeras av ett godtyckligt element genom sidanRedigera bildinformation. Den enda valmöjligheten för aktuell sida är radera representant knappen.

              + +

              Länka alla bilder till ett nytt album

              + +
                + +
              • Namn på virtuellt album: Namn på albumet som ska skapas, +alla bilder i nuvarande katefori kommer att länkas till den nya.
              • + +
              • Överliggande album: Var albumet kommer skapas, +lämna blankt för att ange som rot.
              • + +
              + +

              Länka alla albums bilder till album som finns

              + +
                + +
              • Album: Välj målalbum.
              • + +
              + +

              Skicka information till gruppmedlemmarna

              + +
                + +
              • Grupp: mottagargrup
              • + +
              • E-post innehåll: Fritext att skicka.
              • + +
              diff --git a/sources/language/sv_SE/help/cat_move.html b/sources/language/sv_SE/help/cat_move.html new file mode 100644 index 0000000..0da37b5 --- /dev/null +++ b/sources/language/sv_SE/help/cat_move.html @@ -0,0 +1,14 @@ +

              Flytta virtuella album

              + +

              Endast virtuella album kan få ett nytt överordnade album.

              + +

              Virtuella album att flytta

              + +

              Välj en eller flera virtuella album som du vill flytta. +Om listan är tom, att betyda att du inte har skapat ett ännu.

              + +

              Nya överliggande album

              + +

              Välj det nya överliggande albumet (virtuellt eller fysiskt). +Om du inte väljer någon överliggande, kommer den virtuella markerade album flyttas till roten. +Ett album kan inte flyttas till sig själv eller till någon av sina underliggande.

              \ No newline at end of file diff --git a/sources/language/sv_SE/help/cat_options.html b/sources/language/sv_SE/help/cat_options.html new file mode 100644 index 0000000..fdd3082 --- /dev/null +++ b/sources/language/sv_SE/help/cat_options.html @@ -0,0 +1,22 @@ +

              Albums alternativ

              + +

              Alternativ hantering för flera album på en gång

              + +
              + +
              kommentarer
              +
              Ett foto kan ta emot kommentarer från fler besökare om den tillhör ett album med kommentarer aktiverad.
              + +
              Låst/dt> +
              Låst album är avaktiverade för underhåll. Endast administratörer kan se dem i galleriet.
              + +
              Offentlig / privata
              +
              När ett album blir privat, ge rättigheter till användare och grupper
              + +
              representant
              +
              Det här alternativet finns när du anger i konfigurationsinställningen +allow_random_representative (se include/config_defaults.inc.php) to +Sant. Varje album kan representeras av en slumpmässig bild eller ett foto som valts som en unik representant.
              + +
              diff --git a/sources/language/sv_SE/help/cat_perm.html b/sources/language/sv_SE/help/cat_perm.html new file mode 100644 index 0000000..d12113b --- /dev/null +++ b/sources/language/sv_SE/help/cat_perm.html @@ -0,0 +1,13 @@ +

              Hantera behörigheter för en kategori

              + +

              Den här meny är bara tillgänglig för privata kategorier. Här kan du välja +användare och grupper som godkänts för en kategori.

              + +

              Grupper

              + +

              Du kan neka eller bevilja grupper tillgång för den aktuella kategorin. Genom att modifiera +en gruppstillstånd kommer användare som tillhör dessa grupper vägras eller beviljas tillträde till den kategori.

              + +

              Användare

              + +

              Du kan neka eller ge tillgång till enskilda användare. Användare som har tillgång till genom en grupp behörighet kan nekas tillträde med undantag.

              \ No newline at end of file diff --git a/sources/language/sv_SE/help/configuration.html b/sources/language/sv_SE/help/configuration.html new file mode 100644 index 0000000..06d0ae8 --- /dev/null +++ b/sources/language/sv_SE/help/configuration.html @@ -0,0 +1,132 @@ +

              Konfiguration

              + +

              Denna meny låter administratören utföra grundläggande konfiguration. Faktum är att denna +meny visar endast enkel konfigurering parametrar som bör räcka för +de allra flesta administratörer. Om du vill se andra otaliga (och +avancerad) konfigurationsparametrar, läsa filen include/config_default.inc.php.

              + +

              Den här meny är uppdelad i flera avsnitt, omgruppera konfiguration +parametrar efter tema.

              + + +

              Huvudsakliga

              +
                +
              • Galleri titel: används i RSS-feed och noteringar av +e-post.
              • + +
              • Sid banner: Visas högst upp på varje public sida.
              • + +
              • Galleri URL: används för RSS-flöde.
              • + +
              • Stäng galleri: stänger hela galleriet för + underhåll. Endast administratörer användare kommer att kunna nå + galleriet.
              • + +
              • Betyg: Funktionen för att sätta betyg är aktiverad.
              • + +
              • Bestyg av gäster: Även oregistrerade användare kan betygsätta bilder.
              • + +
              • Tillåt användare registrering: Vem som helst kan registrera sig.
              • + +
              • E-post är obligatoriskt för alla användare: e-postadress kommer att kontrolleras vid registrering eller profil uppdatering, förutom om åtgärden görs av en administratör.
              • + +
              • Skicka e-post när nya användare regestrerar sig: administratörer kommer att meddelas via e-post för varje ny registrering.
              • + +
              + +

              Historia

              + +

              Besök på sidorna category.php Och picture.php kommer att sparas i + historisk tabell.

              + +

              Besök kommer att visas i Administration, Erbjudande, Historik.

              + +
                +
              • Spara sidan som gäster har besökt: Sidor som besökts av gäster kommer att registreras.
              • + +
              • Spara sidan som registrerade användare har besökt: Sidor som besökts av användare kommer att registreras.
              • + +
              • Spara sidan som administratörer har besökt: Sidor som besökts av administratörer kommer att registreras.
              • + +
              + +

              Comments

              +
                + +
              • Kommentarer till allal: Även oregistrerade gäster kan skicka + kommentarer.
              • + +
              • Antal kommentarer per sida.
              • + +
              • Validering: en administratör måste validera användarens kommentarer innan de blir synliga på webbplatsen. Användarens kommentarer valideras i + menyn administration Administration, bilder, + Komentarer.
              • + +
              • Skickar e-post till admins när en komentar godkänns: +Skickar ett mejl till administratörer när en användare anger en kommentar och den här kommentaren är godkänd.
              • + +
              • Skickar e-post till admins när en kommentar kräver validering: +Skickar ett mejl till administratörer när en användare anger en kommentar som kräver godkännande av admin. +Kommentarer validering sker på Menyn Administration, bilder, Kommentarer .
              • + +
              + +

              Ladda upp

              +
                +
              • Visa upp laddnings länk varje gång: Om uppladdade kategorier finns redan, kommer en uppladdning länk visas för varje kategor.
              • +
              • Användarnas behörighets nivå för uppladdning: Begränsar uppladdning till vissa kategorier av användare
              • +
              • Skickar e-post till admin när en bild är uppladdad: Administratörer kommer att meddelas via e-post varje gång en bild laddas upp av en användare.
              • +
              + +

              Standard display

              + +

              Här kan du ändra visningsalternativ som används av gäst, standard användare som inte har loggat in. +När användaren har loggat in så får användaren sina egna alternativ +(modifiable in Profil).

              + +

              Det är möjligt att ändra visningsalternativ för alla befintliga användare, på Administration, +Inloggnings id, Användare menyn, där du kan välja en lista med +användare.

              + +
                + +
              • Språk /strong>: används på Piwigo + etiketter bara. Kategori namn, namn på bild och alla beskrivande fält är inte + lokala.
              • + +
              • Antal bilder per rad
              • + +
              • Antal rader per sida
              • + +
              • Tema för gränssnitt
              • + +
              • Senaste perioden: Sorterat på dagar. Period under vilken en bild är + visas som nya. Måste vara större än 1 dag.
              • + +
              • Expandera alla kategorier: Expandera alla kategorier som + standard i menyn Varning: det här alternativet är resurs krävande + och kan generera stora menyn om ditt kategori träd innehåller många + kategorier.
              • + +
              • Visa antal kommentarer: visa antalet kommentarer + för varje bild på miniatyrerna sidan. Resurs krävande.
              • + +
              • Visa antal träffar: visa träffar på bilder + under miniatyrbilden på miniatyrerna sida. + Först när avancerad konfiguration parameter:
                + $conf['show_nb_hits'] = Sant;
                + Notice: Inte aktiverat som standard.
              • + +
              • Maximal bredd på bilderna: visa max bredden. + Bilder som är större än den här inställningen kommer att ändras på + i visningsläget. Välj hälldre att ändra bredden på dina bilder, + det skulle vara en bättre praxis.
              • + +
              • Maximal höjd på bilderna: Samma anmärkningar som för +maximal bredd inställningen.
              • + +
              \ No newline at end of file diff --git a/sources/language/sv_SE/help/extend_for_templates.html b/sources/language/sv_SE/help/extend_for_templates.html new file mode 100755 index 0000000..bd447db --- /dev/null +++ b/sources/language/sv_SE/help/extend_for_templates.html @@ -0,0 +1,54 @@ +

              Mallutökningsinsällning

              + +

              Om

              +

              +Ditt Piwigo galleri kan anpassas genom att ersätta befintliga mallfiler med anpassade varianter. Till exempel, standardmallen för rubriker (header.tpl) kan ersättas med en anpassad rubrikmall. Efter att ha skickat ändringarna till databasen kommer galleriet visa de anpassade rubrikerna istället för originalrubriken.
              +Mallutökningar är ett kraftfullt verktyg för att skapa anpassade teman för både nya och avancerade användare. Använd tillsammans med LokalaFiler redigeraren kan du skapa dina egna underteman.

              + +

              Originalmall

              +

              Ett tema innehåller ett antal mallfiler som utgör gallerisidorna. Detta är originalmallarna.

              + +

              Alternativa URL nyckelord

              +

              Detta är ord som återfinns i galleriets URL efter modulnamnet. De kan också vara aktiva permalänkar (se dokumentationen om permalänkar för mer information) VARNING: om samma originalmall och samma nyckelord används för mer än en anpassad mall så kommer enbart den senaste vara aktiv.

              + +

              Bundet Tema

              +

              Det bundna temat är temat varifrån mallfilerna ersätts.

              + +

              Var är originalmallarna?

              +

              Originalmallarna är mallfilerna som ingår i vardera tema. Dessa är sparade i /themes/default/template (eller themes//template). Dessa temafiler skall ine redigeras där de är, eftersom ändringar kommer att ersättas vid temauppdateringar.
              +Stöd för följande originalteman inkluderas:

              +
                +
              • index.tpl
              • +
              • mainpage_categories.tpl and/or thumbnails.tpl
              • +
              • menubar.tpl
              • +
              • header.tpl and/or footer.tpl
              • +
              • picture_content.tpl and/or picture.tpl
              • + +
              • profile.tpl and/or profile_content.tpl
              • +
              • tags.tpl
              • +
              • upload.tpl
              • +
              • about.tpl
              • +
              • popuphelp.tpl
              • +
              • search.tpl and/or search_rules.tpl
              • +
              • nbm.tpl and/or notification.tpl
              • +
              • identification.tpl and/or register.tpl
              • +
              • redirect.tpl
              • +
              +

              Spara anpassade mallar

              +

              Anpassade mallar skall sparas i template-extension mappen eller undermappar. Till exempel, /template-extension/my-default/header.tpl (eller /template-extension//header.tpl) Mallfiler kan döpas hursomhelst med .tpl suffix. Temafiler i undermappar visas i Mallinställningssidan som tillgängliga anpassade mallar.

              +

              Aktivera anpassade mallar

              +

              Välj originalmallen att ersätta. Alternativt, välj URL nyckelord för att säkerställa att den anpassade mallen enbart visas på sidor som innehåller det nyckelordet. Välj ett bundet tema och ändringarna kommer att aktiveras för det temat. Skicka ändringarna till databasen.

              +

              Avaktivera anpassade teman

              +

              Välj bort originalmallen och skicka ändringarna till databasen.
              +Radera de anpassade mallfilerna från mall-tilläggs mappen.

              + + +

              Varningar

              +
                +
              • Originalmallen måste vara rätt originalmall, annars kan oväntade resultat uppnås.
              • +
              • Om samma originalmall och samma URL nuckelord används till mer än en anpassad mall kommer enbart den senaste vara aktiv.
              • +
              • Distribuerade exempelmallar är enbart för teständamål. Redigera dem inte. Skapa dina egna eller kopiera befinliga temamallar till /template-extension//
              • +
              • När den anpassade tema-mallen raderas så återaktiveras genast originalmallfilen.
              • +
              + + diff --git a/sources/language/sv_SE/help/group_list.html b/sources/language/sv_SE/help/group_list.html new file mode 100644 index 0000000..8bc1dc0 --- /dev/null +++ b/sources/language/sv_SE/help/group_list.html @@ -0,0 +1,22 @@ +

              Grupplista

              + +

              Här kan du hantera grupper.

              + +

              Lägg till en grupp

              + +

              Administratören kan lägga till grupper.

              + +

              Grupplista

              + +

              för varje element, så kan du i listan:

              + + +
                +
              • gå till listan för över medlemmar
              • +
              • gå till behörighetsmenyn
              • +
              • ta bort en grupp (kräver en bekräftelse)
              • +
              • växla status, "default" (kräver en bekräftelse)
              • +
              + +

              Standardgrupper

              +

              Standardgrupper är grupper som är automatiskt kopplade till varje ny användare vid registrering eller nya användare skapande av en administratör.

              diff --git a/sources/language/sv_SE/help/help_add_photos.html b/sources/language/sv_SE/help/help_add_photos.html new file mode 100644 index 0000000..78eb691 --- /dev/null +++ b/sources/language/sv_SE/help/help_add_photos.html @@ -0,0 +1,27 @@ +

              Det finns flera sätt att lägga dina bilder i ditt galleri:

              + +
                +
              • Direkt uppladdning i din webbläsare är det + enklaste och mest direkta sättet. Beroende på din Webbläsares funktioner + och din webbserver så kan fel uppkomma,tex För en stor mängd bilder eller i fall du stöter på några andra problem, + så finns det andra metoder som bara väntar på dig!
              • +
              + + + +
                +
              • pLoader är ett program, som installeras på din dator. Dra &släpp bilder till pLoader fönstret, klicka på "Ladda upp till Piwigo" och låt pLoader göra jobbet. Det finns även andra program som WinToPiwigo eller Digikam som är ett export plugin till Piwigo.
              • +
              + + + +
              +
                +
              • FTP-överföring är den mest rekommenderade sättet att lägga till en + mycket stor samling av bilder med ett minimalt antal klick. Följ + guiden att förbereda dina bilder. FTP-metod kan du kontrollera exakt + den fysiska organisationen av dina bilder på din server.
              • +
              + + +
              \ No newline at end of file diff --git a/sources/language/sv_SE/help/help_groups.html b/sources/language/sv_SE/help/help_groups.html new file mode 100644 index 0000000..af7f37b --- /dev/null +++ b/sources/language/sv_SE/help/help_groups.html @@ -0,0 +1,11 @@ +

              Grupper är ett bekvämt sätt att ange behörigheter för en lista med användare.

              + +

              Skapa grupper i Administration » Användare +» Grupper och användare associerade till denna grupp i +Administration » användare » +Hantera.

              + +

              En användare kan tillhöra flera grupper. Tillåtelse har företräde framför Förbud: +Om användaren "jack" tillhör gruppen "familj" och "vänner", men endast gruppen +"familj" kan se kategori "jul 2003", så kommer +"jack" att kunna se "jul 2003".

              diff --git a/sources/language/sv_SE/help/help_misc.html b/sources/language/sv_SE/help/help_misc.html new file mode 100755 index 0000000..b87d64d --- /dev/null +++ b/sources/language/sv_SE/help/help_misc.html @@ -0,0 +1,10 @@ +

              Så snart du skapat ditt galleri kan du ange inställningar för besökare +

                +
              • Standardvisningen som du föredrar i Administration » Inställningar » Alternativ tab Gästinställningar
              • +
              • Standardtema i Administration » Inställningar » Teman
              • +
              • Standardspråk i Administration » Inställningar » Språk
              • +
              + Som standard kommer varje ny användare ärva dessa inställningar vid registrering. +

              +

              Om fu har någon fråga så välkomnas du av Piwigo kollektivet på forumet.

              + diff --git a/sources/language/sv_SE/help/help_permissions.html b/sources/language/sv_SE/help/help_permissions.html new file mode 100644 index 0000000..980bc00 --- /dev/null +++ b/sources/language/sv_SE/help/help_permissions.html @@ -0,0 +1,57 @@ +
              +Behörigheter på bilder + +

              Varje bild har en behörighetsnivå .(Låsbar), Varje användare har också en behörighetsnivå (ett ID). Det finns 5 behörighetsnivåer:

              +
                +
              1. Ingen
              2. +
              3. Kontakter
              4. +
              5. Vänner (vilket är högre än en kontakter)
              6. +
              7. Familj (vilket är högre än en vänner)
              8. +
              9. Administratörer (vilket är högre än någon annan nivå)
              10. +
              + +

              Högre nivåer har behörighet på lägre nivåer. Ju höre behörighet användaren har, ju mer bilder kan användaren se.

              + +

              Till exempel, om foto "peter_wedding-0024.jpg" Har "Familj" behörighetsnivå, då:

              +
                +
              • Peter (som är en "administratör") kommer att se bilden eftersom "Adminstratör" kan se alla bilder
              • +
              • Beth (som är en "Familj" member) kommer också se bilden
              • +
              • Mary (som är en "Vänner") kommer inte se bilden
              • +
              + +

              En användare som inte har någon behörighet att visa innehållet i en kategori, kommer att se kategorin själv, inte ens dess titel. Samma princip gäller för en taggar

              + +

              Du kan ställa in behörighetsnivån för en användare på Administration » Användare » Hantera skärmen.

              + +
              + +
              +Behörigheter på Kategorier + +

              Om behörighets niverna inte passar dina behov, kan du hantera även sätta behörigheter på kategorier för en användare eller en grupp. Du kan hantera behörigheter på bilder och kategorier samtidigt, utan konflikter.

              + +

              Du kan förbjuda tillgång till kategorier. Byt kategori åtkomst typ till +"Privat" om du vill hantera behörigheter.

              + +

              Du kan ange en kategori som "privat" genom att redigera en kategori +(Administration » Kategorier » Hantera +» Editera) eller genom att ange alternativ för hela din kategori trädet +(Administration » Kategorier » +Engenskaper » Publik / Privat).

              + +

              När kategorin är privat, kan du hantera behörigheter för grupper och +användare med dessa 3 menyer:

              + +
                + +
              • Administration » Användare » hantera » + behörigheter (en länk per användare)
              • + +
              • Administration » Användare » Grupper » + behörigheter (en länk per grupp)
              • + +
              • Administration » kategorier » hantera » editera + Kategori behörighet (en länk per kategori)
              • + +
              +
              diff --git a/sources/language/sv_SE/help/help_virtual_links.html b/sources/language/sv_SE/help/help_virtual_links.html new file mode 100755 index 0000000..af01e7d --- /dev/null +++ b/sources/language/sv_SE/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

              Foton visas i albumet som motsvarar deras filkatalog.

              + +

              Du kan även visa en bild i flera album, utan att duplicera bilden på din webbserver. Associera bilden med ett godtyckligt album från fotoredigeringsskärmen (som alla administratörer kan nå från bildsidan på gallerisidan).

              + +

              Virtuella album skapas konceptuellt så att de inte har någon motsvarande filkatalog (directory). Skapa virtuella album från Administration » Album » +Hantera.

              diff --git a/sources/language/sv_SE/help/history.html b/sources/language/sv_SE/help/history.html new file mode 100755 index 0000000..4b54d41 --- /dev/null +++ b/sources/language/sv_SE/help/history.html @@ -0,0 +1,22 @@ +

              Historik

              + +

              På dessa sidor kan du se antalet besök till ditt galleri enligt de inställningar du valt i: Administration » Alternativ » Allmänt » Historik

              + +

              Statistik

              +
                +

                Om du har valt att logga sidbesök (index.php och picture.php), så kan du se statistik från denna fliken.

                +
              • Global statistics: besök per år.
              • +
              • Yearly statistics: besök per månad under valt år.
              • +
              • Monthly statistics: besök under vald månad.
              • +
              • Daily statistics: besök per timme under vald dag.
              • +
              + +

              Search

              +
                +

                Om du har valt att logga sidbesök (index.php och picture.php), så kan du navigera detaljer via denna flik genom olika filter.

                +
              • Filtrera via datum: välj datumintervall för sökningen genom att sätta start och slutdatum.
              • +
              • Filtrera via elementtyp: välj typ av element för statistik gällande det elementet.
              • +
              • Filtrera per användare: välj användare för statistik om den användaren.
              • +
              • Filtrera per bildidentitet: välj bildidentifierare för statistik om den bilden.
              • +
              • Filtrera via filnamn: välj filnamn för statistik för den filen.
              • +
              diff --git a/sources/language/sv_SE/help/index.php b/sources/language/sv_SE/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/sv_SE/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/sv_SE/help/maintenance.html b/sources/language/sv_SE/help/maintenance.html new file mode 100755 index 0000000..4e8ccbf --- /dev/null +++ b/sources/language/sv_SE/help/maintenance.html @@ -0,0 +1,26 @@ +

              Underhåll

              + +

              För att optimera sidgenereringstiden så använder Piwigo cachad information. Till exempel, istället för att räkna antalet foton som ett album innehåller varje gång en sida laddas, så sparas det i databasen. Teoretiskt skall denna information alltid vara korrekt, men ibland kan ett fel inträffa och den cachade informationen blir utdaterad.

              + +

              Viss information tappar värde ju äldre den blir. Genom att radera oanvändbar information från databasen kan du spara lagringsutrymme på hårddisken.

              + +
                +
              • Radera hemlösa taggar
              • +
              +
                +
              • Uppdatera albumsinformation: För varje album kommer följande information kontrolleras och uppdateras om nödvändigt: lista över överliggande album, antal foton, senaste fotodatum, position bland syskonalbum, position bland alla album. Detta konsistenskontrollerar även repesentantbilderna.
              • +
              • Uppdatera bildinformation: För varje bild är den uppdaterade informationen: full sökväg, snittbetyg. Varning, blanda inte ihop med metadata information som måste synkroniseras från Administration » Verktyg » Synkronisera, eller på redigeringssidan för individuella bilder (genom Bild till exempel).
              • +
              +
                +
              • Reparera och optimera databasen:Genomför omarrangering, reparation och optimeringsåtgärder på alla tabeller i databasen.
              • +
              • Ominitialisera integritetskontroll
              • +
              + +
                +
              • Radera historikdetaljer: Radera alla rader från historiktabellen. Bild Administration » Verktyg » Historik kommer inte längre visa tidigare historik. Varning: all data kommer raderas, utan möjlighet till återställning.
              • +
              • Radera historiksammanställning: Radera alla sammanställningar av besökshistoriken. Denna sammanställning beräknas från den detaljerade informationen.
              • +
              • Radera sessioner: Raderera utgångna användarsessioner.
              • +
              • Radera ej använda notifikationslöp (notification feeds)
              • +
              • Radera sökhistorik
              • +
              • Radera kompilerade mallar
              • +
              diff --git a/sources/language/sv_SE/help/notification_by_mail.html b/sources/language/sv_SE/help/notification_by_mail.html new file mode 100755 index 0000000..1ca2732 --- /dev/null +++ b/sources/language/sv_SE/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

              Notifikationer via e-post (NBM)

              + +

              Inställningar och hantering av e-post notifikationer till användare för att informera om ändringar på din sida.

              + +

              Den här sidan består av tre flikar:

              + +

              Inställningar

              +

              Tillgänglig bara för webmasters. Den här fliken anger parametrer för e-post notifikationer.

              + +

              Prenumerera

              +

              Tillgänglig bara för webmasters. Den här fliken hanterar användarinställningar för prenumerationer på e-post notifikationer. Lägg till användare genom att markera prenumerationsvalrutan.

              + +

              Skicka

              +

              Tillgänglig bara för webmasters och administratörer. Den här fliken låter administratörer att skicka notifikationer via e-post till prenumererande ancändare.

              + diff --git a/sources/language/sv_SE/help/permalinks.html b/sources/language/sv_SE/help/permalinks.html new file mode 100755 index 0000000..6c882da --- /dev/null +++ b/sources/language/sv_SE/help/permalinks.html @@ -0,0 +1,7 @@ +

              Permalänkar

              + +

              Permalänkar används för att göra urls till album enklare. När ett album är associerat med en permalänk så behöver albumets id ej längre anges i url'en.

              + +

              När en permalänk raderas så kan du spare den i permalänkhistoriken så att externa länkar till Piwigo fortsätter att hitta rätt. I permalänkshistoriktabellen kan du se vilket datum en permalänk raderats, senaste gång den använts och antalet gånger den använts.

              + +

              Notera att permalänkar måste vare unika per album. Även i permalänkshistoriken måste dessa vara unika.

              diff --git a/sources/language/sv_SE/help/photos_add_ftp.html b/sources/language/sv_SE/help/photos_add_ftp.html new file mode 100755 index 0000000..028058f --- /dev/null +++ b/sources/language/sv_SE/help/photos_add_ftp.html @@ -0,0 +1,71 @@ +
              + Snabb Start + +
                +
              1. Skapa en katalog på din dator.
              2. + +
              3. Kopiera några bilder till den nya katalogen, anpassa storleken för att visas på webben. Varning: Katalog och filnamnen får bara innehålla bokstäver, tecknen "-", "_" och ".". Inga mellanslag eller accentuerade bokstäver.
              4. + +
              5. Med en FTP klient, kopiera din katalog till "galleries" katalogen i din piwigo installation.
              6. + +
              7. Logga in i ditt galleri och gå till Administration och klicka på den stora knappen benämnd "snabb lokal synkronisering".
              8. +
              + +

              Gratulerar! Du har nu lyckats skapa ditt första album i ditt galleri.

              +
              + +
              + Katalog och filstruktur + +
                + +
              • + +

                Album ska läggas i "galleries" katalogen under Piwigo installationskatalogen. + Här följer ett exempel på katalogstrukturen på ett väldigt litet galleri (men + som använder många funktioner):

                + +
                +galleries
                +|-- wedding
                +|   |-- celebration
                +|   |   |-- arrival
                +|   |   |   |-- paul-alone.jpg
                +|   |   |   +-- sarah-alone.jpg
                +|   |   +-- departure
                +|   |       +-- paul-and-sarah.jpg
                +|   +-- party
                +|       |-- dancers001.jpg
                +|       |-- dancers002.jpg
                +|       +-- dancers003.jpg
                ++-- honeymoon
                +    |-- hotel.png
                +    |-- video-from-plane.avi
                +    +-- pwg_representative
                +        +-- video-from-plane.jpg
                +
                + +
              • + +
              • Förutom "pwg_representative" (se förklaring nedan) så skapar varje katalog i "galleries" ett eget album. Det finns ingen begränsning på hur många under album som går att skapa.
              • + +
              • >I grunden representeras varje objekt av en fil. En fil kan vara ett + Piwigo objekt om filändelsen är med i file_ext + konfigurations parametern (se filen include/config_default.inc.php). En fil kan + vara en bild om fileändelsen är med i picture_ext + konfigurations parametern.
              • + +
              • Icke foto objekt (video, ljud, texter, vad som helst..) representeras som standard av en ikon som matchar filändelsen. + Du kan om du vill associera en "thumbnail" fil som visar istället för ikonen. + (se video.avi i exemplet ovan).
              • + +
              • Varning: Katalog och filnamn får bara bestå av bokstäver och dessa tecken "-", "_" or ".". Inga mellanslag eller accentuerade + bokstäver.
              • + +
              • Nät bilderna är placerade i katalogen, gå till, + gå till: Administration » Verktyg » + Synkronisera
              • + +
              +
              \ No newline at end of file diff --git a/sources/language/sv_SE/help/search.html b/sources/language/sv_SE/help/search.html new file mode 100755 index 0000000..efd3d74 --- /dev/null +++ b/sources/language/sv_SE/help/search.html @@ -0,0 +1,24 @@ +

              Sök

              + +

              Denna sida låter dig söka foton i hela galleriet.

              + +
              + +
              Sök efter ord
              +
              Sök efter ett eller flera ord i attributen kopplade till foton + i galleriet. Använd * som wildcard för partiella matchningar.
              + +
              Sök efter en författare
              +
              Använd * som wildcard för partiella matchningar.
              + +
              Sök efter datum
              +
              Välj ett datum och/eller ett slutdatum för din fråga. Lämna datumfältet + tomt om du vill ställa en "före" fråga. Årtal i sista fältet anges i + följande format : AAAA (dvs 2004)
              + +
              Sök i album
              +
              Välj ett eller flera album som du vill söka i. För att söka + i alla underalbum väljer du huvudalbum, och sedan aktiverar sök + i underalbum nedan.
              + +
              \ No newline at end of file diff --git a/sources/language/sv_SE/help/synchronize.html b/sources/language/sv_SE/help/synchronize.html new file mode 100755 index 0000000..2f36545 --- /dev/null +++ b/sources/language/sv_SE/help/synchronize.html @@ -0,0 +1,14 @@ +

              Synkronisering

              + +

              Det finns två olika typer av synkronisering:

              +
                +
              • kataloger/filer
              • +
              • fil metadata
              • +
              + +

              Katalog och fil synkronisering innebär att du uppdaterar album databasen utifrån "galleries" katalog strukturen. +Fil metadata synkronisering uppdaterar foto information så som filstorlek, bildens dimensions i pixlar, EXIT eller IPTC information till databasen.

              + +

              När du synkroniserar dina uppladdningar med ditt galleri måste du först synkronisera kataloger och filer.

              + +

              Synkroniseringen kan ta lång tid (beroende på din hårdvaruprestanda/belastning och hur många element som ska hanteras), därför kan man synkronisera album för album.

              \ No newline at end of file diff --git a/sources/language/sv_SE/help/user_list.html b/sources/language/sv_SE/help/user_list.html new file mode 100644 index 0000000..0f97a3b --- /dev/null +++ b/sources/language/sv_SE/help/user_list.html @@ -0,0 +1,33 @@ +

              Användarlista

              + +

              Detta är platsen för hantering av inställningar för registrerade användare, utom behörigheter som hanteras från andra menyer.

              + +

              Lägg till en användare

              + +

              Administratören kan lägga till användare manuellt.

              + +

              Lista över användare

              + +

              Listan kan filtreras på användarnamn (använd * som jokertecken), grupp eller +status. Den kan sorteras genom registrering datum eller användarnamn, i stigande +eller fallande ordning.

              + +

              I denna meny kan du hantera flera användare samtidigt, med hjälp av olika alternativ:

              + +
                + +
              • ta bort användare (kräver bekräftelse)
              • +
              • ändra status
              • +
              • koppla till eller separera från grupper
              • +
              • ändra visningsegenskaper
              • +
              • ändra ytterligare egenskaper
              • + +
              + +

              Som standard är målet användaren, eller alla användare som visas i den filtrerade listan.

              + +

              Rådgivare

              +

              Definition av en användare klassad som Rådgivare: en användare som har läst / simulering på alla menyer som tillåts av sina egna behörigheter.

              + +

              Rådgivare-läge ställs in med variabeln $conf['allow_adviser'].

              +

              Om denna variabel är satt till "sant", så kan alla användare vara Rådgivare

          diff --git a/sources/language/sv_SE/install.lang.php b/sources/language/sv_SE/install.lang.php new file mode 100644 index 0000000..10f5ecc --- /dev/null +++ b/sources/language/sv_SE/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Behöver du hjälp? Ställ din fråga på Piwigo message board.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Besökare kommer att kunna kontakta sidans administratör med denna e-mail adress'; +$lang['PHP 5 is required'] = 'PHP 5 krävs'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Ditt webbhotell använder just nu PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo kan kanske komma att ändra dina inställningar i PHP 5 genom att skapa eller ändra en .htaccess fil.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Notera att du kan ändra dina inställningar förutsatt att du startar om Piwigo efteråt.'; +$lang['Try to configure PHP 5'] = 'Försök att konfigurera PHP 5'; +$lang['Sorry!'] = 'Ursäkta!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo kunde inte konfigurera PHP 5.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Vi rekomenderar att du kontaktar leverantören för ditt webbhotell för att se hur du kan ändra till PHP 5.'; +$lang['Hope to see you back soon.'] = 'Välkommen tillbaka snart igen.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Gratulerar, Piwigo installationen är klar'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'En alternativ lösning är att kopiera texten ovan och klistra in i filen "local/config/database.inc.php" (Varning : database.inc.php får enbart innehålla texten från textarean, inga radbrytare eller mellanrum)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Kunde inte skapa filen local/config/database.inc.php .'; +$lang['Download the config file'] = 'Ladda ner konfigurations filen'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Du kan ladda ner konfigurationsfilen och ladda upp den till local/config .'; +$lang['Just another Piwigo gallery'] = 'Ännu ett Piwigo galleri'; +$lang['Welcome to my photo gallery'] = 'Välkommen till mitt fotogalleri'; +$lang['Welcome to your new installation of Piwigo!'] = 'Välkomment till din nya installation av Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Tveka inte att kontakta våra forum för hjälp: %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost eller det värdnams som du valt eller tilldelats av din webhotells leverantör/server'; +?> \ No newline at end of file diff --git a/sources/language/sv_SE/iso.txt b/sources/language/sv_SE/iso.txt new file mode 100644 index 0000000..5a7ba11 --- /dev/null +++ b/sources/language/sv_SE/iso.txt @@ -0,0 +1 @@ +Svenska [SE] \ No newline at end of file diff --git a/sources/language/sv_SE/sv_SE.jpg b/sources/language/sv_SE/sv_SE.jpg new file mode 100644 index 0000000..5a27bb2 Binary files /dev/null and b/sources/language/sv_SE/sv_SE.jpg differ diff --git a/sources/language/sv_SE/upgrade.lang.php b/sources/language/sv_SE/upgrade.lang.php new file mode 100644 index 0000000..0d698dd --- /dev/null +++ b/sources/language/sv_SE/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s (or equivalent).'] = 'Denna sida föreslår att du ska uppgradera databasen från din gamla versionen till den nya versionen. Uppgraderingen assistenten tycker att du för närvarande kör en versionen %s (eller motsvarande).'; +$lang['Upgrade from version %s to %s'] = 'Uppgradera från version %s till %s'; +$lang['Statistics'] = 'Statistik'; +$lang['total upgrade time'] = 'total uppgraderings tid'; +$lang['total SQL time'] = 'Total SQL tid'; +$lang['SQL queries'] = 'SQL-frågor'; +$lang['Upgrade informations'] = 'Uppgraderings information'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Gör en underhållskontroll i mynyn [Administration> Verktyg> Underhåll] om du stöter på några problem. .'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Som en försiktighetsåtgärd, har följande insticksmoduler avaktiverats, Du måste kontrollera alla plugins uppgraderingar före återaktivering av dem:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Endast en administratör kan köra uppgraderingen: Logga in nedan.'; +$lang['You do not have access rights to run upgrade'] = 'Du har inte behörighet att köra uppgradering'; +$lang['All sub-albums of private albums become private'] = 'Alla underliggande album av "privata album" blir "privata'; +$lang['User permissions and group permissions have been erased'] = 'Användare och grupper behörigheter har raderats'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'miniatyrbilder Endast prefix och webmaster postadress har sparats från tidigare konfiguration'; +$lang['In %s, before ?>, insert:'] = 'I %s, innan ?>, infoga:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Som en försiktighetsåtgärd, har följande teman har avaktiverats. Du måste kolla tema uppgraderingar innan du aktivera dem:'; + +?> \ No newline at end of file diff --git a/sources/language/ta_IN/admin.lang.php b/sources/language/ta_IN/admin.lang.php new file mode 100755 index 0000000..40546dd --- /dev/null +++ b/sources/language/ta_IN/admin.lang.php @@ -0,0 +1,199 @@ +Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = ' Android க்கான Piwigo பயன்பாட்டு உங்கள் Piwigo கேலரியில் உங்கள் Android தொலைபேசி அல்லது வரைபட்டிகை இணைக்க அனுமதிக்கும், சில ஆல்பங்களை உருவாக்க மற்றும் ஒரே நேரத்தில் பல புகைப்படங்களை பதிவேற்றலாம்.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = ' Piwigo iOS க்கு பயன்பாட்டு சில ஆல்பங்களை உருவாக்கி ஒரே நேரத்தில் பல புகைப்படங்களை பதிவேற்ற, உங்கள் ஐபோன், ஐபாட் அல்லது ஐபாட் டச் உங்கள் Piwigo கேலரி இணைக்க நீங்கள் அதிகாரமளிக்கிகிறது.'; +$lang['ACCESS_3'] = 'நிர்வாகிகள் அணுகல்'; +$lang['ACCESS_4'] = 'வலை மேலாளர்கள் அணுகல்'; +$lang['ACCESS_5'] = 'அணுகுவதற்கு இல்லை +'; +$lang['Access type'] = 'அணுகல் வகையான'; +$lang['Action'] = 'செயல்'; +$lang['Actions'] = 'செயல்கள்'; +$lang['Activate'] = 'செயலாக்க'; +$lang['ACCESS_2'] = 'பதிவு செய்த பயனர் அணுகல்'; +$lang['ACCESS_1'] = 'அனைத்து அணுகல் +'; +$lang['ACCESS_0'] = 'இலவச அணுகல்'; +$lang['A new version of Piwigo is available.'] = 'ஒரு புதிய Piwigo பதிப்பு உள்ளது.'; +$lang['A locked gallery is only visible to administrators'] = 'ஒரு பூட்டிய கேலரி நிர்வாகிகளால் மட்டுமே காண முடியும்'; +$lang['Activate Navigation Bar'] = 'செயல்படுத்தவும் திசை பட்டையில்'; +$lang['Activate Navigation Thumbnails'] = 'திசையமைப்பு சிறுபடவுருக்களையும் செயல்படுத்தவும்'; +$lang['Add'] = 'சேர்க்க'; +$lang['Add New Language'] = 'புதிய மொழியை சேர்க்க'; +$lang['Add New Theme'] = 'ஒரு புதிய கருப்பொருளை சேர்க்க'; +$lang['Add Photos'] = 'ஒரு புகைப்படத்தை சேர்க்க'; +$lang['Add a criteria'] = 'ஒரு நிர்ணய அளவை சேர்க்க'; +$lang['Add a filter'] = 'ஒரு வடிப்பான் சேர்க்க'; +$lang['Add a tag'] = 'ஒரு குறியை சேர்க்க'; +$lang['Add a user'] = 'ஒரு பயனர் சேர்க்க'; +$lang['Add a virtual album'] = 'ஒரு மெய்நிகர் ஆல்பம் சேர்க்க'; +$lang['Add another set of photos'] = 'மற்றொரு புகைப்படங்கள் தொகுப்பைஅமைக்க'; +$lang['Add detailed content'] = 'சில விவரமான உள்ளடக்கத்தை சேர்க்க'; +$lang['Add group'] = 'குழுவாக சேர்க்க'; +$lang['Activate comments'] = 'கருத்துரைகளை செயல்படுத்த'; +$lang['Activate icon "%s"'] = 'படவுருவை செயல்படுத்த "% s"'; +$lang['Activate icon "new" next to albums and pictures'] = 'படவுருவை செயல்படுத்த "புதிய" அடுத்ததாக ஆல்பங்கள் மற்றும் படங்களின்'; +$lang['Active Languages'] = 'செயல்மிகு மொழிகள்'; +$lang['Active Plugins'] = 'செயல்மிகு செருகுநிரல்கள்'; +$lang['Active Themes'] = 'செயல்மிகு கருப்பொருள்கள்'; +$lang['Add tags'] = 'குறிச்சொற்களை சேர்க்க'; +$lang['Add to caddie'] = 'Caddies சேர்க்கவும்'; +$lang['Add write access to the "%s" directory'] = 'சேர்க்க எழுதுவதற்கு அணுகல் "%s" அடைவில்'; +$lang['Add/delete a permalink'] = 'ஒரு பெர்மாலின்க் சேர்க்க / நீக்க'; +$lang['Added by %s'] = 'சேர்க்கப்பட்டது மூலமாக % s'; +$lang['Administration Home'] = 'நிர்வாகத்தின் முகப்பு'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'அடோப் ஃபோட்டோஷா Lightroom வடிவமைக்கப்பட்ட புகைப்படக்கலை மென்பொருள் டிஜிட்டல் படங்கள் அதிக அளவில் நிர்வகிப்பதற்கான மற்றும் பிந்தைய தயாரிப்பு பணி செய்வதற்கு.'; +$lang['Advanced features'] = 'முன்னேறிய அம்சங்கள்'; +$lang['Album "%s" has been added'] = 'ஆல்பம் "%கள்" சேர்க்கப்பட்டுள்ளது'; +$lang['Album "%s" now contains %d photos'] = 'ஆல்பம் "% கள்" இப்பொழுது% d புகைப்படங்களை கொண்டிருக்கிறது'; +$lang['Album list management'] = 'ஆல்பம் பட்டியல் மேலாண்மை'; +$lang['Album manual order was saved'] = 'ஆல்பம் கைமுறையாக வரிசையில் சேமிக்கப்படும்'; +$lang['Album name'] = 'ஆல்பம் பெயர்'; +$lang['Album photos associated to the following albums: %s'] = 'ஆல்பம் புகைப்படங்கள் தொடர்புடையதாக பின்வரும் ஆல்பங்கள்:% கள்'; +$lang['Album updated successfully'] = 'ஆல்பம் வெற்றிகரமாக புதுப்பிக்கப்பட்டன'; +$lang['Albums authorized thanks to group associations'] = 'ஆல்பங்கள் அங்கீகரிக்கப்பட்ட நன்றி குழு சங்கத்தை'; +$lang['Albums automatically sorted'] = 'தன்னிச்சையாக வரிசைப்படுத்தப்பட்ட ஆல்பங்கள்'; +$lang['All %d photos are selected'] = 'அனைத்து% d புகைப்படங்கள் தேர்ந்தெடுக்கப்பட்டன'; +$lang['All extensions are up to date.'] = 'அனைத்து நீட்சிகள் இருக்கின்றன இன்றுவரை.'; +$lang['All languages are up to date.'] = 'அனைத்து மொழிகளும் இருக்கின்றன இன்றுவரை.'; +$lang['All plugins are up to date.'] = 'அனைத்து செருகுநிரல்கள் இன்றுவரை புதுப்பிக்கப்பட்ட நிலையில் உள்ளன'; +$lang['All themes are up to date.'] = 'அனைத்து கருப்பொருள்கள் இன்றுவரை புதுப்பிக்கப்பட்ட நிலையில் உள்ளன'; +$lang['Allow rating'] = 'அனுமதிக்க மதிப்பீடு'; +$lang['Allow user customization'] = 'பயனர் தனிபயனாக்கத்திற்கு அனுமதிக்கிறது'; +$lang['Allow user registration'] = 'பயனர் பதிவுசெய்தல் அனுமதிக்கிறது'; +$lang['Allow users to delete their own comments'] = 'பயனர்கள் தங்கள் சொந்த கருத்துக்களையும் நீக்க அனுமதிக்கிறது'; +$lang['All optimizations have been successfully completed.'] = 'அனைத்து உகந்ததாக்கல்களை வெற்றிகரமாக முடிக்கப்பட்டது.'; +$lang['Allow users to edit their own comments'] = 'பயனர்கள் தங்கள் சொந்த கருத்துரைகளை திருத்த அனுமதிக்கின்றன'; +$lang['Allowed file types: %s.'] = 'அனுமதிக்கப்பட்ட கோப்பு வகைகள்:% கள்.'; +$lang['An information email was sent to group "%s"'] = 'தகவல் மின்னஞ்சல் அனுப்பப்பட்டது குழுக்களுக்கு "% s"'; +$lang['Anomaly'] = 'நெறி பிறழ்வு'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'வலைத்தலைமைகள் மட்டும் இந்த தாவலை பார்க்க முடியும், + நிர்வாகிகள் இல்லை.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'துவாரம் ஒரு சக்திவாய்ந்த கருவியாக உள்ளது படங்களை துல்லியமாக்க மற்றும் மேக் மீது பாரிய நூலகங்கள் நிர்வகிக்க.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'இடைவெளியில் தனித்தெடுத்த நிறம் நிபுணத்துவ புகைப்படக்காரர்கள் வடிவமைக்கப்பட்டுள்ளது +iPhoto எளிமையாக.'; +$lang['Applications'] = 'பயன்பாடுகள்'; +$lang['Apply action'] = 'செயலை பயன்படுத்து'; +$lang['Apply selected corrections'] = 'தெரிவுசெய்யப்பட்ட திருத்தங்களை பயன்படுத்து'; +$lang['Apply to sub-albums'] = 'துணை ஆல்பங்களை பயன்படுத்து'; +$lang['An error has occured during upgrade.'] = 'ஒரு பிழை ஏற்பட்டுள்ளது மேம்படுத்தும் போது .'; +$lang['An error occured during extraction (%s).'] = 'ஒரு பிழை நிகழ்ந்தது கோப்புகள் (% கள் ) பிரித்தெடுக்கும் +பொழுது.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
          Click here to show log error.'] = 'பிரித்தெடுக்கும் பொழுது ஒரு பிழை ஏற்பட்டுள்ளது.உங்கள் piwigo நிறுவல் கோப்பு அனுமதிகளை சரிபார்க்கவும்.
          + பதிகை காட்ட இங்கே கிளிக் செய்யவும்.'; +$lang['Average rate'] = 'சராசரி விகிதம்'; +$lang['Basic settings'] = 'அடிப்படை அமைப்புகள்'; +$lang['Batch Manager'] = 'தொகுதி மேலாளர்'; +$lang['Bound Theme'] = 'பிணைக்கப்பட்ட +கருப்பொருள்கள்'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'நீங்கள் இந்த மேம்படுத்தலை நிறுவ வேண்டுமா? நீங்கள், சரிபார்க்க வேண்டும் +இந்த பதிப்பு முன்னதாக நிறுவல் நீக்கம் வேண்டும் எனில்.'; +$lang['Are you sure you want to delete this plugin?'] = 'நீங்கள் இந்த செருகுநிரலை நீக்க வேண்டுமா?'; +$lang['Are you sure you want to install this plugin?'] = 'நீங்கள் இந்த செருகுநிரலை நிறுவ வேண்டுமா?'; +$lang['Associate to album'] = 'ஆல்பத்திற்கு இணைக்கவும்'; +$lang['Associated'] = ' +தொடர்புடையதாக'; +$lang['Authorized'] = 'அங்கீகரிக்கப்பட்ட'; +$lang['Automatic correction'] = 'தானியக்க திருத்தம்'; +$lang['Automatic sort order'] = 'தானியக்க வரிசை ஒழுங்கை'; +?> \ No newline at end of file diff --git a/sources/language/ta_IN/common.lang.php b/sources/language/ta_IN/common.lang.php new file mode 100644 index 0000000..d7d4acb --- /dev/null +++ b/sources/language/ta_IN/common.lang.php @@ -0,0 +1,425 @@ + \ No newline at end of file diff --git a/sources/language/ta_IN/install.lang.php b/sources/language/ta_IN/install.lang.php new file mode 100755 index 0000000..6b24e74 --- /dev/null +++ b/sources/language/ta_IN/install.lang.php @@ -0,0 +1,72 @@ +Piwigo message board.'] = 'உதவி வேண்டுமா? Piwigo செய்தி பலகை '; +$lang['Database configuration'] = 'தரவுத்தள உள்ளமைவை'; +$lang['Database name'] = 'தரவுத்தளத்தின் பெயர்'; +$lang['Database table prefix'] = 'தரவுத்தள அட்டவணைகள் முன்னிணைப்பு'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = 'சர்வர் இணைப்பு வெற்றி, ஆனால் தரவுத்தளத்தின் இணைப்பு சாத்தியம் இல்லை.'; +$lang['Congratulations, Piwigo installation is completed'] = 'வாழ்த்துக்கள், Piwigo நிறுவல், முடிக்கப்பட்டது'; +$lang['Can\'t connect to server'] = 'சர்வருடன் இணைக்க முடியவில்லை'; +$lang['Basic configuration'] = 'அடிப்படை கட்டமைப்பு'; +$lang['Admin configuration'] = 'நிர்வாகம் கட்டமைப்பு'; +$lang['webmaster login can\'t contain characters \' or "'] = 'வலை மேலாளரின் உள்நுழைவு எழுத்துக்கள் \' or " இல்லாமல் இருக்கலாம்'; +$lang['verification'] = 'சரிபார்த்தல்'; +$lang['user password given by your host provider'] = 'பயனர் கடவுச்சொல் உங்களுடைய host வழங்குநர் வழங்கப்பட்டது'; +$lang['user login given by your host provider'] = 'உங்களுடைய host வழங்குநர் வழங்கப்பட்ட பயனர் உள்நுழைவு'; +$lang['localhost or other, supplied by your host provider'] = 'localhost அல்லது வேறு வழங்கப்பட்ட உங்களுடைய host வழங்குநரை'; +$lang['please enter your password again'] = 'தயவுசெய்து மறுபடியும் உங்களுடைய கடவுச்சொல்லை உள்ளிடவும்'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'ஆலோசனை தயங்க வேண்டாம் நம்முடைய கருத்துக்களம் +எந்தவொரு உதவிக்கு.:% s'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'நீங்கள் புரவன் வழங்குநரிடம் ஆதரவு பார்க்கவும் மற்றும் பார்க்க வேண்டும் எப்படி நீங்கள் PHP 5 மூலம் மாற்றலாம்.'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'நீங்கள் கட்டமைப்பு கோப்பினை பதிவிறக்கம் செய்யலாம் +மற்றும் பதிவேற்றலாம் அது உங்களுடைய local/config நிறுவலின் கோப்பகத்தில்'; +$lang['also given by your host provider'] = 'மேலும் வழங்கப்பட்டஉங்களுடைய புரவன் வழங்குநரிடம்'; +$lang['database tables names will be prefixed with it (enables you to manage better your tables)'] = 'தரவுத்தள அட்டவணையில் பெயரை முன்னொட்டாக (உங்களுடைய அட்டவணைகளை சிறப்பாக நிர்வகிக்க உதவும்)'; +$lang['enter a login for webmaster'] = 'தயவுசெய்து உள்ளிடவும் வலைமேலாளரின் பயனர்பெயர்'; +$lang['Welcome to your new installation of Piwigo!'] = 'வரவேற்கிறோம் +உங்களுடைய புதிய Piwigo நிறுவல்! செய்ய'; +$lang['Welcome to my photo gallery'] = 'வரவேற்கிறேன் +என்னுடைய புகைப்படம் கேலரிக்கு'; +$lang['Try to configure PHP 5'] = 'PHP 5 கட்டமைக்க முயற்சிக்கவும்'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'பார்வையாளர்கள் இந்த மின்னஞ்சலை பயன்படுத்தி தளத்தின் நிர்வாகியை தொடர்புகொள்ளவும்'; +$lang['User'] = 'பயனர்'; +$lang['Sorry!'] = 'வருந்துகிறேன்!'; +$lang['Start Install'] = 'நிறுவலை தொடங்கு'; +$lang['Password ']['confirm'] = 'கடவுச்சொல்லை [உறுதிப்படுத்தவும்].'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo PHP 5 கட்டமைக்க முடியவில்லை'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo முயற்சி செய்யலாம் +ஒரு. htaccess கோப்பு உருவாக்குவதில் அல்லது மாற்றியமைப்பதன் மூலம் PHP 5 உங்கள் கட்டமைப்பு மாற'; +$lang['PHP 5 is required'] = 'PHP 5 தேவைப்படுகிறது'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'குறிப்பு நீங்களே உங்கள் கட்டமைப்பை மாற்ற செய்யலாம், மேலும் Piwigo மீண்டும் துவக்கவும்'; +?> \ No newline at end of file diff --git a/sources/language/ta_IN/iso.txt b/sources/language/ta_IN/iso.txt new file mode 100644 index 0000000..77d7ffd --- /dev/null +++ b/sources/language/ta_IN/iso.txt @@ -0,0 +1 @@ +தமிழ் [IN] \ No newline at end of file diff --git a/sources/language/ta_IN/ta_IN.jpg b/sources/language/ta_IN/ta_IN.jpg new file mode 100644 index 0000000..a6d5c7e Binary files /dev/null and b/sources/language/ta_IN/ta_IN.jpg differ diff --git a/sources/language/ta_IN/upgrade.lang.php b/sources/language/ta_IN/upgrade.lang.php new file mode 100755 index 0000000..3b3f844 --- /dev/null +++ b/sources/language/ta_IN/upgrade.lang.php @@ -0,0 +1,43 @@ +Tools>Maintenance] if you encounter any problem.'] = 'ஒரு பராமரிப்பு சரிபார்ப்பு செய்யவும் [நிர்வாக> கருவிகள்> பராமரிப்பு] இல் உங்களுக்கு எந்த சிக்கல்களை தீர்க்க'; +$lang['SQL queries'] = 'SQL வினவல்கள்'; +$lang['Statistics'] = 'புள்ளி விவரம்'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'இந்த பக்கம் உங்கள் பழைய Piwigo பதிப்பு புதிய பதிப்பு தகவல் மேம்படுத்த முன்மொழிகிறது.மேம்படுத்தல் உதவி நினைக்கிறது +உங்களுக்கு தற்போது வெளியீடு %s (அல்லது அதற்கு சமமான) இயங்குகிறது.'; +$lang['Upgrade informations'] = 'தகவலை மேம்படுத்தல்'; +$lang['Upgrade from version %s to %s'] = 'பதிப்பு% s இலிருந்து% s மேம்படுத்தல்'; +$lang['Upgrade'] = 'மேம்படுத்தல்'; +$lang['User permissions and group permissions have been erased'] = 'பயனர்கள் மற்றும் குழுக்களின் அனுமதிகள் நீக்கப்பட்டன'; +$lang['You do not have access rights to run upgrade'] = 'நீங்கள் மேம்படுத்தலை இயக்க சரியான அணுகல் இல்லை'; +$lang['total SQL time'] = 'மொத்த SQL நேரம்'; +$lang['total upgrade time'] = 'மொத்த மேம்படுத்தல் நேரம்'; +$lang['In %s, before ?>, insert:'] = 'இல் %s, முன்பாக ?>, முன்பாக:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'ஒரு முன்னெச்சரிக்கையாக, பின்வரும் கருப்பொருள்கள் முடக்கப்பட்டிருக்கிறது. நீங்கள் கண்டிப்பாக மேம்படுத்த கருப்பொருள்களை சரிபார்க்க வேண்டும் முன்பாக மறு செயலாக்க'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'ஒரு முன்னெச்சரிக்கையாக, பின்வரும் செருகுநிரல்கள் முடக்கப்பட்டிருக்கிறது.நீங்கள் அவற்றை மேம்படுத்த செயலாக்க மீண்டும் செருகுநிரல்களை செயலாக்க வேண்டும் +'; +$lang['All sub-albums of private albums become private'] = 'அனைத்து துணை ஆல்பங்களின் +தனியார் ஆல்பங்கள் தனியார் ஆக இருந்து'; +?> \ No newline at end of file diff --git a/sources/language/th_TH/about.html b/sources/language/th_TH/about.html new file mode 100644 index 0000000..15e66ca --- /dev/null +++ b/sources/language/th_TH/about.html @@ -0,0 +1,13 @@ +

          นี่คือระบบแกลลอรี่ของ Piwigo.

          + +

          Piwigo เป็นซอฟแวร์แกลอรี่รูปภาพสำหรับเว็บที่สร้างขึ้นโดยกลุ่มผู้ใช้และทีมนักพัฒนา. ซึ่งมาพร้อมกับส่วนขยายที่ปรับแต่งได้ง่าย เพราะ Piwigo คือซอร์ฟแวร์เปิด (Opensourse)

          + +

          เยี่ยมชมเว็บไซต์ Piwigo

          + +

          แปลเป็นภาษาไทยและเรียบเรียงโดย (ตามลำดับตัวอักษร): + +

          + .... ขอขอบคุณทีมแปลภาษา

          diff --git a/sources/language/th_TH/admin.lang.php b/sources/language/th_TH/admin.lang.php new file mode 100644 index 0000000..573e49d --- /dev/null +++ b/sources/language/th_TH/admin.lang.php @@ -0,0 +1,963 @@ +Piwigo Uploader
          . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader คือโปรแกรม ตัวช่วยอัพโหลด Piwigo. จากคอมพิวเตอร์ของคุณ, pLoader จะเตรียมรูปภาพของคุณพร้อมกับส่งไปยังแกลลอรี่ Piwigo.'; +$lang['Plugin list'] = "รายการปลั๊กอิน"; +$lang['Plugins which need upgrade'] = "ปลั๊กอินต้องการการอัพเกรด"; +$lang['Plugins'] = "ปลั๊กอิน"; +$lang['Position'] = "ตำแหน่ง"; +$lang['Preferences'] = "การปรับแต่ง"; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = "การเตรียมรายชื่อผู้ใช้งานเพื่อส่งเมลถึงผู้ใช้งานเหล่านั้น ซึ่งการส่งจะถูกจำกัดเฉพาะผู้ที่มีรายชื่อในรายการเท่า่นั้น. ซึ่งผู้ใช้งานที่ไม่มีชื่อในรายการจะไม่ถูกส่ง."; +$lang['Privacy level set to "%s"'] = 'ระดับความเป็นส่วนตัว "%s"'; +$lang['Privacy level'] = "ระดับความเป็นส่วนตัว"; +$lang['Private'] = "ส่วนตัว"; +$lang['private'] = "ส่วนตัว"; +$lang['Properties'] = "คุณสมบัติพื้นฐาน"; +$lang['Public / Private'] = "สาธารณะ / ส่วนตัว"; +$lang['Public'] = "สาธารณะ"; +$lang['public'] = "สาธารณะ"; +$lang['Purge compiled templates'] = "ล้างการรวบรวมธีม"; +$lang['Purge history detail'] = "ล้างรายละเอียดประวัติของข้อมูล"; +$lang['Purge history summary'] = "ล้างประวัติ"; +$lang['Purge never used notification feeds'] = "ล้างการแจ้งเตือนที่ไม่ได้มีการถูกใช้"; +$lang['Purge search history'] = "ลางประวัติการค้นหา"; +$lang['Purge sessions'] = "ล้างระยะเวลาที่อยู่ในระบบ"; +$lang['Quick Local Synchronization'] = "เริ่มการซิงโคไนซ์อย่างรวดเร็ว"; +$lang['Random photo'] = "สุ่มรูปภาพ"; +$lang['randomly represented'] = "สุ่มรูปภาพปกอัลบั้ม"; +$lang['ranks'] = "อันดับ"; +$lang['Rate'] = "คะแนนนิยม"; +$lang['Rate date'] = "คะแนนตามวัน"; +$lang['Rating by guests'] = "ให้คะแนนโดยผู้เยี่ยมชม"; +$lang['Rating'] = "คะแนนนิยม"; +$lang['Read Piwigo Documentation'] = 'อ่านเอกสารที่เกี่ยวข้องกับ Piwigo'; +$lang['reduce to single existing albums'] = "รวมเข้าเป็นอัลบั้มเดียวกันกับอัลบั้มที่มีอยู่"; +$lang['Refresh photo set'] = 'รีเฟรชชุดรูปภาพ'; +$lang['Refresh'] = "รีเฟรช"; +$lang['registration date'] = "วันที่ลงทะเบียน"; +$lang['Reinitialize check integrity'] = "ตรวสอบความสมบูรณ์ของการเตรียมการเริ่มต้นใช้งานระบบใหม่"; +$lang['Reject'] = "ถอด"; +$lang['Released on'] = "ถูกปล่อย เมื่อ"; +$lang['Remote'] = "รีโมต"; +$lang['Remove all filters'] = 'ลบตัวกรองทั้งหมด'; +$lang['remove author'] = 'ลบเจ้าของรูปภาพ'; +$lang['remove creation date'] = 'ลบวันที่สร้าง'; +$lang['Remove from caddie'] = 'ลบจาก caddie'; +$lang['remove tags'] = "ลบแท็ก"; +$lang['remove this filter'] = 'ลบตัวกรองนี้'; +$lang['remove title'] = 'ลบชื่อ'; +$lang['Repair and optimize database'] = "ซ่อมแซม และทำให้ฐานข้อมูลเหมาะัสมที่สุด"; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = "แทนที่ธีมเก่า โดยการปรับแต่งธีมจาก ธีม-ส่วนขยาย ในโฟลเดอร์ย่อย"; +$lang['Replacers (customized templates)'] = "แทนที่ (ปรับแต่งแม่แบบ)"; +$lang['Representant'] = "รูปภาพขนาดย่อของอัลบั้ม"; +$lang['Representation of albums'] = "รูปภาพขนาดย่อของอัลบั้ม"; +$lang['Representative'] = 'รูปภาพขนาดย่อของอัลบั้ม'; +$lang['Represents'] = 'เป็นรูปภาพขนาดย่อสำหรับ'; +$lang['Resize'] = 'ลดขนาด'; +$lang['Restore'] = "คืนค่า"; +$lang['Restore default configuration. You will lose your plugin settings!'] = "คืนค่าการตั้งค่าปกติ. คุณอาจจะสูญเสียการตั้งค่าต่างๆ ของปลั๊กอิน!"; +$lang['Save order'] = "บันทึกคำสั่ง"; +$lang['Save Settings'] = 'บันทึกการตั้งค่า'; +$lang['Save to permalink history'] = "บันทึกไปยังประวัติการเชื่อมโยง"; +$lang['Searching...'] = "กำลังค้นหา..."; +$lang['Search for new images in the directories'] = "ค้นหารูปภาพใหม่ในไดเรกทอรี่"; +$lang['Section'] = "หมวดหมู่"; +$lang['See you soon,'] = "เจอคุณในไม่ช้า,"; +$lang['See you soon.'] = "เจอคุณในไม่ช้า."; +$lang['Select at least one album'] = "อย่างอัลบั้มอย่างน้อยที่สุดหนึ่งอัลบั้ม"; +$lang['Select at least one comment'] = 'เลือกความเห็นอย่างน้อยที่สุดหนึ่งความเห็น'; +$lang['Select at least one photo'] = "เลือกรูปภาพอย่างน้อยที่สุดหนึ่งรูป"; +$lang['Select at least one user'] = "เลือกผู้ใช้งานอย่างน้อยที่สุดหนึ่งคน"; +$lang['Select files'] = 'เลือกไฟล์'; +$lang['Select recipients'] = "เลือกผู้รับ"; +$lang['Select:'] = 'เลือก:'; +$lang['selection'] = "เลือก"; +$lang['Selection'] = 'เลือก'; +$lang['Send an information email to group members'] = "ส่งเมลรายละเอียดข้อมูลไปยังกลุ่มสมาชิก"; +$lang['Send mail as'] = "Send mail as"; +$lang['Send mail on HTML format'] = "ส่งเมลในรูปแบบ HTML"; +$lang['Send mail to users'] = "ส่งเมลไปยังผู้ใช้งาน"; +$lang['Send'] = "ส่ง"; +$lang['Set as default language for unregistered and new users'] = 'ใช้งานภาษานี้'; +$lang['Set as default theme for unregistered and new users'] = "ใช้งานธีมนี้"; +$lang['Set author'] = 'ตั้งชื่อผู้เขียน'; +$lang['Set creation date'] = 'กำหนดวันที่สร้าง'; +$lang['Set title'] = 'ตั้งชื่อ'; +$lang['set to'] = "ตั้งค่าเป็น"; +$lang['Settings'] = 'ตั้งค่า'; +$lang['Show info'] = "แสดงรายละเอียด"; +$lang['Show menubar'] = "แสดงแถบเมนู"; +$lang['Simulation'] = "การจำลอง"; +$lang['singly represented'] = 'ถูกกำหนดเป็นรูปภาพขนาดย่อของอัลบั้ม'; +$lang['Site manager'] = "จัดการที่อยู่"; +$lang['Start pLoader and add your photos.'] = 'เริ่มการใช้งานโปรแกรม pLoader และเพิ่มรูปถ่ายของคุณ.'; +$lang['Statistics'] = "สถิติ"; +$lang['Status of user "%s" updated'] = "ผู้ใช้งาน \"%s\" ได้อัพเดตสถานะ"; +$lang['Status'] = "สถานะ"; +$lang['status'] = "สถานะ"; +$lang['Storage album'] = "อัลบัมที่ใช้จัดเก็บ"; +$lang['sub-albums'] = "อัลบั้ม-ย่อย"; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = "บอกรับ %s to จดหมายข่าวสารและประกาศของ Piwigo"; +$lang['Subscribe %s'] = "บอกรับ %s"; +$lang['Subscribe to notification by mail'] = "บอกรับการแจ้งเตือนโดยเมล"; +$lang['Subscribe'] = "บอกรับ"; +$lang['Subscribe/unsubscribe users'] = "บอกรับ/ยกเลิกการบอกนับผู้ใช้งาน"; +$lang['Subscribed'] = "ได้ถูกบอกรับ"; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = "รายชื่อผู้บอกรับในรายการ (ที่สามารถใช้ได้) เท่านั้น ที่จะได้รับการแจ้งเตือน."; +$lang['Sum of rates'] = "ผลรวมของคะแนนนิยม"; +$lang['Summary'] = "สาระสำคัญ"; +$lang['Support'] = "ขอรับการสนับสนุน"; +$lang['Switch to clear or dark colors for administration'] = 'สลับไปยังโหมดสีสว่าง หรือ มืด สำหรับส่วนของการจัดการระบบ'; +$lang['synchronize files metadata with database photos informations'] = "ซิงโคไนซ์ฐานข้อมูลรูปภาพกับไฟล์ด้วยเมตาดาต้า"; +$lang['synchronize files structure with database'] = "ซิงโคไนซ์ไฟล์กับฐานข้อมูล"; +$lang['Synchronize'] = "ซิงโคไนซ์"; +$lang['Tag "%s" already exists'] = "แท็ก \"%s\" ได้มีอยู่แล้ว"; +$lang['Tag "%s" was added'] = "แท็ก \"%s\" ได้ถูกเพิ่มแล้ว"; +$lang['Tag selection'] = "เลือกแท็ก"; +$lang['target'] = "เป้าหมาย"; +$lang['Templates configuration has been recorded.'] = "การปรับแต่งการตั้งค่าแม่แบบได้ถูกบันทึกแล้ว."; +$lang['Templates'] = "แม่แบบ"; +$lang['test this remote site'] = "ทดสอบการเชื่อมโยงที่อยู่ระยะไกล"; +$lang['test'] = "ทดสอบ"; +$lang['The %d following tags were deleted'] = "การติดตามแท็ก %d แท็ก ได้ถูกลบแล้ว"; +$lang['The anomaly will be ignored until next application version'] = "ความผิดปกติจะถูกเพิกเฉยไปจนถึงเวอร์ชั่นถัดไปของแอพพลิเคชั่น"; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = "ไฟล์ หรือ ไดเรกทอรี่ ไม่สามารถที่จะเข้าถึงได้ (หรือไม่ก็ มันอาจจะไม่มีอยู่ หรือถูกปฏิเสธการเข้าถึง)"; +$lang['The following tag was deleted'] = 'แท็กที่กำลังหาได้ถูกลบแล้ว'; +$lang['the forum'] = "ฟอรั่ม"; +$lang['The gallery URL is not valid.'] = "URL แกลลอรี่ไม่ถูกต้อง."; +$lang['The name of a group must not contain " or \' or be empty.'] = "ชื่อกลุ่มจะต้องไม่ประกอบด้วยเครื่องหมาย \" หรือ ' หรือช่องเว้นว่าง."; +$lang['The name of an album must not be empty'] = "ชื่อของอัลบั้มจะต้องไม่ปล่อยว่าง"; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = "ชื่อของไดเรกทอรี่และไฟล์ ต้องประกอบด้วยตัวอักษร, ตัวเลข, \"-\", \"_\" หรือ \".\"เท่านั้น"; +$lang['The number of comments a page must be between 5 and 50 included.'] = "จำนวนความคิดเห็นต่อหนึ่งหน้า จะต้องเป็นจำนวนระหว่าง 5 แต่ไม่เกิน 50 ความคิดเห็น."; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = "ชื่อลิงค์จะต้องประกอบด้วย a-z, A-Z, 0-9, \"-\", \"_\" หรือ \"/\". แต่จะต้องไม่ใช่อักขระพิเศษ หรือเริ่มต้นด้วยตัวเลขแล้วตามด้วยเครื่องหมาย \"-\""; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'ไฟล์ที่จะอัพโหลด มีขนาดใหญ่เกินไป โปรดใช้การอัพโหลดโดยตรงผ่านรูปแบบ HTML หรือการอัพโหลดแบบปกติ'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'ไฟล์ที่จะอัพโหลดมีขนาดใหญ่เกินที่กำหนดไว้ในไฟล์การตั้งค่า php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'ไฟล์ที่อัพโหลดได้ถูกอัพโหลดไปบางส่วน'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'ไฟล์ที่จะอัพโหลดมีขนาดใหญ่เกินที่กำหนดไว้ในไฟล์การตั้งค่า php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = "เวอร์ชั่นของ %s [%s] ที่ได้ติดตั้งไปไม่สามารถรองรับการทำงาน กับเวอร์ชั่นที่ต้องการ [%s]"; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'เว็บมาสเตอร์ได้บอกรับคุณโดยการแจ้งผ่านเมล์.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'เว็บมาสเตอร์ได้ยกเลิกบอกรับคุณโดยการแจ้งผ่านเมล์.'; +$lang['The whole page'] = 'หน้าทั้งหมด'; +$lang['The whole set'] = 'ชุดการตั้งค่าทั้งหมด'; +$lang['the wiki'] = "วิกิ wiki"; +$lang['Theme has been successfully installed'] = 'ธีมได้ถูกติดตั้งเรียบร้อยแล้ว'; +$lang['Themes'] = "ธีม"; +$lang['There is no available subscribers to mail.'] = "ไม่มีการแจ้งเตือนการบอกรับโดยทางเมล."; +$lang['There is no other language available.'] = 'ไม่มีภาษาอื่นที่สามารถใช้ได้เพิ่มเติม.'; +$lang['There is no other plugin available.'] = 'ไม่มีปละ๊กอินอื่นที่สามารถใช้ได้เพิ่มเติม.'; +$lang['There is no other theme available.'] = 'ไม่มีธีมอื่นที่สามารถใช้ได้เพิ่มเติม.'; +$lang['This name is already used by another group.'] = "ชื่อนี้ได้ถูกใช้แล้ว."; +$lang['This site already exists'] = "ที่อยู่นี้ได้มีอยู่แล้ว"; +$lang['This theme was not designed to be directly activated'] = 'ธีมนี้ไม่สามารถปรับแต่งได้ เนื่องจากมีการเปิดการใช้งานอยู่'; +$lang['Thumbnail'] = "รูปภาพขนาดย่อ"; +$lang['Thumbnail'] = 'รูปภาพขนาดย่อ'; +$lang['Time to send mail is limited. Others mails are skipped.'] = "เวลาในการส่งเมลถูกจำกัด. เมลอื่นๆ อาจจะไม่ได้ถูกส่ง."; +$lang['Time'] = "เวลา"; +$lang['Title'] = "ชื่อ"; +$lang['To send ?'] = "ต้องการส่ง?"; +$lang['To subscribe'] = "บอกรับ"; +$lang['To unsubscribe'] = "ยกเลิกการบอกรับ"; +$lang['Toggle \'default group\' property'] = "กลับไปยังคุณสมบัติ 'กลุ่มปกติ'"; +$lang['Tools'] = "เครื่องมือ"; +$lang['total time'] = "เวลาทั้งหมด"; +$lang['Type here the author name'] = 'ชนิดของชื่อผู้เขียน'; +$lang['Type here the title'] = 'ชนิดของชื่อ'; +$lang['Type in a search term'] = "ชนิดของการค้นหา"; +$lang['Unable to check for upgrade.'] = "ไม่สามารถตรวจสำหรับอัพเกรดได้."; +$lang['Uncheck all'] = "ไม่เลือกทั้งหมด"; +$lang['Uninstall'] = "ถอนการติดตั้ง"; +$lang['Uninstalled Plugins'] = 'ได้ถอนการติดตั้งปลั๊กอินแล้ว'; +$lang['unit mode'] = "โหมดเฉพาะ"; +$lang['Unknown upload error'] = 'ไม่ทราบข้อผิดพลาดของการอัพโหลด'; +$lang['unknown'] = 'ไม่ทราบ'; +$lang['Unlocked'] = "ปลดล็อค"; +$lang['unset'] = "ไม่มีการตั้งค่า"; +$lang['Unsubscribe from notification by mail'] = "ยกเลิกการบอกรับการแจ้งเตือนโดยเมล"; +$lang['Unsubscribed'] = "ได้ยกเลิกการบอกรับแล้ว"; +$lang['Update albums informations'] = "อัพเดตรายละเอียดอัลบั้ม"; +$lang['Update photos information'] = "อัพเดตรายละเอียดรูปภาพ"; +$lang['update the database from files'] = "อัพเดตฐานข้อมูลกับไฟล์"; +$lang['Upload Photos'] = 'อัพโหลดรูปภาพ'; +$lang['Upload'] = "อัพโหลด"; +$lang['Uploaded Photos'] = 'รูปภาพที่ได้ถูกอัพโหลดแล้ว'; +$lang['Use the default photo sort order (defined in the configuration file)'] = "ใช้การจัดเรียงภาพถ่ายคำสั่งพื้นฐาน (ดูในการตั้งค่าไฟล์)"; +$lang['Used metadata'] = "ใช้งานเมตาดาต้า"; +$lang['user "%s" added'] = "ผู้ใช้งาน \"%s\" ได้ถูกเพิ่มแล้ว"; +$lang['User "%s" created with "%s" like password'] = "ผู้ใช้งาน \"%s\" สร้างด้วย \"%s\" รหัสผ่าน"; +$lang['User %s [%s] added.'] = "ผู้ใช้งาน %s [%s] ได้ถูกเพิ่มแล้ว."; +$lang['User %s [%s] was added to the subscription list.'] = "ผู้ใช้งาน %s [%s] ได้เพิ่มเข้ารายการการบอกรับการเป็นสมาชิก."; +$lang['User %s [%s] was not added to the subscription list.'] = "ผู้ใช้งาน %s [%s] ไม่ได้เพิ่มเข้ารายการการบอกรับการเป็นสมาชิก."; +$lang['User %s [%s] was not removed from the subscription list.'] = "ผู้ใช้งาน %s [%s] ที่ไม่ได้ถูกลบจากรายการการบอกรับเป็นสมาชิก."; +$lang['User %s [%s] was removed from the subscription list.'] = "ผู้ใช้งาน %s [%s] ที่ได้ถูกลบจากรายการการบอกรับเป็นสมาชิก."; +$lang['User comments validation'] = "การตรวจสอบความคิดเห็นของผู้ใช้งาน"; +$lang['User list'] = "รายชื่อผู้ใช้งาน"; +$lang['User status'] = "สถานะของผู้ใช้งาน"; +$lang['User'] = "ผู้ใช้งาน"; +$lang['Users'] = "ผู้ใช้งาน"; +$lang['user_status_admin'] = "ผู้ดูแลระบบ"; +$lang['user_status_generic'] = "ผู้ใช้งานทั่วไป"; +$lang['user_status_guest'] = "ผู้เยี่ยมชม"; +$lang['user_status_normal'] = "ผู้ใช้งาน"; +$lang['user_status_webmaster'] = "เว็บมาสเตอร์"; +$lang['Validate'] = "ตรวจสอบ"; +$lang['Validation'] = "การตรวจสอบ"; +$lang['Version'] = "เวอร์ชั่น"; +$lang['Virtual album added'] = "อัลบั้มได้ถูกเพิ่มแล้ว"; +$lang['Virtual album deleted'] = "อัลบั้มได้ถูกลบแล้ว"; +$lang['Virtual album name'] = "อัลบั้มชื่อ"; +$lang['Virtual album'] = "อัลบั้ม"; +$lang['Virtual albums to move'] = "ย้ายอัลบั้ม"; +$lang['Virtual Links'] = 'ลิงค์'; +$lang['Visit Gallery'] = 'เยี่ยมชมแกลลอรี่'; +$lang['Visit Piwigo project website'] = 'เยี่ยมชมเว็บไซต์อย่างเป็นทางการของ Piwigo'; +$lang['Visit plugin site'] = 'เยี่ยมชมเว็บไซต์ปลั๊กอิน'; +$lang['Waiting'] = "รออนุมัติ"; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = "คำเตือน: การบอกรับ หรือ ยกเลิกการบอกรับ จะถูกส่งไปยังผู้ใช้งานโดยเมล"; +$lang['Webmaster cannot be deleted'] = "เว็บมาสเตอร์ไม่สามารถลบได้"; +$lang['Webmaster status is required.'] = 'จำเป็นต้องมีสถานะเป็น เว็บมาสเตอร์.'; +$lang['Week starts on'] = 'เริ่มต้นสัปดาห์วัน'; +$lang['Who can see these photos?'] = 'ใครบ้างที่สามารถเข้าชมรูปภาพเหล่านี้ได้?'; +$lang['Who can see this photo?'] = 'ใครบ้างที่สามารถเข้าชมรูปภาพเหล่านี้ได้?'; +$lang['width must be a number superior to'] = "ความกว้างต้องเป็นตัวเลขจำนวนที่มากกว่า"; +$lang['With blank value, gallery title will be used'] = "ถ้าปล่อยว่าง, ชื่อแกลลอรี่ของคุณจะถูกใช้แสดงแทน"; +$lang['wrong filename'] = "ชื่อไฟล์ไม่ถูกต้อง"; +$lang['Year'] = "ปี"; +$lang['You are running on development sources, no check possible.'] = "คุณกำลังใช้งาน Piwigo เวอร์ชั่นที่กำลังพัฒนาอยู่, ซึ่งไม่ใช่เวอร์ชั่นที่ถูกปล่อยอย่างเป็นทางการ."; +$lang['You are running the latest version of Piwigo.'] = "คุณกำลังใช้งาน Piwigo เวอร์ชั่นล่าสุดอยู่."; +$lang['You cannot delete your account'] = "คุณไม่สามารถลบบัญชีผู้ใช้งานของคุณได้"; +$lang['You cannot move an album in its own sub album'] = "คุณไม่สามารถย้ายอัลบั้มหลักเข้าไปในอัลบั้มย่อยได้"; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'คุณไม่สามารถกำหนดค่ารูปภาพเป็นค่าปกติได้ เพราะว่าคุณได้ปรับแต่งการตั้งค่าด้วยตนเองในส่วนของ การปรับแต่งการตั้งค่าระบบ.'; +$lang['You have %d orphan tags: %s.'] = 'คุณมี %d แท็กที่ไม่ได้ใช้งาน: %s. แท็ก'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'ชื่อจะต้องเป็นชื่อเฉพาะ $conf[\'order_by\'] ในไฟล์การตั้งค่าของคุณ, มันคือตัวแปรที่ปิดกั้นการดำเนินการ, กรุณาลบมันออก หรือ เปลี่ยนชื่อมันเป็นอย่างอื่น $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = "คุณได้มีการบอกรับข่าวสารและจะได้รับข่าวสารและการแจ้งเตือนผ่านทางเมล."; +$lang['You have unsubscribed from receiving notifications by mail.'] = "คุณได้ยกเลิกการบอกรับข่าวสารและจะไม่ได้ได้รับข่าวสารและการแจ้งเตือนผ่านทางเมล."; +$lang['You might go to plugin list to install and activate it.'] = "ไปยังรายการปลั๊กอินเพื่อนติดตั้งและเปิดใช้งาน."; +$lang['You need to confirm deletion'] = "คุณจะต้องยืนยันการลบ"; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = "คุณควรอัพเดตระบบของคุณ เพื่อประสิทธิภาพการทำงานของแอพพลิเคชั่น, ไม่เช่นนั้นแอพพลิเคชั่นของคุณอาจไม่สามารถทำงานได้อย่างถูกต้อง, หรือไม่สามารถทำงานได้อย่างสิ้นเชิง"; +$lang['Your configuration settings are saved'] = 'การเปลี่ยนแปลงการตั้งค่าของคุณได้ถูกบันทึกแล้ว'; +$lang['[%s] Visit album %s'] = "[%s] เข้าชมอัลบั้ม %s"; +$lang['[NBM] Problems or questions'] = "[NBM] ปัญหาหรือคำถาม"; +$lang['Themes which need upgrade'] = 'ธีมนี้ต้องการการอัพเกรด'; +$lang['Languages which need upgrade'] = 'ภาษานี้ต้องการการอัพเกรด'; +$lang['All themes are up to date.'] = 'ธีมทั้งหมดถูกอัพเดตแล้ว.'; +$lang['All plugins are up to date.'] = 'ปลั๊กอินทั้งหมดถูกอัพเดตแล้ว.'; +$lang['All languages are up to date.'] = 'ภาษาทั้งหมดถูกอัพเดตแล้ว.'; +$lang['Visit theme site'] = 'เยี่ยมชมเว็บไซต์ธีม'; +$lang['Visit language site'] = 'เยี่ยมชมเว็บไซต์ภาษา'; +$lang['New Version'] = 'เวอร์ชั่นใหม่'; +$lang['Obsolete Plugins'] = 'ปลั๊กอินเก่า'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'คำเตือน! ปลั๊กนี้ไม่รองรับการใช้งาน(เข้ากันไม่ได้) Piwigo เวอร์ชั่นที่ใช้อยู่.'; +$lang['Do you want to activate anyway?'] = 'คุณต้องการเปิดการใช้งาน ไม่ว่าอย่างไรก็ตาม?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ปลั๊กอินนี้ไม่ใช่ส่วนหนึ่งของ PIWIGO CORE! ถอนการติดตั้งตอนนี้!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'เกิดความผิดพลาด: ไม่พบปลั๊กอินนี้แต่มันได้ถูกติดตั้งแล้ว! ถอนการติดตั้งตอนนี้.'; +$lang['display'] = 'การแสดงผล'; +$lang['Thumbnails generation in progress...'] = 'การสร้างรูปภาพขนาดย่อ กำลังประมวลผล...'; +$lang['Photos generation in progress...'] = 'การสร้างรูปภาพ กำลังประมวลผล...'; +$lang['%s photos have been regenerated'] = '%s รูปภาพที่ได้สร้างใหม่'; +$lang['%s photos can not be regenerated'] = '%s รูปภาพที่ไม่สามารถสร้างได้'; +$lang['Updates'] = 'อัพเดต'; +$lang['Update in progress... Please wait.'] = 'กำลังประมวลผลการอัพเดต... กรุณารอ.'; +$lang['Ignore this update'] = 'ปฏิเสธการอัพเดต'; +$lang['Reset ignored updates'] = 'คืนค่าการอัพเดตที่ถูกปฏิเสธ'; +$lang['Update All'] = 'อัพเดต ทั้งหมด'; +$lang['ERROR'] = 'ผิดพลาด'; +$lang['Update Complete'] = 'อัพเดต เรียบร้อยแล้ว'; +$lang['Piwigo Update'] = 'อัพเดต Piwigo'; +$lang['Extensions Update'] = 'อัพเดต ส่วนขยาย'; +$lang['All extensions are up to date.'] = 'ส่วนขยายทั้งหมดได้ถูกอัพเดตแล้ว.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'ปลั๊กอินนี้อาจจะไม่รองรับการทำงานบนเวอร์ชั่นใหม่ของ Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'ธีมนี้อาจจะไม่รองรับการทำงานบนเวอร์ชั่นใหม่ของ Piwigo:'; +$lang['I decide to update anyway'] = 'ฉันตัดสินใจที่จะอัพเดต'; +$lang['Update to Piwigo %s'] = 'อัพเดตไปยัง Piwigo %s'; +$lang['Two updates are available'] = 'การอัพที่สามารถทำได้'; +$lang['This is a minor update, with only bug corrections.'] = 'นี่คือไมเนอร์อัพเดต หรือ การอัพเดตเวอร์ชั่นรอง, ซึ่งมีการแก้ไขจุดบกพร่องบางประการ.'; +$lang['This is a major update, with new exciting features.'] = 'นี่คือเมเจอร์อัพเดต หรือ การอัพเดตเวอ์ชั่นหลัก, ซึ่งมาพร้อมกับ ความสามารถใหม่. ที่น่าสนใจ.'; +$lang['Some themes and plugins may be not available yet.'] = 'ธีมและปลั๊กอินบางตัวอาจไม่สามารถใช้งานได้.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'คุณสามารถอัพเดต Piwigo %s ได้โดยตรง, โดยไม่ต้องอัพเกรด Piwigo %s (แนะนำ).'; +$lang['Save Template Directory'] = 'บันทึกไดเรกทอรี่แม่แบบ'; +$lang['Dump Database'] = 'ดัมพ์ฐานข้อมูล'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'นำเข้าประวัติข้อมูล (คำเตือน: อาจจะทำให้ประสิทธิภาพการทำงานหรือความเร็วของเซิร์ฟเวอร์ลดลง)'; +$lang['Unable to dump database.'] = 'ไม่สามารถดัมพ์ฐานข้อมูลได้.'; +$lang['Some upgrades are available for extensions.'] = 'มีส่วนขยายบางตัว ที่ต้องการการอัพเกรด.'; +$lang['Please wait...'] = 'กรุณารอ...'; +$lang['Ignore All'] = 'ปฏิเสธทั้่งหมด'; +$lang['Crop'] = 'ตัด'; +$lang['Width'] = 'กว้าง'; +$lang['Height'] = 'สูง'; +$lang['Follow Orientation'] = 'การติดตามแนวโน้ม'; +$lang['Graphics Library'] = 'กราฟฟิค ไลบราลี่'; +$lang['... or '] = '... หรือ '; +$lang['Create'] = 'สร้าง'; +$lang['Start Upload'] = 'เริ่มการอัพโหลด'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'ตอนนี้คุณกำลังใช้การอัพโหลดแบบ แฟลชอัพโหลด. หากเจอปัญหา? ให้ลองใช้ การอัพโหลดแบปกติ แทน.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'คุณกำลังใช้การอัพโหลด แบบปกติ. ลองใช้การอัพโหลดแบบ แฟลชอัพโหลด แทน.'; +$lang['Maximum file size: %sB.'] = 'ขนาดไฟล์สูงสุด: %sB.'; +$lang['Allowed file types: %s.'] = 'รูปแบบไฟล์ที่อนุญาต: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'ความละเอียดสูงสุดโดยประมาณ: %dM เมกะพิกเซล. (ไม่เกินขนาด %dx%d พิกเซล).'; +$lang['Manage Permissions'] = 'จัดการการอนุญาตสิทธิ์'; +$lang['Photo %s of %s'] = 'รูปภาพ %s จาก %s'; +$lang['show details'] = 'แสดงรายละเอียด'; +$lang['hide details'] = 'ซ่อนรายละเอียด'; +$lang['Merge tags'] = 'รวมแท็ก'; +$lang['Select the destination tag'] = 'เลือกแท็กปลายทาง'; +$lang['(this tag will be deleted)'] = '(แท็กนี้จะถูกลบ)'; +$lang['Confirm merge'] = 'ยืนยันการรวม'; +$lang['Merge selected tags'] = 'รวมแท็กที่เลือก'; +$lang['No destination tag selected'] = 'ไม่มีแท็กปลายทางที่เลือก'; +$lang['Tags %s merged into tag %s'] = 'แท็ก %s ได้ถูกรวมเข้าไปยังแท็ก %s'; +$lang['Select at least two tags for merging'] = 'เลือกอย่างน้อยสองแท็กเพื่อรวม '; +$lang['Learn more'] = 'เรียนรู้เพิ่มเติม'; +$lang['Select an album'] = 'เลือกอัลบั้มรูป'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'โดยปกติ, จะสร้างรูปภาพขนาดใหม่ ซึ่งแยกต่างหากจากภาพคุณภาพความละเอียดสูง หรือแบบ HD (high definition) หรือขนาดปกติของรูปภาพของคุณ.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'ถ้าไม่มีรูปภาพขนาดความละเอียดสูง หรือ HD และเถ้ารูปภาพของคุณขนาดใหญ่กว่าขนาดที่กำหนดเพื่อลดขนาดหรือ Resize, Piwigo จะย้ายรูปภาพเหล่านั้นไปยังขนาด HD และสร้างขนาดรูปภาพใหม่โดยการลดขนาดรูปภาพจากภาพดังกล่าวเป็นภาพขนาดที่กำหนดไว้สำหรับแสดงบนเว็บ.'; +$lang['An error has occured during upgrade.'] = 'เกิดข้อผิดพลาดในระหว่างการอัพเกรด.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
          Click here to show log error.'] = 'เกิดข้อผิดพลาดในระหว่างการแตกไฟล์. กรุณาตรวจสอบสิทธิ์ในการเข้าถึงโฟลเดอร์การติดตั้งของ Piwigo.
          คลิกที่นี่เพื่อดูบันทึกรายการข้อผิดพลาด.'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo ไม่สามารถรัับไฟล์อัพเกรดจากเซิร์ฟเวอร์ได้'; + +$lang['%d days'] = '%d วัน'; +$lang['%d day'] = '%d วัน'; +$lang['%d hours'] = '%d ชั่วโมง'; +$lang['%d hour'] = '%d ชั่วโมง'; +$lang['%d minutes'] = '%d นาที'; +$lang['%d minute'] = '%d นาที'; +$lang['%d months'] = '%d เดือน'; +$lang['%d month'] = '%d เดือน'; +$lang['%d seconds'] = '%d วินาที'; +$lang['%d second'] = '%d วินาที'; +$lang['%d weeks'] = '%d สัปดาห์'; +$lang['%d week'] = '%d สัปดาห์'; +$lang['%d years'] = '%d ปี'; +$lang['%d year'] = '%d ปี'; +$lang['%s ago'] = '%d ที่แล้ว'; +$lang['%s has been successfully updated.'] = '%s ได้อัพเดตข้อมูลมูลเรียบร้อยแล้ว.'; +$lang['%s in the future'] = '%s ในอนาคต'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'กำหนดให้ผู้ใช้ได้รับอนุญาตโดยอัตโนมัติ เนื่องจากพวกเขาอยู่ในกลุ่มที่ได้รับอนุญาตอยู่แล้ว'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo สำหรับ แอนดรอยด์ แอพพลิเคชั่นที่จะช่วยให้คุณสามารถเชื่อมต่อโทรศัพท์ แอนดรอยด์ หรือแท็บเลต ไปยังอัลบั้มรูป, เพื่อสร้างอัลบั้ม และอัพโหลดรูปของคุณ.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo สำหรับ ไอโอเอส แอพพลิเคชั่นที่จะช่วยให้คุณสามารถเชื่อมต่อโทรศัพท์ ไปยังอัลบั้มรูป จาก ไอโฟน หรือไอแพดทัช, เพื่อสร้างอัลบั้ม และอัพโหลดรูปของคุณ.'; +$lang['A locked gallery is only visible to administrators'] = 'แกลลอรี่ถูกล็อก สามารถใช้งานได้เฉพาะผู้ดูแลระบบ'; +$lang['Activate comments'] = 'เปิดใช้งานคอมเม้นต์'; +$lang['Add tags'] = 'เพิ่มป้ายชื่อ'; +$lang['Add to caddie'] = 'เพิ่มไปยังแคดดี้'; +$lang['Added by %s'] = 'ถูกเพิม่โดย%s'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom เป็นซอฟต์แวร์การถ่ายภาพที่ออกแบบมาเพื่อจัดการภาพดิจิตอลปริมาณมากและการดำเนินงานผลิตชิ้นงานต่างๆ'; +$lang['Applications'] = 'แอพพลิเคชั่น'; +$lang['Apply watermark if height is bigger than'] = 'ใช้ลายน้ำถ้าความสูงใหญ่กว่า'; +$lang['Apply watermark if width is bigger than'] = 'ใช้ลายน้ำถ้าความกว้างใหญ่กว่า'; +$lang['Automatic sort order'] = 'การเรียงลำดับอัตโนมัติ'; +$lang['Available on'] = 'พร้อมใช้งาน'; +$lang['Available versions for'] = 'เวอร์ชั่นที่ใช้ได้สำหรับ'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'โดยค่าเริ่มต้นซึ่งเป็นศูนย์กลางของความสนใจจะอยู่ตรงกลางของภาพ'; +$lang['Cancel'] = 'ยกเลิก'; +$lang['Center of interest'] = 'ศูนย์ที่น่าสนใจ'; +$lang['Default comments order'] = 'เรียงลำดับคอมเม้นต์ตามค่าเริ่มต้น'; +$lang['Delete multiple size images'] = 'ลบภาพที่มีขนาดหลาย'; +$lang['Duplicate selected tags'] = 'ทำซ้ำป้ายชื่อที่เลือก'; +$lang['Duplicates'] = 'คัดลอก'; +$lang['Edit photo'] = 'แก้ไขรูปภาพ'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'รวมถึงการเรียกดูแกลเลอรี่, การสร้างอัลบั้มและอัพโหลดรูปภาพ'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'สำหรับขนาดภาพที่มีตัดเช่น "สี่เหลี่ยม", Piwigo จะทำอย่างดีที่สุดที่จะรวมศูนย์ที่น่าสนใจ'; +$lang['Gallery unlocked'] = 'แกลลอรี่ปลดล็อค'; +$lang['Generate multiple size images'] = ' +สร้างภาพหลายขนาด'; +$lang['Groups and users'] = 'กลุ่มและผู้ใช้งาน'; +$lang['Last import'] = 'นำเข้าล่าสุด'; +$lang['List'] = 'รายการ'; +$lang['Move to album'] = 'ย้ายไปยังอัลบั้ม'; +$lang['Multiple Size'] = 'หลายขนาด'; +$lang['Name of the duplicate'] = 'ชื่อที่ซ้ำกัน'; +$lang['No group is permitted to see this private album'] = 'ไม่มีกลุ่มที่ได้รับอนุญาตให้ดูอัลบั้มส่วนตัวนี้'; +$lang['Opacity'] = 'ความโปร่งใส'; +$lang['Original Size'] = 'ขนาดเเท่าต้นฉบับ'; +$lang['Original file : %s'] = 'ไฟล์ต้นฉบับ : %s'; +$lang['Permission management'] = 'การจัดการการอนุญาต'; +$lang['Photo name'] = 'ชื่อรูปภาพ'; +$lang['Photo sizes with crop'] = 'ขนาดรูปถ่ายที่มีตัด'; +$lang['Piwigo for Android'] = 'Piwigo สำหรับ Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo สำหรับ iOS (iPhone, iPad, iPod Touch)'; +$lang['Predefined filter'] = 'ตัวกรองที่กำหนดไว้ล่วงหน้า'; +$lang['Source tag'] = 'แหล่งที่มาของป้ายชื่อ'; +$lang['Synchronize metadata'] = 'ประสานข้อมูลเมตาดาต้า'; +$lang['There is no group in this gallery.'] = 'ไม่มีกลุ่มในแกลเลอรี่นี้'; +$lang['This album contains no photo.'] = 'อัลบั้มนี้ยังไม่มีรูปภ่าย'; +$lang['Unlock gallery'] = 'ปลดล็อกแกลเลอรี่'; +$lang['Visited %d times'] = 'เข้าชม %d ครั้ง'; +$lang['Piwigo Publish plugin for Lightroom'] = 'ปลั๊กอิน Piwigo สำหรับ Lightroom'; +$lang['Piwigo export plugin for iPhoto'] = 'ปลั๊กอิน Piwigo สำหรับการส่งออก iPhoto'; +$lang['Piwigo publish plugin for Shotwell'] = 'ปลั๊กอิน Piwigo สำหรับ Shotwell'; +$lang['Piwigo publish plugin for digiKam'] = 'ปลั๊กอิน Piwigo สำหรับ digiKam'; +$lang['Plugin has been successfully copied'] = 'ปลั๊กอินได้คัดลอกสำเร็จแล้ว'; +$lang['Posted %s on %s'] = 'ถูกโพส %s เมื่อ %s'; +$lang['Rated %d times, score : %.2f'] = 'เรต %d ครั้ง, คะแนน : %.2f'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (รีโมตไคลเอนต์แกลลอรี่สำหรับ Android) คือโอเพนซอร์ส (GPL v3) ลูกค้า Piwigo สำหรับแพลตฟอร์ม Android'; +$lang['Resize after upload'] = 'การปรับขนาดหลังจากที่อัปโหลด'; +$lang['Save manual order'] = 'บันทึกคำสั่งด้วยตนเอง'; +$lang['Save visits in history for'] = 'บันทึกการเข้าชมในประวัติสำหรับ'; +$lang['Select a file'] = 'เลือกไฟล์'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'เลือกโซนด้วยเมาส์ของคุณเพื่อกำหนดศูนย์ใหม่ที่สนใจ'; +$lang['Select groups...'] = 'เลือกกลุ่ม ...'; +$lang['Select users...'] = 'เลือกผู้ใช้งาน ...'; +$lang['Send connection settings by email'] = 'ส่งการตั้งค่าการเชื่อมต่อทางอีเมล'; +$lang['Sharpen'] = 'ความคมชัด'; +$lang['No order field selected'] = 'ไม่ได้เลือก ฟิลด์คำสั่ง'; +$lang['Not cropped correctly?'] = 'ครอบตัดถูกต้องหรือไม่?'; +$lang['Notify administrators when a comment is'] = 'แจ้งผู้ดูแลระบบเมื่อมีความเห็น'; +$lang['Numeric identifier : %d'] = 'ระบุตัวเลข:%d'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'เกี่ยวกับลินุกซ์ คุณเพียงแค่ติดตั้ง Shotwell กับแพคเกจหารจัดการและเปิดใช้งานตัวเลือกการเผยแพร่ Piwigo ของคุณ'; +$lang['Permission granted for groups'] = 'สิทธิ์นี้อนุญาตสำหรับกลุ่ม'; +$lang['Permission granted for users'] = 'สิทธิ์นี้อนุญาตสำหรับผู้ใช้งาน'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'ป้ายชื่อ "%s" นี้ซ้ำกับ "%s"'; +$lang['include photos with lower privacy level'] = 'รวมถึงภาพถ่ายที่มีระดับความเป็นส่วนตัวต่ำ'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'ผู้เข้าชมต้องเข้าสู่ระบบถึงจะมีสิทธิเข้าชมอัลบั้มนี้'; +$lang['This album contains %d photos, added between %s and %s.'] = 'อัลบั้มนี้มี %d รูปถ่าย เข้ามาระหว่าง %s และ %s'; +$lang['pending validation'] = 'รอการตรวจสอบ'; +$lang['registered users'] = 'ผู้ใช้ที่ลงทะเบียน'; +$lang['simple visitors'] = 'ผู้เข้าชมทั่วไป'; +$lang['top left corner'] = 'มุมซ้ายด้านบน'; +$lang['top right corner'] = 'มุมขวาด้านบน'; +$lang['The original image quality must be a number between %d and %d'] = 'คุณภาพของภาพต้นฉบับจะต้องเป็นตัวเลขระหว่าง %d และ %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'ความสูงของภาพจะต้องเป็นตัวเลขระหว่าง %d และ %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'ความกว้างของภาพจะต้องเป็นตัวเลขระหว่าง %d และ %d'; +$lang['apply automatic sort order'] = 'ใช้การเรียงลำดับอัตโนมัติ'; +$lang['custom'] = 'กำหนดเอง'; +$lang['modified'] = 'ได้ถูกเปลี่ยนแปลง'; +$lang['middle'] = 'กึ่งกลาง'; +$lang['This album contains %d photos, added on %s.'] = 'อัลบั้มนี้มีรูปถ่าย %d รูป, อัพโหลดเมื่อ %s'; +$lang['any visitor can see this album'] = 'ผู้เข้าชมทุกคนสามารถเห็นอัลบั้มนี้ได้'; +$lang['bottom left corner'] = 'มุมซ้ายด้านล่าง'; +$lang['bottom right corner'] = 'มุมขวาด้านล่าง'; +$lang['cancel manual order'] = 'ยกเลิกคำสั่งด้วยตนเอง'; +$lang['create a new site'] = 'สร้างที่อยู่ไหม่'; +$lang['X Repeat'] = 'X ทำซ้ำ'; +$lang['Y Position'] = 'ตำแหน่ง Y'; +$lang['You can activate only one mobile theme.'] = 'คุณสามารถเปิดใช้งานรูปแบบเพียงหนึ่งชุดสำหรับมือถือ'; +$lang['Zoom'] = 'ขยาย'; +$lang['add a new watermark'] = 'เพิ่มลายน้ำใหม่'; +$lang['administrators'] = 'ผู้ดูแลระบบ'; +$lang['Watermark'] = 'ภาพลายน้ำ'; +$lang['Web Form'] = 'ฟอร์มทางเว็บ'; +$lang['With no album'] = 'กับที่ไม่มีอัลบั้ม'; +$lang['With no tag'] = 'กับที่ไม่มีป้ายชื่อ'; +$lang['With no virtual album'] = 'กับที่ไม่มีอัลบั้ม'; +$lang['X Position'] = 'ตำแหน่ง X'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'เครื่องมือที่มีประสิทธิภาพเพื่อปรับแต่งภาพและการบริหารจัดการไลบรารีขนาดใหญ่บน Mac'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'เครื่องมือถูกออกแบบมาสำหรับช่างภาพมืออาชีพด้วยความเรียบง่าย iPhoto'; +$lang['Piwigo export plugin for Aperture'] = 'ปลั๊กอินส่งออกสำหรับ Aperture'; +$lang['Minimum height'] = 'ความสูงต่ำสุด'; +$lang['Panorama'] = 'พาโนรามา'; +$lang['Minimum width'] = 'ความกว้างต่ำสุด'; +$lang['Portrait'] = 'แนวตั้ง'; +$lang['Landscape'] = 'แนวนอน'; +$lang['Manage photos'] = 'จัดการรูปภาพ'; +$lang['View in gallery'] = 'ดูในแกลอรี่'; +$lang['Number of albums per page'] = 'จำนวนอัลบั้มที่แสดงในแต่ละหน้า'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto คือซอฟต์แวร์จัดการรูปภาพบนระบบปฏิบัติการแมคโอเอสเอ็กซ์, โดยปลั๊กอิน Piwigo export จะช่วยให้คุณสร้างอัลบั้ม และส่งออกรูปภาพของคุณจาก iPhoto ไปยังแกลลอรี่ Piwigo ของคุณ'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam ได้ถูกออกแบบมาเพื่อนักถ่ายภาพ สำหรับใครที่ต้องการดู, จัดการ, แก้ไข, ปรับแต่ง, และแชร์ภาพถ่าย'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam คือซอฟต์แวร์ฟรีที่เกี่ยวกับการจัดการรูปภาพขั้นสูงสำหรับ ลีนุกซ์, วินโดว์ และ แมคโอเอสเอ็กซ์'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'คือปลั๊กอินที่อนุญาตให้คุณส่งออก และ ซิงโคไนซ์ รูปภาพจาก Lightroom ไปยัง แกลอรี่ Piwigo ของคุณ ได้โดยตรง'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'ปลั๊กอิน Piwigo export คือปลั๊กอินที่อนุญาตให้สร้างอัลบั้มและส่งออกรูปภาพเหล่านั้น'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'ส่งออกรูปภาพจาก digiKam ไปยัง แกลลอรี่ Piwigo, ง่ายในการติดตั้ง digiKam และ Kipi-plugin'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'ศูนย์กลางของความสนใจเป็นพื้นที่ที่มีความหมายมากที่สุดของภาพ'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell คือซอฟต์แวร์เสรีเกี่ยวกับการจัดการรูปภาพที่รันบน ลีนุกซ์,โดยเริ่มต้นมันเป็นซอฟต์แวร์ที่จัดการรูปภาพบน Ubuntu และ Fedora'; +$lang['Ratio'] = 'อัตราส่วน'; +$lang['between %.2f and %.2f'] = 'ระหว่าง %.2f และ %.2f'; +$lang['between %d and %d pixels'] = 'ระหว่าง %d และ %d พิกเซล'; +$lang['Duplicate'] = 'สำเนา'; +$lang['Manage the members'] = 'จัดการสมาชิก'; +$lang['Merge selected groups'] = 'รวมกลุ่มที่เลือก'; +$lang['No group selected, no action possible.'] = 'ยังไม่ได้เลือกกลุ่ม, ไม่สามารถรวมกลุ่มได้'; +$lang['No members to manage'] = 'ไม่มีสมาชิกที่จะจัดการ'; +$lang['Please select at least two groups'] = 'โปรดเลือกกลุ่มอย่างน้อยสองกลุ่ม'; +$lang['Rename'] = 'เปลี่ยนชื่อ'; +$lang['This group will be set to default'] = 'กลุ่มนี้ถูกกำหนดให้เป็นกลุ่มปกติ'; +$lang['This group will be unset to default'] = 'กลุ่มนี้ไม่ได้ถูกกำหนดให้เป็นกลุ่มปกติ'; +$lang['Type here the name of the new group'] = 'พิมพ์ชื่อของกลุ่มใหม่'; +$lang['Purge user cache'] = 'ล้างแคชผู้ใช้งาน'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'ขนาดของภาพจะลดลงถึง %dx%d พิเซลส์.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'การปรับขนาดหลังจากการอัพโหลด อาจถูกปิดโดย GD graphic library'; +$lang['close'] = 'ปิด'; +$lang['Basic settings'] = 'ตั้งค่าพื้นฐาน'; +$lang['Change password'] = 'เปลี่ยนรหัสผ่าน'; +$lang['Change username'] = 'เปลี่ยนชื่อผู้ใช้งาน'; +$lang['Close user details'] = 'ปิดรายละเอียดผู้ใช้งาน'; +$lang['General'] = 'ทั่วไป'; +$lang['Loading...'] = 'กำลังโหลด'; +$lang['Open user details'] = 'เปิดรายละเอียดผู้ใช้งาน'; +?> \ No newline at end of file diff --git a/sources/language/th_TH/common.lang.php b/sources/language/th_TH/common.lang.php new file mode 100644 index 0000000..5deaf20 --- /dev/null +++ b/sources/language/th_TH/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/th_TH/help/index.php b/sources/language/th_TH/help/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/language/th_TH/help/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/language/th_TH/help/user_list.html b/sources/language/th_TH/help/user_list.html new file mode 100755 index 0000000..6f7fc78 --- /dev/null +++ b/sources/language/th_TH/help/user_list.html @@ -0,0 +1,23 @@ +

          รายชื่อผู้ใช้

          + +

          นี้เป็นที่ที่คุณจัดการผู้ใช้ของแกลเลอรี่ Piwigo ของคุณ.

          + +

          เพิ่มผู้ใช้

          + +

          ผู้ดูแลระบบสามารถเพิ่มผู้ใช้ด้วยตนเอง สำหรับผู้ใช้แต่ละคน โดยสามารถกำหนดชื่อผู้ใช้และรหัสผ่านและอีเมล์.

          + +

          รายชื่อผู้ใช้

          + +

          รายการของผู้ใช้ที่มีอยู่สามารถกรองกับชื่อผู้ใช้ (ใช้ * เป็นสัญลักษณ์ตัวแทน) กลุ่มหรือสถานะ มันสามารถถูกเรียงลำดับตามวันที่ลงทะเบียนหรือชื่อผู้ใช้ในลำดับขึ้นหรือลง.

          + +

          หน้าจอนี้ช่วยให้การจัดการของผู้ใช้หลายครั้งโดยใช้การกระทำที่แตกต่างกัน

          + +
            +
          • ลบผู้ใช้(ต้องยืนยัน)
          • +
          • เปลี่ยนสถานะของผู้ใช้
          • +
          • เชื่อมโยงหรือแยกตัวออกจากกลุ่ม
          • +
          • ปรับเปลี่ยนคุณสมบัติการแสดงผล
          • +
          • แก้ไขการตั้งค่าเพิ่มเติม
          • +
          + +

          เป้าหมายคือผู้ใช้ที่เลือก (โดยปริยาย) หรือผู้ใช้ทั้งหมดที่แสดงไว้ในรายการที่กรอง.

          \ No newline at end of file diff --git a/sources/language/th_TH/install.lang.php b/sources/language/th_TH/install.lang.php new file mode 100644 index 0000000..2f3d477 --- /dev/null +++ b/sources/language/th_TH/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = "ต้องการความช่วยเหลือ? โปรดถามคำถามไว้ได้ที่ บอร์ดข้อความของ Piwigo."; +$lang['Visitors will be able to contact site administrator with this mail'] = "ผู้เยี่ยมชมจะสามารถที่จะใช้อีเมลนี้ เพื่อติดต่อกับผู้ดูแลระบบได้"; +$lang['PHP 5 is required'] = "PHP 5 จำเป็นต้องมี"; +$lang['It appears your webhost is currently running PHP %s.'] = "มันจะแสดงบนเวิร์ฟเวอร์ที่คุณใช้งานอยู่ ซึ่งคุณใช้งานอยู่บน PHP %s."; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = "Piwigo อาจจะลองปรับการตั้งค่าของคุณไปยัง PHP 5 โดยการสร้างหรือแก้ไขปรับแต่งไฟล์ .htaccess."; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = "จำไว้ว่า คุณสามารถเปลี่ยนแปลงการตั้งค่าในภายหลังได้ด้วยตนเอง."; +$lang['Try to configure PHP 5'] = "ลองตั้งค่า PHP 5 ใหม่"; +$lang['Sorry!'] = "เสียใจ!"; +$lang['Piwigo was not able to configure PHP 5.'] = "Piwigo ไม่สามารถตั้งค่า PHP 5. ได้"; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = "คุณควรติดต่อไปยังผู้ให้บริการเซิร์ฟเวอร์ของคุณเพื่อสอบถามว่า เซิร์ฟเวอร์ดังกล่าวนี้สนับสนุนการทำงานของ PHP 5 หรือว่าคุณสามารถสลับไปใช้งาน PHP 5 ด้วยตนเอง ได้หรือไม่อย่างไร."; +$lang['Hope to see you back soon.'] = "หวังว่าจะได้เจอคุณเร็วๆ นี้."; +$lang['Congratulations, Piwigo installation is completed'] = 'ยินดีด้วย, การติดตั้ง Piwigo ได้ดำเนินการเสร็จเรียบร้อยแล้ว'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'คัดลอกข้อความในกล่องข้อความด้านล่าง เพื่อนำไปวางในไฟล์ "local/config/database.inc.php" (ข้อควรระวัง : ไฟล์ database.inc.php จะต้องเป็นข้อความที่ได้คัดลอกจากภายในกล่องข้อความเท่านั้น, จะต้องไม่มีบรรทัดเกิน หรืออักขระว่าง)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'การสร้างไฟล์ตั้งค่า local/config/database.inc.php ล้มเหลว.'; +$lang['Download the config file'] = 'ดาวน์โหลดไฟล์ตั้งค่า'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'คุณสามารถดาวน์โหลดไฟล์ตั้งค่า และอัพไปไว้ยังไดเรกทอรี่ local/config ของ Piwigo.'; +$lang['Just another Piwigo gallery'] = 'เพียงแค่ Piwigo แกลลอรี่ เว็บหนึ่ง'; +$lang['Welcome to my photo gallery'] = 'ยินดีต้อนรับสู่แกลลอรี่รูปภาพของฉัน'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'อย่าลังเลที่จะปรึกษาหรือโพสคำถามในฟอรั่มของเรา เพื่อขอความช่วยเหลือใดๆ :%s'; +$lang['Welcome to your new installation of Piwigo!'] = 'ยินดีต้อนรับสู่การติดตั้งใหม่ของ Piwigo!'; +$lang['localhost or other, supplied by your host provider'] = 'localhost หรืออื่น ๆ ที่จัดทำโดยผู้ให้บริการโฮสต์ของคุณ'; +?> \ No newline at end of file diff --git a/sources/language/th_TH/iso.txt b/sources/language/th_TH/iso.txt new file mode 100644 index 0000000..919c145 --- /dev/null +++ b/sources/language/th_TH/iso.txt @@ -0,0 +1 @@ +ภาษาไทย [TH] \ No newline at end of file diff --git a/sources/language/th_TH/th_TH.jpg b/sources/language/th_TH/th_TH.jpg new file mode 100644 index 0000000..e0318ca Binary files /dev/null and b/sources/language/th_TH/th_TH.jpg differ diff --git a/sources/language/th_TH/upgrade.lang.php b/sources/language/th_TH/upgrade.lang.php new file mode 100644 index 0000000..d7c538d --- /dev/null +++ b/sources/language/th_TH/upgrade.lang.php @@ -0,0 +1,43 @@ +release %s (or equivalent).'] = "หน้านี้คือ หน้าการอัพเกรดฐานข้อมูลจาก Piwigo เวอร์ชั่นเก่าของคุณ ไปยังเวอร์ชั่นใหม่. ซึ่งการอัพเกรดจะทำให้ ระบบ Piwigo แกลลอรี่ ของคุณเป็นปัจจบัน หรือเป็นการใช้งานบนเวอร์ชั่นที่ถูก ปล่อย %s (หรือ เทียบเท่า)."; +$lang['Upgrade from version %s to %s'] = "อัพเกรดจากเวอร์ชั่น %s ไปยัง %s"; +$lang['Statistics'] = "สถิติ"; +$lang['total upgrade time'] = "ระยะเวลาการอัพเกรดทั้งหมด"; +$lang['total SQL time'] = "เวลา SQL ทั้งหมด"; +$lang['SQL queries'] = "SQL queries"; +$lang['Upgrade informations'] = "ข้อมูลการอัพเกรด"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "การปรับปรุงระบบโปรดตรวจสอบใน [การจัดการระบบ>เครื่องมือ>การปรับปรุง] หากคุณพบปัญหาใดๆ ในการอัพเกรด."; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "โปรดระมัดระวัง, ปลั๊กอินที่คุณใช้งานอยู่ได้ถูกยกเลิกการใช้งานแล้ว. คุณจะต้องตรวจสอบก่อนการอัพเกรดปลั๊กอิน:"; +$lang['Only administrator can run upgrade: please sign in below.'] = "สำหรับผู้ดูแลระบบเท่านั้นที่สามารภทำการอัพเกรดระบบได้: โปรดเข้าสู่ระบบด้านล่าง."; +$lang['You do not have access rights to run upgrade'] = "คุณไม่ได้เข้าถึงการอัพเกรดอย่างถูกต้อง"; +$lang['All sub-albums of private albums become private'] = "อัลบั้มย่อยทั้งหมดของอัลบั้มส่วนตัว จะกลายเป็นอัลบั้มส่วนตัว"; +$lang['User permissions and group permissions have been erased'] = "การอนุญาตให้สิทธฺ์ของผู้ใช้งานและกลุ่มจะถูกลบ"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "รูปภาพขนาดย่อ คำนำหน้าของรูปภาพขนาดย่อ และที่อยู่เมลของเว็บมาสเตอร์เท่านั้นที่จะได้ถูกบันทึกจากการตั้งค่าครั้งก่อน"; +$lang['In %s, before ?>, insert:'] = 'ใน %s, ก่อน ?>, ใส่:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'โปรดระมัดระวัง, ธีมที่คุณใช้งานอยู่ได้ถูกยกเลิกการใช้งานแล้ว. คุณจะต้องตรวจสอบก่อนการอัพเกรดธีม:'; +?> diff --git a/sources/language/tr_TR/about.html b/sources/language/tr_TR/about.html new file mode 100644 index 0000000..d065d3c --- /dev/null +++ b/sources/language/tr_TR/about.html @@ -0,0 +1,14 @@ +

          Bu resim galerisi Piwigo kullanılarak oluşturulmuştur.

          + +

          Piwigo web için tasarlanan bir resim galerisi yazılımıdır, kullanıcı ve gelistiricilerden oluşan aktif bir topluluk tarafından hazırlanmıştır. Eklentiler sayesinde Piwigo kolaylıkla kişiselleştirilebilir. Piwigo'nun tamamen ücretsiz olması ve açik kaynak kodlu (geliştirilebilir) bir yapısı olması da cabası..

          + +

          Daha fazla bilgi için Piwigo'nun Web sitesini ziyaret edin!

          + +

          Türkçe çeviriler bu çevirmenler tarafından yapılmaktadır (alfabetik sırayla isimleri): + +

          +Çevirmenlere çok teşekkürler!

          diff --git a/sources/language/tr_TR/admin.lang.php b/sources/language/tr_TR/admin.lang.php new file mode 100644 index 0000000..67081e7 --- /dev/null +++ b/sources/language/tr_TR/admin.lang.php @@ -0,0 +1,974 @@ +Click here to show log error.'] = 'Çıkarma sırasında bir hata oluştu. Lütfen Piwigo kurulum dosya izinlerini kontrol ediniz.
          Hataları göstermek için buraya tıklayın.'; +$lang['An error has occured during upgrade.'] = 'Yükseltme sırasında bir hata oluştu.'; +$lang['An error occured during extraction (%s).'] = '(%s) dosyası çıkarılırken hata oluştu.'; +$lang['An information email was sent to group "%s"'] = 'Bilgi e-postası "%s" grubuna gönderildi'; +$lang['and'] = 've'; +$lang['Anomaly'] = 'Anormallik'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = 'Bu sekmeyi sadece site yöneticisi görebilir, diğer yöneticiler göremez.'; +$lang['Apply action'] = 'Eylemi uygula'; +$lang['Apply selected corrections'] = 'Seçilen düzeltmeleri uygula'; +$lang['Apply to sub-albums'] = 'Alt albümlere uygula'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Yaklaşık maksimum çözünürlük: %dM pixel (%dx%d pixel).'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = 'Bu yükseltmeyi yüklemek istediğinizden emin misiniz? Bu sürüm öncesinde kaldırma ihtiyacı olup olmadığını doğrulamalısınız.'; +$lang['Are you sure you want to delete this plugin?'] = 'Bu eklentiyi silmek istediğinize emin misiniz?'; +$lang['Are you sure you want to install this plugin?'] = 'Bu eklentiyi kurmak istediğinize emin misiniz?'; +$lang['Associate to album'] = 'Albüme bağla'; +$lang['associate to group'] = 'Gruba iliskilendirmek'; +$lang['Associated'] = 'Bağlantılı'; +$lang['Authorize users to add comments on selected albums'] = 'Kullanıcıları seçilen albümler için yorum yapmaya yetkilendir'; +$lang['Authorized'] = 'Yetkili'; +$lang['Automatic correction'] = 'Otomatik düzeltme'; +$lang['automatic order'] = 'otomatik sıralama'; +$lang['Available only with HTML format'] = 'Sadece HTML biçiminde mevcuttur'; +$lang['Average rate'] = 'Ortalama derecelendirme'; +$lang['average time'] = 'ortalama süre'; +$lang['Batch Manager'] = 'Küme Yöneticisi'; +$lang['between'] = 'arasinda'; +$lang['Bound Theme'] = 'Yükümlü tema'; +$lang['By %s'] = 'Tarafından %s'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Varsayılan olarak, Piwigo HD (yüksek çözünürlüklü) fotoğraflarınızdan yeni bir web boyutu oluşturacak.'; +$lang['By rank'] = 'Rütbece'; +$lang['Caddie management'] = 'Yardımcı yönetimi'; +$lang['Caddie'] = 'Yardımcı'; +$lang['Can\'t connect to server.'] = 'Sunucuya bağlantı kurulamıyor.'; +$lang['Can\'t create temporary file.'] = 'Geçici dosya oluşturulamadı.'; +$lang['Can\'t download archive.'] = 'Arşiv indirilemedi.'; +$lang['Can\'t read or extract archive.'] = 'Arşiv okunamadı veya açılamadı.'; +$lang['Cannot delete the old permalink !'] = 'Eski kalıcı bağlantı silinemez!'; +$lang['Change Admin Colors'] = 'Yönetim sayfası renk değişimi'; +$lang['Check all'] = 'Hepsini işaretle'; +$lang['Check automatic corrections'] = 'Otomatik düzeltmeleri kontrol et'; +$lang['Check for updates'] = 'Güncellemeleri kontrol et'; +$lang['Check for upgrade failed for unknown reasons.'] = 'Yükseltme kontrolü bilinmeyen bir sebepten dolayı başarısız oldu'; +$lang['Check for upgrade'] = 'Yükseltmeleri kontrol et'; +$lang['Check integrity'] = 'Bütünlük kontrolü'; +$lang['Choose an action'] = 'Eylem seçiniz'; +$lang['Choose an option'] = 'Bir seçenek seçiniz'; +$lang['Classic display'] = 'Klasik ekran'; +$lang['clean'] = 'Temizle'; +$lang['Comments for all'] = 'Hepsine yorum yap'; +$lang['Complementary mail content'] = 'Tamamlayıcı posta içeriği'; +$lang['Configuration'] = 'Yapılandırma'; +$lang['Confirm merge'] = 'Birleştirmeyi onaylayın'; +$lang['confirm'] = 'Onayla'; +$lang['Continue processing treatment'] = 'Sürmekte olan işleme devam'; +$lang['Correction applied with error'] = 'Düzeltme hata ile uygulandı'; +$lang['Correction applied with success'] = 'Düzeltme başarıyla uygulandı'; +$lang['Correction the anomaly will cancel the fact that it\'s ignored'] = 'Düzeltilmiş anomali artık göz ardı edilecektir'; +$lang['Correction'] = 'Düzeltme'; +$lang['create a new album'] = 'yeni bir albüm oluştur'; +$lang['Create the "%s" directory at the root of your Piwigo installation'] = 'Piwigo\'nun kurulduğu kök dizin altında "%s" dizinini oluşturun'; +$lang['Create this site'] = 'Bu siteyi oluştur'; +$lang['Create'] = 'Oluştur'; +$lang['created'] = 'yaratildi'; +$lang['Crop'] = 'Kes'; +$lang['Current name'] = 'Geçerli isim'; +$lang['Database synchronization with files'] = 'Dosyalar ile veritabanı senkronizasyonu'; +$lang['Database'] = 'Veritabanı'; +$lang['Date'] = 'Tarih'; +$lang['Day'] = 'Gün'; +$lang['Deactivate all'] = 'Tümünü etkinsizleştir'; +$lang['Deactivate'] = 'Etkisizleştir'; +$lang['Default display'] = 'Varsayılan görüntü'; +$lang['Default photos order'] = 'Varsayılan fotoğraf sıralaması'; +$lang['Default user cannot be deleted'] = 'Varsayılan kullanıcı silinemez'; +$lang['Default user does not exist'] = 'Varsayılan kullanıcı yok'; +$lang['default values'] = 'varsayılan değerler'; +$lang['default'] = 'Varsayılan'; +$lang['delete album'] = 'albümüsil'; +$lang['Delete orphan tags'] = 'Sahipsiz etiketleri sil'; +$lang['delete photo'] = 'resimi sil'; +$lang['Delete Representant'] = 'Albüm pul resmini sil'; +$lang['Delete selected photos'] = 'Seçili fotoğrafları sil'; +$lang['Delete selected tags'] = 'Seçilen etiketleri sil'; +$lang['Delete selected users'] = 'Seçilen kullanıcılari sil'; +$lang['Delete this language'] = 'Bu dili sil'; +$lang['delete this site and all its attached elements'] = 'bu siteyi ve eklenen tüm içerigi sil'; +$lang['Delete this theme'] = 'Bu temayı sil'; +$lang['delete'] = 'sil'; +$lang['Deleted on'] = 'Silindi'; +$lang['deleted'] = 'silindi'; +$lang['Deletions'] = 'Silinenler'; +$lang['Deny selected groups'] = 'Seçilen grubu reddet'; +$lang['Deny selected users'] = 'Seçilen kullanıcıları reddet'; +$lang['Description'] = 'Tanım/Açıklama'; +$lang['Detailed informations'] = 'Detaylı bilgi'; +$lang['directories + files'] = 'dizinler + resimler'; +$lang['Directory does not exist'] = 'Dizin mevcut değil'; +$lang['Directory'] = 'Dizin'; +$lang['Discover album:'] = 'Albümü keşfet:'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = 'En fazla bilgileri göster (eklenen albümler resimler, silinen albümler resimler)'; +$lang['Display options'] = 'Görünüm seçenekleri'; +$lang['display'] = 'göster'; +$lang['Dissociate from album'] = 'Albümden ayır'; +$lang['dissociate from group'] = 'Gruptan ayirmak'; +$lang['Dissociated'] = 'Ayrılmış'; +$lang['Do you want to activate anyway?'] = 'Yine de etkinleştirmek istiyor musunuz?'; +$lang['Documentation'] = 'Belgeler'; +$lang['Does not represent'] = 'Temsil edilmiyor / Karsiligi yok'; +$lang['Download,'] = 'İndir,'; +$lang['Downloads'] = 'İndirmeler'; +$lang['Drag to re-order'] = 'Yeniden sıralamak için tıkla ve sürükle'; +$lang['Drop into album'] = 'Bir albüm seç'; +$lang['Dump Database'] = 'Vertitabanı Dökümü'; +$lang['Duplicates'] = 'Kopyalar'; +$lang['Edit album permissions'] = 'Albüm yetkilerini düzenle'; +$lang['Edit album'] = 'Albüm düzenle'; +$lang['Edit photo information'] = 'Fotoğraf bilgilerini düzenle'; +$lang['Edit ranks'] = 'Rütbeleri yönet'; +$lang['Edit selected tags'] = 'Seçilen etiketleri düzenle'; +$lang['Edit tags'] = 'Etiketleri düzenle'; +$lang['Element type'] = 'Eleman türü'; +$lang['Element'] = 'Eleman'; +$lang['Email administrators when a comment is deleted'] = 'Yorum silindiğinde yöneticilere e-posta gönder'; +$lang['Email administrators when a comment is modified'] = 'Yorum değiştirildiğinde yöneticilere e-posta gönder'; +$lang['Email admins when a comment requires validation'] = 'Yorum onayı gerektiğinde yöneticilere e-posta gönder'; +$lang['Email admins when a new user registers'] = 'Yeni kullanıcı kayıt olduğunda yöneticilere e-posta gönder'; +$lang['Email admins when a valid comment is entered'] = 'Geçerli bir yorum girildiğinde yöneticilere e-posta gönder'; +$lang['Environment'] = 'Sistem Bileşenleri'; +$lang['Error list'] = 'Hata listesi'; +$lang['Error on file "%s" : %s'] = 'Hata dosyada "%s" : %s'; +$lang['Error when sending email to %s [%s].'] = 'E-Posta gönderirken hata %s [%s].'; +$lang['ERROR'] = 'HATA'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'HATA: BU EKLENTİ EKSİK ANCAK YÜKLENMİŞ. ŞİMDİ KALDIRIN.'; +$lang['Errors caption'] = 'Hata başlıkları'; +$lang['errors during synchronization'] = 'Senkronizasyon sırasında hatalar'; +$lang['even already synchronized photos'] = 'hatta elemanlar senkronize edildi'; +$lang['Everybody'] = 'Herkes'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d second].'] = 'Yürütme zaman asimi, islem devam etmeli [Tahmini zaman: %d saniye].'; +$lang['Execution time is out, treatment must be continue [Estimated time: %d seconds].'] = 'Yürütme zaman asimi, islem devam etmeli [Tahmini zaman: %d saniye].'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif eklentisi hazır değil, yönetici exif hizmet dışı bırakmalı'; +$lang['existing album'] = 'olan albüm'; +$lang['Extend for templates'] = 'Şablonları genişlet'; +$lang['Extensions Update'] = 'Eklentilerin Güncellenmesi'; +$lang['Failed to write file to disk'] = 'Dosya diske yazılamadı'; +$lang['File upload stopped by extension'] = 'Dosya yükleme uzantı tarafından durduruldu'; +$lang['File'] = 'Dosya'; +$lang['File/directory read error'] = 'Dosya/dizin okuma hatası'; +$lang['Find a new representant by random'] = 'Rastgele yeni bir pul resmi bul'; +$lang['first photo added on %s'] = 'Ilk içerigin eklenme zamani %s'; +$lang['Follow Orientation'] = 'Yönlendirmeyi İzleyin'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Aşağıdaki eklentiler Piwigo\'nun yeni sürümü ile uyumlu olmayabilir:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Aşağıdaki temalar Piwigo\'nun yeni sürümü ile uyumlu olmayabilir:'; +$lang['for the file format'] = 'dosya biçimi için'; +$lang['for this file format'] = 'Bu dosya biçimi için'; +$lang['Forbid this language to users'] = 'Kullanıcılara bu dili yasakla'; +$lang['Forbid this theme to users'] = 'Kullanıcılara bu temayı yasakla'; +$lang['Forbidden'] = 'Yasaklanmış'; +$lang['Form'] = 'Kalıp'; +$lang['FTP + Synchronization'] = 'FTP + Eşitleme'; +$lang['Gallery title'] = 'Galeri Başlığı'; +$lang['GD library is missing'] = 'GD kütüphanesi eksik'; +$lang['GD version'] = 'GD sürümü'; +$lang['General statistics'] = 'Genel istatistikler'; +$lang['Get Support on Piwigo Forum'] = 'Piwigo forumundan destek alın'; +$lang['Give write access (chmod 777) to "%s" directory at the root of your Piwigo installation'] = 'Piwigo\'nun kurulduğu kök dizindeki "%s" dizinine yazma yetkisi verin (chmod 777)'; +$lang['global mode'] = 'Küresel mod'; +$lang['Go to %s or %s for more informations'] = 'Daha fazla bilgi için %s veya %s \'ye gidin'; +$lang['Go to'] = 'Git'; +$lang['Grant selected groups'] = 'Seçilen gruplara izin ver'; +$lang['Grant selected users'] = 'Seçilen kullanıcılara izin ver'; +$lang['Graphics Library'] = 'Grafik Kütüphanesi'; +$lang['group "%s" added'] = 'Grup "%s" eklendi'; +$lang['group "%s" deleted'] = 'Grup "%s" silindi'; +$lang['group "%s" updated'] = 'Grup "%s" güncellendi'; +$lang['Group management'] = 'Grup yönetimi'; +$lang['Group name'] = 'Grup Adı'; +$lang['Group'] = 'Grup'; +$lang['Groups'] = 'Gruplar'; +$lang['Guest cannot be deleted'] = 'Misafir silinemez'; +$lang['Guest Settings'] = 'Misafir ayarları'; +$lang['guest'] = 'Misafir'; +$lang['Guests'] = 'Misafirler'; +$lang['height must be a number superior to'] = 'yüksekligi bir sayi olmali'; +$lang['Height'] = 'Yükseklik'; +$lang['Hello'] = 'Merhaba'; +$lang['Hello,'] = 'Merhaba,'; +$lang['Help Me'] = 'Bana yardım edin'; +$lang['hide details'] = 'ayrıntıları gizle'; +$lang['Hide'] = 'Gizle'; +$lang['High definition enabled'] = 'Yüksek çözünürlük etkin'; +$lang['High definition'] = 'Yüksek çözünürlüklü'; +$lang['high'] = 'Yüksek'; +$lang['History'] = 'Geçmis'; +$lang['Hit'] = 'Tıklanma'; +$lang['Hour'] = 'Saat'; +$lang['Hoverbox display'] = 'Hoverbox görüntüle'; +$lang['I decide to update anyway'] = 'Her şekilde güncellemeye karar verdim'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Eğer HD yoksa ve geçerli web boyutu yeniden boyutlandırma ölçülerinden büyük ise, Piwigo bu resmi HD olarak algılayacak ve yeni bir web boyutu oluşturacaktır.'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Eger sorun yaşarsanız yada herhangi bir sorunuz varsa, lütfen buraya bir mesaj gönderin:'; +$lang['Ignore All'] = 'Tümünü Yoksay'; +$lang['Ignore selected anomalies'] = 'Seçilen anormallikleri yoksay'; +$lang['Ignore this update'] = 'Bu güncellemeyi yoksay'; +$lang['Image id'] = 'Resim kimliği'; +$lang['Image Quality'] = 'Resim kalitesi'; +$lang['Images manual order was saved'] = 'Resimlerin elle sıralandırılması kaydedildi'; +$lang['Impossible automatic correction'] = 'Otomatik düzeltme imkansız'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ana tema eksik olduğundan bu tema aktifleştirilemiyor: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Bu dili devre dışı bırakmak imkansız, önce varsayılan olarak başka bir dil ayarla.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Bu dili devre dışı bırakmak imkansız, en az bir dil olması gerekir.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Bu temayı devreden çıkarmak imkansız, en az bir tema olması gerekir.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Bu tema silinemez çünkü diğer temalar buna bağımlı: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'php.ini dosyasındaki upload_max_filesize (%sB), post_max_size (%sB) den daha büyük, bu ayarı değiştirmelisiniz'; +$lang['Inactive Languages'] = 'Aktif olmayan Diller'; +$lang['Inactive Plugins'] = 'Aktif olmayan Eklentiler'; +$lang['Inactive Themes'] = 'Aktif olmayan Temalar'; +$lang['include child albums'] = 'alt albümler dahil'; +$lang['Include display of recent photos grouped by dates'] = 'Tarihe göre gruplandırılmış son fotoğrafları dahil et'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Geçmiş verileri dahil et (UYARI: sunucu belleği sınırı aşılabilir)'; +$lang['Information data registered in database'] = 'Veritabanına kayıtlı bilgiler'; +$lang['Informations'] = 'Bilgiler'; +$lang['Install on your computer,'] = 'Bilgisayarınızda yükleyin,'; +$lang['Install'] = 'Kur'; +$lang['Installed Languages'] = 'Yüklü Diller'; +$lang['Installed Themes'] = 'Yüklü Temalar'; +$lang['Instructions to use Piwigo'] = 'Piwigo kullanma talimatları'; +$lang['Invert'] = 'Ters çevir'; +$lang['IP'] = 'IP'; +$lang['jump to album'] = 'albüme geç'; +$lang['jump to photo'] = 'Resime geç'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Piwigo projesi ile bağlantınızı sürdürmek için Piwigo Duyuru Bültenine üye olun. Yeni bir sürüm mevcut olduğunda ve projede oluşan önemli olaylar hakkında (bazen bilinmesi önemli olan bir güvenlik açığı düzeltmesi ve terfileri içerebilir) e-Posta alacaksınız. Sadece yılda bir kaç e-Posta.'; +$lang['Language has been successfully installed'] = 'Dil başarıyla yüklendi'; +$lang['Languages which need upgrade'] = 'Güncellenmesi gereken diller'; +$lang['Languages'] = 'Diller'; +$lang['Last hit'] = 'En son ziyaret'; +$lang['Last import'] = 'Son içe aktarma'; +$lang['Last revisions'] = 'Son revizyonlar'; +$lang['Last send'] = 'Son gönderilen'; +$lang['Learn more'] = 'Daha fazla bilgi edinin'; +$lang['leave'] = 'Ayril'; +$lang['Level 0'] = '---'; +$lang['Level 1'] = 'Tanıdıklar'; +$lang['Level 2'] = 'Arkadaşlar'; +$lang['Level 4'] = 'Aile'; +$lang['Level 8'] = 'Yöneticiler'; +$lang['Link all album photos to a new album'] = 'Bütün albüm fotoğraflarını yeni bir albüme bağla'; +$lang['Link all album photos to some existing albums'] = 'Bütün albüm fotoğraflarını bulunan albümlere bağla'; +$lang['Linked albums'] = 'Bağlanan albümler'; +$lang['Local'] = 'Yerel'; +$lang['Lock albums'] = 'Albümleri kilitle'; +$lang['Lock gallery'] = 'Galeriyi kilitle'; +$lang['Lock'] = 'Kilitle'; +$lang['Locked'] = 'Kilitlendi'; +$lang['Mail address is obligatory for all users'] = 'e-Posta adresi tüm kullanıcılar için zorunludur'; +$lang['Mail content'] = 'Posta içeriği'; +$lang['Mail sent to %s [%s].'] = '%s [%s] \'a e-Posta gönderildi.'; +$lang['Main "guest" user does not exist'] = 'Ana "Misafir" kullanıcısı yok'; +$lang['Main "guest" user status is incorrect'] = 'Ana "Misafir" kullanıcısı durumu yanlış'; +$lang['Main "webmaster" user does not exist'] = 'Ana "Site Yöneticisi" kullanıcısı yok'; +$lang['Main "webmaster" user status is incorrect'] = 'Ana "Site Yöneticisi" kullanıcısı durumu yanlış'; +$lang['Main Page'] = 'Ana Sayfa'; +$lang['Maintenance'] = 'Bakım'; +$lang['Make this language available to users'] = 'Bu dili kullanıcılara aç'; +$lang['Make this theme available to users'] = 'Bu temayı kullanıcılara aç'; +$lang['manage album photos'] = 'albüm resimlerini yönet'; +$lang['Manage authorizations for selected albums'] = 'Seçilen albüm yetkilerinin yönetimi'; +$lang['Manage permissions for group "%s"'] = '"%s" gubu izinlerini yönet'; +$lang['Manage permissions for user "%s"'] = '"%s% kullanıcısı izinlerini yönet'; +$lang['Manage Permissions'] = 'İzinleri Yönet'; +$lang['Manage photo ranks'] = 'Fotoğrfa rütbesini yönet'; +$lang['manage sub-albums'] = 'yönet alt-albümler'; +$lang['Manage tags'] = 'Etiketleri yönet'; +$lang['Manage this set of %d photos'] = 'Bu %d fotoğraf setini yönet'; +$lang['Manage'] = 'Yönet'; +$lang['manual order'] = 'el ile düzen'; +$lang['Manual order'] = 'Elle sıralama'; +$lang['Maximum file size: %sB.'] = 'Azami dosya boyutu: %sB.'; +$lang['Maximum height'] = 'Azami yükseklik'; +$lang['Maximum width'] = 'Azami genişlik'; +$lang['Members'] = 'Üyeler'; +$lang['Menu Management'] = 'Menüler'; +$lang['Merge selected tags'] = 'Seçilen etiketleri birleştir'; +$lang['Merge tags'] = 'Etiketleri birleştir'; +$lang['Metadata synchronization results'] = 'Metadata eşitleme sonuçları'; +$lang['Metadata synchronized from file'] = 'Metadata dosyadan eşitlendi'; +$lang['Minimum privacy level'] = 'Asgari gizlilik seviyesi'; +$lang['Miscellaneous'] = 'Çeşitli'; +$lang['Missing a temporary folder'] = 'Geçici dizin eksik'; +$lang['Missing Plugins'] = 'Eksik Eklentiler'; +$lang['Modify information'] = 'Bilgiyi değiştir'; +$lang['Month'] = 'Ay'; +$lang['Move albums'] = 'Albümleri taşı'; +$lang['Move'] = 'Taşı'; +$lang['Name'] = 'İsim'; +$lang['New name'] = 'Yeni isim'; +$lang['New parent album'] = 'Yeni ana albüm'; +$lang['New photos added'] = 'Yeni fotoğraflar eklendi'; +$lang['New photos were added'] = 'Yeni fotoğraflar eklendi'; +$lang['New tag'] = 'Yeni etiket'; +$lang['New Version'] = 'Yeni Sürüm'; +$lang['new'] = 'yeni'; +$lang['No destination tag selected'] = 'Hedef etiket seçilmedi'; +$lang['No display'] = 'Görüntü yok'; +$lang['No file was uploaded'] = 'Dosya yüklenmedi'; +$lang['No mail to send.'] = 'Gönderilecek posta yok'; +$lang['No photo can be deleted'] = 'Fotoğraf silinemez'; +$lang['No photo in the current set.'] = 'Bu sette fotoğraf yok'; +$lang['No photo in this album'] = 'Bu albümde fotoğraf yok'; +$lang['No photo selected, %d photos in current set'] = 'Bu setteki %d fotoğraftan hiçbiri seçilmedi'; +$lang['No photo selected, no action possible.'] = 'Fotoğraf seçilmedi, eylem imkansız.'; +$lang['No results'] = 'Sonuç yok'; +$lang['No user to send notifications by mail.'] = 'e-Posta yoluyla bilgilendirilecek hiç kullanıcı bulunmuyor.'; +$lang['no write access'] = 'Yazma yetkisi yok'; +$lang['none'] = 'Hiç'; +$lang['None'] = 'Hiçbiri'; +$lang['nothing'] = 'hiçbir şey'; +$lang['Notification'] = 'Bilgilendirme'; +$lang['Number of comments per page'] = 'Her sayfadaki yorum sayısı'; +$lang['Number of downloads'] = 'İndirme sayısı'; +$lang['number of miniaturized photos'] = 'oluşturulan küçük resim sayısı'; +$lang['Number of rates'] = 'Derecelendirme sayısı'; +$lang['Number of thumbnails to create'] = 'Yaratilacak pul resmi sayısı'; +$lang['Obsolete Plugins'] = 'Eski Eklentiler'; +$lang['on the %d selected photos'] = '%d resimler seçildi'; +$lang['on'] = 'üzerinde'; +$lang['only directories'] = 'sadece dizinler'; +$lang['only perform a simulation (no change in database will be made)'] = 'sadece veritabanında değişecektir) bir simülasyon (hiçbir şey yapılmayacak)'; +$lang['Only private albums are listed'] = 'Sadecee özel albümler listelendi'; +$lang['Operating system'] = 'İşletim sistemi'; +$lang['Operation in progress'] = 'İşlem devam ediyor.'; +$lang['Optimizations have been completed with some errors.'] = 'Optimizasyonlar bazı hatalar ile tamamlanmıştır.'; +$lang['Optional URL keyword'] = 'İsteğe bağlı URL anahtar kelimesi'; +$lang['Options'] = 'Seçenekler'; +$lang['Order of menubar items has been updated successfully.'] = 'Menü çubuğu öğe sıralaması başarıyla güncellendi.'; +$lang['Original templates'] = 'Orjinal şablonlar'; +$lang['Orphan tags deleted'] = 'Etkisiz etiketler silindi'; +$lang['Other plugins'] = 'Mevcut diğer eklentiler'; +$lang['Other private albums'] = 'Diğer özel albümler'; +$lang['other'] = 'Diğer'; +$lang['Overall'] = 'Genel bakış'; +$lang['overrides existing values with empty ones'] = 'boş olan değerleri geçersiz kılar'; +$lang['Page banner'] = 'Sayfa afişi'; +$lang['Page end'] = 'Sayfa sonu'; +$lang['Pages seen'] = 'Görülen sayfalar'; +$lang['Parameter'] = 'Ayarlar'; +$lang['Parameters'] = 'Parametreler'; +$lang['Parent album'] = 'Ana albüm'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Şifre doğrulama eksik. Lütfen seçtiğiniz şifreyi doğrulayın.'; +$lang['Password is missing. Please enter the password.'] = 'Şifre eksik. Lütfen şifrenizi girin.'; +$lang['Path'] = 'Yol'; +$lang['Pending Comments'] = 'Bekleyen Yorumlar'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = '%s kalıcı bağlantısı %s albümü tarafından kullanıldı. Kalıcı bağlantı geçmişinden önce onu silin.'; +$lang['Permalink %s is already used by album %s'] = '%s kalıcı bağlantısı zaten %s albümü tarafından kullanıldı'; +$lang['Permalink history'] = 'Kalıcı bağlantı geçmisi'; +$lang['Permalink'] = 'Kalıcı bağlantı'; +$lang['Permalinks'] = 'Kalıcı bağlantılar'; +$lang['Permission denied'] = 'İzin verilmedi'; +$lang['Permission granted thanks to a group'] = 'Gruba izin verilmiştir'; +$lang['Permission granted'] = 'İzin verildi'; +$lang['Permissions'] = 'İzinler'; +$lang['Photo %s of %s'] = 'Fotoğraf %s / %s'; +$lang['Photo informations updated'] = 'Fotoğraf bilgileri güncellendi'; +$lang['Photo Page'] = 'Fotoğraf sayfası'; +$lang['Photo Properties'] = 'Fotoğraf özellikleri'; +$lang['Photo name'] = 'Fotoğraf adı'; +$lang['Photo unreachable or no support'] = 'Fotoğrafa erişilemiyor yada desteklenmeyen biçimde'; +$lang['photos added in the database'] = 'elemanlar veritabanında ekledi'; +$lang['photos candidates for metadata synchronization'] = 'metadata senkronizasyon için görüntüleri adayları'; +$lang['photos deleted from the database'] = 'elemanlar veritabanında silindi'; +$lang['Photos generation in progress...'] = 'Fotoğrafların oluşturulmasına devam ediliyor...'; +$lang['photos informations synchronized with files metadata'] = 'elemanları bilgiler dosyaları ile metadata senkronize edildi'; +$lang['photos per page'] = 'Safya basina içerikler'; +$lang['photos updated in the database'] = 'elemanlar veritabanında güncellendi'; +$lang['Photos'] = 'Fotoğraflar'; +$lang['Piwigo Administration'] = 'Piwigo Yönetimi'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo Duyuru Bülteni'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo sunucudan yükseltme dosyasını alamıyor'; +$lang['Piwigo configuration'] = 'Piwigo yapılandırma'; +$lang['Piwigo Update'] = 'Piwigo Güncellemesi'; +$lang['Piwigo Uploader'] = 'Piwigo Yükleyici'; +$lang['Piwigo version'] = 'Piwigo Sürümü'; +$lang['pixels'] = 'pikseller'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = 'Lütfen "plugins" klasörünü ve alt klasörler izinleri (CHMOD) kontrol edin.'; +$lang['Please wait...'] = 'Lütfen bekleyiniz...'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader Piwigo Yükleyiciyi temsil eder. Bilgisayarınızdan, pLoader fotoğraflarınızı hazırlar ve Piwigo fotoğraf galerisi aktarabilirsiniz.'; +$lang['Plugin has been successfully copied'] = 'Eklenti başarıyla kopyalandı'; +$lang['Plugin list'] = 'Eklenti listesi'; +$lang['Plugins which need upgrade'] = 'Yükseltilecek eklentiler'; +$lang['Plugins'] = 'Eklentiler'; +$lang['Position'] = 'Pozisyon'; +$lang['Predefined filter'] = 'Önceden tanımlanmış filtre'; +$lang['Preferences'] = 'Tercihler'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'e-Posta gönderecek kullanıcılar listesinin hazırlığı için süre sınırlıdır. Diğer kullanıcılar listelenmez.'; +$lang['Privacy level set to "%s"'] = 'Gizlilik seviyesini "%s" \'ye ayarla'; +$lang['Privacy level'] = 'Gizlilik seviyesi'; +$lang['Private'] = 'Özel'; +$lang['private'] = 'Özel'; +$lang['Properties'] = 'Özellikler'; +$lang['Public / Private'] = 'Herkese açık / Özel'; +$lang['Public'] = 'Herkese açık'; +$lang['public'] = 'Genel'; +$lang['Purge compiled templates'] = 'Derlenmiş şablonları temizle'; +$lang['Purge history detail'] = 'Tarih detaylarını temizle'; +$lang['Purge history summary'] = 'Tarih özetini temizle'; +$lang['Purge never used notification feeds'] = 'Hiç kullanılmamış beslemeleri temizle'; +$lang['Purge search history'] = 'Arama geçmişini temizle'; +$lang['Purge sessions'] = 'Temizleme oturumlari'; +$lang['Quick Local Synchronization'] = 'Hızlı Yerel Eşitleme'; +$lang['Random photo'] = 'Rastgele fotoğraf'; +$lang['randomly represented'] = 'Karisik temsici'; +$lang['ranks'] = 'rütbeler'; +$lang['Rate date'] = 'Oylama tarihi'; +$lang['Rate'] = 'Oyla'; +$lang['Rating by guests'] = 'Misafir oyları'; +$lang['Rating'] = 'Oylama'; +$lang['Read Piwigo Documentation'] = 'Piwigo Belgelerini Oku'; +$lang['reduce to single existing albums'] = 'mevcut albümleri küçült'; +$lang['Refresh photo set'] = 'Fotoğraf setini yenile'; +$lang['Refresh'] = 'Yenile'; +$lang['registration date'] = 'Kayit tarihi'; +$lang['Reinitialize check integrity'] = 'Bütünlük kontrolünü yeniden başlat'; +$lang['Reject'] = 'Reddet'; +$lang['Released on'] = 'Yayınlama'; +$lang['Remote'] = 'Uzak'; +$lang['Remove all filters'] = 'Tüm filtreleri sil'; +$lang['remove author'] = 'yazarı sil'; +$lang['remove creation date'] = 'oluşturulma tarihini sil'; +$lang['Remove from caddie'] = 'Yardımcıdan sil'; +$lang['remove tags'] = 'etiketleri sil'; +$lang['remove this filter'] = 'Bu filtreyi sil'; +$lang['remove title'] = 'başlığı sil'; +$lang['Repair and optimize database'] = 'Veritabanini onar ve en uygun hale getir'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Orjinal şablon temsilcisi özelleştirilmiş şablonlar template-extension yedek dosyasından'; +$lang['Replacers (customized templates)'] = 'Yedekler (Özelleştirilmiş şablonlar)'; +$lang['Representant'] = 'Temsilen'; +$lang['Representation of albums'] = 'Albüm gösterimi'; +$lang['Representative'] = 'Temsilci'; +$lang['Represents'] = 'Temsilciler'; +$lang['Reset ignored updates'] = 'Görmezden gelinen güncellemeleri tekrar ayarla'; +$lang['Resize'] = 'Tekrar boyutlandır'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Varsayılan yapılandırmalarınızı onarın. Eklenti ayarlrınız kaybolacaktır!'; +$lang['Restore'] = 'Onarım'; +$lang['Save order'] = 'Düzeni kaydet'; +$lang['Save Settings'] = 'Ayarları kaydet'; +$lang['Save Template Directory'] = 'Tema dizinini kaydet'; +$lang['Save to permalink history'] = 'Kalıcı Bağlantı geçmisini kaydet'; +$lang['Search for new images in the directories'] = 'Dizinlerde yeni resimler ara'; +$lang['Searching...'] = 'Arıyor...'; +$lang['Section'] = 'Bölüm'; +$lang['See you soon.'] = 'Sonra görüşürüz.'; +$lang['See you soon,'] = 'Yakinda görüsürüz,'; +$lang['Select an album'] = 'Albüm seçiniz'; +$lang['Select at least one album'] = 'en az bir albüm seçiniz'; +$lang['Select at least one comment'] = 'En az bir yorum seç'; +$lang['Select at least one photo'] = 'En az bir resim seçiniz'; +$lang['Select at least one user'] = 'En az bir kullanıcı seçiniz'; +$lang['Select at least two tags for merging'] = 'Birleştirmek için en az iki etiketleri seçin'; +$lang['Select files'] = 'Dosyaları seçin'; +$lang['Select recipients'] = 'Alicilari seç'; +$lang['Select the destination tag'] = 'Hedef etiketi seçin'; +$lang['Select:'] = 'Seç:'; +$lang['Selection'] = 'Seçim'; +$lang['selection'] = 'Seçim'; +$lang['Send an information email to group members'] = 'Grup üyelerine bilgi e-postası gönder'; +$lang['Send mail as'] = 'Posta gönderim sekli'; +$lang['Send mail on HTML format'] = 'Postayi HTML formatinda yolla'; +$lang['Send mail to users'] = 'kullanıcılara posta gönderin'; +$lang['Send'] = 'Gönder'; +$lang['Set as default language for unregistered and new users'] = 'Kayıtsız ve yeni kullanıcılar için varsayılan dil olarak ayarlamak'; +$lang['Set as default theme for unregistered and new users'] = 'Kayıtsız ve yeni kullanıcılar için varsayılan tema olarak ayarla'; +$lang['Set author'] = 'Yazar ayarla'; +$lang['Set creation date'] = 'oluşturma tarihi ayarla'; +$lang['Set title'] = 'Başlığı ayarla'; +$lang['set to'] = 'Ayarla'; +$lang['Settings'] = 'Ayarlar'; +$lang['show details'] = 'ayrıntıları göster'; +$lang['Show info'] = 'Bilgi Göster'; +$lang['Show menubar'] = 'menü çubuğunu göster'; +$lang['Simulation'] = 'Simülasyon'; +$lang['singly represented'] = 'tek basina temsil'; +$lang['Site manager'] = 'Site yöneticisi'; +$lang['Some themes and plugins may be not available yet.'] = 'Bazı tema ve eklentiler henüz hazır olamayabilir.'; +$lang['Some upgrades are available for extensions.'] = 'Eklentiler için bazı güncellemeler mevcut.'; +$lang['Start pLoader and add your photos.'] = 'pLoader başlat ve resimler yükle.'; +$lang['Start Upload'] = 'Yüklemeye başla'; +$lang['Statistics'] = 'Istatistikler'; +$lang['Status of user "%s" updated'] = 'Kullanıcı "%s" durumu güncellendi'; +$lang['Status'] = 'Durum'; +$lang['status'] = 'Durum'; +$lang['Storage album'] = 'Depola albümü'; +$lang['sub-albums'] = 'alt-albümler'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '%s adresi ile Piwigo bülten duyurularına abone ol'; +$lang['Subscribe %s'] = 'Abone %s'; +$lang['Subscribe to notification by mail'] = 'Posta ile abone bildirimi'; +$lang['Subscribe'] = 'Abone'; +$lang['Subscribe/unsubscribe users'] = 'kullanıcılar Abone/Abone degil'; +$lang['Subscribed'] = 'Abone olundu'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Aboneler sadece yeni içerikler'; +$lang['Sum of rates'] = 'Toplam reytingler'; +$lang['Summary'] = 'Özet'; +$lang['Support'] = 'Destek'; +$lang['Switch to clear or dark colors for administration'] = 'Açık veya koyu renk yönetim sayfasına geç'; +$lang['synchronize files metadata with database photos informations'] = 'veri tabanı fotoğrafları ile dosya metadatasını eşleştir'; +$lang['synchronize files structure with database'] = 'dosya yapısını veritabanı ile eşleştir'; +$lang['Synchronize metadata'] = 'Senkronize metadata'; +$lang['Synchronize'] = 'Senkronize'; +$lang['Tag "%s" already exists'] = 'Etiket "%s" zaten var'; +$lang['Tag "%s" was added'] = 'Etiket "%s" eklendi'; +$lang['Tag selection'] = 'Etiket seçme'; +$lang['Tags %s merged into tag %s'] = 'Etiketler %s ile %s etiketleri birleştirildi'; +$lang['target'] = 'hedef'; +$lang['Templates configuration has been recorded.'] = 'Şablonları yapılandırma kaydedildi.'; +$lang['Templates'] = 'Şablonlar'; +$lang['test this remote site'] = 'uzak siteyi dene'; +$lang['test'] = 'deneme'; +$lang['The %d following tags were deleted'] = 'Asagidaki %d etiketler silindi'; +$lang['The anomaly will be ignored until next application version'] = 'Bu anormallik sonraki uygulama sürümüne kadar dikkate alınmayacaktır'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Dosya veya dizin erişemez (ya yok yada erişim reddedildi)'; +$lang['The following tag was deleted'] = 'Aşağıdaki etiketi silindi'; +$lang['the forum'] = 'Forum'; +$lang['The gallery URL is not valid.'] = 'Galeri URL geçerli degil.'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Bir grubun ismi " veya \ içermemelidir yada bos olmamalidir.'; +$lang['The name of an album must not be empty'] = 'Albüm ismi boş olamaz'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Dizin ve dosya ismi sadece harfler, rakamlardan olmalı, "-", "_" veya "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Bir sayfadaki yorumlarin sayisini 5 ile 50 arasinda olmalidir.'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Kalıcı Bağlantı ismi a-z, A-Z, 0-9, "-", "_" yada "/" karekterlerinden olusmalidir. Sayisal olmamali veya sayi ile baslamamalidir'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Yüklenen dosya HTML biçiminde belirtilmiş MAX_FILE_SIZE aşıyor'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Yüklenen dosyanın php.ini upload_max_filesize aşıyor: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Yüklenen dosya sadece kısmen yüklendi'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Yüklenen dosyalar php.ini post_max_size aşıyor: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Bu %s versiyonu yüklenen [%s] versiyonu ile uyumlu değildir.'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Site yöneticisi posta ile haberdar olmaniz için sizi abone etti.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Site yöneticisi posta ile haberdar edilme aboneliginizi kaldirdi.'; +$lang['The whole page'] = 'Bütün sayfa'; +$lang['The whole set'] = 'Bütün set'; +$lang['the wiki'] = 'Wiki'; +$lang['Theme has been successfully installed'] = 'Tema başarıyla yüklendi'; +$lang['Themes which need upgrade'] = 'Güncellenmesi gereken temalar'; +$lang['Themes'] = 'Temalar'; +$lang['There is no available subscribers to mail.'] = 'Hiç posta abonesi yok.'; +$lang['There is no other language available.'] = 'Kullanılabilir başka bir dil yok.'; +$lang['There is no other plugin available.'] = 'Kullanılabilir başka bir eklenti yok.'; +$lang['There is no other theme available.'] = 'Kullanılabilir başka bir teama yok'; +$lang['This is a major update, with new exciting features.'] = 'Bu yeni büyük bir güncelleme yeni heyecan verici özellikler içerir.'; +$lang['This is a minor update, with only bug corrections.'] = 'Bu sadece hata düzeltmeleri ile, küçük bir güncelleştirme.'; +$lang['This name is already used by another group.'] = 'Bu isim baska bir grup tarafindan kullanilmaktadir'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'BU EKLENTİ PIWIGO ÇEKİRDEĞİNDE BULUNMAKTADIR! ŞİMDİ KALDIRIN!'; +$lang['This site already exists'] = 'Bu site zaten var'; +$lang['This theme was not designed to be directly activated'] = 'Bu tema doğrudan harekete geçmek için tasarlanmış değildir'; +$lang['Thumbnail'] = 'Küçük resim'; +$lang['Thumbnails generation in progress...'] = 'Küçük resimler oluşturuluyor...'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Posta gönderme zamani sinirlidir.Diger postalar atlandi.'; +$lang['Time'] = 'Zaman'; +$lang['Title'] = 'Baslik'; +$lang['To send ?'] = 'Göndermek için?'; +$lang['To subscribe'] = 'Abone olmak için'; +$lang['To unsubscribe'] = 'Abonelikten çikarmak için'; +$lang['Toggle \'default group\' property'] = 'Ters \'varsayılan\' özellik'; +$lang['Tools'] = 'Araçlar'; +$lang['total time'] = 'toplam zaman'; +$lang['Two updates are available'] = 'İki güncelleştirme mevcut'; +$lang['Type here the author name'] = 'Yazar adını buraya yazın'; +$lang['Type here the title'] = 'Başlığı buraya yazın'; +$lang['Type in a search term'] = 'Aramak için bir kelime yazınız'; +$lang['Unable to check for upgrade.'] = 'Yükseltme kontrolü yapilamiyor.'; +$lang['Unable to dump database.'] = 'Veritabanı silinemiyor.'; +$lang['Uncheck all'] = 'Tüm işaretleri kaldır'; +$lang['Uninstall'] = 'Kaldir'; +$lang['Uninstalled Plugins'] = 'Kaldırılan eklentiler'; +$lang['unit mode'] = 'tek modlu'; +$lang['Unknown upload error'] = 'Bilinmeyen yükleme hata'; +$lang['unknown'] = 'bilinmeyen'; +$lang['Unlocked'] = 'Kilitsiz'; +$lang['unset'] = 'Kaldırmak'; +$lang['Unsubscribe from notification by mail'] = 'Bildiri aboneliginden çik'; +$lang['Unsubscribed'] = 'Abonelikten çikarildi'; +$lang['Update albums informations'] = 'Albümlerin bilgilerini güncelle'; +$lang['Update All'] = 'Hepsini Güncelle'; +$lang['Update Complete'] = 'Güncelleme Tamamlandı'; +$lang['Update in progress... Please wait.'] = 'Güncelleniyor.. Lütfen bekleyiniz.'; +$lang['Update photos information'] = 'Resimlerin bilgilerini güncelle'; +$lang['update the database from files'] = 'Dosyalar ile veritabani güncelleme'; +$lang['Update to Piwigo %s'] = 'Piwigoyu %s\'e güncelle'; +$lang['Updates'] = 'Güncellemeler'; +$lang['Upload Photos'] = 'Resim Yükle'; +$lang['Upload'] = 'Yükle'; +$lang['Uploaded Photos'] = 'Yüklenen resimler'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'Varsayilan görüntü siralama düzenini kullan'; +$lang['Used metadata'] = 'Metadata kullanıldı'; +$lang['user "%s" added'] = 'Kullanıcı "%s" eklendi'; +$lang['User "%s" created with "%s" like password'] = 'Kullanıcı "%s" şifre "%s" ile yaratıldı'; +$lang['User %s [%s] added.'] = 'kullanıcı %s [%s] eklendi.'; +$lang['User %s [%s] was added to the subscription list.'] = 'kullanıcı %s [%s] abone listesine eklendi.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'kullanıcı %s [%s] abone listesine eklenemedi.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'kullanıcı %s [%s] abone listesinden silinemedi..'; +$lang['User %s [%s] was removed from the subscription list.'] = 'kullanıcı %s [%s] abone listesinden silindi.'; +$lang['User comments validation'] = 'kullanıcı yorumlari dogrulama'; +$lang['User list'] = 'Kullanıcılar listesi'; +$lang['User status'] = 'Kullanıcı durumu'; +$lang['User'] = 'kullanıcı'; +$lang['user_status_admin'] = 'Yönetici'; +$lang['user_status_generic'] = 'Genel'; +$lang['user_status_guest'] = 'Misafir'; +$lang['user_status_normal'] = 'Kullanıcı'; +$lang['user_status_webmaster'] = 'Site Yöneticisi'; +$lang['Users'] = 'Kullanıcılar'; +$lang['Validate'] = 'Onayla'; +$lang['Validation'] = 'Onaylama'; +$lang['Version'] = 'Sürüm'; +$lang['Virtual album added'] = 'sanal albüm eklendi'; +$lang['Virtual album deleted'] = 'sanal albüm silindi'; +$lang['Virtual album name'] = 'Sanal albüm ismi'; +$lang['Virtual album'] = 'Sanal albüm'; +$lang['Virtual albums to move'] = 'Taşınacak sanal albümler'; +$lang['Virtual Links'] = 'Sanal Linkler'; +$lang['Visit Gallery'] = 'Galeriyi ziyaret et'; +$lang['Visit language site'] = 'Dil sitesine git'; +$lang['Visit Piwigo project website'] = 'Piwigo proje sitesini ziyaret et'; +$lang['Visit plugin site'] = 'Eklenti sitesini ziyaret et'; +$lang['Visit theme site'] = 'Tema sitesine git'; +$lang['Waiting'] = 'Bekleyen'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'UYARI! Bu eklenti Piwigo galerinizin bu sürümü ile uyumlu değildir.'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Uyari abone olurken veya çikarken kullanıcılara mail gönderecegiz.'; +$lang['Webmaster cannot be deleted'] = 'Site yöneticisi silinemez'; +$lang['Webmaster status is required.'] = 'Site yöneticisi durum gereklidir.'; +$lang['Week starts on'] = 'Hafta başlangıcı'; +$lang['Who can see these photos?'] = 'Kim bu resimleri görebilir?'; +$lang['Who can see this photo?'] = 'Kim bu resimi görebilir?'; +$lang['width must be a number superior to'] = 'genişlik bundan daha büyük bir sayı olmalı'; +$lang['Width'] = 'Genişlik'; +$lang['With blank value, gallery title will be used'] = 'Bos olursa, galeri baslik kullanilir'; +$lang['With no album'] = 'sıfır albüm ile'; +$lang['With no tag'] = 'sıfır etiket ile'; +$lang['With no virtual album'] = 'sıfır sanal albüm ile'; +$lang['wrong filename'] = 'yanlış dosya ismi'; +$lang['Year'] = 'Yıl'; +$lang['You are running on development sources, no check possible.'] = 'Gelistirme kaynaklarini kullaniyorsunuz incelemek mümkün degil'; +$lang['You are running the latest version of Piwigo.'] = 'Piwigo\'nun son sürümü çalıştırılmaktadır.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Tarayıcı yükleyiciyi kullanıyorsunuz. Flash Yükleyiciyi deneyiniz.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Flash Yükleyiciyi kullanıyorsunuz. Sorun mu var? Tarayıcı Yükleyiciyi deneyiniz.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Piwigoyu direkt olarak %s\'e güncelleyebilirsiniz, Piwigo %s\'e güncellemeden (önerilir).'; +$lang['You cannot delete your account'] = 'Kendi hesabinizi silemezsiniz'; +$lang['You cannot move an album in its own sub album'] = 'Bir albümü kendi alt bölümü içindeki albüme taşıyamazsınız'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Varsayılan resim sırasını tanımlayamazsınız, çünkü yerel yapılandırmada özel bir ayar var'; +$lang['You have %d orphan tags: %s.'] = '%d etkisiz etiketleriniz: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Yerel yapılandırma dosyasında $conf[\'order_by\'] belirttiniz, bu parametre olarak önerilmemektedir, lütfen bu parametreyi siliniz veya $conf[\'order_by_custom\'] olarak yeniden adlandırınız!'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Posta yoluyla bildirimleri almak için abone oldunuz.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Posta yoluyla bildirimleri almak için olan aboneliginizi iptal ettiniz.'; +$lang['You might go to plugin list to install and activate it.'] = 'Yükleme ve aktif etmek için eklentiler listesine gidiniz'; +$lang['You need to confirm deletion'] = 'Silme islemini onaylayiniz'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Sisteminizi yükseltmelisiniz aksi taktirde uygulama yanlış veya hiç çalışmayabilir.'; +$lang['Your configuration settings are saved'] = 'Yapılandırma ayarları kaydedildi'; +$lang['Zoom'] = 'Yakınlaştırma'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'izin verilmiş bir gruba ait oldukları için %u kullanıcı otomatik izine sahip.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Android için Piwigo uygulaması ile Android telefon veya tablet\'inizden Piwigo galerinize bağlanmaya, albümler yaratmanıza ve birden fazla fotoğraf birden aktarmanıza izin verir.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo for iOS uygulaması ile iPhone, iPad veya iPod Touch\'ınızdan Piwigo galerinize bağlanmaya, albümler yaratmanıza ve birden fazla fotoğraf birden aktarmanıza izin verir. '; +$lang['A locked gallery is only visible to administrators'] = 'Kilitli bir galeri sadece yöneticiler tarafından görülebilir'; +$lang['Activate comments'] = 'Yorumları etkinleştir'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom büyük sayıda dijital görüntü yönetmek ve yapım sonrasındaki işleri gerçekleştirmek için tasarlanmış bir yazılımdır.'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture, görüntüleri tasfiye etmeye ve büyük resim kütüphaneleri yönetmek için Mac de kullanılır.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture iPhoto basitliği ile profesyonel fotoğrafcılar için tasarlanmış.'; +$lang['Applications'] = 'Uygulamalar'; +$lang['Apply watermark if height is bigger than'] = 'Filigran uygulama koşulu: Yükseklik bundan daha büyük ise:'; +$lang['Apply watermark if width is bigger than'] = 'Filigran uygulama koşulu: Genişlik bundan daha büyük ise:'; +$lang['Automatic sort order'] = 'Otomatik sıralama'; +$lang['Available on'] = 'Mevcut platform'; +$lang['Available versions for'] = 'Bunun için mevcut sürümler'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Genelde ilgi odak noktası, fotoğrafın ortasında yer almaktadır.'; +$lang['Cancel'] = 'İptal'; +$lang['Center of interest'] = 'İlgi odağı'; +$lang['Default comments order'] = 'Varsayılan yorum sıralaması'; +$lang['Delete multiple size images'] = 'Çoklu boyut görüntüleri sil'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Galeride gezinme, albüm yaratma ve fotoğraf yükleme gibi özellikleri içerir.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Fotoğraf kırpmayla boyutlandırılır seçeneği için, örneğin "Kare", Piwigo ilgi odağını içerebilmek için elinden geleni yapmaya çalışacaktır.'; +$lang['Gallery unlocked'] = 'Galeri kilidi açık'; +$lang['Generate multiple size images'] = 'Çoklu ebat görüntüleri üret'; +$lang['Groups and users'] = 'Gruplar ve Kullanıcılar'; +$lang['List'] = 'Listele'; +$lang['Move to album'] = 'Albüme taşı'; +$lang['No group is permitted to see this private album'] = 'Bu özel albüme görebilmek için hiçbir gruba izin verilmedi'; +$lang['Not cropped correctly?'] = 'Doğru kırpılmadı mı?'; +$lang['Notify administrators when a comment is'] = 'Bu yorum olduğunda yöneticileri bilgilendir:'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Linux sürümünüzde kullanmış olduğunuz paket yöneticisi ile sadece Shotwell\'i kurun ve Piwigo publish eklentisini aktif hale getirin.'; +$lang['Opacity'] = 'Opaklık'; +$lang['Original Size'] = 'Orjinal Boyut'; +$lang['Permission granted for groups'] = 'Gruplara izin verilmiştir'; +$lang['Permission granted for users'] = 'Kullanıcılara izin verilmiştir'; +$lang['Permission management'] = 'İzin yönetimi'; +$lang['Photo sizes with crop'] = 'Kırparak fotoğrafı boyutlandır'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Lightroom için Piwigo Publish eklentisi '; +$lang['Piwigo export plugin for Aperture'] = 'Aperture için Piwigo aktarım eklentisi'; +$lang['Piwigo export plugin for iPhoto'] = 'iPhoto için Piwigo aktarım eklentisi'; +$lang['Piwigo for Android'] = 'Android için Piwigo'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch) için Piwigo'; +$lang['Piwigo publish plugin for Shotwell'] = 'Shotwell için Piwigo publish eklentisi'; +$lang['Piwigo publish plugin for digiKam'] = 'digiKam için Piwigo publish eklentisi'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Android için RemoteGallery istemcisi) Android platformu için yazılmış açık kaynak kodlu (GPL v3) bir Piwigo istemcisidir.'; +$lang['Resize after upload'] = 'Karşıya gönderdikten sonra yeniden boyutlandır'; +$lang['Save manual order'] = 'Manüel sıralamayı kayıt et'; +$lang['Save visits in history for'] = 'Geçmişte şu ziyaretleri kayıt et'; +$lang['Select a file'] = 'Bir dosya seçin'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Yeni bir odak noktası belirlemek için farenizle bir bölge seçiniz.'; +$lang['Select groups...'] = 'Grupları seçin...'; +$lang['Select users...'] = 'Kullanıcıları seçin...'; +$lang['Send connection settings by email'] = 'Bağlantı ayarları eposta ile gönder'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell linux altında çalışan açık kaynaklı bir dijital fotoğraf yönticisidir. Ubuntu ve Fedora için varsayılan fotoğraf yöneticisidir.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo aktarım eklentisi albümler yaratmanıza ve fotoğrafları aktarmanıza olanak tanır.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish eklentisi Lightroom yazılımından görüntülerinizi Piwigo fotoğraf galerisine aktarmak ve senkronize etmeye izin verir. '; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Odak noktası, bir fotoğrafın en çok anlam taşıdığı bölgedir.'; +$lang['The original image quality must be a number between %d and %d'] = 'Orjinal görüntü kalitesi %d ile &d arasında bir sayı olmalı'; +$lang['The original maximum height must be a number between %d and %d'] = 'Orjinal yüksekliği %d ile %d arasında bir sayı olmalı'; +$lang['The original maximum width must be a number between %d and %d'] = 'Orjinal genişliği %d ile %d arasında bir sayı olmalı'; +$lang['There is no group in this gallery.'] = 'Bu galeride herhangi bir grup yer almamaktadır.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Bu albüm %d fotoğraf içeriyor, %s ile %s arasında eklendi.'; +$lang['This album contains %d photos, added on %s.'] = 'Bu albüm %d resim içeriyor, %d de eklendi.'; +$lang['This album contains no photo.'] = 'Bu albüm herhangi bir fotoğraf içermiyor.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'digiKam dan Piwigo\'ya fotoğraflarınızı aktarmak için, sadece digiKam ve Kipi-eklentileri kurunuz.'; +$lang['Unlock gallery'] = 'Galeri kilidini aç'; +$lang['Web Form'] = 'Web Form'; +$lang['X Position'] = 'X Pozisyonu'; +$lang['X Repeat'] = 'X Tekrarlama'; +$lang['Y Position'] = 'Y Pozisyonu'; +$lang['You can activate only one mobile theme.'] = 'Sadece bir mobil thema etkinleştirebilirsiniz.'; +$lang['add a new watermark'] = 'yeni bir filigran ekle'; +$lang['administrators'] = 'yöneticileri'; +$lang['any visitor can see this album'] = 'herhangi bir ziyaretci bu albümü görebilir'; +$lang['apply automatic sort order'] = 'otomatik sıralamayı uygula'; +$lang['bottom left corner'] = 'alt sol köşe'; +$lang['bottom right corner'] = 'alt sağ köşe'; +$lang['cancel manual order'] = 'manuel sıralamayı iptal et'; +$lang['custom'] = 'Özel'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam Linux, Windows ve MacOSX platformlar için geliştirilmiş açık ve gelişmiş bir dijital fotoğraf yönetim yazılımıdır. '; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam, fotoğraflarını görüntülemek, yönetmek, düzenlemek, geliştirmek, orgamize etmek, etiketletirmek ve paylaşmak isteyen fotoğrafcılar için tasarlanmıştır.'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto MacOSX\'in varsayılan fotoğraf yöneticisidir. Piwigo aktarım eklentisi, yeni albümler yaratmanıza ve fotoğraflarınızı direkt iPhoto\'dan Piwigo fotğraf galerisine aktarmanıza olanak tanır.'; +$lang['include photos with lower privacy level'] = 'daha düşük olan bir özel seviyesine ait olan fotoğrafları içerin '; +$lang['middle'] = 'orta'; +$lang['modified'] = 'değiştiğinde'; +$lang['pending validation'] = 'doğrulama beklemede'; +$lang['registered users'] = 'kayıtlı kullanıcılar'; +$lang['simple visitors'] = 'normal ziyaretcileri'; +$lang['top left corner'] = 'üst sol köşe'; +$lang['top right corner'] = 'üst sağ köşe'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'ziyaretçilerin bu albümü görebilmeleri için oturum açmaları ve uygun izinlere sahip olmaları gereklidir'; +$lang['Multiple Size'] = 'Çoklu Boyut'; +$lang['%d days'] = '%d gün'; +$lang['%d day'] = '%d gün'; +$lang['%d hours'] = '%d saat'; +$lang['%d hour'] = '%d saat'; +$lang['%d minutes'] = '%d dakika'; +$lang['%d minute'] = '%d dakika'; +$lang['%d months'] = '%d ay'; +$lang['%d month'] = '%d ay'; +$lang['%d seconds'] = '%d saniye'; +$lang['%d second'] = '%d saniye'; +$lang['%d weeks'] = '%d hafta'; +$lang['%d week'] = '%d hafta'; +$lang['%d years'] = '%d yıl'; +$lang['%d year'] = '%d yıl'; +$lang['%s ago'] = '%s önce'; +$lang['Edit photo'] = 'Fotoğraf düzenle'; +$lang[' and %d virtuals'] = 've %d sanal'; +$lang['%d physicals'] = '%d fiziksel'; +$lang['Added by %s'] = '%s tarafından eklendi'; +$lang['Numeric identifier : %d'] = 'Sayısal tanımlayıcı: %d'; +$lang['Original file : %s'] = 'Orjinal dosya: %s'; +$lang['Rated %d times, score : %.2f'] = '%d kez oylandı, skor: %.2f'; +$lang['Sharpen'] = 'Keskinleştirmek'; +$lang['Visited %d times'] = '%d kez görüntülendi'; +$lang['Watermark'] = 'watermark'; +$lang['%s in the future'] = '%s gelecekte'; +$lang['Posted %s on %s'] = '%s gönderildi %s tarihinde'; +$lang['create a new site'] = 'yeni bir site oluştur'; +$lang['No order field selected'] = 'Sıralandırma alanı seçilmedi'; +$lang['Duplicate selected tags'] = 'Seçili etiketleri kopyala'; +$lang['Name of the duplicate'] = 'Kopya ismi'; +$lang['Source tag'] = 'Kaynak etiket'; +$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" etiketi şimdi "%s" \'nin kopyasıdır'; +$lang['Landscape'] = 'Manzara'; +$lang['Minimum height'] = 'Asgari yükseklik'; +$lang['Minimum width'] = 'Asgari genişlik'; +$lang['Panorama'] = 'Panorama'; +$lang['Portrait'] = 'Portre'; +$lang['Manage photos'] = 'Fotoğrafları yönet'; +$lang['Number of albums per page'] = 'Her sayfadaki albüm sayısı'; +$lang['View in gallery'] = 'Galeride göster'; +$lang['Ratio'] = 'Oran'; +$lang['between %.2f and %.2f'] = '%.2f ve %.2f arasında'; +$lang['between %d and %d pixels'] = '%d ve %d piksel arasında'; +$lang['This group will be set to default'] = 'Bu grup varsayılan olarak seçilecek'; +$lang['This group will be unset to default'] = 'Bu grup varsayılan olmaktan çıkartılacak'; +$lang['Type here the name of the new group'] = 'Buraya yeni grubun ismini yazın'; +$lang['Duplicate'] = 'Kopyasını al'; +$lang['Manage the members'] = 'Üyeleri yönet'; +$lang['Merge selected groups'] = 'Seçilen grupları birleştir'; +$lang['No group selected, no action possible.'] = 'Hiç bir grup seçili değil, herhangi bir eylem yapılamaz'; +$lang['No members to manage'] = 'Yönetecek üye yok'; +$lang['Please select at least two groups'] = 'En azından iki grup seçin'; +$lang['Rename'] = 'Yeniden adlandır'; +$lang['Purge user cache'] = 'Kullaıcı önbelleğini temizle'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = 'Yüklenen %s [%s] sürümü, gereken sürüm [%s] ile uyumlu değildir.'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Resim boyutları %dx%d piksele düşürülecektir.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'GD \'nin grafik kütüphanesi olarak kullanımından dolayı yükleme sonrası yeniden boyutlandırma devredışı'; +$lang['Select at least one tag'] = 'En azından bir etiket seçin'; +$lang['Mail theme'] = 'Posta Teması'; +$lang['General'] = 'Genel'; +$lang['Basic settings'] = 'Temel ayarlar'; +$lang['Registered on %s, %s.'] = '%s \'ye kayıt yapıldı, %s.'; +$lang['Showing %s to %s of %s users'] = '%s \'den %s\'ye olan kullanıcılar görüntüleniyor (toplam %s)'; +$lang['No user selected of %d users'] = '%d kullanıcıdan hiçbiri seçilmedi'; +$lang['User %s added'] = 'Kullanıcı %s eklendi'; +$lang['Update user'] = 'Kullanıcıyı güncelle'; +$lang['Show %s users'] = '%s kullanıcıyı göster'; +$lang['No user selected, no action possible.'] = 'Hiç bir kullanıcı seçilmedi, eylem imkansız.'; +$lang['Last visit on %s, %s.'] = '%s \'ye son ziyaretiniz, %s.'; +$lang['on the %d selected users'] = 'seçilen %d kullanıcıda'; +$lang['Users modified'] = 'Kullanıcılarda değişiklik yapıldı'; +$lang['User %s updated'] = '%s kullanıcı güncellendi'; +$lang['Password updated'] = 'Şifre güncellendi'; +$lang['No matching user found'] = 'Uyan hiç bir kullanıcı bulunamadı'; +$lang['Loading...'] = 'Yükleniyor...'; +$lang['Change password'] = 'Şifre değiştir'; +$lang['Change username'] = 'Kullanıcı adı değiştir'; +$lang['All %d users are selected'] = 'Tüm %d kullanıcı seçildi'; +$lang['(filtered from %s total users)'] = '(toplam %s kullanıcıdan filtrelendi)'; +$lang['%d of %d users selected'] = '%d/%d kullanıcı seçildi'; +$lang['Close user details'] = 'Kullanıcı detaylarını kapat'; +$lang['Open user details'] = 'Kullanıcı detaylarını aç'; +$lang['close'] = 'kapat'; +?> \ No newline at end of file diff --git a/sources/language/tr_TR/common.lang.php b/sources/language/tr_TR/common.lang.php new file mode 100644 index 0000000..e04a8c3 --- /dev/null +++ b/sources/language/tr_TR/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/tr_TR/help/cat_modify.html b/sources/language/tr_TR/help/cat_modify.html new file mode 100755 index 0000000..2fada14 --- /dev/null +++ b/sources/language/tr_TR/help/cat_modify.html @@ -0,0 +1,126 @@ +

          Albüm Editleme

          + +

          Bilgiler

          + +
            + +
          • isim: albüm ismini ayarlar (fiziksel albüm şeklinde sanal isimlendirme).
          • + +
          • açıklama: içerik hakkında genel fikir veren kısa metin, + bu metin sayfanın alt kısmında gözükür.
          • + +
          + +

          Taşıma

          + +

          Albüm sanal albümse taşıyabilirsiniz. Albümü taşımak üst albümün değiştirilmesi anlamına gelir.

          + +

          Seçenekler

          + +
            + +
          • Erişim Türü: Yetki Yönetimi. Bir Albümü özel yaparsanız tüm alt albümleri özel olur. Bir albümü herkese açık yaparsanız tüm üst albümleri aynı yetkiyi alır..
          • + +
          • Kilit: Albüm ve alt albümler bakım için kilitli olacak.
          • + +
          • Yorumlar: Kullanıcıları bu albümdeki fotoğrafları yorumlamak için yetkilendirme
          • + +
          + +

          Ayrıca "Özellikler" yönetim ekranından (screens Yorumlar, Kilit, +Genel/Özel, Temsilci available from Administration » Albums » Properties). bu özellikleri yönetebilirsiniz.

          + +

          Sıralama

          + +

          Varsayılan görüntüleri sıralama düzenini kullanın.

          + +

          Bu sıralama düzeninin alt albümler için geçerli olup olmadığını belirtiniz.

          + +

          Bu albüm ile kullanılmak üzere özel sıralama kriterleri seçiniz.

          +
            +
          • Oluşturulma tarihi: Fotoğrafın çekildiği tarih
          • +
          • Yüklenme tarihi: Senkronizasyon tarihi
          • +
          • Ortalama oran (*): Ziyaretçi reytingine göre değişir
          • +
          • En çok ziyaret edilen (*): En çok ziaret edilenlere göre sıralama yapar
          • +
          • Dosya Adı: Dosya adına göre sıralama
          • +
          • Id: İç Id (Son kategoriler öncekilerden daha yüksek önceliğe sahiptir.
          • + +
          +

          (*)Uyarı: Sıralama düzenini test edip beklenmeyen sonuçlar içermediğinden emin olun

          + + +

          Representant

          + +

          The album representative is the thumbnail displayed on the main page (category.php) to represent +the album when +it contains only sub-albums and no direct photo (just as the root album).

          +photo of a album :

          + +
            + +
          • Photo page: one of the action buttons let you set the current photo as the representative for the + displayed album. This button is available only for administrators.
          • + +
          • Modify informations about a photo in + administration. This screen can be reached from picture.php or Batch + management in unit mode. See the help of this screen for + details.
          • + +
          • Administration » Albums » Properties, + Representative. See the help of this screen for details.
          • + +
          • Albüm Editleme (Editleme Ekranı).
          • + +
          + +

          The choice of a representative depends on the +allow_random_representative configuration parameter (see include/config_default.inc.php).

          + +

          In default mode (allow_random_representative set to false), +each album containing at least one element is represented by a fixed +element. Once set (at album creation), the representative changes only +when an administrator ask for it. If the representative is not appropriate, +you can ask to Find a new representant by random.

          + +

          If the allow_random_representative configuration parameter is +set to true, a category containing photos may have no fixed +representant. Just use Delete representant button.

          + +

          If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to Modify +informations about a photo screen. The only option on the current screen +is the Delete representant button.

          + +

          Yeni albüm için tüm fotoğrafları bağlama

          + +
            + +
          • Sanal albüm adı: Yeni albüm adı oluştutulacak, +mevcut kategorideki tüm fotoğraflar yeni birime bağlı olacak.
          • + +
          • Ana Albüm: Yeni albüm oluturulacak durumlarda, +root dizininde kkök albüm oluşturun.
          • + +
          + +

          Albüm fotoğraflarını mevcut albümlere bağlayın

          + +
            + +
          • Albümler: hedef albüm seçin.
          • + +
          + +

          Grup üyelerine bilgilendirici e-posta gönderimi

          + +
            + +
          • Gtup: alıcı grubu
          • + +
          • Mail içeriği: Kullanıcılara göndermek için metin alanı.
          • + +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/cat_move.html b/sources/language/tr_TR/help/cat_move.html new file mode 100644 index 0000000..5d80eb3 --- /dev/null +++ b/sources/language/tr_TR/help/cat_move.html @@ -0,0 +1,14 @@ +

          Sanal Albümler Taşınıyor

          + +

          Sadece sanal albümler yeni bir ana albüm alabilir.

          + +

          Taşınacak Sanal Albümler

          + +

          Taşımak istediğiniz bir veya daha fazla sanal albümü seçiniz. +Bu liste boş ise, bu demektir ki henüz bir sanal albümünüz yok.

          + +

          Yeni Ana Albüm

          + +

          Sana yada fiziksel yeni bir ana albüm seçiniz. +Eğer ana albüm seçmezseniz, seçilen sana albümler root bölümüne taşınacaktır. +Bir albüm kendi içine ya da kendi alt albümü içine taşınamaz.

          \ No newline at end of file diff --git a/sources/language/tr_TR/help/cat_options.html b/sources/language/tr_TR/help/cat_options.html new file mode 100644 index 0000000..f79590d --- /dev/null +++ b/sources/language/tr_TR/help/cat_options.html @@ -0,0 +1,21 @@ +

          Albüm seçenekleri

          + +

          Aynı anda birkaç albüm için seçenekler yönetimi.

          + +
          + +
          Yorumlar
          +
          Bir resim eğer albüme bağlı ve yorum ayarları etkin ise kullanıcılarınız tarafından yorumlanabilir.
          + +
          Kilit
          +
          Kilitli albümler bakım için devre dışıdır. Yalnızca yöneticiler bu albümleri galeride görüntüleyebilir.
          +
          Özel / Genel
          +
          Bir albüm özel olduğu zaman, kullanıcı ve gruplara gerekli izinleri veriniz
          + +
          Temsilci
          +
          Yapılandırma ayarlarını tamamladığınızda bu seçenek etkinleşecektir +allow_random_representative (bakınız ve include/config_defaults.inc.php) +doğrulayınız. Her albüm rastgele bir resim ya da eşsiz bir temsilci olarak seçilen bir resim ile temsil edilebilir.
          + +
          diff --git a/sources/language/tr_TR/help/cat_perm.html b/sources/language/tr_TR/help/cat_perm.html new file mode 100644 index 0000000..464f5b4 --- /dev/null +++ b/sources/language/tr_TR/help/cat_perm.html @@ -0,0 +1,11 @@ +

          Albüm izinleri düzenle

          + +

          Bu ekran sadece özel albümler içindir. Burada kullanıcılar ve gruplar için albüm izinlerini düzenleyebilirsiniz.

          + +

          Gruplar

          + +

          Bu albüm için gruplara erişim izin verebilir veya reddedebilirsiniz. Grup izinlerini değiştirerek, gruba bağlı olan kullanıcıların albüm erişim izni olup olmamasını düzenleyebilirsiniz.

          + +

          Kullanıcılar

          + +

          Kullanıcılar için kişisel erişim izni verebilir veya reddedebilirsiniz. Bir albüme grup erişim izni olan kullanıcın bu şekilde erişimi iptal edilebilir.

          diff --git a/sources/language/tr_TR/help/configuration.html b/sources/language/tr_TR/help/configuration.html new file mode 100644 index 0000000..445cb49 --- /dev/null +++ b/sources/language/tr_TR/help/configuration.html @@ -0,0 +1,117 @@ +

          Yapılandırma

          + +

          Bu ekranda yönetici temel yapılandırma yapabilir. Nitekim, bu ekran sadece basit yapılandırma parametreleri gösterir, yöneticilerin büyük çoğunluğu için yeterli olacaktır. Eğer diğer sayısız (ve ileri) yapılandırma parametrelerini görmek istiyorsanız include/config_default.inc.php dosyasını okuyunuz.

          + +

          Bu ekran birkaç bölüme ayrılmıştır, temaya göre yapılandırma parametrelerini yeniden gruplama.

          + + +

          Ana

          +
            +
          • Galeri başlığı: E-posta bildirimleri ile RSS beslemelerinde kullanılan.
          • + +
          • Sayfa afişi: her bir genel sayfanın üst kısmında görüntülenen.
          • + +
          • Galeri URLsi: RSS beslemelerinde kullanılan.
          • + +
          • Galeri Kilidi: Bakım için tüm galeriyi kilitle. + Sadece yöneticiler galeriye ulaşabilecektir. +
          • + +
          • Derecelendirme: Resim derecelendirme özelliği açıldı.
          • + +
          • Misafir Derecelendirmeleri: Kayıtlı olmayan kullanıcılar resimleri derecelendirebilir.
          • + +
          • Kullanıcı kaydına izin ver: Herkes kayıt olabilir..
          • + +
          • E-Posta adresi, tüm kullanıcılar için zorunludur: işlemin yönetici tarafından yapılması durumu hariç, kayıt ve profil güncellemede kontrol edilecektir .
          • + +
          • Yeni bir kullanıcı kayıt olduğunda yöneticiye e-posta gönder: yöneticiler her kayıt için bir e-posta ile bildirilir.
          • + +
          + +

          Geçmiş

          + +

          Sayfa ziyaretleri category.php ve picture.php + geçmiş tablosunda kayıt edilecektir.

          + +

          Ziyaretler Yönetim » Araçlar » Geçmiş bölümünde gösterilecektir.

          + +
            +
          • Misafirler tarafından ziyaret edilen sayfaları kaydet: misafirlerin sayfa ziyaretleri kayıt altına alınacaktır.
          • + +
          • Kayıtlı kullanıcılar tarafından ziyaret edilen sayfaları kaydet: Kayıtlı kullanıcıların sayfa ziyaretleri kayıt altına alınacatırk.
          • + +
          • Yöneticiler tarafından ziyaret edilen sayfaları kaydet: Yöneticilerin sayfa ziyaretleri kayıt altına alınacaktır.
          • + +
          + +

          Yorumlar

          +
            + +
          • Herkes yorum yapabilir: Misafirler dahil herkes yorum yapabilir.
          • + +
          • Sayfa başına yorum sayısı.
          • + +
          • Onaylama: yorumlar bir yöneticinin onayından geçmeden sitede görünür hale gelemez. Kullanıcı yorumlarını doğrulama ekranı Yönetim » Araçlar » Bekleyen Yorumlar da yer alır.
          • + +
          • Bir yorum eklendiği zaman yöneticilere e-posta gönder: +Bir kullanıcı yorum yaptığı ve bu yorum onaylandığı zaman yöneticilere e-posta gönder.
          • + +
          • Bir yorum onaylama beklediği zaman yöneticilere e-posta gönder: +Bir kullanıcı yorum gönderdiği ve bu yorum yönetici onayı beklediği zaman yöneticilere e-posta gönder. +Kullanıcı yorum doğrulama ekranı Yönetim, Araçlar, Yorumlar.
          • + +
          + +

          Yükleme

          +
            +
          • Resim yükleme linkini her zaman göster: Yüklenebilir albüm varsa, bir yükleme linki her albümde görünecek.
          • +
          • Yükleme için kullanıcı erişim seviyesi: Kullanıcıların bazı albümlere yüklemesini kısıtla
          • +
          • Bir resim yüklendiği zaman yöneticilere e-posta gönder: Yöneticiler her yeni bir resim yüklendiğinde bir e-posta ile haberdar edilecektir.
          • +
          + +

          Varsayılan Görüntüleme

          + +

          Burada misafirler için galerinizin nasıl görüntülenmesi gerektiği ayarlarını yapabilirsiniz. Kullanıcı giriş yaptığı zaman kendi özel görüntüleme ayarları geçerli olacaktır. +(Düzenleme için profil) ayarlarına giriniz.

          + +

          Kayıtlı kullanıcıların görüntüleme ayarlarını değiştirmek için Yönetim » +Kullanıcılar » Yönet penceresine gidiniz ve görüntüleme ayarlarını değiştirmek istediğiniz kullanıcıları seçerek yeni ayarları yapınız.

          + +
            + +
          • Dil: Sadece Piwigo etiketleri için geçerlidir. + Albüm ve resim isimleri ile açıklamaları kapsamaz. +
          • + +
          • Satır başına fotoğraf sayısı
          • + +
          • Sayfa başına satır sayısı
          • + +
          • Tema arayüzü
          • + +
          • Son dönem: Gün olarak. Dönem sırasında eklenen resimler yeni olarak gösterilir. + 1 günden fazla olmalıdır. +
          • + +
          • Bütün albümleri genişlet: Varsayılan olarak bütün albümleri menüde genişlet Uyarı: bu seçenek kaynakları tükertir (sayfa yavaşlar) + ve eğer çok fazla albümünüz varsa büyük bir menü oluşturur.
          • + +
          • Yorum sayısını göster: küçük resimler sayfadasındaki her resim için yorum sayısını göster. Kaynakları tükertir (sayfa yavaşlar).
          • + +
          • Ziyaret sayısını göster: ziyaret sayılarını küçük resimlerin altında göster. + Yalnızca gelişmiş yapılandırma parametresi:
            + $conf['show_nb_hits'] = true;
            + Not: false varsayılandır.
          • + +
          • resimlerin azami genişliği: azami görüntülenen genişlik. + Bu ayardan daha büyük olan resimler yeniden boyutlandırılacaktır. + Bu ayarı kullanmaktan ziyade, resimlerinizin genişliğini değiştirmek daha iyi bir uygulama olacaktır.
          • + +
          • resimlerin azami yüksekliği: genişlik için olan sözler bu özellik içinde geçerlidir.
          • + +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/extend_for_templates.html b/sources/language/tr_TR/help/extend_for_templates.html new file mode 100755 index 0000000..fee3a56 --- /dev/null +++ b/sources/language/tr_TR/help/extend_for_templates.html @@ -0,0 +1,55 @@ +

          Şablon Uzantı Yapılandırması

          + +

          Hakkında

          +

          Piwigo galeriniz var olan şablon dosyalarının kişisel uyarlamalarla değiştirilmesi ile özelleştirilebilir. Örneğin, varsayılan başlık şablonu (header.tpl) özelleştirilmiş bir başlık şablonu (my-header.tpl) ile değiştirilebilir. Değişiklik veri tabanına gönderildiğinde galeriniz varsayılan yerine yenilediğiniz şablonu görüntüleyecektir.
          +Şablon uzantıları yeni veya uzman her iki kullanıcı grubu için de tema oluşturmak için güçlü bir yol sağlar. LocalFiles düzenleyicisi ile çalışarak kendinize ait alt temalar yaratabilirsiniz.

          + +

          Esas (Orjinal) Şablon

          +

          Bir tema, galeri sayfalarınızı oluşturan bir kaç adet şablon dosyasından oluşur. Bunlar esas (orjinal) şablonlardır.

          + +

          İsteğe bağlı URL anahtar kelimeleri

          +

          Bunlar modül adından sonra gelen galeri URL'sinde bulunan kelimelerdir. Bunlar aynı zamanda kalıcı bağlantı olabilirler (Detaylı bilgi için kalıcı bağlantı dokümanını inceleyebilirsiniz). UYARI: Eğer aynı esas şablon ve aynı anahtar kelime bir veya bir kaç kişisel şablonda kullanılırsa, sadece en sonuncusu etkinleştirilir.

          + +

          Bağlı Tema

          +

          Şablon dosyalarının yenileriyle değiştirileceği temaya Bağlı Tema denir.

          + +

          Esas (Orjinal) şablonlar nerdedir?

          +

          Orijinal şablonlar, her tema ile birlikte gelen şablon dosyalarıdır. Bunlar /themes/default/template (yada themes//template) alanında bulunurlar. Bu şablon dosyaları yerinde düzenleme yapılmamalıdır, tema güncellemesi sırasında değişiklikler kaybedilir.
          +Desteklenen esas (orjinal) şablonlar arasında bunlar vardır:

          +
            +
          • index.tpl
          • +
          • mainpage_categories.tpl and/or thumbnails.tpl
          • +
          • menubar.tpl
          • +
          • header.tpl and/or footer.tpl
          • +
          • picture_content.tpl and/or picture.tpl
          • + +
          • profile.tpl and/or profile_content.tpl
          • +
          • tags.tpl
          • +
          • upload.tpl
          • +
          • about.tpl
          • +
          • popuphelp.tpl
          • +
          • search.tpl and/or search_rules.tpl
          • +
          • nbm.tpl and/or notification.tpl
          • +
          • identification.tpl and/or register.tpl
          • +
          • redirect.tpl
          • +
          + +

          Özelleştirilmiş şablonların kaydedilmesi

          +

          Özelleştirilmiş şablonlar template-extension dizini veya alt dizinlerine kaydedilmelidir. Örneğin, /template-extension/my-default/header.tpl (yada /template-extension//header.tpl). Şablon dosyaları uzantısı .tpl olacak şekilde her adı alabilirler. Alt dizinlerdeki şablon dosyaları Şablon yapılandırma ekranında kullanılabilir özelleştirilmiş şablonlar olarak gözükürler.

          + +

          Özelleştirilmiş şablonların etkinleştirilmesi

          +

          Değiştirmek için esas (orjinal) şablonu seçin. İsteğe bağlı olarak özelleştirilmiş şablonun sadece o anahtar kelime ile sayfalarda gösterildiğinden emin olmak için bir URL anahtar kelimesi seçin. Bağlantılı temayı seçin ve değişiklikler o temada etkinleşecektir. +Değişiklikleri veri tabanına gönderin..

          + +

          Özelleştirilmiş şablonları devredışı bırakmak

          +

          Esas (orjinal) şablondaki seçimi kaldırın ve değişikliği veritabanına gönderin.
          +template-extension dizinindeki özelleştirilmiş şablon dosyalarını silin.

          + + +

          Uyarılar

          +
            +
          • Esas (orjinal) şablon mutlaka esas şablon olmalıdır aksi durumda öngörülemez sonuçlar alınabilir.
          • +
          • Eğer aynı esas şablon ve aynı URL anahtar kelimesi birden fazla özelleştirilmiş şablonda kullanılıyorsa sadece en sonuncu etkinleşir.
          • +
          • Dağıtımı yapılan örnek şablon dosyaları sadece test amaçlıdır. Bunları düzenlemeyin. Kendiniz bir tane yaratın veya /template-extension// dizininde yer alan şablon dosyalarını kopyalayın.
          • +
          • Özelleştirilmiş şablon silindiğinde esas (orjinal) şablon derhal etkinleşir.
          • +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/group_list.html b/sources/language/tr_TR/help/group_list.html new file mode 100644 index 0000000..fc5fb46 --- /dev/null +++ b/sources/language/tr_TR/help/group_list.html @@ -0,0 +1,22 @@ +

          Gruplar listesi

          + +

          Burası Grupları yöneteceğiniz bölümdür.

          + +

          Grup Ekle

          + +

          Yöneticiler grup ekleyebilir.

          + +

          Gruplar listesi

          + +

          Her bir seçenek için, şunlar sağlanır:

          + + +
            +
          • Üye listesini görebilme
          • +
          • İzinler yönetim bölümünü görebilme
          • +
          • Grup silebilme (oner gerektirir)
          • +
          • Geçiş durumu "varsayılan" (bir onay gerektirir)
          • +
          + +

          Varsayılan gruplar

          +

          Varsayılan gruplar yenibir kullanıcı kayıt olduğuna veya yönetici oluşturduğunda otomatik olarak alınan gruplardır.

          \ No newline at end of file diff --git a/sources/language/tr_TR/help/help_add_photos.html b/sources/language/tr_TR/help/help_add_photos.html new file mode 100644 index 0000000..98e31fe --- /dev/null +++ b/sources/language/tr_TR/help/help_add_photos.html @@ -0,0 +1,26 @@ +

          Galerinize resim eklemek için farklı yollar:

          + +
            +
          • Doğrudan yükleme Web tarayıcısı içinde + ve en hızlı basit yolu. Tarayıcınızın ve web sunucunuzun yeteneklerine bağlıdır. + büyük miktarda ki resim yüklemelerinde veya bazı sorunlarla karşılaştığınızda, + diğer yöntemler sizi bekliyor!
          • +
          + + + +
            +
          • pLoader bir masaüstü uygulamasıdır, bilgisayarınızda yüklü olması gerekmektedir. pLoader penceresine resimlerinizi sürükle & bırak yöntemi ile alınız , "Upload to Piwigo" tıklayınız ve pLoader'in bütün işlemi yapmasına izin verin. Başka bir masaüstü uygulaması ise WinToPiwigo veya Digikam ile Piwigo galerinize resimlerinizi yükleyebilirsiniz.
          • +
          + + + +
          +
            +
          • FTP transferi tavsiye edilen yol olmakla birlikte, çok az sayıda tıklama ile bir çok resim eklemeniz mümkündür. Fotoğraflarınızı hazırlamak için kılavuza uyun. + FTP yöntemi kesin olarak sunucu üzerinde fotoğraflarınızın fiziksel organizasyonu kontrolü sağlar. +
          • +
          + + +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/help_groups.html b/sources/language/tr_TR/help/help_groups.html new file mode 100644 index 0000000..f5444aa --- /dev/null +++ b/sources/language/tr_TR/help/help_groups.html @@ -0,0 +1,10 @@ +

          Gruplar bir liste kullanıcının izinlerini ayarlamak için uygun bir yoldur.

          + +

          Grup oluşturmak için Yönetim » Kullanıcılar +» Gruplar bölümüne ve kullanıcıyı gruba eklemek için +in Yönetim » Kullanıcılar » +Yönetbölümlerine göz atınız.

          + +

          Bir kullanıcı birden fazla gruba üye olabilir. Yetkiler önceliklidir : eğer "Erkan" grup "aile" ve "arkadaşlar" üyesi ise, ve +sadece "aile" grubu albüm "Yılbaşı 2011" görebilirse +"Erkan" da albüm "Yılbaşı 2011" görebilecektir.

          diff --git a/sources/language/tr_TR/help/help_misc.html b/sources/language/tr_TR/help/help_misc.html new file mode 100644 index 0000000..9a1ad4a --- /dev/null +++ b/sources/language/tr_TR/help/help_misc.html @@ -0,0 +1,9 @@ +

          Galerinizi oluşturdukdan sonra ziyaretçileriniz için ayarlamalar yapabilirsiniz +

            +
          • Varsayılan görünüm ayarları Yönetim » Yapılandırma » Seçenekler bölümündeki Misafir Ayarları sekmesindedir
          • +
          • Varsayılan tema ayarları Yönetim » Yapılandırma » Temalar
          • +
          • Varsayılan dil ayarları Yönetim » Yapılandırma » Diller
          • +
          + Varsayılan olarak her yeni kayıtlı kullanıcı bu özellikleri alır. +

          +

          Eğer bir sorunuz varsa, Piwigo topluluğu sizi forumlarında ağırlamaktan memnuniyet duyar.

          \ No newline at end of file diff --git a/sources/language/tr_TR/help/help_permissions.html b/sources/language/tr_TR/help/help_permissions.html new file mode 100644 index 0000000..85e3994 --- /dev/null +++ b/sources/language/tr_TR/help/help_permissions.html @@ -0,0 +1,54 @@ +
          +Resim izinleri + +

          Her resim bir gizlilik derecesine sahiptir. Her bir kullanıcı da gizlilik derecesine sahiptir. Tam olarak 5 gizlilik derecesi bulunmaktadır:

          +
            +
          1. Hiç kimse
          2. +
          3. Kişiler
          4. +
          5. Arkadaşlar (kişilerden bir üst derecedir )
          6. +
          7. Aile (arkadaşlardan bir üst derecedir)
          8. +
          9. Yöneteciler (diğer derecelerden üst derecedir)
          10. +
          + +

          Üst derecelerin alt derecelerde izinleri vardır. Bir kullanıcıya üst derece verilirse daha fazla resim görebilir.

          + +

          Örneğin, eğer resim "peter_wedding-0024.jpg""Aile" gizlilik derecesine sahip ise:

          +
            +
          • Peter (kim ki bir "Yönetici") bu resmi görecektir çünkü "Yöneticiler" bütün resimleri görebilir
          • +
          • Beth (kim ki bir "Aile" member) bu resmi görecektir
          • +
          • Mary (kim ki bir "Arkadaşlar") bu resmi göremeyecektir
          • +
          + +

          Bir albümün içeriğini görme izni olmayan kullanıcı bu albümü, başlığını ve etiketlerini de göremez.

          + +

          Kullanıcı izinlerini Yönetim » Kullanıcılar » Yönet screen.

          + +
          + +
          +Albüm izinleri + +

          Gizlilik seviyesi ihtiyaçlarınızı karşılamıyor ise, ayrıca bir kullanıcı veya grup için albüm izinleri ayarlayabilirsiniz. Resim ve albümler üzerinde çatışma olmadan izinler ayarlanabilir.

          + +

          Albümlere erişim yasaklanabilir. Albüm erişim iznine "özel" yaparak izinleri yönetebilirsiniz.

          + +

          Bir albümü düzenleyerek "özel" yapabilirsiniz +(Yönetim » Albümler » Yönet +» düzen) veya bütün albümlerin özelliklerini +(Yönetim » Albümler » +Özellikler » Genel / Özel) den ayarlayabilirsiniz.

          + +

          Bir albüm özel olduğu zaman gruplar ve kullanıcılar için izin ayarlarını 3 şekilde değiştirebilirsiniz:

          + +
            + +
          • Yönetim » Kullanıcılar » Yönet » + aksiyonlar, izinler (one link per user)
          • + +
          • Yönetim » Kullanıcılar » Gruplar » + aksiyonlar, izinler (one link per group)
          • + +
          • Yönetim » Albümler » Yönet » albüm izinlerini düzenleme (her albüm için bir bağlantı)
          • + +
          +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/help_virtual_links.html b/sources/language/tr_TR/help/help_virtual_links.html new file mode 100755 index 0000000..18ff2bd --- /dev/null +++ b/sources/language/tr_TR/help/help_virtual_links.html @@ -0,0 +1,9 @@ +

          Resimler kendi dosyasına karşılık gelen albümde görüntülenir.

          + +

          Web sunucusu üzerinde resimleri bir kaç albümde birden göstertebilir, bunun +için resimleri ikinci kez yüklemenize gerek kalmaz. herhangi bir albümle ilişkilendirilen fotoğrafa +Fotoğraf Editleme Ekranından ulaşabilirsiniz. (Yöneticiler fotoğraf görüntüleme sayfasından fotoğraf editleme sayfasına ulaşabilir).

          + +

          Sanal albümler bu kavram üzerine kuruludur buna karşılık gelen bir dosya yoktur. Sanal albüm oluşturmak için + Administration » Albums » +Manage.

          \ No newline at end of file diff --git a/sources/language/tr_TR/help/history.html b/sources/language/tr_TR/help/history.html new file mode 100755 index 0000000..92438e8 --- /dev/null +++ b/sources/language/tr_TR/help/history.html @@ -0,0 +1,22 @@ +

          Geçmiş

          + +

          Geçmiş galeri ve resimleri görebilmek için sırası ile: Yönetim » Konfigürasyon » Seçenekler » Geçmiş

          + +

          İstatistikler

          +
            +

            Ziyaret ettiğiniz sayfaları kaydetmek isterseniz (index.php and picture.php),bu sekmeden izleyebilirsiniz..

            +
          • Genel İstatistikler: Yıllık ziyaret.
          • +
          • Yıllık İstatistikler: Seçilen yıldaki aylık ziyaret .
          • +
          • Aylık İstatistikler: Seçilen aydaki günlük ziyaret .
          • +
          • Günlük İstatistikler: Seçilen gündeki saatlik ziyaret.
          • +
          + +

          Arama

          +
            +

            Geçmiş sayfaları kaydet i seçtiyseniz(index.php and picture.php), bu sekmelerden farklı filtreler yardımıyla arama yapabilirsiniz. .

            +
          • Güne göre Filtrele: başlangıç ve bitiş tarihlerini belirleyerek aramak için tarih aralığı seçin
          • +
          • Eleman türüne göre Filtrele: Eleman türünü seçerek istatistileri arayın.
          • +
          • Kullanıcıya göre Filtrele: kullanıcı istatistiklerine göre arama yapmak için kullanıcıyı seçin.
          • +
          • Resim açıklamasına göre Filtrele: Dosya açıklamasını seçerek istetistikleri arayın.
          • +
          • Dosya adına göre Filtrele: Dosya adını seçerek istatistikleri arayın..
          • +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/maintenance.html b/sources/language/tr_TR/help/maintenance.html new file mode 100755 index 0000000..5b9675a --- /dev/null +++ b/sources/language/tr_TR/help/maintenance.html @@ -0,0 +1,25 @@ +

          Bakım

          + +

          Sayfa oluşturma hızını optimize etmek için Piwigo önbellekte sakladığı bilgileri kullanır. Mesela, her albümdeki fotoğrafları her sayfa yüklenişinde saymak yerine bu bilgi veri tabanında saklanır. Teoride bu bilgi her zaman doğru olmaktadır ancak bazen bir hata oluşarak bilginin geçersiz olmasına yol açabilir.

          + +

          Bazı bilgiler gün geçtikçe kullanışsız/gereksiz hale gelebilir. Bu verilerin veri tabanından silinmesi size disk alanı kazandıracaktır.

          + +
            +
          • Sahipsiz etiketlerin silinmesi
          • +
          +
            +
          • Albüm bilgilerini güncelleme: Her albüm için takip eden bilgiler kontrol edilir ve gerekirse güncellenir: ana albüm listesi, fotoğraf sayısı, son fotoğraf tarihi, kardeş albümler arasındaki konumu, tüm albümler arasındaki konumu. Bu eylem aynı zamanda temsil fotoğraflarının tutarlılığını da kontrol eder.
          • +
          • Fotoğraf bilgilerinin güncellenmesi: Her fotoğraf için takip eden bilgiler güncellenir: tam dosya konumu, ortalama derecelendirmes. Uyarı, karıştırmayın: metadata bilgisi mutlaka Yönetimsel » Araçlar » Eşleştirme 'dan yada tek bir fotoğrafın değişiklik sayfasından eşleştirilmelidir (örneğin buradan Fotoğraf
          • +
          +
            +
          • Veri tabanının onarımı ve optimizasyonu:Veri tabanındaki her tablo için yeniden sıralandırma, onarım ve optimizasyon operasyonlarını yapın.
          • +
          • Bütünlük kontrolünü yeniden başlatın
          • +
          +
            +
          • Geçmiş detayların silinmesi: Geçmiş tablosundaki tüm satırları silin. Yönetimsel » Araçlar » Geçmiş ekranı artık geçmişi görüntülemeyecektir. Uyarı: Geri almanın bir yolu olmadan tüm veriler kaybedilecektir.
          • +
          • Geçmiş özetinin silinmesi: Ziyaret geçmişine ait tüm özeti silin. Bu özet geçmiş detayından alınmaktadır.
          • +
          • Oturumların silinmesi: Zamanı geçen oturum bilgilerini silin.
          • +
          • Hiç kullanılmayan bilgilendirme beslemelerini silin.
          • +
          • Aramalar geçmişini silin.
          • +
          • Derlenen şablonları silin.
          • +
          diff --git a/sources/language/tr_TR/help/notification_by_mail.html b/sources/language/tr_TR/help/notification_by_mail.html new file mode 100644 index 0000000..f0fd3e2 --- /dev/null +++ b/sources/language/tr_TR/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

          Posta ile Duyuru

          + +

          Bu ekran sitenizdeki değişiklikleri kullanıcılara e-posta ile duyuru yapmak için gerekli yapılandırmaları ve düzenlemeleri sağlar.

          + +

          Bu ekran 3 sekmeden oluşur:

          + +

          Ayarlar

          +

          Bu sekmeyi Site Yöneticisi görebilir ve duyuru için gerekli ayarları yapmanızı sağlar.

          + +

          Abonelik

          +

          Bu sekmeyi Site Yöneticisi görebilir ve abonelik için gerekli ayarları yapmanızı sağlar.

          + +

          Gönder

          +

          Bu sekmeyi Site Yöneticisi görebilir ve duyuru göndermenizi sağlar..

          + diff --git a/sources/language/tr_TR/help/permalinks.html b/sources/language/tr_TR/help/permalinks.html new file mode 100755 index 0000000..3aa8932 --- /dev/null +++ b/sources/language/tr_TR/help/permalinks.html @@ -0,0 +1,7 @@ +

          Kalıcı Bağlantılar

          + +

          Kalıcı bağlantılar, albüm URL adreslerini daha güzel hale getirmek için kullanılırlar. Bir albüm kalıcı bağlantı tanımına sahipse, URL adresinde albüm kimliğinin kullanımına gerek yoktur.

          + +

          Kalıcı bağlantı silindiğinde, kalıcı bağlantıyı geçmiş kayıtlarına (history) kaydedebilirsiniz, böylece Piwigo galerisine ait dış bağlantılar çalışmaya devam edecektir. Kalıcı bağlantı geçmişi tablosunda kalıcı bağlantıların ne zaman silindiğini, en son ne zaman kullanıldığını ve kaç defa kullanıldığını görebilirsiniz.

          + +

          Kalıcı bağlantıların her albüme özgü olması gerektiğini unutmayın. Aynı şekilde geçmiş kayıtlarında da aynı bağlantının birden fazlasını da bulunduramazsınız.

          \ No newline at end of file diff --git a/sources/language/tr_TR/help/photos_add_ftp.html b/sources/language/tr_TR/help/photos_add_ftp.html new file mode 100755 index 0000000..fdb96cd --- /dev/null +++ b/sources/language/tr_TR/help/photos_add_ftp.html @@ -0,0 +1,68 @@ +
          + Hızlı Başlangıç + +
            +
          1. Bilgisayarınızda bir klasör oluşturun.
          2. + +
          3. Webde görüntülemek için yeniden boyutlandırdığınız fotoğraflarınızı oluşturduğunuz klasörün içine kopyalayın . Önemli Uyarı : Oluşturmuş olduğunuz klasör ve dosya isimleri sadece harf ve rakamlardan oluşmalı, "-", "_" or ".". Boşluk karakteri olmamalı, ve diğer karakterleri içermemelidir.
          4. + +
          5. FTP Client ile masaüstünde oluşturduğunuz klasörü Piwigo Yüklediğiniz dizindeki 'galleries' klasörüne kopyalayın.
          6. + +
          7. Galeri sitenizin Admin paneline giriş yaptıktan sonra Yönetim Ana Sayfasına girerek Senkronizasyon butonuna basın.
          8. +
          + +

          Tebrikler!İlk albümünüzü başarı ile oluşturdunuz..

          +
          + +
          + Dizin ve dosya organizasyonu + +
            + +
          • + +

            "galleries" klasörünün altındaki albüm dizinleri Piwigo nun bir çok özelliğini kullanmış olarak aşağıdaki gibi sıralanmıştır.

            + +
            +galleries
            +|-- wedding
            +|   |-- celebration
            +|   |   |-- arrival
            +|   |   |   |-- paul-alone.jpg
            +|   |   |   +-- sarah-alone.jpg
            +|   |   +-- departure
            +|   |       +-- paul-and-sarah.jpg
            +|   +-- party
            +|       |-- dancers001.jpg
            +|       |-- dancers002.jpg
            +|       +-- dancers003.jpg
            ++-- honeymoon
            +    |-- hotel.png
            +    |-- video-from-plane.avi
            +    +-- pwg_representative
            +        +-- video-from-plane.jpg
            +
            + +
          • + +
          • Except for "pwg_representative" (see explanations below), each directory under "galleries" produces a album. There is no limit on deepness.
          • + +
          • Basically, an element is represented by a file. A file can be a + Piwigo element if its extension is among file_ext + configuration parameter possibilities (see include/config_default.inc.php file). A file can + be a picture if its extension is among picture_ext + configuration parameter possibilities.
          • + +
          • No photo elements (video, sounds, file texts, whatever you want...) are represented by default by an icon corresponding to the filename + extension. Optionally, you can associate a thumbnail and a representative + file (see video.avi in the example above).
          • + +
          • Warning: the name of directories and files must contain only letters, figures, "-", "_" or ".". No blank space, nor accentuated characters.
          • + +
          • Once photos are correctly placed in the + directories, go to: Administration » Tools » + Synchronize
          • + +
          +
          \ No newline at end of file diff --git a/sources/language/tr_TR/help/search.html b/sources/language/tr_TR/help/search.html new file mode 100644 index 0000000..f5a21a3 --- /dev/null +++ b/sources/language/tr_TR/help/search.html @@ -0,0 +1,19 @@ +

          Arama

          + +

          Bu sayfa bütün galerideki resimlerde arama yapmanızı sağlar.

          + +
          + +
          Kelime arama
          +
          Galerideki resim özelliklerine göre bir veya bir kaç kelime arama yapabilirsiniz. Kısmen uyuşanlar için joker * işaretini kullanın.
          + +
          Yazar arama
          +
          Kısmen uyuşanlar için joker * işaretini kullanın.
          + +
          Tarih arama
          +
          Bir başlangıç ve bitiş tarihi seçerek aramadır. Başlangıcı boş bırakarak da arayabilirsiniz. Bitiş tarihi aşağıdaki biçimde olmalıdır: AAAA (örneğin: 2004)
          + +
          Albüm içinde arama
          +
          Bir veya bir kaç albüm seçerek arama. Alt albümler de aramak için ana albümü seçtikten sonra alt albümlerde arama seçeneği etkin olmalıdır.
          + +
          diff --git a/sources/language/tr_TR/help/synchronize.html b/sources/language/tr_TR/help/synchronize.html new file mode 100755 index 0000000..1ea58d2 --- /dev/null +++ b/sources/language/tr_TR/help/synchronize.html @@ -0,0 +1,13 @@ +

          Senkronize

          + +

          İki tip senkronizasyon vardır:

          +
            +
          • dizinler/dosyalar
          • +
          • dosya metadata
          • +
          + +

          Dizinlerin ve dosyaların senkronizasyonu, veritabanındaki dizin ağacı ile albüm ağacının güncellenmesi anlamındadır. +Dosya metada senkronizasyonu, veritabanındaki fotoğraf bilgisin, örneğin dosya büyüklüğü, piksel olarak boyutları, EXIF yada IPTC bilgisinin senkronizasyonu anlamına gelir.

          + +

          Yüklemelerinizin ve galerilerin senkronizasyonu sırasında ilk olarak mutlaka dizinleri ve dosyaları senkronize etmelisiniz.

          +

          Senkronizasyon işlemi uzun zaman alabilir (sunucu yüküne ve yönetilecek işlere bağlıdır) bundan dolayı albümden albüme yapılması mümkündür.

          \ No newline at end of file diff --git a/sources/language/tr_TR/help/user_list.html b/sources/language/tr_TR/help/user_list.html new file mode 100644 index 0000000..845e50a --- /dev/null +++ b/sources/language/tr_TR/help/user_list.html @@ -0,0 +1,25 @@ +

          Kullanıcı listesi

          + +

          Bu bölüm kayıtlı kullanıcıların özelliklerini düzenlemek için olmakla beraberfarklı bölümlere ait özellikler hariçtir.

          + +

          Kullanıcı ekle

          + +

          Yönetici kullanıcı ekleyebilir

          + +

          Kullanıcı listesi

          + +

          Listede isimler filtre edilebilir ( * jokeri kullanılabilir), grup yada kullanıcı durumu. Bu liste artan, azalan, kayıt tarihi ve kullanıcı adı sıralamasına göre düzenlenmiş olabilir.

          + +

          Bu ekran farklı eylemler kullanılarak aynıanda bir çok kullanıcı yönetimi sağlar:

          + +
            + +
          • kullanıcıları silmek (onay gerektirir)
          • +
          • durumu değiştirmek
          • +
          • gruplara eklemek veya kaldırmak
          • +
          • görüntü özelliklerini değiştirmek
          • +
          • ek özelliklerini değiştirmek
          • + +
          + +

          Varsayılan olarak seçilen kullanıcılar hedeftir veya listede görünün tüm kullanıcılar.

          diff --git a/sources/language/tr_TR/install.lang.php b/sources/language/tr_TR/install.lang.php new file mode 100644 index 0000000..8589d91 --- /dev/null +++ b/sources/language/tr_TR/install.lang.php @@ -0,0 +1,69 @@ +Piwigo message board.'] = 'Yardım ihtiyacınız var? Sorularınızı Piwigo forumda sorabilirsiniz.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Ziyaretçilerin site yöneticisi ile bağlantıya geçmesi için bu e-posta adresini kullanabileceklerdir.'; +$lang['PHP 5 is required'] = 'PHP 5 gereklidir'; +$lang['It appears your webhost is currently running PHP %s.'] = 'Web sunucunuz şu anda PHP %s çalıştırıyor görünüyor.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo .htaccess dosyası oluşturarak veya değiştirerek ayarlarınızı PHP 5 \'e geçirmeyi deneyebilir.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Not: Yapılandırmayı kendiniz değiştirip sonrasında Piwigo\'yu tekrar başlatabilirsiniz.'; +$lang['Try to configure PHP 5'] = 'PHP 5 yapılandırmasını dene'; +$lang['Sorry!'] = 'Üzgünüm!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo, PHP 5 yapılandırmasını başaramadı.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Barındırma sağlayıcınızın desteğini alarak, kendinizin PHP 5\'e nasıl geçebileceğinizi öğrenin.'; +$lang['Hope to see you back soon.'] = 'Yakında tekrar görüşmek dileğiyle.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Tebrikler, Piwigo kurulumu tamamlandı.'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Diğer çözüm aşağıdaki kutudaki yazıyı kopyalayın ve "local/config/database.inc.php" dosyası içine pasteleyin.(Uyarı : database.inc.php sadece yazı içermeli hiçbir ifade veya boşluk karakteri içermemelidir)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'ocal/config/database.inc.php konfigürasyon dosyasının oluşturulması başarısız oldu.'; +$lang['Download the config file'] = 'Yapılandırma dosyasını indir'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Yapılandırma dosyasını indirip kurulum dizininde local/config bölümüne yükleyebilirsiniz.'; +$lang['Just another Piwigo gallery'] = 'Bir başka Piwigo galerisi'; +$lang['Welcome to my photo gallery'] = 'Fotoğraf galerime hoş geldiniz'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Herhangi bir sebeple yardım gerektiğinde, forumlarımıza danışmakta tereddüt etmeyin: %s'; +$lang['Welcome to your new installation of Piwigo!'] = 'Piwigo\'nunuzun yeni kurulumuna hoşgeldiniz!'; +$lang['Password ']['confirm'] = 'Şifre [doğrula]'; +$lang['localhost or other, supplied by your host provider'] = 'localhost veya diğer, bulundurma hizmeti sağlayıcınız tarafından verilen'; +?> \ No newline at end of file diff --git a/sources/language/tr_TR/iso.txt b/sources/language/tr_TR/iso.txt new file mode 100644 index 0000000..64323ba --- /dev/null +++ b/sources/language/tr_TR/iso.txt @@ -0,0 +1 @@ +Türkçe [TR] \ No newline at end of file diff --git a/sources/language/tr_TR/tr_TR.jpg b/sources/language/tr_TR/tr_TR.jpg new file mode 100644 index 0000000..7483d58 Binary files /dev/null and b/sources/language/tr_TR/tr_TR.jpg differ diff --git a/sources/language/tr_TR/upgrade.lang.php b/sources/language/tr_TR/upgrade.lang.php new file mode 100644 index 0000000..d570610 --- /dev/null +++ b/sources/language/tr_TR/upgrade.lang.php @@ -0,0 +1,42 @@ +release %s (or equivalent).'] = 'Bu sayfa, eski Piwigo sürümüne ait veritabanını yeni sürüme yükseltmeyi öneriyor. Yükseltme yardımcısı şu anda sürüm %s (veya eşdeğeri) çalıştırıldığınızı düşünüyor.'; +$lang['Upgrade from version %s to %s'] = '%s sürümünden %s sürümüne yükselt'; +$lang['Statistics'] = 'İstatistik'; +$lang['total upgrade time'] = 'toplam güncelleme zamanı'; +$lang['total SQL time'] = 'toplam SQL zamanı'; +$lang['SQL queries'] = 'SQL sorguları'; +$lang['Upgrade informations'] = 'Yükseltme bilgileri'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Herhangi bir sorunla karşılaşırsanız, [Yönetim>Araçlar>Bakım] ile bakım yapınız.'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Bir önlem olarak, belirtilen eklentiler devre dışı bırakıldı. Tekrar etkinleştirmeden önce yükseltme seçeneklerini kontrol etmelisiniz.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Sadece yönetici yüksletmeyi çalıştırabilir: Lütfen oturum açın.'; +$lang['You do not have access rights to run upgrade'] = 'Yüksletmeyi çalıştırmak için erişim hakkınız bulunmuyor'; +$lang['All sub-albums of private albums become private'] = 'Özel albümlerin tüm alt albümleri de özel olur'; +$lang['User permissions and group permissions have been erased'] = 'Kullanicılar ve grupların izinleri silinmiştir'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Önceki yapılandırmadan sadece pul resimleri ön takıları ve site yöneticisi e-posta adresi kaydedildi.'; +$lang['In %s, before ?>, insert:'] = '%s içine, ?> önce, ekleyin:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Bir önlem olarak, belirtilen temalar devre dışı bırakıldı. Tekrar etkinleştirmeden önce yükseltme seçeneklerini kontrol etmelisiniz.'; + +?> \ No newline at end of file diff --git a/sources/language/uk_UA/about.html b/sources/language/uk_UA/about.html new file mode 100644 index 0000000..6aa5590 --- /dev/null +++ b/sources/language/uk_UA/about.html @@ -0,0 +1,19 @@ +

          Ця фотогалерея базована на Piwigo.

          + +

          Piwigo - це набір веб-базованого програмного забезпечення для +фотогалереї, побудованого активною групою користувачів та розробників. +Завдяки розширенням Piwigo легко налаштовувати. І на додачу, Piwigo є +безкоштовною і з відкритим вихідним кодом.

          + +

          Відвідати веб-сайт +Piwigo

          + +

          Український переклад підтримується (в алфавітному порядку): +

          + .... велике спасибі вам

          \ No newline at end of file diff --git a/sources/language/uk_UA/admin.lang.php b/sources/language/uk_UA/admin.lang.php new file mode 100644 index 0000000..1b797ad --- /dev/null +++ b/sources/language/uk_UA/admin.lang.php @@ -0,0 +1,974 @@ +Piwigo Uploader
          . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader стоїть для Piwigo Завантажувача. На вашому компьютері, pLoader готує ваши світлини та відсилає їх до вашої Piwigo галереї.'; +$lang['Plugin has been successfully copied'] = 'Плаґін було успішно скопійовано'; +$lang['Plugin list'] = 'Список плаґінів'; +$lang['Plugins which need upgrade'] = 'Плаґіни які потребують модернізації'; +$lang['Plugins'] = 'Плаґіни'; +$lang['Position'] = 'Позиція'; +$lang['Predefined filter'] = 'Попередньо встановленний фільтер'; +$lang['Preferences'] = 'Уподобання'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = 'Час для підготовки списку користувачів яким буде відправлено листи обмежений. Інші користувачі не перераховані.'; +$lang['Privacy level set to "%s"'] = 'Рівень конфідеційності встановлено в "%s"'; +$lang['Privacy level'] = 'Рівень конфідеційності'; +$lang['Private'] = 'Приватно'; +$lang['private'] = 'конфідеційно'; +$lang['Properties'] = 'Властивості'; +$lang['Public / Private'] = 'Публічно/Приватно'; +$lang['Public'] = 'Публічно'; +$lang['public'] = 'публічно'; +$lang['Purge compiled templates'] = 'Очистити скомпільовані шаблони'; +$lang['Purge history detail'] = 'Очистити історію переглядів'; +$lang['Purge history summary'] = 'Очистити історію резюме'; +$lang['Purge never used notification feeds'] = 'Очистити невикористані канали повідомлень'; +$lang['Purge search history'] = 'Очистити історію пошуку'; +$lang['Add a criteria'] = 'Додати критерії'; +$lang['Photo informations updated'] = 'Інформацію про світлину оновлено'; +$lang['Photo unreachable or no support'] = 'Світлина недоступна або непідтримуваний формат'; +$lang['Piwigo Administration'] = 'Керування Piwigo'; +$lang['Piwigo Announcements Newsletter'] = 'Розсилка оголошень Piwigo'; +$lang['Purge sessions'] = 'Чистка сесій'; +$lang['Quick Local Synchronization'] = 'Швидка локальна синхронізація'; +$lang['Random photo'] = 'Випадклва світлина'; +$lang['randomly represented'] = 'випадково представлений'; +$lang['ranks'] = 'оцінки'; +$lang['Rate date'] = 'дата оцінювання'; +$lang['Rating by guests'] = 'оцінювання відвідувачами'; +$lang['Rating'] = 'Оцінка'; +$lang['Read Piwigo Documentation'] = 'Читати документацію Piwigo'; +$lang['reduce to single existing albums'] = 'зменшити до одного існуючи альбоми'; +$lang['Refresh photo set'] = 'Оновити серію світлин'; +$lang['Refresh'] = 'Оновити'; +$lang['registration date'] = 'дата реєстрації'; +$lang['Reinitialize check integrity'] = 'Повторно ініціалізувати перевірку цілісності'; +$lang['Reject'] = 'Забракувати'; +$lang['Released on'] = 'Випущено'; +$lang['Remote'] = 'Віддалено'; +$lang['Remove all filters'] = 'Видалити всі фільтри'; +$lang['remove author'] = 'видалити автора'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = 'Відсутнє підтвердження пароля. Будь ласка, підтвердіть вибраний пароль.'; +$lang['Password is missing. Please enter the password.'] = 'Пароль відсутній. Будь ласка введіть пароль.'; +$lang['Path'] = 'Шлях'; +$lang['Pending Comments'] = 'Коментарі в очікуванні'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = 'Постійне посилання %s раніше використовувалося для альбому %s. Спочатку видаліть його з історії постійних посилань'; +$lang['Permalink %s is already used by album %s'] = 'Постійне посилання %s вже використовується для альбому %s'; +$lang['Permalink history'] = 'Історія постійних посилань'; +$lang['Permalink'] = 'Постійне посилання'; +$lang['Permalinks'] = 'Постійні посилання'; +$lang['Permission denied'] = 'Доступ заборонений'; +$lang['Permission granted thanks to a group'] = 'Доступ наданий завдяки групі'; +$lang['Permission granted'] = 'Доступ наданий'; +$lang['Permissions'] = 'Дозволи'; +$lang['Photo Page'] = 'Сторінка зображення'; +$lang['Photo Properties'] = 'Властивості зображення'; +$lang['photos added in the database'] = 'зображення додані в базу даних'; +$lang['photos candidates for metadata synchronization'] = 'кандидати зображень для синхронізації метаданих'; +$lang['photos deleted from the database'] = 'зображення видалені з бази даних'; +$lang['photos per page'] = 'зображень на сторінку'; +$lang['photos updated in the database'] = 'зображення оновлені в базі даних'; +$lang['Photos'] = 'Фотографії'; +$lang['Themes'] = 'Теми'; +$lang['There is no available subscribers to mail.'] = 'Немає абонентів для одержування повідомлень поштою.'; +$lang['There is no other language available.'] = 'Немає іншої доступної мови.'; +$lang['There is no other plugin available.'] = 'Немає іншого доступного плагіну.'; +$lang['There is no other theme available.'] = 'Немає іншої доступної теми.'; +$lang['This name is already used by another group.'] = "Це ім'я вже використовується іншою групою."; +$lang['This site already exists'] = 'Цей сайт вже існує'; +$lang['This theme was not designed to be directly activated'] = 'Ця тема не була призначена для безпосереднього активування'; +$lang['Thumbnail'] = 'Мініатюра'; +$lang['Time to send mail is limited. Others mails are skipped.'] = 'Час для відправки пошти обмежений. Інші листи були пропущені.'; +$lang['Time'] = 'Час'; +$lang['Title'] = 'назва'; +$lang['To send ?'] = 'Відправити?'; +$lang['To subscribe'] = 'Підписатися'; +$lang['To unsubscribe'] = 'Відписатися'; +$lang['Toggle \'default group\' property'] = 'Змінити властивість \'групи за замовчуванням\' на протилежну'; +$lang['Tools'] = 'Інструменти'; +$lang['total time'] = 'загальний час'; +$lang['Type here the author name'] = 'Введіть тут ім\'я автора'; +$lang['Type here the title'] = 'Введіть тут назву'; +$lang['Type in a search term'] = 'Введіть слово для пошуку'; +$lang['Save order'] = 'Порядок збереження'; +$lang['Save Settings'] = 'Зберегти налаштування'; +$lang['Save to permalink history'] = 'Зберегти в історію постіних посилань'; +$lang['Searching...'] = 'Пошук...'; +$lang['Search for new images in the directories'] = 'Шукати нові зображення в папках'; +$lang['Section'] = 'Розділ'; +$lang['See you soon,'] = 'До побачення,'; +$lang['See you soon.'] = 'До побачення.'; +$lang['Select at least one album'] = 'Виберіть принаймі один альбом'; +$lang['Select at least one comment'] = 'Віберіть принаймі один коментарій'; +$lang['Select at least one photo'] = 'Виберіть принаймі одну світлину'; +$lang['Select at least one user'] = 'Виберіть принаймі одного користувача'; +$lang['Select files'] = 'Виберіть файли'; +$lang['Select recipients'] = 'Виберіть одержувачів'; +$lang['Select:'] = 'Вибрати:'; +$lang['selection'] = 'вибір'; +$lang['Selection'] = 'Вибір'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Відновлення конфігурації за замовчуванням. Ви втратите налаштування плаґіна!'; +$lang['Send an information email to group members'] = 'Надіслати інформаційний лист членам групи'; +$lang['Send mail as'] = 'Надіслати лист як'; +$lang['Send mail on HTML format'] = 'Надіслати лист в HTML форматі'; +$lang['Send mail to users'] = 'Надіслати лист користувачам'; +$lang['Send'] = 'Надіслати'; +$lang['Set as default language for unregistered and new users'] = 'Встановити як мова за замовчуванням для незареєстрованих і нових користувачів'; +$lang['Set as default theme for unregistered and new users'] = 'Встановити як тема за замовчуванням для незареєстрованих і нових користувачів'; +$lang['Set author'] = 'Встановити автора'; +$lang['Set creation date'] = 'Встановити дату створення'; +$lang['Set title'] = 'Встановити назву'; +$lang['set to'] = 'встановити в'; +$lang['Settings'] = 'Налаштування'; +$lang['Show info'] = 'Показати інформацію'; +$lang['Show menubar'] = 'Показати меню'; +$lang['Simulation'] = 'Моделювання'; +$lang['singly represented'] = 'фіксоване представлення'; +$lang['Site manager'] = 'Менеджер сайту'; +$lang['Average rate'] = 'Середній бал'; +$lang['Rate'] = 'Оцінка'; +$lang['Start pLoader and add your photos.'] = 'Запустіть pLoader і додайте ваші зображення.'; +$lang['Statistics'] = 'Статистика'; +$lang['Status of user "%s" updated'] = 'Для користувача "%s" оновлений статус'; +$lang['Status'] = 'Статус'; +$lang['status'] = 'статус'; +$lang['Storage album'] = 'Зберегти альбом'; +$lang['sub-albums'] = 'під-альбоми'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = 'Підписати %s на розсилання новин Piwigo'; +$lang['Subscribe %s'] = 'Підписати %s'; +$lang['Subscribe to notification by mail'] = 'Підписатися на повідомлення поштою'; +$lang['Subscribe'] = 'Підписатися'; +$lang['Subscribe/unsubscribe users'] = 'Підписати/відписати користувачів'; +$lang['Subscribed'] = 'Підписані'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = 'Підписані користувачі можуть бути вказані (доступні) тільки при наявності нових елементів для повідомлення.'; +$lang['Sum of rates'] = 'Сума голосів'; +$lang['Summary'] = 'Резюме'; +$lang['Support'] = 'Підтримка'; +$lang['The following tag was deleted'] = 'Наступний теґ був видалений'; +$lang['the forum'] = 'форум'; +$lang['The gallery URL is not valid.'] = 'URL на галерею не валідний.'; +$lang['The name of a group must not contain " or \' or be empty.'] = 'Назва групи не повинна вміщувати " чи \' чи бути порожньою.'; +$lang['The name of an album must not be empty'] = 'Назва альбому не повинна бути порожньою'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = 'Назви директорій і файлів повинні включати тільки букви, цифри, "-", "_" або "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = 'Число коментарів на сторінці повинно бути між 5 і 50 включно.'; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = 'Посилання повинне складатися з a-z, A-Z, 0-9, "-", "_" або "/". Воно не повинно бути числовим або починатися з цифри, що слідують за "-"'; +$lang['Switch to clear or dark colors for administration'] = 'Переключити на світлі або темні кольори для адміністрації'; +$lang['synchronize files metadata with database photos informations'] = 'синхронізувати базу даних зображень з метаданими файлів'; +$lang['synchronize files structure with database'] = 'синхронізувати структуру файлів з базою данних'; +$lang['Synchronize metadata'] = 'синхронізувати метаданні'; +$lang['Synchronize'] = 'Синхронізувати'; +$lang['Tag "%s" already exists'] = 'Теґ "%s" вже існує'; +$lang['Tag "%s" was added'] = 'Теґ "%s" додано'; +$lang['Tag selection'] = 'Вибір теґів'; +$lang['target'] = 'мета'; +$lang['Templates configuration has been recorded.'] = 'Конфігурацію шаблонів збережено.'; +$lang['Templates'] = 'Шаблони'; +$lang['test this remote site'] = 'перевірити цев віддалений вузол'; +$lang['test'] = 'тест'; +$lang['The %d following tags were deleted'] = 'Наступні %d теґи видалено'; +$lang['The anomaly will be ignored until next application version'] = 'Аномалію буде проігноровано до виходу наступної версії програми'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = 'Файл або тека недоступні (або вони не існують або доступ заборонено)'; +$lang['%s has been successfully updated.'] = '%s було успішно оновлено.'; +$lang['%s photos can not be regenerated'] = '%s зображення не можуть бути відновлені'; +$lang['%s photos have been regenerated'] = '%s зображення були відновлені'; +$lang['(this tag will be deleted)'] = '(цей теґ буде видалений)'; +$lang['... or '] = '... або '; +$lang['Add to caddie'] = 'Додати в кошик'; +$lang['All extensions are up to date.'] = 'Всі розширення останніх версій.'; +$lang['All languages are up to date.'] = 'Всі мови останніх версій.'; +$lang['All plugins are up to date.'] = 'Всі плаґінни останніх версій.'; +$lang['All themes are up to date.'] = 'Всі теми останніх версій.'; +$lang['Allowed file types: %s.'] = 'Дозволені типи файлів: %s.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
          Click here to show log error.'] = 'Сталася помилка під час вилучення. Будь ласка, перевірте права доступу до файлів установки Piwigo.
          Натисніть тут, щоб показати журнал помилок.'; +$lang['An error has occured during upgrade.'] = 'Сталася помилка під час оновлення.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Приблизний максимальний дозвіл: %dM пікселів (це %dx%d пікселів).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'За замовчуванням, Piwigo створить новий розмір від HD (високої чіткості) версії вашого фото.'; +$lang['Confirm merge'] = 'Підтвердіть злиття'; +$lang['Create'] = 'Створити'; +$lang['Crop'] = 'Результат'; +$lang['display'] = 'показати'; +$lang['Do you want to activate anyway?'] = 'Чи Ви таки бажаєте активувати?'; +$lang['Dump Database'] = 'Дамп бази даних'; +$lang['ERROR'] = 'ПОМИЛКА'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'ПОМИЛКА: ЦЕЙ ДОДАТОК ВІДСУТНІЙ, АЛЕ ВІН ВСТАНОВЛЕНИЙ! ВИДАЛИТИ ЙОГО ЗАРАЗ.'; +$lang['Extensions Update'] = 'Оновлення розширень'; +$lang['Follow Orientation'] = 'Дотримуватись орієнтації'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Наступні додатки можуть бути несумісні з новою версією Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Наступні теми можуть бути несумісні з новою версією Piwigo:'; +$lang['Graphics Library'] = 'Графічна бібліотека'; +$lang['Height'] = 'Висота'; +$lang['hide details'] = 'приховати деталі'; +$lang['Hoverbox display'] = 'Відображати маркерну рамку'; +$lang['I decide to update anyway'] = 'Я таки вирішив оновити'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Якшо нема HD-зображення і поточний веб-розмір більший за нові розміри, Piwigo перемістить його як HD і створить зменьшене до веб-розміру зображення.'; +$lang['If you encounter problems or have any question, please send a message to'] = 'Якшо у Вас виникли проблеми або запитання, надішлить повідомлення до'; +$lang['Ignore All'] = 'Ігнорувати Всі'; +$lang['Ignore selected anomalies'] = 'Ігнорувати обрані аномалії'; +$lang['Ignore this update'] = 'Ігнорувати це оновлення'; +$lang['Image id'] = 'Ідентифікатор зображення'; +$lang['Image Quality'] = 'Якість зображення'; +$lang['jump to album'] = 'перейти до альбому'; +$lang['jump to photo'] = 'перейти до фото'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = 'Залишайтесь з пректом Piwigo, підпишіться на інформаційний бюлетень Piwigo Announcement. Ви будуте одержувати повідомлення коли новий реліз буде доступний (час від часу з виправленням помилок в системі безпеки, це важливо знати і оновлювати) і коли значні події відбуваються з проектом. Лише кілька повідомлень на рік.'; +$lang['Language has been successfully installed'] = 'Мову було успішно встановлено'; +$lang['Languages which need upgrade'] = 'Мови що потребують оновлення'; +$lang['Languages'] = 'Мови'; +$lang['Last hit'] = 'Останне влучення'; +$lang['Last import'] = 'Останній імпорт'; +$lang['Last revisions'] = 'Останні зміни'; +$lang['Last send'] = 'Останне відіслане'; +$lang['Learn more'] = 'Дізнатися більше'; +$lang['leave'] = 'покинути'; +$lang['Level 0'] = '---'; +$lang['Level 1'] = 'Контакти'; +$lang['Level 2'] = 'Друзі'; +$lang['Level 4'] = 'Родина'; +$lang['Level 8'] = 'Адміністратори'; +$lang['Activate comments'] = 'Активувати коментарі'; +$lang['Default comments order'] = 'Порядок коментарів за замовчуванням'; +$lang['Images manual order was saved'] = 'Ручний порядок зображень збережено'; +$lang['Impossible automatic correction'] = 'Автоматичне виправлення неможливо'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = 'Ця тема не може бути активована, остільки батьківська тема відсутня: %s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Неможливо відключити цю мову, спочатку потрібно встановити іншу мову за замовчуванням.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Неможливо відключити цю мову, потрібна хоча б одна мова.'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Неможливо відключити цю тему, потрібна хоча б одна тема.'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = 'Неможливо видалити цю тему, тому що інші теми залежать від неї: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'В вашому файлі php.ini, параметр upload_max_filesize (%sB) більший за параметр post_max_size (%sB), вам необхідно змінити ці налаштування'; +$lang['Inactive Languages'] = 'Неактивні мови'; +$lang['Inactive Plugins'] = 'Неактивні плаґіни'; +$lang['Inactive Themes'] = 'Неактивні теми'; +$lang['include child albums'] = 'включити дочірні альбоми'; +$lang['Include display of recent photos grouped by dates'] = 'Включити відображення недавніх фотографій, згрупованих по датам'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Включити історичні дані (Увага: ліміт пам\'яті сервера може бути перевищений)'; +$lang['Information data registered in database'] = 'Інформація даних, зареєстрованих в базі даних'; +$lang['Informations'] = 'Інформація'; +$lang['Install on your computer,'] = 'Встановити на Ваш компьютер,'; +$lang['Install'] = 'Встановити'; +$lang['Installed Languages'] = 'Встановлені мови'; +$lang['Installed Themes'] = 'Встановлені теми'; +$lang['Instructions to use Piwigo'] = 'Інсрукції по використанню Piwigo'; +$lang['Invert'] = 'Інвертувати'; +$lang['IP'] = 'IP'; +$lang['Link all album photos to a new album'] = 'Зв`язати всі світлини альбому з новим альбомом'; +$lang['Link all album photos to some existing albums'] = 'Зв`язати всі світлини альбому з існуючим альбомом'; +$lang['Linked albums'] = 'Пов`язані альбоми'; +$lang['Local'] = 'Локальний'; +$lang['Lock albums'] = 'Зачинити альбоми'; +$lang['Lock gallery'] = 'Зачинити галерею'; +$lang['Lock'] = 'Замок'; +$lang['Locked'] = 'Зачинено'; +$lang['Mail address is obligatory for all users'] = 'електронная пошта обов`язкова для всіх користувачів'; +$lang['Mail content'] = 'Зміст листа'; +$lang['Mail sent to %s [%s].'] = 'Поштові повідомлення на %s [%s].'; +$lang['Main "guest" user does not exist'] = 'Основний "гість" користувача не існує'; +$lang['Main "guest" user status is incorrect'] = 'Основний "гість" статус користувача невірно'; +$lang['Main "webmaster" user does not exist'] = 'Основний "веб-майстер" користувача не існує'; +$lang['Main "webmaster" user status is incorrect'] = 'Основний "веб-майстер" статус користувача невірно'; +$lang['Main Page'] = 'Головна сторінка'; +$lang['Maintenance'] = 'Обслуговування'; +$lang['Manage Permissions'] = 'Управління дозволами'; +$lang['Maximum file size: %sB.'] = 'Максимальний розмір файлу: %sB.'; +$lang['Merge selected tags'] = 'Злиття обраних теґів'; +$lang['Merge tags'] = 'Злиття теґів'; +$lang['New Version'] = 'Нова версія'; +$lang['No destination tag selected'] = 'Немає призначення обраний теґ'; +$lang['Obsolete Plugins'] = 'Застарілі плаґіни'; +$lang['Photo %s of %s'] = 'Фотографія %s з %s'; +$lang['Photo name'] = 'Ім\'я зображення'; +$lang['Photos generation in progress...'] = 'Процес генерації зображень...'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo не може отримати файл оновлення з сервера'; +$lang['Piwigo Update'] = 'Piwigo оновлення'; +$lang['Please wait...'] = 'Будь ласка, зачекайте...'; +$lang['remove creation date'] = 'видалити дату створення'; +$lang['Remove from caddie'] = 'Видалити з кошику'; +$lang['remove tags'] = 'видалити теґи'; +$lang['remove this filter'] = 'видалити цей фільтр'; +$lang['remove title'] = 'видалити назву'; +$lang['Repair and optimize database'] = 'Ремонт та оптимізація бази даних'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = 'Заміна оригінальних шаблонів, налаштованих шаблонів від шаблонів розширення підтеки'; +$lang['Replacers (customized templates)'] = 'Substitutes (customized templates)'; +$lang['Representant'] = 'Ескіз альбому'; +$lang['Representation of albums'] = 'Ескіз альбомів'; +$lang['Representative'] = 'Ескіз альбому'; +$lang['Represents'] = 'Мініатюра для'; +$lang['Reset ignored updates'] = 'Скидання ігнорування оновлення'; +$lang['Resize'] = 'Зміна розміру'; +$lang['Restore'] = 'Відновлення'; +$lang['Save Template Directory'] = 'Зберегти шаблон каталогу'; +$lang['Select an album'] = 'Виберіть альбом'; +$lang['Select at least two tags for merging'] = 'Виберіть принаймні два теґа для об\'єднання'; +$lang['Select the destination tag'] = 'Виберіть призначення теґу'; +$lang['Send connection settings by email'] = 'Надіслати налаштування з\'єднання по електронній пошті'; +$lang['show details'] = 'показати деталі'; +$lang['Some themes and plugins may be not available yet.'] = 'Деякі теми і плаґіни можуть бути не доступні.'; +$lang['Some upgrades are available for extensions.'] = 'Доступні деякі оновлення для розширень.'; +$lang['Start Upload'] = 'Початок завантаження'; +$lang['Tags %s merged into tag %s'] = 'Теґи %s об\'єднані в теґ %s'; +$lang['The original image quality must be a number between %d and %d'] = 'Вихідна якість зображення повинна бути число від %d та %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Оригінальна максимальна висота повинна бути поряд з %d та %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Оригінальна Максимальна ширина повинна бути поряд з %d та %d'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Розмір завантаження перевищує MAX_FILE_SIZE директиву, яка була вказана в HTML-формі'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Розмір завантаження перевищує upload_max_filesize директиви php.ini: %sB'; +$lang['The uploaded file was only partially uploaded'] = 'Завантажений файл був завантажений лише частково'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Завантажених файлів перевищує post_max_size директиви php.ini: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required [%s]'] = 'Встановлена версія %s [%s] ​​не сумісна з версією, потрібно [%s]'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = 'Вебмастер підписався на Вас поштою.'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = 'Вебмастер відписався від Вас поштою.'; +$lang['The whole page'] = 'Вся сторінка'; +$lang['The whole set'] = 'Всі сторінки'; +$lang['the wiki'] = 'вікі'; +$lang['Theme has been successfully installed'] = 'Тему було успішно встановлено'; +$lang['Themes which need upgrade'] = 'Теми, які необхідно оновити'; +$lang['This is a major update, with new exciting features.'] = 'Це велике оновлення з нововведеннями.'; +$lang['This is a minor update, with only bug corrections.'] = 'Це невелике оновлення, тільки з виправленнями помилок.'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'ЦЕЙ ПЛАҐІН Є ЧАСТИНОЮ CORE Piwigo! ВИДАЛІТЬ ЙОГО НЕГАЙНО!'; +$lang['Thumbnails generation in progress...'] = 'Процес генерації мініатюр...'; +$lang['Two updates are available'] = 'Два доступних оновлень'; +$lang['Unable to check for upgrade.'] = 'Неможливо перевірити наявність оновлень.'; +$lang['Unable to dump database.'] = 'Неможливо зберегти базу даних.'; +$lang['Uncheck all'] = 'Зняти все'; +$lang['Uninstall'] = 'Видалити'; +$lang['Uninstalled Plugins'] = 'Видалити плаґіни'; +$lang['unit mode'] = 'однокористувацький режим'; +$lang['unknown'] = 'невідомий'; +$lang['Unknown upload error'] = 'Невідома помилка при завантаженні'; +$lang['Unlocked'] = 'Розблоковано'; +$lang['unset'] = 'встановлено'; +$lang['Unsubscribe from notification by mail'] = 'Відмовитися від повідомлень по електронній пошті'; +$lang['Unsubscribed'] = 'Відписався'; +$lang['Update albums informations'] = 'Оновлення інформації альбомів'; +$lang['Update All'] = 'Оновити все'; +$lang['Update Complete'] = 'Оновлення завершено'; +$lang['Update in progress... Please wait.'] = 'Триває оновлення... Будь ласка, почекайте.'; +$lang['Update photos information'] = 'Оновлення інформації зображень'; +$lang['update the database from files'] = 'оновлення бази даних з файлами'; +$lang['Update to Piwigo %s'] = 'Оновлення Piwigo %s'; +$lang['Updates'] = 'Оновлення'; +$lang['Upload'] = 'Завантажити'; +$lang['Upload Photos'] = 'Завантажити зображення'; +$lang['Uploaded Photos'] = 'Завантажено світлини'; +$lang['Use the default photo sort order (defined in the configuration file)'] = 'За допомогою сортування за замовчуванням порядку зображення (визначені в файлі конфігурації)'; +$lang['Used metadata'] = 'метадані, що використовуються'; +$lang['User'] = 'Користувач'; +$lang['user "%s" added'] = 'користувача "%s" додано'; +$lang['User "%s" created with "%s" like password'] = 'Користувачу "%s" створено "%s" в якості пароля'; +$lang['User %s [%s] added.'] = 'Користувача %s [%s] додано.'; +$lang['User %s [%s] was added to the subscription list.'] = 'Користувача %s [%s] додано до списку підписників.'; +$lang['User %s [%s] was not added to the subscription list.'] = 'Користувача %s [%s] не додано до списку підписників.'; +$lang['User %s [%s] was not removed from the subscription list.'] = 'Користувач %s [%s] не видаляється зі списку розсилки.'; +$lang['User %s [%s] was removed from the subscription list.'] = 'Користувач %s [%s] видалений зі списку розсилки.'; +$lang['User comments validation'] = 'Перевірка коментарів користувачів'; +$lang['User list'] = 'Список користувачів'; +$lang['User status'] = 'Статус користувача'; +$lang['Users'] = 'Користувачі'; +$lang['user_status_admin'] = 'Адміністратор'; +$lang['user_status_generic'] = 'Загальний'; +$lang['user_status_guest'] = 'Гість'; +$lang['user_status_normal'] = 'Користувач'; +$lang['user_status_webmaster'] = 'Веб-майстер'; +$lang['Validate'] = 'Підтвердження'; +$lang['Validation'] = 'Перевірка'; +$lang['Version'] = 'Версія'; +$lang['Virtual album'] = 'Віртуальний альбом'; +$lang['Virtual album added'] = 'Віртуальний альбом додано'; +$lang['Virtual album deleted'] = 'Віртуальний альбом видалено'; +$lang['Virtual album name'] = 'Назва віртуального альбому'; +$lang['Virtual albums to move'] = 'Віртуальні альбоми для переміщення'; +$lang['Virtual Links'] = 'Віртуальні посилання'; +$lang['Visit Gallery'] = 'Відвідайте галерею'; +$lang['Visit language site'] = 'Відвідайте сайт мови'; +$lang['Visit Piwigo project website'] = 'Відвідайте веб-сайт проекту Piwigo'; +$lang['Visit plugin site'] = 'Відвідайте сторінку плаґіну'; +$lang['Visit theme site'] = 'Відвідайте сайт теми'; +$lang['Waiting'] = 'В очікуванні'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'УВАГА! Цей плаґін, здається, не сумісні з цією версією Piwigo.'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = 'Попередження: передплата і відписка буде надсилати електронну пошту користувачів'; +$lang['Webmaster cannot be deleted'] = 'Для веб-майстрів не може бути видалений'; +$lang['Webmaster status is required.'] = 'Веб-майстеру статус не потрібен.'; +$lang['Week starts on'] = 'Початок тижня'; +$lang['Who can see these photos?'] = 'Хто може бачити ці зображення?'; +$lang['Who can see this photo?'] = 'Хто може бачити цю фотографію?'; +$lang['Width'] = 'Ширина'; +$lang['width must be a number superior to'] = 'ширина повинна бути трохи більше, ніж'; +$lang['With blank value, gallery title will be used'] = 'Якщо це поле порожнє, галерея буде використовувати назву'; +$lang['With no album'] = 'При відсутності альбому'; +$lang['With no tag'] = 'При відсутності теґів'; +$lang['With no virtual album'] = 'При відсутності віртуального альбому'; +$lang['wrong filename'] = 'неправильне ім\'я файлу'; +$lang['A locked gallery is only visible to administrators'] = 'Заблоковано, галерею видно тільки адміністратору'; +$lang['administrators'] = 'адміністратори'; +$lang['Center of interest'] = 'Центр інтересів'; +$lang['Gallery unlocked'] = 'Галерея розблокована'; +$lang['modified'] = 'модифікований'; +$lang['Move to album'] = 'Перемістити до альбому'; +$lang['Not cropped correctly?'] = 'Не обрізати правильно?'; +$lang['Notify administrators when a comment is'] = 'Повідомити адміністратора, якщо коментар є'; +$lang['Original Size'] = 'Оригінальний розмір'; +$lang['pending validation'] = 'готовий до перевірки'; +$lang['registered users'] = 'зареєстровані користувачі'; +$lang['Resize after upload'] = 'Зміна розмірів після завантаження'; +$lang['Save visits in history for'] = 'Зберегти відвідування в історії'; +$lang['simple visitors'] = 'прості відвідувачі'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Цей альбом містить %d зображень, додано ​​між %s і %s'; +$lang['This album contains %d photos, added on %s.'] = 'Цей альбом містить %d зображень, додано %s.'; +$lang['This album contains no photo.'] = 'Цей альбом не містить зображень.'; +$lang['Unlock gallery'] = 'Розблокувати галерею'; +$lang['Year'] = 'Рік'; +$lang['You are running on development sources, no check possible.'] = 'Ви працюєте на розвиток джерела, не перевірити це можливо.'; +$lang['You are running the latest version of Piwigo.'] = 'Ви працюєте з Piwigo останньої версії.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Ви використовуєте браузерний завантажувач. Спробуйте Флеш завантажувач.'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Ви використовуєте Флеш завантажувач. Проблеми? Спробуйте браузерний завантажувач.'; +$lang['You can activate only one mobile theme.'] = 'Ви можете активувати тільки одну мобільну тему.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Ви можете оновити Piwigo %s напряму, без переходу на Piwigo %s (рекомендовано).'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Ви не можете визначити порядок за замовчуванням фотографії, тому що у Вас є налаштування користувача у вашій локальній конфігурації.'; +$lang['You cannot delete your account'] = 'Ви не можете видалити свій аккаунт'; +$lang['You cannot move an album in its own sub album'] = 'Ви не можете переміщати альбом в свій під-альбом'; +$lang['You have %d orphan tags: %s.'] = 'У вас є %d теґи-пустишки: %s.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Ви вказали $conf[\'order_by\'] в локальному файлі конфігурації, цей параметр в застарів, будь ласка, видаліть його або перейменувати його в $conf[\'order_by_custom\'] !'; +$lang['You have subscribed to receiving notifications by mail.'] = 'Ви підписалися на отримання повідомлень електронною поштою.'; +$lang['You have unsubscribed from receiving notifications by mail.'] = 'Ви відписалися від отримання повідомлення поштою.'; +$lang['You might go to plugin list to install and activate it.'] = 'Перейти до списку плаґінів для інсталяції та активації.'; +$lang['You need to confirm deletion'] = 'Ви повинні підтвердити видалення'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = 'Ви повинні оновити систему в повній мірі скористатися додатком, в іншому випадку програма може працювати неправильно, або взагалі не працювати'; +$lang['Your configuration settings are saved'] = 'Параметри конфігурації зберігаються'; +$lang['Zoom'] = 'Збільшити'; +$lang['[%s] Visit album %s'] = '[%s] Відвідайте альбом %s'; +$lang['[NBM] Problems or questions'] = '[НБМ] Проблеми та питання'; +$lang['apply automatic sort order'] = 'застосовувати автоматичне сортування'; +$lang['Automatic sort order'] = 'Автоматичне сортування'; +$lang['Cancel'] = 'Скасувати'; +$lang['cancel manual order'] = 'відмінити ручне сортування'; +$lang['List'] = 'Список'; +$lang['Save manual order'] = 'Зберегти ручне сортування'; +$lang['Applications'] = 'Додатки'; +$lang['Web Form'] = 'Веб-форми'; +$lang['Available on'] = 'Доступні на'; +$lang['Available versions for'] = 'Доступні версії для'; +$lang['Delete multiple size images'] = 'Видалення декількох зображень розміром'; +$lang['Generate multiple size images'] = 'Створення декількох зображень розміром'; +$lang['Piwigo for Android'] = 'Piwigo для Android'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo для iOS(iPhone, iPad, iPod Touch)'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u користувачі мають автоматичний дозвіл, тому що вони належать до наданої групи.'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo для Android додаток дозволяє вам підключити ваш телефон або планшет в галерею Piwigo, створити кілька альбомів і завантажити декілька зображень одночасно.'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo для iOS додаток дає можливість підключатись до вашої галереї Piwigo з вашого сенсорного iPhone, iPad та iPod, створити кілька альбомів і завантажити декілька зображень одночасно.'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom являє собою програмне забезпечення фотографа, призначене для управління великою кількістю цифрових зображень і робить роботу постпродакшн.'; +$lang['any visitor can see this album'] = 'будь-який відвідувач може бачити цей альбом'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture є потужним інструментом для уточнення зображення і керувати великими бібліотеками на Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture призначена для професійних фотографів з iPhoto.'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam - передове цифрове безкоштовне програмне забезпечення управління зображень для Linux, Windows, і MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'DigiKam призначений для фотографів, які хочуть переглядати, управляти, редагувати, покращувати організацію, теґи та обміну фотографіями.'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Особливості включають перегляд галереї, створення альбому і завантаження зображень.'; +$lang['Groups and users'] = 'Групи та користувачі'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto - менеджер зображень за замовченням на MacOSX. Доповнення Piwigo експортує до програми створені нові альбоми і ваші фото безпосередньо від iPhoto до вашої фотогалереї Piwigo.'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'На вашому Linux , просто встановіть Shotwell з вашим менеджером пакетів та активувати Piwigo параметр публікації.'; +$lang['Permission granted for groups'] = 'Дозвіл, наданий для груп'; +$lang['Permission granted for users'] = 'Дозвіл, наданий для користувачів'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo export плаґін для Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export плаґін для iPhoto'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish плаґін для digiKam'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo Видають доповнення до програми для Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish плаґін для Shotwell'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery клієнт для Android) це клієнт з відкритим вихідним кодом (GPL версії 3) Piwigo для платформи Android.'; +$lang['Select groups...'] = 'Виберіть групи...'; +$lang['Select users...'] = 'Виберіть користувачів...'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell є відкритим початковим цифровим організатором зображень, який працює на Linux. Він - менеджер заданий за замовчуванню зображень в Ubuntu і Fedora.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Плаґін Piwigo експорту дозволяє створювати альбоми та експортовані зображення.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish плаґін на дозволяє експортувати та синхронізувати зображення з Lightroom безпосередньо до вашої галереї Piwigo.'; +$lang['There is no group in this gallery.'] = 'Немає ніякої групи в цій галереї.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Щоб експортувати ваші зображення з digiKam до Piwigo, просто встановіть digiKam і Kipi-plugins.'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'відвідувачі повинні увійти і мати відповідні дозволи, щоб побачити цей альбом'; +$lang['custom'] = 'Звичай'; +$lang['include photos with lower privacy level'] = 'включати в себе зображення з більш низьким рівнем конфіденційності'; +$lang['No group is permitted to see this private album'] = 'Ніякій групі не дозволяється бачити цей приватний альбом'; +$lang['Permission management'] = 'Управління дозволу'; +$lang['add a new watermark'] = 'додати новий водяний знак'; +$lang['Apply watermark if height is bigger than'] = 'Накладення водяних знаків, якщо висота більше, ніж'; +$lang['Apply watermark if width is bigger than'] = 'Накладення водяних знаків, якщо ширина більше, ніж'; +$lang['Select a file'] = 'Виберіть файл'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Центр інтересу - найзначиміша зона у зображенні.'; +$lang['bottom left corner'] = 'нижній лівий кут'; +$lang['bottom right corner'] = 'нижній правий кут'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'За замовчуванням центр уваги знаходиться в центральній частині зображення.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Для зображень розміром з горошину, такі як "Площа", Piwigo зробить все можливе, щоб включити в центрі уваги.'; +$lang['middle'] = 'середина'; +$lang['Opacity'] = 'Непрозорість'; +$lang['Photo sizes with crop'] = 'Зображення розміром з горошину'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Виберіть зону за допомогою миші, щоб визначити новий центр уваги.'; +$lang['top left corner'] = 'верхній лівий кут'; +$lang['top right corner'] = 'верхній правий кут'; +$lang['X Position'] = 'Позиція X'; +$lang['X Repeat'] = 'Повторення X'; +$lang['Y Position'] = 'Позиція Y'; +$lang['Multiple Size'] = 'Кілька розмірів'; +$lang['%d days'] = '%d днів'; +$lang['%d day'] = '%d день'; +$lang['%d hours'] = '%d годин'; +$lang['%d hour'] = '%d година'; +$lang['%d minutes'] = '%d хвилин'; +$lang['%d minute'] = '%d хвилина'; +$lang['%d months'] = '%d місяців'; +$lang['%d month'] = '%d місяць'; +$lang['%d seconds'] = '%d секунд'; +$lang['%d second'] = '%d секунда'; +$lang['%d years'] = '%d років'; +$lang['%d year'] = '%d рік'; +$lang['%s ago'] = '%s тому'; +$lang['%s in the future'] = '%s в майбутньому'; +$lang['Added by %s'] = 'Додано користувачем %s'; +$lang['Numeric identifier : %d'] = 'Числовий ідентифікатор: %d'; +$lang['Original file : %s'] = 'Оригінальний файл: %s'; +$lang['Posted %s on %s'] = 'Опубліковано %s на %s'; +$lang['Rated %d times, score : %.2f'] = 'Оцінений %d разів, рахунок: %.2f'; +$lang['Sharpen'] = 'Загострити'; +$lang['Visited %d times'] = 'Відвідали %d разів'; +$lang['Watermark'] = 'Водяний знак'; +$lang[' and %d virtuals'] = 'та %d віртуальні'; +$lang['%d physicals'] = '%d фізичні'; +$lang['%d weeks'] = '%d тижнів'; +$lang['%d week'] = '%d тиждень'; +$lang['Edit photo'] = 'Редагувати фото'; +$lang['create a new site'] = 'створити новий сайт'; +$lang['No order field selected'] = 'Немає порядкового вибраного поля'; +$lang['Duplicate selected tags'] = 'Дублювати виділені теґи'; +$lang['Name of the duplicate'] = 'Назва дубліката'; +$lang['Source tag'] = 'Джерело теґа'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Теґ "%s" зараз є дублікатом "%s"'; +$lang['Landscape'] = 'Ландшафт'; +$lang['Minimum height'] = 'Мінімальна висота'; +$lang['Minimum width'] = 'Мінімальна ширина'; +$lang['Panorama'] = 'Панорама'; +$lang['Portrait'] = 'Портрет'; +$lang['Manage photos'] = 'Управління зображеннями'; +$lang['View in gallery'] = 'Переглянути у галереї'; +$lang['Number of albums per page'] = 'Кількість альбомів на сторінці'; +$lang['Ratio'] = 'Співвідношення'; +$lang['between %.2f and %.2f'] = 'між %.2f і %.2f'; +$lang['between %d and %d pixels'] = 'між %d і %d пікселями'; +$lang['Duplicate'] = 'Дублювати'; +$lang['Manage the members'] = 'Керування учасниками'; +$lang['Merge selected groups'] = 'Злиття вибраних груп'; +$lang['No group selected, no action possible.'] = 'Жодна група не вибрана, не можливі ніякі дії.'; +$lang['No members to manage'] = 'Немає учасників для управління'; +$lang['Please select at least two groups'] = 'Виберіть щонайменше дві групи'; +$lang['Rename'] = 'Перейменувати'; +$lang['This group will be set to default'] = 'Ця група буде встановлена за замовчуванням'; +$lang['This group will be unset to default'] = 'Ця група буде знята з замовчування'; +$lang['Type here the name of the new group'] = 'Введіть назву нової групи'; +$lang['Purge user cache'] = 'Очистити кеш користувача'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Розміри зображення будє зменьшено до %dx%d пікселів'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Зміну розміру після вивантаження вимкнено через використання бібліотеки GD'; +$lang['Select at least one tag'] = 'Виберіть принаймні один теґ'; +$lang['Basic settings'] = 'Основні параметри'; +$lang['General'] = 'Загальні'; +$lang['Mail theme'] = 'Поштова тема'; +$lang['Showing %s to %s of %s users'] = 'Показано %s від %s до %s користувачів'; +$lang['%d of %d users selected'] = '%d з %d користувачів вибрані'; +$lang['(filtered from %s total users)'] = '(фільтруються від загального числа користувачів %s)'; +$lang['All %d users are selected'] = 'Усі %d користувачі вибрані'; +$lang['Change password'] = 'Змінити пароль'; +$lang['Change username'] = 'Змінити ім’я користувача'; +$lang['Last visit on %s, %s.'] = 'Був на сайті %s, %s.'; +$lang['Loading...'] = 'Завантаження...'; +$lang['No matching user found'] = 'Відповідних користувачі не знайдено'; +$lang['No user selected of %d users'] = 'Не вибраний жоден з %d користувачів '; +$lang['No user selected, no action possible.'] = 'Жоден користувач не обраний, ніякі дії можливі.'; +$lang['Password updated'] = 'Пароль оновлений'; +$lang['Registered on %s, %s.'] = 'Зареєстрований %s, %s.'; +$lang['Show %s users'] = 'Відображати %s користувачів'; +$lang['Update user'] = 'Оновлення користувача'; +$lang['User %s added'] = 'Користувач %s доданий'; +$lang['User %s updated'] = 'Користувач %s оновленний'; +$lang['Users modified'] = 'Змінений користувач'; +$lang['on the %d selected users'] = 'на %d вибраних користувачів'; +$lang['close'] = 'Закрити'; +$lang['Close user details'] = 'Закрити деталі користувача'; +$lang['Open user details'] = 'Відкрити деталі користувача'; +?> \ No newline at end of file diff --git a/sources/language/uk_UA/common.lang.php b/sources/language/uk_UA/common.lang.php new file mode 100644 index 0000000..c713b3f --- /dev/null +++ b/sources/language/uk_UA/common.lang.php @@ -0,0 +1,421 @@ + \ No newline at end of file diff --git a/sources/language/uk_UA/help/cat_modify.html b/sources/language/uk_UA/help/cat_modify.html new file mode 100755 index 0000000..bc4ac02 --- /dev/null +++ b/sources/language/uk_UA/help/cat_modify.html @@ -0,0 +1,128 @@ +

          Редагувати альбом

          + +

          Інформація

          + +
            + +
          • ім'я: перейменувати альбом (віртуальне перейменування в разі +фізичного альбому).
          • + +
          • опис: короткий текст, що дає загальну думку вмісту, +цей текст буде показаний в низі сторінки згорнутих зображень.
          • + +
          + +

          Переміщення

          + +

          Якщо альбом є віртуальним, ви можете перемістити його. Переміщення альбому означає, +зміни його перший альбом.

          + +

          Парметри

          + +
            + +
          • Тип доступу: Дозволи управління. Якщо ви робите +альбом приватним, всі його під-альбоми стають приватним. Якщо ви робите +альбом публічним, всі його батьківські альмоми стають доступними для громадськості.
          • + +
          • Заблоовані: Альбом і його під-альбоми будуть тимчасово вимкнуті для технічного обслуговування.
          • + +
          • Коментарі: Дозволити користувачам коментувати фотографії цього альбому.
          • + +
          + +

          Ви також можете керувати цим параметром на "Властивості" +екрані управління (екрани Коментарі, Блокування, +Публічно/Приватно, Представник доступні з Адміністрування » Альбоми » Властивості).

          + +

          Порядок сортування

          + +

          Використовувати порядок сортування зображення за промовчанням.

          + +

          Вкажіть, чи цей порядок сортування буде застосовано до під-альбомів також.

          + +

          Виберіть специфічні сортуючі критерії, які використані з цим альбомом.

          +
            +
          • Дата створення: Дата створення зображення
          • +
          • Дата публікації: Дата синхронізації
          • +
          • Середній рейтинг (*): Середній рейтинг змогла змінити оцінка відвідувача
          • +
          • Найбільш відвідувані (*): Нинішній візит може змінити порядок найбільш відвідуваних
          • +
          • Ім'я файлу: Назва дана в інформаційному полі
          • +
          • Ід: Внутрішній Ід (останні категорії мають вищий ідентифікатор, ніж попередні.
          • + +
          +

          (*)Попередження: Не забудьте перевірити цей порядок сортування за себе, оскільки вони можуть дати неочікувані результати.

          + + +

          Представник

          + +

          Представник альбом є мініатюри, що відображається на головній сторінці (category.php) для представлення +альбому коли +він містить тільки вкладені альбоми і немає прямих зображень (так само, як корінь альбому).

          +зображення з альбому :

          + +
            + +
          • Сторінка зображення: одна з кнопок дозволяє налаштувати поточне зображення як представник альбому. Ця кнопка доступна лише для адміністраторів.
          • + +
          • Змінити інформацію про фото в + адмініструванні. Цей екран може бути досягнуто в picture.php або Пакетний + менеджер в одиничному режимі. Переглянути допомогу по цьому екрану + детальніше.
          • + +
          • Адміністрування » Альбоми » Властивості, + Представник. Переглянути допомогу по цьому екрану детальніше.
          • + +
          • Редагувати альбом (цей екран).
          • + +
          + +

          Вибір представника залежить від +allow_random_representative параметра конфігурації (див. include/config_default.inc.php).

          + +

          В режимі за промовчанням (allow_random_representative значення false), +кожен альбом, що містить хоча б один елемент являє собою фіксований +елемент. Після встановлення(створення альбому), представник змінюється лише +коли адміністратор просити про це. Якщо представник не підходить, +Ви можете попросити знайти нових представників випадково.

          + +

          Якщо параметр конфігурації allow_random_representative +встановлено вірно, категорії з зображеннями може не мають фіксованого +передставника. Просто використовуйте кнопку Видалення передставника.

          + +

          Якщо альбом містить тільки під-альбоми і немає зображень, він тим не менше може бути представлений на будь-який елемент, завдяки екрану Зміни +інформації про зображення. Єдиний варіант, на поточному екрані є кнопка Видалення передставника.

          + +

          Пов'язати усі зображення альбому з новим альбомом

          + +
            + +
          • Ім'я віртуального альбому: Ім'я нового альбому, який створений, +усі зображення поточної категорії будуть зв'язані з новим.
          • + +
          • Батьківський альбом: Де буде новий альбом, залиште пустим для його створення в корені.
          • + +
          + +

          Пов'язати усі зображення альбому з існуючими альбомами

          + +
            + +
          • Альбоми: Виберіть призначений альбом.
          • + +
          + +

          Відправте інформаційну електронну пошту членам групи

          + +
            + +
          • Група: група одержувачів
          • + +
          • Повідомлення електронної пошти: Вільний текст для відправки їм.
          • + +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/cat_move.html b/sources/language/uk_UA/help/cat_move.html new file mode 100755 index 0000000..dca2f40 --- /dev/null +++ b/sources/language/uk_UA/help/cat_move.html @@ -0,0 +1,14 @@ +

          Переміщення віртуальних альбомів

          + +

          Тільки віртуальні альбоми можуть мати новий батьківський альбом.

          + +

          Віртуальні альбоми для переміщення

          + +

          Виберіть один або кілька віртуальних альбомів, які Ви хочете перемістити. +Якщо список порожній, що означає, що ви не створили його ще немає.

          + +

          Новий батьківський альбом

          + +

          Виберіть новий батьківський альбом(віртуальний або фізичний). +Якщо ви не вибираєте ніякого батьківського альбому, віртуальні відібрані альбоми будуть переміщені в корінь. +Альбому не може бути переміщеним в себе або до одного з його під-альбомів.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/cat_options.html b/sources/language/uk_UA/help/cat_options.html new file mode 100755 index 0000000..e90626f --- /dev/null +++ b/sources/language/uk_UA/help/cat_options.html @@ -0,0 +1,22 @@ +

          Вибір альбому

          + +

          Опції управління для кількох альбомів відразу.

          + +
          + +
          Коментарі
          +
          Зображення може отримати коментарі від відвідувачів, якщо воно належить до альбому з дозволеним коментуванням.
          + +
          Заблоковано
          +
          Заблоковані альбоми вимкнуто для технічного обслуговування. Лише адміністратори можуть переглянути їх в галереї.
          + +
          Публічний / приватний
          +
          Після того, як альбом став приватним, надайте права доступу користувачам і групам
          + +
          Представник
          +
          Цей параметр доступний, якщо установлено параметр конфігурації +allow_random_representative (подивіться include/config_defaults.inc.php) значення +true. Коженому альбому може бути представлено випадкові зображення або зображення, обрані у якості унікального представника.
          + +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/cat_perm.html b/sources/language/uk_UA/help/cat_perm.html new file mode 100755 index 0000000..1e5ea55 --- /dev/null +++ b/sources/language/uk_UA/help/cat_perm.html @@ -0,0 +1,13 @@ +

          Змінити дозволи для альбому

          + +

          Це вікно доступне тільки для приватних альбомів. Тут ви можете вибрати +користувачів і груп уповноважених для альбому.

          + +

          Групи

          + +

          Ви можете відхилити або надати доступ груп для поточного альбому. Змінюючи +уповноваження груп, користувачі, що належать до цих груп, будуть мати дозвіл або заборону доступу до альбому.

          + +

          Користувачі

          + +

          Ви можете заборонити або дозволити доступ окремим користувачам. Користувачам, які мають доступ через групу може бути відмовлено в доступі як виняток.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/configuration.html b/sources/language/uk_UA/help/configuration.html new file mode 100755 index 0000000..b441e70 --- /dev/null +++ b/sources/language/uk_UA/help/configuration.html @@ -0,0 +1,101 @@ +

          Конфігурація

          + +

          Цей екран дозволяє адміністратору налаштувати базові конфігурації галереї. Дійсно, цей екран відображає тільки прості параметри конфігурації, цього має бути достатньо для переважної більшості адміністраторів. Якщо ви хочете побачити інші численні(і додаткові) параметри конфігурації, прочитати файл конфігурації за замовчуванням include/config_default.inc.php.

          + +

          Екран ділиться на різні розділи групування параметри конфігурації по категоріях.

          + + +

          Головна

          +
            +
          • Назва галереї: використовується в RSS-каналі і повідомленнях по електронній пошті.
          • + +
          • Заголовок сторінки: відображається у верхній частині кожної відкритій сторінці.
          • + +
          • URL галереї: використовується для подачі RSS.
          • + +
          • Блокування галереї: Блокувати всю галерею на технічне обслуговування. Тільки адміністратор буде мати можливість доступу до галереї.
          • + +
          • Рейтинг: Функція рейтингу зображення включена.
          • + +
          • Рейтинг гостей: Навіть незареєстровані користувачі можуть оцінювати зображення.
          • + +
          • Дозволити реєстрацію користувачів: Будь-хто може зареєструватися.
          • + +
          • Поштова адреса є обов'язковою для всіх користувачів: пошта буде перевірятися на поновлення реєстрації або профілю, за винятком, якщо дія відбувається на адміністратора.
          • + +
          • Емейл повідомлення адміністраторам, коли новий користувач реєструється: адміністратори будуть повідомлені поштою про кожну реєстрацію.
          • + +
          • Порядок зображень за замовчуванням: ви можете визначити персональне замовлення з цими випадаючим меню.
          • + +
          + +

          Історія

          + +

          Відвідувань на сторінках category.php та picture.php будуть збережені в таблиці history.

          + +

          Відвідування буде показано в Адміністрування » Інструменти » Історія.

          + +
            +
          • Зберегти сторінки відвідувані гостями: відвідувані сторінки гостями будуть записані.
          • + +
          • Зберегти сторінки відвідувані користувачами: відвідування користувачів буде записано.
          • + +
          • Зберегти сторінки відвідувані адміністраторами: сторінки відвідувані адміністраторами буде записано.
          • + +
          + +

          Коментарі

          +
            + +
          • Коментарі для всіх: Навіть незареєстровані гості можуть отримати можливість надсилати коментарі.
          • + +
          • Кількість коментарів на сторінці.
          • + +
          • Перевірка: адміністратор повинен перевірити коментарі користувачів, перш ніж вони стають видні на сайті. Перевірка коментарів користувача + відбувається на екрані Адміністрування » Інструменти » Коментарі в очікуванні.
          • + +
          • Емейл лист адміністраторам, коли вводяться дійсні коментарі: Відправлення електронною поштою адміністратору, коли користувач вводить свій коментар і цей коментар перевіряється.
          • + +
          • Емейл лист адміністраторам, коли коментар вимагає перевірки: +Відправлення електронною поштою листа адміністратору, коли користувач вводить коментар, який вимагає перевірки адміністратором. +Перевірка коментарів користувачів відбувається на екрані Адміністрування » Інструменти » Коментарі в очікуванні.
          • + +
          + +

          Відображення за замовчуванням

          + +

          Тут ви можете змінити параметри відображення, які використовуються гостем, користувачем за промовчанням. Після підключення, ці параметри змінюються на власні параметри користувача +(змінювані в профілю).

          + +

          Можна змінити параметри відображення для всіх існуючих користувачів на Адміністрування » +Користувачі » Управління екрані, де ви можете вибрати список користувачів.

          + +
            + +
          • Мова: Застосувати лише до позначки Piwigo. Назви альбомів, імена зображень і описи всіх полів не локалізовані.
          • + +
          • Кількість зображень в рядку
          • + +
          • Кількість рядків на сторінці
          • + +
          • Теми інтерфейсу
          • + +
          • Недавній період: Вдень. Період, впродовж якого зображення показується як нове. Має бути більшим, ніж 1 день.
          • + +
          • Розгорнути всі альбоми: Розгортання всіх альбомів +в меню Попередження: цей параметр є ресурсомістким і може генерувати величезні меню, якщо ваше дерево альбом містить багато альбомів.
          • + +
          • Показати кількість коментарів: Показати кількість коментарів для кожного зображення на сторінці мініатюр. Ресурсомісткий.
          • + +
          • Показати кількість показів: Відображення показів спостерігається на зображенні під його мініатюрою на сторінці мініатюр. Тільки тоді, коли додатковий параметр конфігурації:
            + $conf['show_nb_hits'] = true;
            + Примітка: false за замовчуванням.
          • + +
          • Максимальна ширина зображення: максимальна ширина відображення. Зображення більше, ніж цей параметр буде змінено на показі. Замість того, щоб вибрати цей параметр, ви можете розглянути можливість зміни ширини зображення; Це було б кращою практикою.
          • + +
          • Максимальна висота зображення: Те ж саме що стосується налаштування максимальної ширини.
          • + +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/extend_for_templates.html b/sources/language/uk_UA/help/extend_for_templates.html new file mode 100755 index 0000000..82e5a58 --- /dev/null +++ b/sources/language/uk_UA/help/extend_for_templates.html @@ -0,0 +1,51 @@ +

          Розширення конфігурації шаблону

          + +

          Про

          +

          Piwigo галерея може бути налаштована шляхом заміни існуючих файлів шаблону з індивідуальних версій. Наприклад, за замовчуванням заголовок шаблон (header.tpl) можна замінити шаблон індивідуальний заголовок (my-header.tpl). Після подання зміни до бази даних галерея буде відображати індивідуальний заголовку замість вихідного заголовка.
          +Шаблон розширень ефективний спосіб створювати власні теми для нових, так і старих користувачів. Використовується разом з редактором LocalFiles ви можете створювати свої власні під-теми.

          + +

          Оригінальний шаблон

          +

          Тема містить безліч файлів шаблонів, які складають галерею сторінок. Це оригінальні шаблони.

          + +

          Необов'язкові ключові слова URL

          +

          Це слова, знайдені в галереї URL після ім'я модуля. Вони також можуть бути активними постійна (див. документацію постійне посилання для отримання додаткової інформації). ПОПЕРЕДЖЕННЯ: якщо той же оригінальний шаблон і таке ж ключове слово використаний більш ніж на одному налагодженому шаблоні тільки один є активним.

          + +

          Зв'яжіть тему

          +

          Пов'язаних темою є тема, з якої файли шаблонів замінюються.

          + +

          Де знаходяться оригінальні шаблони?

          +

          Оригінальні шаблони файлів шаблонів поставляється з кожною темою окремо. Вони зберігаються в /themes/default/template (або themes//template). Ці файли шаблонів не повинні бути змінені на місці, оскільки зміни будуть втрачені з оновленням теми.
          +Підтримка оригінальних шаблонів включають:

          +
            +
          • index.tpl
          • +
          • mainpage_categories.tpl and/or thumbnails.tpl
          • +
          • menubar.tpl
          • +
          • header.tpl and/or footer.tpl
          • +
          • picture_content.tpl and/or picture.tpl
          • + +
          • profile.tpl and/or profile_content.tpl
          • +
          • tags.tpl
          • +
          • upload.tpl
          • +
          • about.tpl
          • +
          • popuphelp.tpl
          • +
          • search.tpl and/or search_rules.tpl
          • +
          • nbm.tpl and/or notification.tpl
          • +
          • identification.tpl and/or register.tpl
          • +
          • redirect.tpl
          • +
          +

          Збереження індивідуальних шаблонів

          +

          Індивідуальний шаблони має бути збережено в шаблоні розширення папки та вкладені папки. Наприклад, /template-extension/my-default/header.tpl (або /template-extension//header.tpl) Шаблон-файли можуть мати будь-яке ім'я з розширення .tpl. Файли шаблонів у підпапки з'являтися у вікні конфігурації шаблону та доступні як користувацькі шаблони.

          +

          Активація індивідуальних шаблонів

          +

          Виберіть вихідний шаблон для заміни. Можна також вибрати ключові слова URL, щоб переконатися, що індивідуальний шаблон тільки показано на сторінках за цим ключовим словом. Виберіть приєднані теми та зміни будуть ефективні на цій темі. Внести зміни до бази даних.

          +

          Деактивація індивідуальних шаблонів

          +

          Скасувати вибір вихідного шаблона і відправити зміни в базу даних.
          +Видалити файли індивідуального шаблону з папки шаблонів розширення.

          + + +

          Попередження

          +
            +
          • Оригінальний шаблон повинен бути вихідний шаблон в іншому випадку у вас можуть бути непередбачувані результати.
          • +
          • Якщо ж вихідний шаблон та те ж саме URL ключове слово використовується більше одного індивідуального шаблону тільки останній є активний.
          • +
          • Розподілені файли прикладів шаблонів для тестування тільки. Не редагуйте їх. Створіть свої власні, або скопіюйте існуючу тему шаблонів файлів в /template-extension//
          • +
          • Коли індивідуальний шаблон видалено вихідний файл шаблону буде негайно відновлений.
          • +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/group_list.html b/sources/language/uk_UA/help/group_list.html new file mode 100755 index 0000000..c76cb64 --- /dev/null +++ b/sources/language/uk_UA/help/group_list.html @@ -0,0 +1,22 @@ +

          Список груп

          + +

          Це місце, де можна керувати групами.

          + +

          Додати групу

          + +

          Адміністратор може додавати групи.

          + +

          Список груп

          + +

          Для кожної групи можуть бути застосовані такі дії:

          + + +
            +
          • перейти до управління користувачами (Адміністрування»Користувачі»Керувати)
          • +
          • перейти на дозвіл екрана управління для дозволу або заборони доступу до приватних альбомів.
          • +
          • видалити групу (потрібно підтвердження)
          • +
          • перемикання статусу "за умовчанням" (вимагає підтвердження)
          • +
          + +

          Стандартні групи

          +

          Групи за замовчуванням групи, які будуть автоматично пов'язані з кожним новим користувачем при реєстрації або створенні адміністратором.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/help_add_photos.html b/sources/language/uk_UA/help/help_add_photos.html new file mode 100755 index 0000000..fc692c1 --- /dev/null +++ b/sources/language/uk_UA/help/help_add_photos.html @@ -0,0 +1,27 @@ +

          Кілька способів додавання зображень в галерею:

          + +
            +
          • Пряме завантаження усередині вашого браузера є +найпростішим і найбезпосереднішим способом. Це залежить від ваших здібностей браузеру +і вашого веб-серверу. Для величезної кількості зображень або у разі, якщо ви стикаєтеся з деякою проблемою, +інші методи, тільки й чекають вас!
          • +
          + + + +
            +
          • pLoader це програма, яка буде встановлена ​​на вашому комп'ютері. Перетягніть зображення в вікно pLoader, натисніть "Завантажити до Piwigo" і нехай pLoader робить свою роботу. Ви можете знайти інші настільні додатки, такі як WinToPiwigo або експортувати плаґін Digikam для Piwigo.
          • +
          + + + +
          +
            +
          • Передача FTP Це найбільш рекомендований спосіб додати +дуже велику колекцію зображень з мінімальною кількістю кліків. Ознайомтесь з +Посібник для підготовки зображення. FTP метод дозволяє точно контролювати +фізичну організацію зображень на вашому сервері.
          • +
          + + +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/help_groups.html b/sources/language/uk_UA/help/help_groups.html new file mode 100755 index 0000000..6f3312b --- /dev/null +++ b/sources/language/uk_UA/help/help_groups.html @@ -0,0 +1,11 @@ +

          Групи є зручним способом встановити дозволи для списку користувачів.

          + +

          Створення груп в Адміністрування » Користувачі +» Групи і пов'язати користувачів до цієї групи +в Адміністрування » Користувачі +» Керувати.

          + +

          Користувач може належати до декількох груп. Авторизація має пріоритет над +забороною: якщо користувач "Іван" відноситься до груп "сім'я" і "друзі", і +що тільки група "сім'я" може бачити альбом "Різдво 2012", то альбом +"Різдво 2012" "Іван" зможе побачити.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/help_misc.html b/sources/language/uk_UA/help/help_misc.html new file mode 100755 index 0000000..f88a3e7 --- /dev/null +++ b/sources/language/uk_UA/help/help_misc.html @@ -0,0 +1,9 @@ +

          Після того як ви створили свою галерею, ви можете налаштувати її для ваших відвідувачів +

            +
          • Відображення за замовчуванням, як вам подобається в Адміністрування » Конфігурація » Інструменти вкладка Налаштування гостя
          • +
          • Тема за замовчуванням у Адміністрування » Конфігурація » Теми
          • +
          • Мова за замовчуванням у Адміністрування » Конфігурація » Мови
          • +
          + За замовчуванням кожен новий користувач буде наслідувати ці властивості при реєстрації. +

          +

          Якщо у Вас виникли питання, співтовариство Piwigo будуть раді допомогти Вам на форумі.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/help_permissions.html b/sources/language/uk_UA/help/help_permissions.html new file mode 100755 index 0000000..a683fa8 --- /dev/null +++ b/sources/language/uk_UA/help/help_permissions.html @@ -0,0 +1,58 @@ +
          +Дозволи на зображення + +

          Кожне зображення має рівень конфіденційності (блокування). Кожен користувач також має рівень конфіденційності (ключ). +Є 5 рівнів конфіденційності:

          +
            +
          1. Ніхто
          2. +
          3. Контакти
          4. +
          5. Друзі (який вище, ніж контакти)
          6. +
          7. Сім'я (який вище, ніж друзі)
          8. +
          9. Адміни (який вище, ніж будь-який інший рівень)
          10. +
          + +

          Вищі рівні мають дозволи на нижчих рівнях. Для даного користувача, чим вище рівень конфіденційності, то більше зображень він може бачити.

          + +

          Наприклад, якщо зображення "peter_wedding-0024.jpg" має рівень конфіденційності "Сім'я", тоді:

          +
            +
          • Peter (якщо рівень конфіденційності "Адміни") бачитиме зображення, тому що "Адміни" можуть бачити всі зображення
          • +
          • Beth (якщо рівень конфіденційності "Сім'я") також бачитиме зображення
          • +
          • Mary (якщо рівень конфіденційності "Друзі") не бачитиме зображення
          • +
          + +

          Користувач, який не має ніякого дозволу бачити вміст альбому, не бачитиме альбом безпосередньо, навіть його заголовок. Той же принцип звертається до теґ.

          + +

          Ви можете встановити рівень конфіденційності користувача на Адміністрування » Користувачі » Керувати.

          + +
          + +
          +Дозволи на альбоми + +

          Якщо рівні конфіденційності не відповідає вашим потребам, можна також керувати дозволами на альбоми для користувача або групи. Ви можете керувати дозволами на зображення та альбоми в той же час, без конфліктів.

          + +

          Ви можете заборонити доступ до альбомів. Перемкніть тип посилання альбому +"приватний", якщо ви хочете управляти дозволами.

          + +

          Ви можете встановити альбом приватним шляхом редагування одного альбому +(Адміністрування » Альбоми » Керувати +» редагувати) або налаштування параметрів вашого дерева альбому +(Адміністрування » Альбоми » + Властивості » Публічно / Конфіденційно).

          + +

          Після того, як альбом є приватним, ви можете керувати дозволами для груп та +користувачів з 3 екранів:

          + +
            + +
          • Адміністрування » Користувачі » Керувати » + permissions action (one link per user)
          • + +
          • Адміністрування » Користувачі » Групи » + permissions action (one link per group)
          • + +
          • Адміністрування » Альбоми » Керувати » редагувати + дії дозволів альбому(одне посилання на альбом)
          • + +
          +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/help_virtual_links.html b/sources/language/uk_UA/help/help_virtual_links.html new file mode 100755 index 0000000..b7fbb6f --- /dev/null +++ b/sources/language/uk_UA/help/help_virtual_links.html @@ -0,0 +1,11 @@ +

          Зображення показуються в альбомі, що відповідає їх файлу +директорій.

          + +

          Ви можете також показати зображення в декількох альбомах, без дублювання +файл на вашому веб-сервері. Асоціюйте зображення до будь-якого альбому у +екрані редагування зображень(будь-який адміністратора, може дістатисяз сторінки з зображенням на сторінку галереї).

          + +

          Віртуальні альбоми на основі цієї концепції: вони не мають відповідного +каталогу. Створення віртуальних альбомів +у Адміністрування » Альбоми » +Керувати.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/history.html b/sources/language/uk_UA/help/history.html new file mode 100755 index 0000000..961cd8e --- /dev/null +++ b/sources/language/uk_UA/help/history.html @@ -0,0 +1,22 @@ +

          Історія

          + +

          На цих екранах, ви можете контролювати вашу галерею історії відвідування відповідно до параметрів, які ви вибрали в: Адміністрування » Конфігурація » Опції » Історія

          + +

          Статистика

          +
            +

            Якщо ви вибрали для запису відвіданих сторінок (index.php та picture.php), Ви можете слідкувати за ними з цієї вкладки.

            +
          • Глобальна статистика: відвідувань на рік.
          • +
          • Щорічна статистика: відвідує за місяць у відібраному році.
          • +
          • Щомісячна статистика: відвідувань на дні вибраного місяця.
          • +
          • Щоденна статистика: відвідувань на годину в обраний день.
          • +
          + +

          Пошук

          +
            +

            Якщо ви вибрали для запису відвідані сторінки (index.php and picture.php), Ви можете переглянути відомості на цій вкладці за допомогою різних фільтрів.

            +
          • Фільтр за датою: Виберіть діапазон дат для пошуку по установці дати початку і закінчення.
          • +
          • Фільтр за типом елемента: виберіть вид елементу для статистики по цьому елементу.
          • +
          • Фільтр за користувачем: виберіть користувача для статистики по цьому користувачеві.
          • +
          • Фільтр за індефікатором зображення: виберіть ідентифікатор зображення для статистики по цьому зображенню.
          • +
          • Фільтр за ім'я файлу: виберіть ім'я файлу для статистики по цьому файлу..
          • +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/maintenance.html b/sources/language/uk_UA/help/maintenance.html new file mode 100755 index 0000000..a44fd2e --- /dev/null +++ b/sources/language/uk_UA/help/maintenance.html @@ -0,0 +1,26 @@ +

          Технічне обслуговування

          + +

          Щоб оптимізувати сторінки час генерації Piwigo використовує кешовані дані. Наприклад, замість того, щоб підрахунку кількості зображень, які містяться у кожного альбому на кожній сторінці перезавантажити ця інформація зберігається в базі даних. В теорії про це повинні завжди бути правильним, але іноді може виникнути помилка і кешування інформації стає застарілим.

          + +

          Деяка інформація стає менш корисним, як проходить час. Видалення цієї непотрібної інформації з бази даних допоможе вам заощадити місце на диску.

          + +
            +
          • Видалити пусті теґи
          • +
          +
            +
          • Оновлення інформації альбомів: Для кожного альбому, такі дані перевірені і оновленні, якщо це необхідно: список батьківських альбомів, кількість зображень, Дата зображення, позицію серед альбомів, місце серед всіх альбомів. Ця дія також перевіряє представницьку послідовність зображень.
          • +
          • Оновлення інформації зображень: Для кожного зображенн, оновлення інформації є : повний шлях до файлу, середня швидкість. Попередження, не переплутайте: метадані повинні бути синхронізовані з Адміністрування » Інструменти » Синхронізувати, або на екрані модифікації одного зображення (через Зображення наприклад).
          • +
          +
            +
          • Ремонт та оптимізація бази даних:Виконувати впорядкувати повторно, ремонту та оптимізації операції з кожної таблиці бази даних.
          • +
          • Повторна ініціалізація перевірки цілісності
          • +
          + +
            +
          • Очистити історію подробиць: Видаліть всі рядки з таблиці історії. Меню Адміністрування » Інструменти » Історія більше не буде показувати відомості про минуле. Попередження: всі дані будуть втрачені без можливості отримати їх назад.
          • +
          • Очистити історію резюме: Видалення всіх відомостей про історію візиту. Це резюме розраховується з історії подробиць.
          • +
          • Очистити сесій: Видалення минулих користувацьких сесій.
          • +
          • Очистити невикористані канали повідомлень
          • +
          • Очистити історію пошуку
          • +
          • Очистити скомпільовані шаблони
          • +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/notification_by_mail.html b/sources/language/uk_UA/help/notification_by_mail.html new file mode 100755 index 0000000..8a398f7 --- /dev/null +++ b/sources/language/uk_UA/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

          Повідомлення поштою (ПП)

          + +

          Налагодження та управління електронною поштою користувачів, повідомлення їх про зміни на вашому сайті.

          + +

          Цей екран складається з трьох вкладок:

          + +

          Налаштування

          +

          Доступно тільки для веб-майстрів, на цій вкладці задаєються параметри повідомлення поштою.

          + +

          Підписатися

          +

          Доступно тільки для веб-майстра, ця вкладка управляє підписками користувачів на повідомлення по електронній пошті. Додати користувача можна у вікні підписалися на їх отримання повідомлень електронною поштою.

          + +

          Надіслати

          +

          Доступно тільки для веб-майстрів та адміністраторів, ця вкладка дозволяє адміністраторам відправляти електронні повідомлення користувачам, що підписалися.

          diff --git a/sources/language/uk_UA/help/permalinks.html b/sources/language/uk_UA/help/permalinks.html new file mode 100755 index 0000000..473d22f --- /dev/null +++ b/sources/language/uk_UA/help/permalinks.html @@ -0,0 +1,7 @@ +

          Постійні посилання

          + +

          Постійні посилання використовуються, щоб зробити адрес альбому кращим. Коли для альбому постiйне посилання визначене, ідентифікатор альбому більше не потрібний в URL.

          + +

          Коли постiйне посилання вилучене, ви можете зберегти його в історії постійних посилань, щоб зовнішні посилання на сторінки Piwigo ще працювали. У таблиці історії постійних посилань можна побачити дату, коли постійне посилання було вилучено, в останній раз воно було використано і скільки разів це постійне посилання було використане.

          + +

          Зазначимо , що постійні посилання повинні бути унікальними в альбомі. Крім того, в історії постійних посилань ви не можете мати одне і теж постійне посилання більш ніж один раз.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/photos_add_ftp.html b/sources/language/uk_UA/help/photos_add_ftp.html new file mode 100755 index 0000000..7b1eee2 --- /dev/null +++ b/sources/language/uk_UA/help/photos_add_ftp.html @@ -0,0 +1,70 @@ +
          + Швидкий старт + +
            +
          1. Створіть директорію на вашому комп'ютері.
          2. + +
          3. Скопіюйте кілька зображень всередину цієї директорії, змініть їх розмір для веб-дисплея. Попередження: ім'я директорії і файлів повинне містити тільки листи, фігури, "-", "_" or ".". Без пробілів і акцентованих символів.
          4. + +
          5. З клієнтом FTP, копіюйте ваші директорії в директорії "Галереї" вашої Piwigo.
          6. + +
          7. Увійдіть до своєї галереї та перейдіть до Адміністрування і натисніть на велику кнопку синхронізації.
          8. +
          + +

          Вітаємо! Ви успішно створили перший альбом галереї.

          +
          + +
          + Організація директорій і файлів + +
            + +
          • + +

            Директорії альбому знаходяться в директорії Piwigo +"galleries". Тут слідує дерево каталогів дуже маленької галереї(але +користується багатьма особливостями):

            + +
            +galleries
            +|-- wedding
            +|   |-- celebration
            +|   |   |-- arrival
            +|   |   |   |-- paul-alone.jpg
            +|   |   |   +-- sarah-alone.jpg
            +|   |   +-- departure
            +|   |       +-- paul-and-sarah.jpg
            +|   +-- party
            +|       |-- dancers001.jpg
            +|       |-- dancers002.jpg
            +|       +-- dancers003.jpg
            ++-- honeymoon
            +    |-- hotel.png
            +    |-- video-from-plane.avi
            +    +-- pwg_representative
            +        +-- video-from-plane.jpg
            +
            + +
          • + +
          • За винятком "pwg_representative" (див. пояснення нижче), в кожній директорії в розділі "galleries" виступає як альбом. Немає ніяких обмежень на глибину директорій.
          • + +
          • В основному, файл представлений елементом. Файл може бути на +Piwigo елементом, якщо його розширення, серед file_ext + можливостей параметра конфігурації (див. файл include/config_default.inc.php). Файл може +бути зображенням, якщо його розширення серед picture_ext + можливостей параметра конфігурації.
          • + +
          • Немає елементів зображень (відео, звук, файл текстів, все, що ви хочете...) представлених за замовчуванням значок відповідає імені файлу +розширення. За бажанням, можна пов'язати мініатюру і представника +файлу (див. video.avi у наведеному вище прикладі).
          • + +
          • Попередження: ім'я директорії і файлів повинне містити тільки листи, фігури, "-", "_" or ".". Без пробілів і акцентованих символів.
          • + +
          • Як тільки фотографії правильно розташовані в +директорії, перейдіть: Адміністрування » Інструменти » + Синхронізація
          • + +
          +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/search.html b/sources/language/uk_UA/help/search.html new file mode 100755 index 0000000..ed34320 --- /dev/null +++ b/sources/language/uk_UA/help/search.html @@ -0,0 +1,23 @@ +

          Пошук

          + +

          Ця сторінка дозволяє шукати зображення зі всієї галереї.

          + +
          + +
          Пошук слів
          +
          Пошук одного або декількох слів, серед атрибутів, пов'язаних з зображенням +в галереї. Використовуйте * в якості шаблону для часткового співпадіння.
          + +
          Пошук за автором
          +
          Використовуйте * в якості шаблону для часткового співпадіння.
          + +
          Пошук за датою
          +
          Виберіть дату та/або Кінцеву дату для вашого запиту. Залиште порожнім поле "Дата" +Якщо ви хочете зробити запит "до". Рік в останньому полі слід ввести у форматі : AAAA (тобто 2004)
          + +
          Пошук за альбомами
          +
          Виберіть альбом або альбоми, які Ви хочете знайти. Всі +вкладені альбоми можуть бути знайдені за вибором батьківських альбомів і налаштування дозволяють +шукати по під-альбомами нижче.
          + +
          \ No newline at end of file diff --git a/sources/language/uk_UA/help/synchronize.html b/sources/language/uk_UA/help/synchronize.html new file mode 100644 index 0000000..3c7f41e --- /dev/null +++ b/sources/language/uk_UA/help/synchronize.html @@ -0,0 +1,14 @@ +

          Синхронізація

          + +

          Є два різних типи синхронізації:

          +
            +
          • тек/файлів
          • +
          • файл метаданих
          • +
          + +

          Синхронізація тек і файлів щодо оновлення тек дерева з альбомом дерева в базі даних. +Синхронізація файлів метаданих щодо оновлення інформації про знімок, такі, як розмір файла, розмір в пікселях, EXIF і IPTC інформації в базі даних.

          + +

          При синхронізації з завантаженням в вашу галерею, ви повинні спочатку синхронізувати каталоги і файли.

          + +

          Процес синхронізації може зайняти тривалий час (в залежності від навантаження на сервер і кількість елементів управління), так що можна це зробити альбом за альбомом.

          \ No newline at end of file diff --git a/sources/language/uk_UA/help/user_list.html b/sources/language/uk_UA/help/user_list.html new file mode 100644 index 0000000..3a8398f --- /dev/null +++ b/sources/language/uk_UA/help/user_list.html @@ -0,0 +1,23 @@ +

          Список користувачів

          + +

          Тут ви можете керувати користувачами вашої галереї Piwigo.

          + +

          Додати нового користувача

          + +

          Адміністратор може додавати користувачів вручну. Для кожного користувача необхідно вказати лоґін, пароль та дійсну адресу електронної пошти.

          + +

          Список користувачів

          + +

          Перелік існуючих користувачів можуть бути відфільтровані по імені користувача (використовуйте * як шаблон), групі або статусу. Їх можна розсортувати по даті реєстрації або ім'я користувача, в порядку зростання або спадання.

          + +

          Цей екран дозволяє керувати декількома користувачами одночасно, використовуючи різні дії:

          + +
            +
          • видаляти користувачів (необхідне підтвердження)
          • +
          • змінити статус користувача
          • +
          • приєднати або від'єднати від групи
          • +
          • змінювати властивості відображення
          • +
          • змінювати додаткові дозволи
          • +
          + +

          Ціль обраного користувача (за замовчуванням) або всіх користувачів, яких показано в відфільтрованому списоку.

          \ No newline at end of file diff --git a/sources/language/uk_UA/install.lang.php b/sources/language/uk_UA/install.lang.php new file mode 100644 index 0000000..b88a39a --- /dev/null +++ b/sources/language/uk_UA/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Потрібна допомога? Задайте питання на форумі Piwigo.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Зверніть увагу, ви можете змінити свою конфігурацію і перезавантажити собі Piwigo після цього.'; +$lang['Password [confirm]'] = 'Пароль [підтвердження]'; +$lang['PHP 5 is required'] = 'Потрібен PHP 5'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo можуть спробувати перемкнути конфігурацію PHP 5 шляхом створення або зміни .htaccess файлу.'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo не зміг налаштувати PHP 5.'; +$lang['please enter your password again'] = 'введіть пароль ще раз'; +$lang['Sorry!'] = 'Вибачте!'; +$lang['Start Install'] = 'Початок встановлення'; +$lang['Try to configure PHP 5'] = 'Спробуйте налаштувати PHP 5'; +$lang['user login given by your host provider'] = 'лоґін користувача дізнайтесь у вашого хостинг-провайдера'; +$lang['user password given by your host provider'] = 'лоґін користувача дізнайтесь у Вашого хостинг-провайдера'; +$lang['verification'] = 'перевірка'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Відвідувачі зможуть використовувати цю пошту, щоб зв\'язатися з адміністратором сайту'; +$lang['webmaster login can\'t contain characters \' or "'] = 'лоґін веб-майстера не може містити символів \' або "'; +$lang['Welcome to my photo gallery'] = 'Ласкаво просимо в фотогалерею'; +$lang['Welcome to your new installation of Piwigo!'] = 'Ласкаво просимо у ваш новий встановлений Piwigo!'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Ви можете завантажити конфігураційний файл і завантажити його до local/config каталогу встановлення.'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = 'Ви повинні звернутися в службу підтримки вашого хостинг-провайдера і подивитися, як ви можете переключитися на PHP 5 самостійно.'; +$lang['User'] = 'Користувач'; +$lang['localhost or other, supplied by your host provider'] = 'локальний хост або будь-який інший, наданий вашим провайдером'; +?> \ No newline at end of file diff --git a/sources/language/uk_UA/iso.txt b/sources/language/uk_UA/iso.txt new file mode 100644 index 0000000..3e7e199 --- /dev/null +++ b/sources/language/uk_UA/iso.txt @@ -0,0 +1 @@ +Українська [UA] \ No newline at end of file diff --git a/sources/language/uk_UA/uk_UA.jpg b/sources/language/uk_UA/uk_UA.jpg new file mode 100644 index 0000000..5781a0b Binary files /dev/null and b/sources/language/uk_UA/uk_UA.jpg differ diff --git a/sources/language/uk_UA/upgrade.lang.php b/sources/language/uk_UA/upgrade.lang.php new file mode 100644 index 0000000..e958360 --- /dev/null +++ b/sources/language/uk_UA/upgrade.lang.php @@ -0,0 +1,40 @@ +%s, before ?>, insert:'] = 'В %s, до ?>, вставити:'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Тільки адміністратор може запустити оновлення: увійдіть у систему нижче.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Тільки префікс мініатюр та адресу електронної пошти веб-майстра збережено збережено від попередньої конфігурації'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = 'Їх виконає автоматична перевірка в [Адміністрування> Сервіс> Обслуговування], якщо у вас виникнуть якісь проблеми.'; +$lang['SQL queries'] = 'SQL запитів'; +$lang['Statistics'] = 'Статистика'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Ця сторінка пропонує оновлення базу даних, що оновлює вашу стару версію Piwigo до поточної версії. Помічник оновлення думає, що ви в даний час працюєте з релізом %s(або подібним).'; +$lang['total SQL time'] = 'загальний час SQL'; +$lang['total upgrade time'] = 'загальний час оновлення'; +$lang['Upgrade'] = 'Оновлення'; +$lang['Upgrade from version %s to %s'] = 'Оновлення з версії %s на %s'; +$lang['Upgrade informations'] = 'Інформація оновлення'; +$lang['User permissions and group permissions have been erased'] = 'Користувачі та групи дозволів було видалено'; +$lang['You do not have access rights to run upgrade'] = 'У вас немає прав доступу для запуску оновлення'; +?> \ No newline at end of file diff --git a/sources/language/vi_VN/README.txt b/sources/language/vi_VN/README.txt new file mode 100644 index 0000000..3bc5008 --- /dev/null +++ b/sources/language/vi_VN/README.txt @@ -0,0 +1,6 @@ +Piwigo Vietnamese language files +author: Tien Ho Quang +website: http://www.quangtien.net +e-mail: + +update : 28/01/2010 \ No newline at end of file diff --git a/sources/language/vi_VN/about.html b/sources/language/vi_VN/about.html new file mode 100644 index 0000000..707180b --- /dev/null +++ b/sources/language/vi_VN/about.html @@ -0,0 +1,10 @@ +
        • Piwigo là một ứng dụng web đem đến cho bạn khả năng thiết lập một gallery ảnh trực tuyến một cách dễ dàng.
        • + +
        • Về mặt kỹ thuật, Piwigo hoàn toàn được phát triển bằng ngôn ngữ lập trình PHP với cơ sở dữ liệu MySQL.
        • + +
        • Nếu bạn có ý kiến đóng góp cho phần mềm Piwigo, vui lòng ghé vào web site chính thức của Piwigodiễn đàn dành riêng cho Piwigo.
        • + +
        • Việt hoá bởi TienHQ.
        • + diff --git a/sources/language/vi_VN/admin.lang.php b/sources/language/vi_VN/admin.lang.php new file mode 100644 index 0000000..f4247e0 --- /dev/null +++ b/sources/language/vi_VN/admin.lang.php @@ -0,0 +1,976 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'Công cụ pLoader là một công cụ gởi ảnh của Piwigo. Từ máy tính của bạn, pLoader sẽ chuẩn bị các bước thiết lập cho những bức ảnh và chuyển chúng lên thư viện ảnh Piwigo của bạn.'; +$lang['Guest Settings'] = 'Thiết lập cho tài khoản khách'; +$lang['Main Page'] = 'Trang chính'; +$lang['Photo Page'] = 'Trang ảnh'; +$lang['Activate Navigation Bar'] = 'Kích hoạt thanh điều hướng trang'; +$lang['Activate Navigation Thumbnails'] = 'Kích hoạt hình thu nhỏ điều hướng trang'; +$lang['Activate icon "%s"'] = 'Kích hoạt biểu tượng "%s"'; +$lang['Photo Properties'] = 'Thuộc tính ảnh'; +$lang['Allow user customization'] = 'Cho phép người dùng tùy biến '; +$lang['Languages'] = 'Ngôn ngữ'; +$lang['Installed Languages'] = 'Gói ngôn ngữ đã được cài'; +$lang['Add New Language'] = 'Thêm gói ngôn ngữ mới'; +$lang['Language has been successfully installed'] = 'Gói ngôn ngữ đã được cài đặt thành công'; +$lang['Select:'] = 'Chọn:'; +$lang['None'] = 'Không'; +$lang['Invert'] = 'Đảo ngược'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = 'Không thể vô hiệu hóa giao diện này, bạn cần ít nhất một giao diện.'; +$lang['Webmaster status is required.'] = 'Trạng thái của Webmaster cần phải có.'; +$lang['Bound Theme'] = 'Giao diện biên'; +$lang['Allow rating'] = 'Cho phép xếp hạng'; +$lang['Select at least one comment'] = 'Chọn ít nhất một lời bình'; +$lang['Active Plugins'] = 'Plugin đang sử dụng'; +$lang['Inactive Plugins'] = 'Plugin không được sử dụng'; +$lang['Missing Plugins'] = 'Plugin bị thiếu'; +$lang['Uninstalled Plugins'] = 'Plugin đã được gỡ bỏ'; +$lang['By %s'] = 'Bởi %s'; +$lang['Visit plugin site'] = 'Xem trang web chứa plugin'; +$lang['Active Languages'] = 'Ngôn ngữ hiện đang sử dụng'; +$lang['Delete this language'] = 'Xóa gói ngôn ngữ này'; +$lang['Forbid this language to users'] = 'Cấm người dùng sử dụng gói ngôn ngữ này.'; +$lang['Impossible to deactivate this language, first set another language as default.'] = 'Không thể tắt gói ngôn ngữ này, trước tiên cần phải thiết lập gói ngôn ngữ mặc định khác.'; +$lang['Impossible to deactivate this language, you need at least one language.'] = 'Không thể tắt gói ngôn ngữ này, bạn cần ít nhất một gói ngôn ngữ.'; +$lang['Inactive Languages'] = 'Ngôn ngữ hiện không sử dụng'; +$lang['Make this language available to users'] = 'Thiết lập cho phép sử dụng gói ngôn ngữ này cho mọi người dùng.'; +$lang['Set as default language for unregistered and new users'] = 'Thiết lập là ngôn ngữ mặc định cho nhóm người dùng mới và nhóm chưa đăng ký.'; +$lang['Add Photos'] = 'Thêm ảnh'; +$lang['The following tag was deleted'] = 'Thẻ sau đây đã bị xóa'; +$lang['Miscellaneous'] = 'Linh tinh'; +$lang['Virtual Links'] = 'Liên kết ảo'; +$lang['There is no other language available.'] = 'Không có gói ngôn ngữ nào có thể dùng được.'; +$lang['There is no other plugin available.'] = 'Không có plugin nào có thể dùng được.'; +$lang['There is no other theme available.'] = 'Không có gói giao diện nào có thể dùng được.'; +$lang['Add another set of photos'] = 'Thêm vào bộ ảnh khác'; +$lang['Order of menubar items has been updated successfully.'] = 'Vị trí của các mục trong thanh menubar đã được cập nhật thành công.'; +$lang['This theme was not designed to be directly activated'] = 'Giao diện này không được thiết kế để có thể kích hoạt trực tiếp'; +$lang['Pending Comments'] = 'Lời bình đang chờ'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = 'Trong tệp tin php.ini, biến upload_max_filesize (%sB) thì lớn hơn biến post_max_size (%sB), bạn nên thay đổi thiết lập này'; +$lang['Exif extension not available, admin should disable exif use'] = 'Nếu phần mở rộng Exif không tồn tại thì Quản trị viên nên vô hiệu hóa việc sử dụng Exif'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = 'Tệp tin gởi lên đã vượt quá giá trị hướng dẫn của biến upload_max_filesize ở tệp tin php.ini: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = 'Tệp tin gởi lên đã vượt quá giá trị hướng dẫn của biến post_max_size ở tệp tin php.ini: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = 'Tệp tin gởi lên đã vượt quá giá trị hướng dẫn của biến MAX_FILE_SIZE đã được định ra trong form HTML'; +$lang['The uploaded file was only partially uploaded'] = 'Tệp tin gởi lên chỉ được gởi một phần (không hoàn chỉnh)'; +$lang['No file was uploaded'] = 'Không có tệp tin nào được gởi lên'; +$lang['Missing a temporary folder'] = 'Còn thiếu một thư mục tạm'; +$lang['Failed to write file to disk'] = 'Bị lỗi khi ghi tệp tin lên đĩa'; +$lang['File upload stopped by extension'] = 'Quá trình gởi tệp tin đã dừng lại bởi phần mở rộng của tệp tin'; +$lang['Unknown upload error'] = 'Lỗi gởi hình không xác định được'; +$lang['Error on file "%s" : %s'] = 'Có lỗi ở tệp tin "%s" : %s'; +$lang['automatic order'] = 'sắp xếp tự động'; +$lang['manual order'] = 'sắp xếp thủ công'; +$lang['Albums automatically sorted'] = 'Albums đã được phân loại tự động'; +$lang['Batch Manager'] = 'Quản lý khối'; +$lang['include child albums'] = 'bao gồm các albums con'; +$lang['Selection'] = 'Lựa chọn'; +$lang['Action'] = 'Thực thi'; +$lang['Set author'] = 'Thiết lập tác giả'; +$lang['Set title'] = 'Thiết lập tiêu đề'; +$lang['Set creation date'] = 'Thiết lập ngày tháng khởi tạo'; +$lang['Apply action'] = 'Xác nhận thay đổi'; +$lang['on the %d selected photos'] = 'trên %d hình được chọn'; +$lang['%d of %d photos selected'] = '%d trong %d hình được chọn'; +$lang['No photo selected, %d photos in current set'] = 'Không có hình nào được chọn, có %d hình trong bộ hiện tại'; +$lang['All %d photos are selected'] = 'Tất cả %d hình đều được chọn'; +$lang['remove this filter'] = 'bỏ bộ lọc này'; +$lang['Duplicates'] = 'trùng'; +$lang['Add a filter'] = 'thêm bộ lọc'; +$lang['Remove all filters'] = 'Bỏ tất cả các bộ lọc'; +$lang['Refresh photo set'] = 'Cập nhật bộ hình'; +$lang['The whole page'] = 'Nguyên cả trang'; +$lang['The whole set'] = 'Nguyên cả bộ'; +$lang['No photo in the current set.'] = 'Không có hình nào trong bộ hiện tại.'; +$lang['No photo selected, no action possible.'] = 'Không có hình nào được chọn, không tác vụ nào được thực hiện.'; +$lang['Choose an action'] = 'Chọn một tác vụ'; +$lang['remove author'] = 'bỏ tác giả'; +$lang['Type here the author name'] = 'Nhập tên tác giả vào đây'; +$lang['remove title'] = 'bỏ tiêu đề'; +$lang['Type here the title'] = 'Nhập tiêu đề vào đây'; +$lang['remove creation date'] = 'bỏ ngày tháng khởi tạo'; +$lang['Album photos associated to the following albums: %s'] = 'Ảnh được kết hợp với những albums sau: %s'; +$lang['Delete orphan tags'] = 'Xóa các thẻ riêng lẽ'; +$lang['delete photo'] = 'xóa ảnh'; +$lang['Orphan tags deleted'] = 'Thẻ riêng lẽ đã được xóa'; +$lang['Week starts on'] = 'Tuần lễ bắt đầu vào'; +$lang['You have %d orphan tags: %s.'] = 'Bạn có %d thẻ riêng lẽ: %s.'; +$lang['Remove from caddie'] = 'Bỏ ra khỏi caddie'; +$lang['Themes which need upgrade'] = 'Giao diện cần bản nâng cấp'; +$lang['Languages which need upgrade'] = 'Ngôn ngữ cần nâng cấp'; +$lang['All themes are up to date.'] = 'Tất cả giao diện đều được cập nhật.'; +$lang['All plugins are up to date.'] = 'Tất cả plugins đều được cập nhật.'; +$lang['All languages are up to date.'] = 'Tất cả ngôn ngữ đều được cập nhật.'; +$lang['Visit theme site'] = 'Đến trang web của giao diện'; +$lang['Visit language site'] = 'Đến trang web của của ngôn ngữ'; +$lang['New Version'] = 'Phiên bản Mới'; +$lang['Obsolete Plugins'] = 'Những plugins đã cũ'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = 'CẢNH BÁO! Plugin này có thể không tương thích với phiên bản Piwigo hiện tại.'; +$lang['Do you want to activate anyway?'] = 'Bạn vẫn muốn kích hoạt?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = 'PLUGIN NÀY GIỜ LÀ MỘT PHẦN CỦA NHÂN PIWIGO! GỠ BỎ NGAY!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = 'LỖI: PLUGIN NÀY BỊ THIẾU NHƯNG NÓ ĐÃ ĐƯỢC CÀI ĐẶT! GỠ BỎ NGAY.'; +$lang['Thumbnails generation in progress...'] = 'Quá trình khởi tạo hình thu nhỏ đang được thực hiện...'; +$lang['Photos generation in progress...'] = 'Quá trình khởi tạo ảnh web đang được thực hiện...'; +$lang['%s photos have been regenerated'] = 'có %s ảnh đã được tạo ra'; +$lang['%s photos can not be regenerated'] = 'Có %s ảnh không thể tạo ra được'; +$lang['new'] = 'mới'; +$lang['No results'] = 'Không có kết quả nào'; +$lang['Searching...'] = 'Đang tìm kiếm...'; +$lang['Type in a search term'] = 'Nhập vào trong mục tìm kiếm'; +$lang['display'] = 'hiển thị'; +$lang['Deactivate all'] = 'Bỏ kích hoạt tất cả'; +$lang['Restore'] = 'Phục hồi'; +$lang['Restore default configuration. You will lose your plugin settings!'] = 'Khôi phục lại cấu hình mặc định. Các thiết lập cho plugin sẽ bị mất!'; +$lang['Show menubar'] = 'Hiển thị thanh trình đơn'; +$lang['Updates'] = 'Bản cập nhật'; +$lang['Update in progress... Please wait.'] = 'Đang tiến hành cập nhật... Vui lòng đợi.'; +$lang['Ignore this update'] = 'Bỏ qua bản cập nhật này'; +$lang['Reset ignored updates'] = 'Cài đặt lại những bản cập nhật đã bỏ qua'; +$lang['Update All'] = 'Cập nhật Tất cả'; +$lang['ERROR'] = 'CÓ LỖI'; +$lang['Update Complete'] = 'Cập nhật Hoàn thành'; +$lang['Piwigo Update'] = 'Cập nhật Piwigo'; +$lang['Extensions Update'] = 'Cập nhật thành phần mở rộng'; +$lang['All extensions are up to date.'] = 'Tất cả thành phần mở rộng đều được cập nhật.'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = 'Plugins sau đây có thể không tương thích với phiên bản mới của Piwigo:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = 'Giao diện sau đây có thể không tương thích với phiên bản mới của Piwigo:'; +$lang['I decide to update anyway'] = 'Dù gì tôi cũng quyết định cập nhật'; +$lang['Update to Piwigo %s'] = 'Cập nhật Piwigo lên phiên bản %s'; +$lang['Two updates are available'] = 'Có hai bản cập nhật'; +$lang['This is a minor update, with only bug corrections.'] = 'Đây là bản nâng cấp phụ, với các bản sửa lỗi.'; +$lang['This is a major update, with new exciting features.'] = 'Đây là bản cập nhật chính, với nhiều tính năng mới thú vị.'; +$lang['Some themes and plugins may be not available yet.'] = 'Một số giao diện và plugins có thể chưa sử dụng được.'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = 'Bạn có thể cập nhật trực tiếp Piwigo lên phiên bản %s, mà không cần phải nâng cấp lên phiên bản %s (khuyến cáo).'; +$lang['Save Template Directory'] = 'Lưu thư mục khuôn mẫu'; +$lang['Dump Database'] = 'Kết xuất Cơ sở dữ liệu'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = 'Bao gồm dữ liệu lược sử (Cảnh báo: giới hạn bộ nhớ máy chủ có thể bị vượt quá)'; +$lang['Unable to dump database.'] = 'Không thể kết xuất cơ sở dữ liệu.'; +$lang['Some upgrades are available for extensions.'] = 'Một số bản nâng cấp có thể áp dụng được cho các thành phần mở rộng.'; +$lang['Ignore All'] = 'Bỏ qua Tất cả'; +$lang['Crop'] = 'Xén'; +$lang['Width'] = 'Chiều rộng'; +$lang['Height'] = 'Chiều cao'; +$lang['Follow Orientation'] = 'Định hướng Dõi theo'; +$lang['Graphics Library'] = 'Thư viện Đồ họa'; +$lang['Activate icon "new" next to albums and pictures'] = 'Kích hoạt biểu tượng "ảnh mới" kế bên albums ảnh và hình'; +$lang['Add a criteria'] = 'Thêm một tiêu chí'; +$lang['Default photos order'] = 'Thứ tự ảnh mặc định'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = 'Bạn không thể định ra một thứ tự ảnh mặc định vì đã có một thiết lập tùy chọn trong cấu hình cục bộ.'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = 'Bạn đã định ra $conf[\'order_by\'] trong tệp tin cấu hình cục bộ của bạn, tham số này không được chấp nhận, hãy xóa bỏ hoặc đổi tên trong mục $conf[\'order_by_custom\'] !'; +$lang['Average rate'] = 'Xếp hạng trung bình'; +$lang['Rate'] = 'Xếp hạng'; +$lang['... or '] = '... hoặc '; +$lang['Create'] = 'Khởi tạo'; +$lang['Start Upload'] = 'Bắt đầu Tải lên'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = 'Bạn hiện đang dùng Flash Uploader. Nếu có trục trặc? Thì dùng Web Uploader thay thế.'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = 'Bạn hiện đang dùng Browser uploader. Hãy dùng Flash uploader thay thế.'; +$lang['Maximum file size: %sB.'] = 'Kích thước file lớn nhất: %sB.'; +$lang['Allowed file types: %s.'] = 'Loại file cho phép dùng: %s.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = 'Độ phân giải lớn nhất ước chừng: %dM pixels (đó là %dx%d pixels).'; +$lang['Manage Permissions'] = 'Quản lý Quyền Hạn'; +$lang['Learn more'] = 'Tìm hiểu thêm'; +$lang['Photo %s of %s'] = 'Ảnh %s của %s'; +$lang['show details'] = 'hiện chi tiết'; +$lang['hide details'] = 'ẩn chi tiết'; +$lang['Merge tags'] = 'Sáp nhập nhãn'; +$lang['Select the destination tag'] = 'Chọn nhãn đích'; +$lang['(this tag will be deleted)'] = '(nhãn này sẽ bị xóa)'; +$lang['Confirm merge'] = 'Xác nhận sáp nhập'; +$lang['Merge selected tags'] = 'Sáp nhập những thẻ được chọn'; +$lang['No destination tag selected'] = 'Không có nhãn đích nào được chọn'; +$lang['Tags %s merged into tag %s'] = 'Nhãn %s được sáp nhập vào nhãn %s'; +$lang['Select at least two tags for merging'] = 'Chọn ít nhất hai nhãn để sáp nhập'; +$lang['Select an album'] = 'Chọn một album ảnh'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = 'Theo mặc định, Piwigo sẽ tạo ra một kích thước web từ ảnh định dạng cao của bản.'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = 'Nếu không có định dạng cao nào và nếu kích thước web hiện tại lớn hơn kích thước đã điều chỉnh, Piwigo sẽ chuyển nó thành định dạng cao và tạo ra một ảnh có kích thước web đã thu nhỏ từ ảnh gốc.'; +$lang['An error has occured during upgrade.'] = 'Có một lỗi xuất hiện trong quá trình nâng cấp.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
          Click here to show log error.'] = 'Có một lỗi xuất hiện trong quá trình trích xuất tệp tin. Vui lòng kiểm tra quyền hiệu chỉnh tệp tin gói cài đặt Piwigo của bạn.
          Click vào đây để xem lỗi..'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo không thể nhận được tệp tin nâng cấp từ máy chủ'; +$lang['Zoom'] = 'Phóng to ảnh'; +$lang['Add to caddie'] = 'thêm vào caddie'; +$lang['%s has been successfully updated.'] = '%s cập nhật thành công.'; +$lang['Activate comments'] = 'Kích hoạt lời bình'; +$lang['Add tags'] = 'Bổ sung thẻ'; +$lang['Default comments order'] = 'Sắp xếp lời bình theo mặc định'; +$lang['Last import'] = 'Nhập sau cùng'; +$lang['Photo name'] = 'Tên ảnh'; +$lang['Predefined filter'] = 'Bộ lọc được định nghĩa trước'; +$lang['Send connection settings by email'] = 'Gởi thiết lập kết nối qua email'; +$lang['The original image quality must be a number between %d and %d'] = 'Chất lượng hình gốc phải là một số nằm giữa %d và %d'; +$lang['The original maximum height must be a number between %d and %d'] = 'Chiều cao gốc tối đa phải là một số nằm giữa %d và %d'; +$lang['The original maximum width must be a number between %d and %d'] = 'Chiều rộng gốc tối đa phải là một số nằm giữa %d và %d'; +$lang['With no album'] = 'Không kèm theo album ảnh'; +$lang['With no tag'] = 'Không kèm theo thẻ'; +$lang['With no virtual album'] = 'Không kèm theo album ảnh ảo'; +$lang['Resize after upload'] = 'Điều chỉnh kích thước sau khi gởi ảnh'; +$lang['Original Size'] = 'Kích thước gốc'; +$lang['A locked gallery is only visible to administrators'] = 'Thư viện ảnh đã khóa chỉ có thể xem được bởi Quản trị viên'; +$lang['Unlock gallery'] = 'Mở khóa thư viện ảnh'; +$lang['Gallery unlocked'] = 'Thư viện ảnh đã được mở khóa'; +$lang['Notify administrators when a comment is'] = 'Thông báo cho Quản trị viện khi có lời bình'; +$lang['modified'] = 'đã được hiệu chỉnh'; +$lang['pending validation'] = 'đang chờ xác nhận'; +$lang['Save visits in history for'] = 'Lưu giữ lượt khách trong bản ghi để'; +$lang['simple visitors'] = 'khách thăm quan bình thường'; +$lang['registered users'] = 'người dùng đã đăng ký'; +$lang['administrators'] = 'quản trị viên'; +$lang['This album contains %d photos, added on %s.'] = 'Album ảnh này có chứa %d ảnh, thêm vào %s.'; +$lang['This album contains %d photos, added between %s and %s.'] = 'Album ảnh này có chứa %d ảnh, thêm vào từ %s đến %s.'; +$lang['This album contains no photo.'] = 'Album ảnh này không chứa ảnh nào.'; +$lang['Not cropped correctly?'] = 'Ảnh không được cắt chính xách?'; +$lang['Center of interest'] = 'Tâm điểm chú ý'; +$lang['Move to album'] = 'Chuyển đến album'; +$lang['You can activate only one mobile theme.'] = 'Bạn chỉ có thể một giao diện cho phiên bản di động.'; +$lang['Automatic sort order'] = 'Tự động sắp xếp vị trí'; +$lang['apply automatic sort order'] = 'áp dụng sắp xếp vị trí tự động'; +$lang['Save manual order'] = 'Lưu vị trí sắp xếp thủ công'; +$lang['cancel manual order'] = 'hủy vị trí sắp xếp thủ công'; +$lang['Cancel'] = 'Hủy bỏ'; +$lang['List'] = 'Dach sách'; +$lang['Web Form'] = 'Mẫu Web'; +$lang['Applications'] = 'Các ứng dụng'; +$lang['Available versions for'] = 'Những phiên bản có thể dùng được cho'; +$lang['Available on'] = 'Có thể dùng được vào'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Phiên bản Piwigo cho iOS (iPhone, iPad, iPod Touch)'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Phiên bản Piwigo cho iOS ứng dụng cho phép bạn kết nối Piwigo của mình từ iPhone, iPad hoặc iPod Touch, tạo albums ảnh và tải lên máy chủ lưu trữ ảnh ngay lập tức.'; +$lang['Piwigo for Android'] = 'Phiên bản Piwigo cho Android'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Phiên bản Piwigo cho Android ứng dụng cho phép bạn kết nối Piwigo của mình từ điện thoại chạy Android hoặc máy tính bảng, tạo albums ảnh và tải lên máy chủ lưu trữ ảnh ngay lập tức.'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Plugin Publish của Piwigo cho Lightroom'; +$lang['%d day'] = '%d ngày'; +$lang['%d days'] = '%d ngày'; +$lang['%d hour'] = '%d giờ'; +$lang['%d hours'] = '%d giờ'; +$lang['%d minute'] = '%d phút'; +$lang['%d minutes'] = '%d phút'; +$lang['%d month'] = '%d tháng'; +$lang['%d months'] = '%d tháng'; +$lang['%d physical'] = ' %d vật lý'; +$lang['%d physicals'] = ' %d vật lý'; +$lang['%d second'] = '%d giây'; +$lang['%d seconds'] = '%d giây'; +$lang['%d week'] = '%d tuần'; +$lang['%d weeks'] = '%d tuần'; +$lang['%d year'] = '%d năm'; +$lang['%d years'] = '%d năm'; +$lang['%s ago'] = 'cách đây %s'; +$lang['%s in the future'] = '%s trong tương lai'; +$lang['%u users have automatic permission because they belong to a granted group.'] = 'có %u người dùng được tự động cấp quyền bởi vì họ nằm trong nhóm đã được xác nhận.'; +$lang['add a new watermark'] = 'thêm vào một hình mờ'; +$lang['Added by %s'] = 'Được thêm bởi %s'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom là một phần mềm nhiếp ảnh được thiết kế để quản lý ảnh kỹ thuật số với số lượng lớn thực hiện các chế tác về sản xuất.'; +$lang['any visitor can see this album'] = 'bất kỳ người nào cũng có thể xem được album này'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture là một công cụ mạnh dùng để làm mịn ảnh và quản lý thư viện ảnh lớn trên nền Mac.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture được thiết kế cho nhiếp ảnh gia chuyên nghiệp với ứng dụng iPhoto đơn giản.'; +$lang['Apply watermark if height is bigger than'] = 'Gắn hình mờ nếu chiều cao ảnh lớn hơn'; +$lang['Apply watermark if width is bigger than'] = 'Gắn hình mờ nếu chiều rộng ảnh lớn hơn'; +$lang['between %d and %d pixels'] = 'giữa khoảng %d và %d pixels'; +$lang['between %.2f and %.2f'] = 'giữa khoảng %.2f và %.2f'; +$lang['bottom left corner'] = 'góc trái phía dưới'; +$lang['bottom right corner'] = 'góc phải phía dưới'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = 'Theo mặc định, trung tâm của sự chú ý được đặt vào giữa bức ảnh.'; +$lang['create a new site'] = 'tạo ra một site mới'; +$lang['custom'] = 'Tùy chỉnh'; +$lang['Delete multiple size images'] = 'Xóa những hình đa kích cỡ'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam là một phần mềm quản lý ảnh kỹ thuật số miễn phí và tiên tiến cho các hệ điều hành Linux, Windows và MacOSX.'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam được thiết kế cho các nhiếp ảnh gia trong việc duyệt ảnh, quản lý ảnh, biên tập, cải tiến chất lượng ảnh, tổ chức và chia sẻ ảnh.'; +$lang['Duplicate selected tags'] = 'Nhân đôi thẻ đã chọn'; +$lang['Duplicate'] = 'Nhân đôii'; +$lang['Edit photo'] = 'Chỉnh sửa ảnh'; +$lang['Features include gallery browsing, album creation and photo upload.'] = 'Những tính năng gồm có duyệt thư viện ảnh, tạo album ảnh và tải ảnh.'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = 'Đối với ảnh điều chỉnh kích thước bằng cách xén ảnh, như "Hình vuông", Piwigo sẽ cố tập trung phần nổi bật nhất vào ngay trong ảnh.'; +$lang['Generate multiple size images'] = 'Tạo ra những ảnh đa kích cỡ'; +$lang['Groups and users'] = 'Nhóm người dùng và người dùng'; +$lang['include photos with lower privacy level'] = 'bao gồm những ảnh với múc độ riêng tư thấp'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto là chương trình quản lý ảnh mặc định trong MacOSX. Plugin xuất ảnh của Piwwigo cho phép bạn tạo ra album mới và xuất ảnh trực tiếp từ iPhoto đến thư viện ảnh Piwigocủa bạn.'; +$lang['Landscape'] = 'Phong cảnh'; +$lang['Manage photos'] = 'Quản lý ảnh'; +$lang['Manage the members'] = 'Quản lý thành viên'; +$lang['Merge selected groups'] = 'Trộn chung các nhóm được chọn'; +$lang['middle'] = 'giữa'; +$lang['Minimum width'] = 'Bề rộng tối thiểu'; +$lang['Minimum height'] = 'Chiều cao tối thiểu'; +$lang['Multiple Size'] = 'Đa kích thước'; +$lang['Name of the duplicate'] = 'Tên của phần trùng lặp'; +$lang['No group is permitted to see this private album'] = 'Không nhóm nào được phép xem album loại riêng tư'; +$lang['No group selected, no action possible.'] = 'Không nhóm nào được chọn, không thể thực thi được tác vụ nào.'; +$lang['No members to manage'] = 'Không có thành viên nào để quản lý'; +$lang['No order field selected'] = 'Không có tham số vị trí nào được chọn'; +$lang['Number of albums per page'] = 'Số album ảnh trên một trang'; +$lang['Numeric identifier : %d'] = 'Ký hiệu nhận dạng số : %d'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = 'Trong Linux, đơn giản chỉ cài đặt Shotwell bằng ứng dụng quản lý gói cài đặt và kích hoạt tùy chọn xuất bản ảnh Piwigo.'; +$lang['Opacity'] = 'Làm mờ'; +$lang['Original file : %s'] = 'Tệp tin gốc : %s'; +$lang['Panorama'] = 'Toàn cảnh'; +$lang['Permission granted for groups'] = 'Quyền hạn được cấp cho nhóm'; +$lang['Permission granted for users'] = 'Quyền hạn được cấp cho người dùng'; +$lang['Permission management'] = 'Quản lý quyền hạn'; +$lang['Photo sizes with crop'] = 'Ảnh được điều chỉnh kích cỡ bằng cách xén ảnh'; +$lang['Piwigo export plugin for Aperture'] = 'Plugin xuất ảnh của Piwigo cho Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Plugin xuất ảnh của Piwigo cho iPhoto'; +$lang['Piwigo publish plugin for digiKam'] = 'Plugin xuất ảnh của Piwigo cho digiKam'; +$lang['Piwigo publish plugin for Shotwell'] = 'Plugin xuất ảnh của Piwigo cho Shotwell'; +$lang['Please select at least two groups'] = 'Hãy chọn ít nhất 2 nhóm'; +$lang['Portrait'] = 'Chân dung'; +$lang['Ratio'] = 'Tỉ lệ'; +$lang['Rename'] = 'Đổi tên'; +$lang['Select a file'] = 'Chọn một tệp tin'; +$lang['Select a zone with your mouse to define a new center of interest.'] = 'Chọn một vùng bằng chuột để vạch ra tâm điểm của sự chú ý.'; +$lang['Select groups...'] = 'Chọn nhóm...'; +$lang['Select users...'] = 'Chọn người dùng...'; +$lang['Sharpen'] = 'Độ nét'; +$lang['Source tag'] = 'Thẻ gốc'; +$lang['Tag "%s" is now a duplicate of "%s"'] = 'Thẻ "%s" giờ là bản sao của thẻ "%s"'; +$lang['The center of interest is the most meaningful zone in the photo.'] = 'Tâm điểm của sự chú ý là phần có ý nghĩa nhất của bức ảnh.'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = 'Kích thước ảnh sẽ bị giảm xuống %dx%d pixels.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Plugin xuất ảnh của Piwigo cho phép bạn tạo ra albums ảnh và xuất hình.'; +$lang['There is no group in this gallery.'] = 'Không có nhóm nào trong thư viện ảnh này.'; +$lang['This group will be set to default'] = 'Nhóm này sẽ được dùng mặc định'; +$lang['This group will be unset to default'] = 'Nhóm này sẽ không còn được dùng mặc định nữa'; +$lang['top left corner'] = 'góc trái trên cùng'; +$lang['top right corner'] = 'góc phải trên cùng'; +$lang['Type here the name of the new group'] = 'Nhập tên của nhóm mới ở đây'; +$lang['View in gallery'] = 'Xem trong thư viện ảnh'; +$lang['Visited %d times'] = 'Đã được xem %d lần'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = 'khách thăm quan cần phải đăng nhập và được phân quyền phù hợp để xem album ảnh này'; +$lang['Watermark'] = 'Ảnh mờ'; +$lang['X Position'] = 'Vị trí X'; +$lang['X Repeat'] = 'Lặp lại X'; +$lang['Y Position'] = 'Vị trí Y'; +$lang['Purge user cache'] = 'Lọc bộ nhớ đệm của người dùng'; + +$lang['Posted %s on %s'] = 'Gửi %s vào %s'; +$lang['Rated %d times, score : %.2f'] = 'Đã được đánh giá %d lần, điểm số : %.2f'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (RemoteGallery client cho Android) là một phần mềm máy khách Piwigo mã mở (GPL v3)cho nền tảng Android.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = 'Đổi kích thước sau khi tải lên bị vô hiệu vì sử dụng thư viện đồ họa GD'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell là một trình quản lý ảnh số mã mở và là trình quản lý ảnh mặc định trong Ubuntu và Fedora.'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo phát hành các plug-in cho phép đồng bộ hóa và xuất trực tiếp các ảnh từ Lightroom vào trong thư viện ảnh Piwigo.'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = 'Để xuất các ảnh từ digiKam vào Piwigo, đơn giản hãy cài đặt digiKam và Kipi-plugins.'; +$lang['Select at least one tag'] = 'Hãy chọn ít nhất một tag'; +$lang['Basic settings'] = 'Thiết lập cơ bản'; +$lang['General'] = 'Tổng quát'; +$lang['Mail theme'] = 'Chủ đề mail'; +$lang['%d of %d users selected'] = '%d trong số %d người dùng được chọn'; +$lang['(filtered from %s total users)'] = '(lọc từ %s tổng số người dùng)'; +$lang['All %d users are selected'] = 'Tất cả %d người dùng được chọn'; +$lang['Change password'] = 'Đổi mật khẩu'; +$lang['Change username'] = 'Đổi tên người dùng'; +$lang['Last visit on %s, %s.'] = 'Xem lần cuối vào lúc %s, %s.'; +$lang['Loading...'] = 'Đang tải...'; +$lang['No matching user found'] = 'Không tìm thấy người dùng nào phù hợp'; +$lang['No user selected of %d users'] = 'Không có người dùng nào được chọn trong số %d người dùng'; +$lang['No user selected, no action possible.'] = 'Không có người dùng nào được chọn nên không thể làm tiếp'; +$lang['Password updated'] = 'Mật khẩu đã được cập nhật'; +$lang['Registered on %s, %s.'] = 'Đã đăng ký vào lúc %s, %s.'; +$lang['Show %s users'] = 'Hiển thị %s người dùng'; +$lang['Showing %s to %s of %s users'] = 'Hiển thị %s đến %s trong %s người dùng'; +$lang['Update user'] = 'Cập nhật người dùng'; +$lang['User %s added'] = 'Người dùng %s đã được thêm'; +$lang['User %s updated'] = 'Người dùng %s đã được cập nhật'; +$lang['Users modified'] = 'Người dùng đã được chỉnh sửa'; +$lang['on the %d selected users'] = 'trên %d người dùng được chọn'; +$lang['Close user details'] = 'Đóng chi tiết người dùng'; +$lang['Open user details'] = 'Mở chi tiết người dùng'; +$lang['close'] = 'đóng'; +?> \ No newline at end of file diff --git a/sources/language/vi_VN/common.lang.php b/sources/language/vi_VN/common.lang.php new file mode 100644 index 0000000..8c41a3c --- /dev/null +++ b/sources/language/vi_VN/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/vi_VN/help/help_add_photos.html b/sources/language/vi_VN/help/help_add_photos.html new file mode 100644 index 0000000..5a3abb1 --- /dev/null +++ b/sources/language/vi_VN/help/help_add_photos.html @@ -0,0 +1,23 @@ +

          Một vài cách để thêm ảnh vào thư viện hình của bạn:

          + +
            +
          • Gởi trực tiếp từ trình duyệt của bạn là cách đơn giản và nhanh nhất. Nó phụ thuộc vào tính tương thích của trình duyệt và máy chủ web của bạn. + .Đối với một lượng ảnh lớn, hoặc trong trường hợp bạn sặp phải vấn đề nào đó thì bạn có thể thử những cách sau đây!
          • +
          + + + +
            +
          • pLoader là một ứng dụng desktop, được cài vào máy của bạn. Kéo và thả ảnh vào cửa sổ của pLoader, click vào "Gởi hình lên Piwigo" và để pLoader thực hiện công việc. Bạn có thể tìm thấy các ứng dụng desktop khác như WinToPiwigo hoặc Digikam để xuất plugin sang Piwigo.
          • +
          + + + +
          +
            +
          • Chuyển ảnh bằng FTP là cách được khuyến cáo nhất để thêm một số lượng lớn các bức ảnh với số lần click chuột ít nhất. Theo chỉ dẫn để chuẩn bị ảnh. + Cách gởi ảnh thông qua FTP này cho phép bạn điều khiển chính xác cơ cấu vật lý của những tấm ảnh trên máy chủ của bạn.
          • +
          + + +
          \ No newline at end of file diff --git a/sources/language/vi_VN/help/index.php b/sources/language/vi_VN/help/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/vi_VN/help/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/vi_VN/install.lang.php b/sources/language/vi_VN/install.lang.php new file mode 100644 index 0000000..cc457fc --- /dev/null +++ b/sources/language/vi_VN/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = 'Cần trợ giúp ? Hãy gởi thắc mắc của bạn tại diễn đàn của Piwigo.'; +$lang['Visitors will be able to contact site administrator with this mail'] = 'Khách tham quan có thể liên lạc với Quản trị thông qua địa chỉ thư điện tử này.'; +$lang['PHP 5 is required'] = 'Phải có PHP 5 '; +$lang['It appears your webhost is currently running PHP %s.'] = 'Do máy chủ web của bạn đang chạy phiên bản PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo sẽ thử chuyển cấu hình của bạn sang PHP 5 bằng cách tạo ra hoặc biên tập một file .htaccess.'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = 'Chú ý rằng bạn có thể tự thay đổi cấu hình và khởi động lại Piwigo sau đó.'; +$lang['Try to configure PHP 5'] = ' Thử cấu hình PHP 5'; +$lang['Sorry!'] = 'Rất tiếc!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo không thể cấu hình cho PHP 5.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = "Bạn nên yêu cầu hỗ trợ từ nhà cung cấp máy chủ và tìm hiểu xem nếu có thể tự chuyển được sang phiên bản PHP 5."; +$lang['Hope to see you back soon.'] = 'Hi vọng nhận được phản hồi của bạn sớm.'; +$lang['Congratulations, Piwigo installation is completed'] = 'Xin chúc mừng, việc cài đặt Piwigo đã hoàn tất'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = 'Một giải pháp khác là chép những dòng text trên và dán chúng vào tệp tin nằm vị trí "local/config/database.inc.php" (Cảnh báo: tệp tin database.inc.php chỉ có những nội dung trong phạm vi nhập text, không được thêm hàng hoặc ký tự nào khác)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = 'Việc tạo ra tệp tin cấu hình local/config/database.inc.php đã bị lỗi.'; +$lang['Download the config file'] = 'Tải tệp tin cấu hình xuống'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = 'Bạn có thể tải tệp tin cấu hình và upload nó vào thư mục local/config của thư mục cài đặt Piwigo.'; +$lang['Just another Piwigo gallery'] = 'Lại thêm một thư viện Piwigo nữa'; +$lang['Welcome to my photo gallery'] = 'Chào mừng bạn đến với thư viện hình của tôi'; +$lang['Welcome to your new installation of Piwigo!'] = 'Chào mừng bạn đến với bản cài đặt mới của Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = 'Đừng do dự thảo luận tại diễn đàn của chúng tôi để được trợ giúp: %s'; +$lang['localhost or other, supplied by your host provider'] = 'localhost hoặc tên máy chủ cấp bởi nhà cung cấp host'; +?> \ No newline at end of file diff --git a/sources/language/vi_VN/iso.txt b/sources/language/vi_VN/iso.txt new file mode 100644 index 0000000..0d193e2 --- /dev/null +++ b/sources/language/vi_VN/iso.txt @@ -0,0 +1 @@ +Tiếng Việt [VN] \ No newline at end of file diff --git a/sources/language/vi_VN/upgrade.lang.php b/sources/language/vi_VN/upgrade.lang.php new file mode 100644 index 0000000..7cc0fca --- /dev/null +++ b/sources/language/vi_VN/upgrade.lang.php @@ -0,0 +1,42 @@ +Tools>Maintenance] if you encounter any problem.'] = 'Chạy chế độ kiểm tra bảo trì trong mục [Administration>Tools>Maintenance] trong trường hợp bạn gặp lỗi.'; +$lang['Only administrator can run upgrade: please sign in below.'] = 'Chỉ có Quản trị mới có thể nâng cấp: vui lòng đăng nhập trước.'; +$lang['You do not have access rights to run upgrade'] = 'Bạn không có đủ quyền hạn để có thể nâng cấp hệ thống'; +$lang['All sub-albums of private albums become private'] = 'Tất cả các đề mục con của những đề mục riêng đều được gán thuộc tính riêng tư.'; +$lang['User permissions and group permissions have been erased'] = 'Sự cho phép người dùng và nhóm người dùng đã được xóa bỏ.'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = 'Chỉ có hình thu nhỏ đứng trước và địa chỉ email của webmaster mới được lưu lại từ cấu hình của phiên bản cũ.'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = 'Trang này này nhằm mục đích nâng cấp cơ sở dữ liệu từ phiên bản Piwigo cũ của bạn lên phiên bản mới. Phần hỗ trợ nâng cấp hiểu rằng bạn đang sử dụng phiên bản %s (hoặc tương đương).'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = 'Nhằm đề phòng, những plugins sau đây đã bị vô hiệu hóa. Bạn phải kiểm tra bản nâng cấp của plugin trước khi kích hoạt lại chúng:'; +$lang['In %s, before ?>, insert:'] = 'Trong %s, trước ?>, chèn vào:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = 'Như một biện pháp dự phòng lỗi, giao diện sau đây đã bị vô hiệu hóa. Bạn phải kiểm tra bản nâng cấp giao diện trước khi kích hoạt lại:'; + +?> \ No newline at end of file diff --git a/sources/language/vi_VN/vi_VN.jpg b/sources/language/vi_VN/vi_VN.jpg new file mode 100644 index 0000000..3f42912 Binary files /dev/null and b/sources/language/vi_VN/vi_VN.jpg differ diff --git a/sources/language/zh_CN/about.html b/sources/language/zh_CN/about.html new file mode 100644 index 0000000..ef4fb55 --- /dev/null +++ b/sources/language/zh_CN/about.html @@ -0,0 +1,23 @@ +

          此相册画廊基于Piwigo.

          + +

          Piwigo是一个网络相册画廊软件,她由一群活跃的社区用户和开发者创建。 +制作Piwigo的自定义扩展非常容易。使Piwigo更为锦上添花的是, +她还是一个完全免费和开源的项目。

          + +

          浏览Piwigo网站

          + +

          以下是Piwigo的中文翻译与维护人员(以字母排序): + +

          + .... 感谢他们!

          + +Last edited by maramail \ No newline at end of file diff --git a/sources/language/zh_CN/admin.lang.php b/sources/language/zh_CN/admin.lang.php new file mode 100644 index 0000000..86938ba --- /dev/null +++ b/sources/language/zh_CN/admin.lang.php @@ -0,0 +1,983 @@ +Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader代表Piwigo Uploader。pLoader可将您电脑里的图片上传到Piwigo图库里。'; +$lang['Guest Settings'] = '游客设置'; +$lang['Main Page'] = '主页'; +$lang['Photo Page'] = '图片页'; +$lang['Activate Navigation Bar'] = '启用导航条'; +$lang['Activate Navigation Thumbnails'] = '启用缩略图导航'; +$lang['Activate icon "%s"'] = '启用图标 "%s"'; +$lang['Photo Properties'] = '图片属性'; +$lang['Allow user customization'] = '允许用户自定义'; +$lang['Languages'] = '语言'; +$lang['Installed Languages'] = '已安装语言'; +$lang['Add New Language'] = '添加新语言'; +$lang['Language has been successfully installed'] = '语言已成功安装'; +$lang['Select:'] = '选择:'; +$lang['None'] = '无'; +$lang['Invert'] = '反选'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = '不能停用此主题,您至少需要使用一个主题。'; +$lang['Webmaster status is required.'] = '仅限站长。'; +$lang['Bound Theme'] = '绑定主题'; +$lang['Allow rating'] = '允许评分'; +$lang['Select at least one comment'] = '请至少选择一个评论'; +$lang['Active Plugins'] = '启用的插件'; +$lang['Inactive Plugins'] = '停用的插件'; +$lang['Missing Plugins'] = '丢失的插件'; +$lang['Uninstalled Plugins'] = '已卸载的插件'; +$lang['By %s'] = '由%s开发'; +$lang['Visit plugin site'] = '浏览插件网站'; +$lang['Active Languages'] = '启用的语言'; +$lang['Delete this language'] = '删除此种语言'; +$lang['Forbid this language to users'] = '对用户禁用此语言'; +$lang['Impossible to deactivate this language, first set another language as default.'] = '不能停用此语言,请先设置一个新的默认语言。'; +$lang['Impossible to deactivate this language, you need at least one language.'] = '不能停用此语言,您至少需要使用一个语言。'; +$lang['Inactive Languages'] = '停用的语言'; +$lang['Make this language available to users'] = '让用户可使用此语言'; +$lang['Set as default language for unregistered and new users'] = '设置为游客和新用户的默认语言'; +$lang['Add Photos'] = '添加图片'; +$lang['The following tag was deleted'] = '以下标签已删除'; +$lang['Miscellaneous'] = '其他'; +$lang['Virtual Links'] = '虚拟链接'; +$lang['There is no other language available.'] = '没有其他的可用语言。'; +$lang['There is no other plugin available.'] = '没有其他的可用插件。'; +$lang['There is no other theme available.'] = '没有其他的可用主题。'; +$lang['Add another set of photos'] = '添加另一组图片'; +$lang['By rank'] = '按顺序'; +$lang['Manual order'] = '手动排序'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo最新消息公告'; +$lang['Subscribe %s'] = '订阅%s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '以 %s 订阅Piwigo中国最新消息公告'; +$lang['Purge search history'] = '清除搜索的历史记录'; +$lang['Hide'] = '隐藏'; +$lang['Order of menubar items has been updated successfully.'] = '菜单项目排列顺序更新成功。'; +$lang['This theme was not designed to be directly activated'] = '此主题并非为直接启用而设计'; +$lang['Who can see this photo?'] = '图片对谁可见'; +$lang['Pending Comments'] = '待审核的评论'; +$lang['Menu Management'] = '菜单'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = '在您的 php.ini 文件,upload_max_filesize (%sB) 大于 post_max_size (%sB),您需要修改此设置'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif 扩展不可用,管理员应禁用 exif。'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = '上传文件超过了在 php.ini 文件里的 upload_max_filesize 的限制:%sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = '上传文件超过了在 php.ini 文件里的 post_max_size 的限制:%sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = '上传文件超过了在 HTML 表单指定的 MAX_FILE_SIZE 的限制'; +$lang['The uploaded file was only partially uploaded'] = '上传文件只上传了一部分'; +$lang['No file was uploaded'] = '没有文件被上传'; +$lang['Missing a temporary folder'] = '缺少临时文件夹'; +$lang['Failed to write file to disk'] = '文件写入失败'; +$lang['File upload stopped by extension'] = '文件上传被扩展中止'; +$lang['Unknown upload error'] = '未知上传错误'; +$lang['Error on file "%s" : %s'] = '文件"%s"上有错误:%s'; +$lang['%d of %d photos selected'] = '%d 张已选 / 总 %d 张图片'; +$lang['Action'] = '操作'; +$lang['Add a filter'] = '添加过滤器'; +$lang['Album photos associated to the following albums: %s'] = '图片已关联到以下相册:%s'; +$lang['Albums automatically sorted'] = '相册已自动排序'; +$lang['All %d photos are selected'] = '全部 %d 张图片已选中'; +$lang['Apply action'] = '执行操作'; +$lang['automatic order'] = '自动排序'; +$lang['Batch Manager'] = '批量管理'; +$lang['Choose an action'] = '选择一项操作'; +$lang['Delete orphan tags'] = '删除未被关联的标签'; +$lang['delete photo'] = '删除图片'; +$lang['Duplicates'] = '副本'; +$lang['include child albums'] = '包含子相册'; +$lang['manual order'] = '手动排序'; +$lang['No photo in the current set.'] = '当前集合没有图片。'; +$lang['No photo selected, %d photos in current set'] = '没有图片被选中,当前集合中有 %d 张图片'; +$lang['No photo selected, no action possible.'] = '没有图片被选中,不能执行任何操作。'; +$lang['on the %d selected photos'] = '于此 %d 张所选图片'; +$lang['Orphan tags deleted'] = '无关联图片的标签已被删除'; +$lang['Refresh photo set'] = '刷新图片集'; +$lang['Remove all filters'] = '删除所有过滤器'; +$lang['remove author'] = '删除作者'; +$lang['remove creation date'] = '删除创建日期'; +$lang['remove this filter'] = '删除此过滤器'; +$lang['remove title'] = '删除标题'; +$lang['Selection'] = '选择'; +$lang['Set author'] = '设置作者'; +$lang['Set creation date'] = '设置创建日期'; +$lang['Set title'] = '设置标题'; +$lang['The whole page'] = '整页'; +$lang['The whole set'] = '整个集合'; +$lang['Type here the author name'] = '在此输入作者名称'; +$lang['Type here the title'] = '在此输入标题'; +$lang['Week starts on'] = '星期起始于'; +$lang['You have %d orphan tags: %s.'] = '您有 %d 个无关联图片的标签:%s。'; +$lang['Remove from caddie'] = '从标记图片库中移除'; +$lang['Themes which need upgrade'] = '需更新的主题'; +$lang['Languages which need upgrade'] = '需要更新的语言'; +$lang['All themes are up to date.'] = '所有主题已更新。'; +$lang['All plugins are up to date.'] = '所有插件已更新。'; +$lang['All languages are up to date.'] = '所有语言已更新。'; +$lang['Visit theme site'] = '浏览主题网站'; +$lang['Visit language site'] = '浏览语言网站'; +$lang['New Version'] = '新版本'; + + + + +$lang['Obsolete Plugins'] = '过期的插件'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '警告!此插件并不适用于这个版本的Piwigo。'; +$lang['Do you want to activate anyway?'] = '您仍想启用吗?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = '【这个插件现在已经是Piwigo核心的一部分,请马上删除它!】'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = '错误:该插件的实际内容已丢失但记录中它已被安装,请马上卸载它。'; +$lang['new'] = '新的'; +$lang['No results'] = '没有结果'; +$lang['Searching...'] = '搜索中...'; +$lang['Type in a search term'] = '输入搜索关键字'; + + +$lang['display'] = '显示'; +$lang['Average rate'] = "平均分"; +$lang['Rate'] = '评分'; +$lang['Activate icon "new" next to albums and pictures'] = '启用相册和图片旁边的"new"图标'; +$lang['Add a criteria'] = '添加条件'; +$lang['Deactivate all'] = '停用所有'; +$lang['Default photos order'] = '默认图片排序'; +$lang['Restore'] = '恢复'; +$lang['Restore default configuration. You will lose your plugin settings!'] = '恢复默认的配置,您将失去您的插件的设置!'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = '您不能设置默认的图片排序,因为您已在本地配置文件里有自定义设置。'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = '您已在本地配置文件里定义了 $conf[\'order_by\'],此参数已不再使用了,请移除或者将其改名为 $conf[\'order_by_custom\'] !'; +$lang['Thumbnails generation in progress...'] = '正在生成缩略图...'; +$lang['Photos generation in progress...'] = '正在生成图片...'; +$lang['%s photos have been regenerated'] = '%s张图片已更新'; +$lang['%s photos can not be regenerated'] = '%s张图片不能被更新'; +$lang['Update in progress... Please wait.'] = '正在更新... 请稍等。'; +$lang['Ignore this update'] = '忽略此更新'; +$lang['Reset ignored updates'] = '重置已忽略的更新'; +$lang['Update All'] = '更新所有'; +$lang['ERROR'] = '错误'; +$lang['Update Complete'] = '更新完毕'; +$lang['Piwigo Update'] = 'Piwigo更新'; +$lang['Extensions Update'] = '扩展更新'; +$lang['All extensions are up to date.'] = '所有扩展已更新。'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = '以下插件可能与新版 Piwigo 不兼容:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = '以下主题可能与新版 Piwigo 不兼容:'; +$lang['I decide to update anyway'] = '仍决定更新'; +$lang['Update to Piwigo %s'] = '更新到 Piwigo %s'; +$lang['Two updates are available'] = '两项更新均可用'; +$lang['This is a minor update, with only bug corrections.'] = '这是一次次要更新,只是对bug的修正。'; +$lang['This is a major update, with new exciting features.'] = '这是一次重要更新,有着令人欣喜的新功能。'; +$lang['Some themes and plugins may be not available yet.'] = '一些主题和插件可能还不能使用。'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = '您可以直接更新到 Piwigo %s,不需先更新到 Piwigo %s(推荐)。'; +$lang['Save Template Directory'] = '保存模板目录'; +$lang['Dump Database'] = '转存数据库'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = '包括历史数据(警告:可能会超出服务器内存限制)'; +$lang['Unable to dump database.'] = '无法转存数据库。'; +$lang['Some upgrades are available for extensions.'] = '有已更新的扩展。'; +$lang['Ignore All'] = '忽略所有'; +$lang['Width'] = '宽度'; +$lang['Height'] = '高度'; +$lang['Follow Orientation'] = '按照方向'; +$lang['Graphics Library'] = '图形库'; +$lang['Show menubar'] = '显示菜单栏'; +$lang['Updates'] = '更新'; +$lang['Crop'] = '裁切'; +$lang['... or '] = '...或 '; +$lang['Create'] = '创建'; +$lang['Start Upload'] = '开始上传'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = '您正在使用Flash上传方式,若有问题,请尝试网页上传。'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = '您正在使用网页上传方式,若有问题,请尝试Flash上传。'; +$lang['Maximum file size: %sB.'] = '文件最大体积:%sB。'; +$lang['Allowed file types: %s.'] = '允许的文件类型:%s。'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = '最大的分辨率约:%dM 像素 (即 %dx%d 像素)。'; +$lang['Manage Permissions'] = '管理权限'; +$lang['Learn more'] = '了解更多'; +$lang['Photo %s of %s'] = 'Photo %s of %s'; +$lang['show details'] = '显示详情'; +$lang['hide details'] = '隐藏详情'; +$lang['Merge tags'] = '合并标签'; +$lang['Select the destination tag'] = '选择目标标签'; +$lang['(this tag will be deleted)'] = '(此标签将被删除)'; +$lang['Confirm merge'] = '确认合并'; +$lang['Merge selected tags'] = '合并选中的标签'; +$lang['No destination tag selected'] = '没有选中的目的标签'; +$lang['Tags %s merged into tag %s'] = '标签%s已并入标签%s'; +$lang['Select at least two tags for merging'] = '请至少选择2个标签以合并'; +$lang['Select an album'] = '选择一个相册'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = '默认情况下,Piwigo将基于图片的HD(高清)版本为图片创建一个新的网页尺寸。'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = '若无高清图片且当前网页尺寸的图片大于重置尺寸,Piwigo会将其视为高清图片并用它生成较小尺寸的网页尺寸图片。'; +$lang['An error has occured during upgrade.'] = '在升级过程中出现了一个错误。'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
          Click here to show log error.'] = '在解压时出现了一个错误。请检查您 piwigo 安装文件的读写权限。
          点此查看错误日志'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo无法从服务器中获取升级文件'; +$lang['%s has been successfully updated.'] = '%s更新成功。'; +$lang['Activate comments'] = '启用评论'; +$lang['Add tags'] = '添加标签'; +$lang['Add to caddie'] = '添加到标记图片库'; +$lang['Default comments order'] = '默认评论顺序'; +$lang['Last import'] = '最后导入'; +$lang['Original Size'] = '原始尺寸'; +$lang['Photo name'] = '图片名称'; +$lang['Predefined filter'] = '预定义过滤器'; +$lang['Resize after upload'] = '上传后修改尺寸'; +$lang['Send connection settings by email'] = '用邮件发送注册信息'; +$lang['The original image quality must be a number between %d and %d'] = '源图片质量必须是在%d和%d之间的数字'; +$lang['The original maximum height must be a number between %d and %d'] = '源图片最大高度必须是在%d和%d之间的数字'; +$lang['The original maximum width must be a number between %d and %d'] = '源图片最大宽度必须是在%d和%d之间的数字'; +$lang['With no album'] = '没有相册'; +$lang['With no tag'] = '没有标签'; +$lang['With no virtual album'] = '没有虚拟相册'; +$lang['Zoom'] = '缩放'; +$lang['A locked gallery is only visible to administrators'] = '被锁定的图库只对管理员可见'; +$lang['administrators'] = '管理员'; +$lang['Center of interest'] = '兴趣中心'; +$lang['Gallery unlocked'] = '图库已解锁'; +$lang['modified'] = '已修改'; +$lang['Move to album'] = '移动到相册'; +$lang['Not cropped correctly?'] = '剪裁不正确?'; +$lang['Notify administrators when a comment is'] = '通知管理员,当一个评论 '; +$lang['pending validation'] = '待审核'; +$lang['registered users'] = '注册用户'; +$lang['Save visits in history for'] = '保存访问的历史记录for'; +$lang['simple visitors'] = '单个访问者'; +$lang['This album contains %d photos, added between %s and %s.'] = '此相册包含%d张图片,添加于%s和%s之间。'; +$lang['This album contains %d photos, added on %s.'] = '此相册包含%d张图片,添加于%s。'; +$lang['This album contains no photo.'] = '此相册中没有图片。'; +$lang['Unlock gallery'] = '解锁图库'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Piwigo Android版 使您能够从Android手机或平板电脑连接到您的Piwigo图库,方便您随时随地创建相册和上传图片。'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'Piwigo iOS版 使您能够从iPhone、iPad或iPod Touch连接到您的Piwigo图库,方便您随时随地创建相册和上传图片。'; +$lang['Applications'] = '应用程序'; +$lang['apply automatic sort order'] = '应用自动排序'; +$lang['Automatic sort order'] = '自动排序'; +$lang['Available on'] = '可用在'; +$lang['Available versions for'] = '可用版本'; +$lang['cancel manual order'] = '取消手动排序'; +$lang['Cancel'] = '取消'; +$lang['List'] = '列表'; +$lang['Piwigo for Android'] = 'Piwigo Android版'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'Piwigo iOS版 (iPhone, iPad, iPod Touch)'; +$lang['Save manual order'] = '保存手动排序'; +$lang['Web Form'] = '网页表单'; +$lang['You can activate only one mobile theme.'] = '您只能启用一套手机版主题'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u 用户因属于有权限的组,所以自动拥有权限。'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe公司的Photoshop Lightroom是一款图片处理软件,用于管理大量的数字图像和后期制作工作。'; +$lang['any visitor can see this album'] = '任何访问者都可查看此相册'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture是Mac上一个功能强大的图片管理、编辑工具。'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture用于在iPhoto上进行专业的图片处理。'; +$lang['Delete multiple size images'] = '删除多尺寸图片'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam是Linux,Windows和MacOSX平台上的免费高级数码照片管理软件。'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam可以查看,管理,编辑,增强,组织,标记和共享图片。'; +$lang['Features include gallery browsing, album creation and photo upload.'] = '其特点包括浏览图库,创建相册和上传图片。'; +$lang['Generate multiple size images'] = '生成多尺寸图片'; +$lang['Groups and users'] = '组和用户'; +$lang['include photos with lower privacy level'] = '包括隐私级别更低的图片'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto是MacOSX上的默认照片管理器。Piwigo export插件可以让您创建新的相册,并将您的图片从iPhoto直接导出到您的Piwigo图库。'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = '在您的Linux上,只需用安装软件包管理器安装Shotwell并启用Piwigo的发布选项。'; +$lang['Permission granted for groups'] = '为组授予的权限'; +$lang['Permission granted for users'] = '为用户授予的权限'; +$lang['Piwigo export plugin for Aperture'] = 'Piwigo export插件 for Aperture'; +$lang['Piwigo export plugin for iPhoto'] = 'Piwigo export插件 for iPhoto'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo publish插件 for digiKam'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo publish插件 for Lightroom'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo publish插件 for Shotwell'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid (Android RemoteGallery客户端) 是一个开源(GPL v3)的Android平台Piwigo客户端。'; +$lang['Select groups...'] = '选择组'; +$lang['Select users...'] = '选择用户...'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell是一个运行在Linux上的开源数码照片管理软件。它是Ubuntu和Fedora的默认照片管理软件。'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo export插件允许您创建相册和导出图片。'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo publish插件允许您从Lightroom直接导出和同步图片到您的Piwigo图库。'; +$lang['There is no group in this gallery.'] = '这个图库中还没有组。'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = '只要安装digiKam和Kipi插件,就可以从digiKam中导出图片到Piwigo。'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = '需要登录且有适当的权限才能查看这个相册'; +$lang['Apply watermark if height is bigger than'] = '如果高度大于此值则添加水印:'; +$lang['Apply watermark if width is bigger than'] = '如果宽度大于此值则添加水印:'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = '默认情况下,兴趣中心置于图片的中心。'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = '对于剪裁过的图片尺寸,如“正方形”,Piwigo将尽可能把兴趣中心包含在内。'; +$lang['No group is permitted to see this private album'] = '没有组被允许查看此非公开相册'; +$lang['Opacity'] = '透明度'; +$lang['Permission management'] = '权限管理'; +$lang['Photo sizes with crop'] = '图片剪裁尺寸'; +$lang['Select a file'] = '选择文件'; +$lang['Select a zone with your mouse to define a new center of interest.'] = '用鼠标选择一个区域,以定义一个新的兴趣中心。'; +$lang['The center of interest is the most meaningful zone in the photo.'] = '兴趣中心是图片中最有意义的区域。'; +$lang['X Position'] = 'X轴位置'; +$lang['X Repeat'] = 'X轴平铺'; +$lang['Y Position'] = 'Y轴位置'; +$lang['add a new watermark'] = '添加新水印'; +$lang['bottom left corner'] = '左下角'; +$lang['bottom right corner'] = '右下角'; +$lang['custom'] = '自定义'; +$lang['middle'] = '中'; +$lang['top left corner'] = '左上角'; +$lang['top right corner'] = '右上角'; +$lang['Multiple Size'] = '多尺寸'; +$lang['%d days'] = '%d天'; +$lang['%d day'] = '%d天'; +$lang['%d hours'] = '%d小时'; +$lang['%d hour'] = '%d小时'; +$lang['%d minutes'] = '%d分'; +$lang['%d minute'] = '%d分'; +$lang['%d months'] = '%d个月'; +$lang['%d month'] = '%d个月'; +$lang['%d seconds'] = '%d秒'; +$lang['%d second'] = '%d秒'; +$lang['%d years'] = '%d年'; +$lang['%d year'] = '%d年'; +$lang['%s ago'] = '%s以前'; +$lang['%s in the future'] = '%s in the future'; +$lang['Added by %s'] = '由%s添加'; +$lang['Numeric identifier : %d'] = '数字ID:%d'; +$lang['Original file : %s'] = '原文件:%s'; +$lang['Posted %s on %s'] = 'Posted %s on %s'; +$lang['Rated %d times, score : %.2f'] = '评分:%d次,得分:%.2f'; +$lang['Sharpen'] = '锐化'; +$lang['Visited %d times'] = '访问数:%d'; +$lang['Watermark'] = '水印'; +$lang['%d weeks'] = '%d周'; +$lang['%d week'] = '%d周'; +$lang['Edit photo'] = '编辑图片'; +$lang['create a new site'] = '创建一个新站点'; +$lang['No order field selected'] = '未选择排序字段'; +$lang['Duplicate selected tags'] = '复制选中的标签'; +$lang['Name of the duplicate'] = '副本的名称'; +$lang['Source tag'] = '源标签'; +$lang['Tag "%s" is now a duplicate of "%s"'] = '标签 "%s" 已是标签 "%s" 的一个副本'; +$lang['Landscape'] = '风景(宽>高)'; +$lang['Manage photos'] = '管理图片'; +$lang['Minimum height'] = '最小高度'; +$lang['Minimum width'] = '最小宽度'; +$lang['Number of albums per page'] = '每页相册数'; +$lang['Panorama'] = '全景图'; +$lang['Portrait'] = '人像(高>宽)'; +$lang['View in gallery'] = '在图库中查看'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = '所安装的 %s [%s] 版本跟所要求的版本 [%s] 不兼容'; +$lang['Ratio'] = '比例'; +$lang['between %.2f and %.2f'] = '在 %.2f 与 %.2f 之间'; +$lang['between %d and %d pixels'] = '在 %d 与 %d 像素之间'; +$lang['This group will be set to default'] = '该组将用作默认组'; +$lang['This group will be unset to default'] = '该组将不再用作默认组'; +$lang['No members to manage'] = '没有可管理的用户'; +$lang['Please select at least two groups'] = '请至少选择两个组'; +$lang['Rename'] = '重命名'; +$lang['Type here the name of the new group'] = '在此输入新组的名称'; +$lang['Duplicate'] = '复制'; +$lang['Manage the members'] = '管理用户'; +$lang['Merge selected groups'] = '合并所选组'; +$lang['No group selected, no action possible.'] = '没有组被选中,不能执行任何操作。'; +$lang['Purge user cache'] = '清除用户缓存'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = '相片的分辨率将会被减少到 %dx%d 象素.'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = '由于使用 GD 图形库,因此禁用上传后调整大小'; +$lang['Select at least one tag'] = '至少选择一个标签'; +$lang['Basic settings'] = '基本设置'; +$lang['General'] = '能用'; +$lang['Mail theme'] = '邮件主题'; +$lang['No user selected of %d users'] = '%d 个用户中无用户被选中'; +$lang['No user selected, no action possible.'] = '无用户被选中,无法执行。'; +$lang['Password updated'] = '密码已更新'; +$lang['Registered on %s, %s.'] = '注册于 %s, %s。'; +$lang['Show %s users'] = '显示 %s 个用户'; +$lang['Showing %s to %s of %s users'] = '显示第 %s 至 %s 个用户,共 %s 个用户'; +$lang['Update user'] = '更新用户'; +$lang['User %s added'] = '用户 %s 已添加'; +$lang['User %s updated'] = '用户 %s 已更新'; +$lang['Users modified'] = '用户已修改'; +$lang['on the %d selected users'] = '于 %d 个已选中的用户'; +$lang['All %d users are selected'] = '已选中全部 %d 个用户'; +$lang['Change password'] = '更改密码'; +$lang['Change username'] = '更改用户名'; +$lang['Last visit on %s, %s.'] = '于 %s, %s 的最后访问。'; +$lang['Loading...'] = '加载中…'; +$lang['No matching user found'] = '未发现匹配的用户'; +$lang['%d of %d users selected'] = '已选中用户数/总数:%d / %d'; +$lang['(filtered from %s total users)'] = '(已从 %s 个总用户中过滤)'; +$lang['Close user details'] = '关闭用户明细'; +$lang['Open user details'] = '打开用户明细'; +$lang['close'] = '关闭'; +?> \ No newline at end of file diff --git a/sources/language/zh_CN/common.lang.php b/sources/language/zh_CN/common.lang.php new file mode 100644 index 0000000..fd0f3d0 --- /dev/null +++ b/sources/language/zh_CN/common.lang.php @@ -0,0 +1,424 @@ + \ No newline at end of file diff --git a/sources/language/zh_CN/help/cat_modify.html b/sources/language/zh_CN/help/cat_modify.html new file mode 100755 index 0000000..0c3b07b --- /dev/null +++ b/sources/language/zh_CN/help/cat_modify.html @@ -0,0 +1,126 @@ +

          编辑相册

          + +

          信息

          + +
            + +
          • 名字: 重命名相册 (物理路径相册可以进行虚拟重命名).
          • + +
          • 描述: 简短的文字来介绍相册内容, +  这个文本将显示在相册列表页面的缩略图下面。
          • + +
          + +

          移动

          + +

          如果是虚拟的相册,你可以移动它。移动相册意味着改变其父相册。

          + +

          选项

          + +
            + +
          • 访问类型: 权限管理. 如果一个相册变为私有, 那么它的子相册也变为私有. +如果一个相册变为公共,那么它的父相册也变为公共相册.
          • + +
          • 上锁: 相册和其子相册被临时禁用维护。
          • + +
          • 评论: 授权用户是否可评论相册中的照片.
          • + +
          + +

          你可以在"属性"管理页面上管理这些选项 ( 评论, 上锁, +公共/私有, Representative 只有管理员可见 » Albums » Properties).

          + +

          排序

          + +

          使用默认的图像排序顺序。

          + +

          指出这种排序顺序是否也将应用到子相册。

          + +

          指定这个相册的排序标准

          +
            +
          • 创建日期: 图片拍摄日期.
          • +
          • 发布日期: 同步(到画廊的)日期
          • +
          • 平均得分 (*): 用户对图片的评分会影响平均得分.
          • +
          • 访问量 (*): 访问次数会影响最高访问量的排名.
          • +
          • 文件名: 属性字段中的名字
          • +
          • Id: 内部Id (Id是递增的).
          • +
          +

          (*)注意: 务必自己测试这些排序,因为它们可能获得意想不到的结果。

          + + +

          Representant

          + +

          The album representative is the thumbnail displayed on the main page (category.php) to represent +the album when +it contains only sub-albums and no direct photo (just as the root album).

          +photo of a album :

          + +
            + +
          • Photo page: one of the action buttons let you set the current photo as the representative for the + displayed album. This button is available only for administrators.
          • + +
          • Modify informations about a photo in + administration. This screen can be reached from picture.php or Batch + management in unit mode. See the help of this screen for + details.
          • + +
          • Administration » Albums » Properties, + Representative. See the help of this screen for details.
          • + +
          • Edit album (the present screen).
          • + +
          + +

          The choice of a representative depends on the +allow_random_representative configuration parameter (see include/config_default.inc.php).

          + +

          In default mode (allow_random_representative set to false), +each album containing at least one element is represented by a fixed +element. Once set (at album creation), the representative changes only +when an administrator ask for it. If the representative is not appropriate, +you can ask to Find a new representant by random.

          + +

          If the allow_random_representative configuration parameter is +set to true, a category containing photos may have no fixed +representant. Just use Delete representant button.

          + +

          If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to Modify +informations about a photo screen. The only option on the current screen +is the Delete representant button.

          + +

          Link all album photos to a new album

          + +
            + +
          • Virtual album name: Name of the new album to be created, +all photos of the current category will be linked to the new one.
          • + +
          • Parent album: Where the new album will be, +leave empty to create it at root.
          • + +
          + +

          Link all album photos to existing albums

          + +
            + +
          • Albums: Choose the destination album.
          • + +
          + +

          Send an information email to group members

          + +
            + +
          • Group: recipients group
          • + +
          • Mail content: Free text to send to them.
          • + +
          \ No newline at end of file diff --git a/sources/language/zh_CN/help/cat_move.html b/sources/language/zh_CN/help/cat_move.html new file mode 100644 index 0000000..c9b069a --- /dev/null +++ b/sources/language/zh_CN/help/cat_move.html @@ -0,0 +1,14 @@ +

          移动虚拟相册集

          + +

          虚拟相册集可以拥有上一级相册

          + +

          移动虚拟相册集

          + +

          选择你你将要移动的虚拟相册集。 + 若列表中无可选项,则说明您目前还未创建任何虚拟相册集。

          + +

          新的上级相册

          + +

          选择一个新的上级相册(虚拟或实际的) + 若您没有选择任何一个上级相册集,被选中的虚拟相册集将会被移动到根目录下。 + 一个相册集无法被移动到本集当中或其子集当中去

          \ No newline at end of file diff --git a/sources/language/zh_CN/help/cat_options.html b/sources/language/zh_CN/help/cat_options.html new file mode 100644 index 0000000..e2f3537 --- /dev/null +++ b/sources/language/zh_CN/help/cat_options.html @@ -0,0 +1,22 @@ +

          相册选项

          + +

          一次性对多个相册进行选项管理

          + +
          + +
          评论
          +
          若相册已激活评论功能,图片将可以接收来自访问者的评论。
          + +
          锁定
          +
          锁定的相册将暂时无法维护。仅有管理员可以浏览相册。
          + +
          公开与隐私
          +
          若相册为隐私相册,仅授权访问的用户或组可以浏览。
          + +
          封面图片
          +
          本选项仅在您将allow_random_representative (详情请见include/config_defaults.inc.php)中的设置参数调整为 +true后,方可进行管理。 + 每个相册均可以随机将目录中的图片作为封面,或您也可以自行设定将某个图片作 +为该目录的封面。
          +
          \ No newline at end of file diff --git a/sources/language/zh_CN/help/cat_perm.html b/sources/language/zh_CN/help/cat_perm.html new file mode 100644 index 0000000..bf09549 --- /dev/null +++ b/sources/language/zh_CN/help/cat_perm.html @@ -0,0 +1,11 @@ +

          编辑相册许可

          + +

          本页仅对个人分类有效。您可以对个人或组用户进行分类访问授权。

          + +

          + +

          可以授权或拒绝组用户对当前分类的访问。通过修改组的授权,这些组内的成员将被拒绝或授权访问该分类。

          + +

          + +

          可以拒绝或允许个体用户连接到分类。访问异常的组内用户可以被拒绝访问。

          diff --git a/sources/language/zh_CN/help/configuration.html b/sources/language/zh_CN/help/configuration.html new file mode 100644 index 0000000..f720009 --- /dev/null +++ b/sources/language/zh_CN/help/configuration.html @@ -0,0 +1,103 @@ +

          配置

          + +

          这个页面可让管理员做基本的配置。确实,这个页面所显示的简单的配置参数已足够大多数的管理员使用,如果你想看到更多的(和高级的)配置参数,请查阅此文件 include/config_default.inc.php.

          + +

          这个页面分成几个章节,以主题来重组配置参数。

          + + +

          主要

          +
            +
          • 相册标题: 用在RSS和电子邮件通知里。
          • + +
          • 页面横幅: 在每个公共页面顶部显示。
          • + +
          • 相册地址: 用在RSS通知里。
          • + +
          • 锁定相册: 在维护时锁定所有相册,只有管理员能访问。
          • + +
          • 等级: 开启图片的等级功能。
          • + +
          • 客人可作等级投票: 即使没注册的用户也可以对图片进行等级投票。
          • + +
          • 允许用户注册: 注册是免费的。
          • + +
          • 用户注册时必须填写邮件地址: 在注册或者更新个人资料时将会对邮件地址进行检测,除了在管理员后台直接的操作之外。
          • + +
          • 当前新用户注册时发邮件给管理员: 管理员将会收到每个注册通知。
          • + +
          + +

          历史

          + +

          在访问category.phppicture.php 页面时,将会保存到 + 历史 表。

          + +

          访问记录将会显示在 管理员, 特殊, 历史.

          + +
            +
          • 保存访客的页面记录: 访客访问过的页面将会被记录。
          • + +
          • 保存用户的页面记录: 注册用户访问过的页面将会被记录。
          • + +
          • 保存管理员的页面记录: 管理员访问过的页面将会被记录。
          • + +
          + +

          评论

          +
            + +
          • 全部皆能评论: 即使没注册的访客也能发表评论。
          • + +
          • 每页显示的评论数。
          • + +
          • 审核Validation: 管理员在评论正式发布前需要先审核,审核用户评论的页面是 管理员, 相片, + 评论.
          • + +
          • 当有评论时即发邮件通知管理员:当用户发表了有效的评论后,即发送邮件通知管理员。
          • + +
          • 当有评论需要审核时发邮件通知管理员:当用户发表了需要审核的评论后,即发送邮件通知管理员。 + +审核用户评论的页面是 管理员, 相片, 评论.
          • + +
          + +

          上传

          +
            +
          • 每次都显示上传链接: 如果存在可以上传的类别,添加的链接将在每个类别里显示。
          • +
          • 用户访问级别的上传: 允许限制用户上传
          • +
          • 当相片上传时发邮件通知管理员: 每个用户上传相片后管理员将收到邮件通知。
          • +
          + +

          默认显示

          + +

          在这里你可以为未登录的客人改变默认的显示设置,一旦他们登录后,用户自己的设置将覆盖这些默认设置 +(在自定义里修改).

          + +

          每个用户都可以更改自己的显示设置,但需要注意这个页面管理员, +身份验证, 用户, 在这里你可以更改用户列表里的用户的显示设置。

          + +
            + +
          • 语言: 主要考虑的只是 Piwigo 的标签。类别名称、相片名称和所有注解说明均不被本地化。
          • + +
          • 每行相片数量
          • + +
          • 每页的行数
          • + +
          • 主题界面
          • + +
          • 最近的时间段: 以天为单位。在这个时间段内的相片将被显示,必须要大于1天。
          • + +
          • 展开所有类别: 在菜单里以默认方式展开所有类别 注意: 这个操作是很消耗资源的,同时如果你的类别树下包含了很多子类别,将会产生一个巨大的菜单。
          • + +
          • 显示评论的数量: 在缩略图页面显示每个相片的评论。很消耗资源。
          • + +
          • 显示点击数: 只有在高级配置参数 $conf['show_nb_hits'] = true; 时,才会在缩略图页面里的相片缩略图下显示点击数。
            + 注意:此选项默认为 false 。
          • + +
          • 相片的最大宽度: 最大宽度的显示。如果相片大于此设置,其将被调整大小以显示。如果你考虑这个选项,你最好考虑修改你的相片以代替之。
          • + +
          • 相片最大高度: 与前一项说明相同
          • + +
          + diff --git a/sources/language/zh_CN/help/extend_for_templates.html b/sources/language/zh_CN/help/extend_for_templates.html new file mode 100755 index 0000000..a14b491 --- /dev/null +++ b/sources/language/zh_CN/help/extend_for_templates.html @@ -0,0 +1,51 @@ +

          模板扩展配置

          + +

          关于

          +

          Your Piwigo gallery can be customised by replacing existing template files with customised versions. For example, the default header template (header.tpl) can be replaced by a customised header template (my-header.tpl). After submitting the changes to the database the gallery will display the customised header instead of the original header.
          +Template extensions are a powerful way to create customised themes for both new and advanced users. Used together with the LocalFiles Editor you can create your own child themes.

          + +

          原始模板

          +

          A theme contains a number of template files that make up the gallery pages. These are the original templates.

          + +

          Optional URL Keyword

          +

          These are words found in the gallery URL after the module name. They can also be active permalinks (See the permalink documentation for more information). WARNING: if the same original template and same keyword is used on more than one customised template only the last one is active.

          + +

          Bound Theme

          +

          The bound theme is the theme from which the template files are being replaced.

          + +

          Where are the original templates?

          +

          Original templates are the template files shipped with each theme. These are saved in /themes/default/template (or themes//template). These template files should not be edited in place as changes will be lost with theme upgrades.
          +Supported original templates include:

          +
            +
          • index.tpl
          • +
          • mainpage_categories.tpl and/or thumbnails.tpl
          • +
          • menubar.tpl
          • +
          • header.tpl and/or footer.tpl
          • +
          • picture_content.tpl and/or picture.tpl
          • + +
          • profile.tpl and/or profile_content.tpl
          • +
          • tags.tpl
          • +
          • upload.tpl
          • +
          • about.tpl
          • +
          • popuphelp.tpl
          • +
          • search.tpl and/or search_rules.tpl
          • +
          • nbm.tpl and/or notification.tpl
          • +
          • identification.tpl and/or register.tpl
          • +
          • redirect.tpl
          • +
          +

          Saving customised templates

          +

          Customised templates should be saved in the template-extension folder or subfolders. For example, /template-extension/my-default/header.tpl (or /template-extension//header.tpl) Template files can have any name with a .tpl extension. The template files in subfolders appear in the Template configuration screen as available custom templates.

          +

          Activating customised templates

          +

          Select the original template to replace. Optionally choose a URL keyword to ensure that the customised template is only shown on pages with that keyword. Select a bound theme and the changes will be effective on that theme. Submit the changes to the database.

          +

          Deactivating customised templates

          +

          Unselect the original template and submit the changes to the database.
          +Delete the customised template files from the template-extension folder.

          + + +

          Warnings

          +
            +
          • The original template must be the original template otherwise you may have unpredictable results.
          • +
          • If the same original template and same URL keyword is used on more than one customised template only the last one is active.
          • +
          • Distributed sample template files are for test purposes only. Do not edit them. Create your own ones or copy existing theme template files into /template-extension//
          • +
          • When the customised template is deleted the original template file is immediately reactivated.
          • +
          \ No newline at end of file diff --git a/sources/language/zh_CN/help/group_list.html b/sources/language/zh_CN/help/group_list.html new file mode 100644 index 0000000..4d74a8e --- /dev/null +++ b/sources/language/zh_CN/help/group_list.html @@ -0,0 +1,22 @@ +

          组列表

          + +

          可以在此维护组

          + +

          添加组

          + +

          管理员有权添加组

          + +

          组列表

          + +

          于以下元素,该组列表允许:

          + + +
            +
          • 访问会员列表
          • +
          • 访问管理许可证页面
          • +
          • 删除组(需要确认)
          • +
          • 切换为“默认”状态(需要确认)
          • +
          + +

          默认组

          +

          一旦有新用户注册或有新的管理员账户创建,均会被自动加入到这个默认的组里来

          \ No newline at end of file diff --git a/sources/language/zh_CN/help/help_add_photos.html b/sources/language/zh_CN/help/help_add_photos.html new file mode 100644 index 0000000..2b9a974 --- /dev/null +++ b/sources/language/zh_CN/help/help_add_photos.html @@ -0,0 +1,21 @@ +

          有几个方法可以把相片添加到您的画廊:

          + +
            +
          • 使用浏览器直接上传 是最简单直接的方法。这要看您浏览器和服务器的性能。如果您要上传大批量的图片,或者上传过程中遇到了一些问题,那么可以尝试另外的一些方法。
          • +
          + + + +
            +
          • pLoader 是一个桌面应用程序,需安装到您的电脑里。您只需将相片拖拉到 pLoader 窗口里,点击 "上传到 Piwigo" ,然后就让 pLoader 为您做剩下的工作吧。您也可以在 Piwigo 网站里找到其他的桌面应用软件,如 WinToPiwigo 或者 Digikam 导出插件.
          • +
          + + + +
          +
            +
          • FTP 上传 是非常推荐的方法,其可以一次性上传大批量的相片。以下向导将教您如何准备您的相片。使用 FTP 方式,您可以很精确地控制您服务器上的相片目录的物理结构。
          • +
          + + +
          \ No newline at end of file diff --git a/sources/language/zh_CN/help/help_groups.html b/sources/language/zh_CN/help/help_groups.html new file mode 100644 index 0000000..8b78eb3 --- /dev/null +++ b/sources/language/zh_CN/help/help_groups.html @@ -0,0 +1,6 @@ +

          组是设置一个用户列表权限的便捷方式。

          + +

          管理员 » 身份验证 » 组 创建组和在 管理员 » 身份验证 » 用户 里创建组里的用户。

          + +

          一个用户可同时存在于几个组里。授权的优先级大于禁止 : 如果用户 "jack" 同时属于 "family" 和 "friends" 组, 只有 "family" 组可以看到类别 "Christmas 2003" 那么 "jack" 就可以看到 "Christmas 2003".

          + diff --git a/sources/language/zh_CN/help/help_misc.html b/sources/language/zh_CN/help/help_misc.html new file mode 100644 index 0000000..b7f89e8 --- /dev/null +++ b/sources/language/zh_CN/help/help_misc.html @@ -0,0 +1,4 @@ +

          当你建立了相册后,就可以通过 管理员 » 设置 » 默认显示 修改默认的显示属性。 每个新注册的用户将使用这些默认的设置。

          + +

          如果你有其他问题,Piwigo 社区将欢迎你到 它的论坛

          + diff --git a/sources/language/zh_CN/help/help_permissions.html b/sources/language/zh_CN/help/help_permissions.html new file mode 100644 index 0000000..b7bbe60 --- /dev/null +++ b/sources/language/zh_CN/help/help_permissions.html @@ -0,0 +1,50 @@ +
          +相片的权限 + +

          每张相片都有一个 私有级别 (一个锁). 每个用户也有一个私有级别 (一个钥匙). 共有5个私有级别:

          +
            +
          1. 没有
          2. +
          3. 联系人
          4. +
          5. 朋友 (比联系人高级)
          6. +
          7. 家庭 (比朋友高级)
          8. +
          9. 管理员 (比任何级别都要高)
          10. +
          + +

          高级别的拥有低级别的权限。一个拥有权限的用户,其私有级别越高,所能看到的相片也越多。

          + +

          例如,如果这张相片 "peter_wedding-0024.jpg" 拥有 "家庭" 的私有级别, 那么:

          +
            +
          • Peter (是一个 "管理员") 将可以看到此相片,因为 "管理员" 能看到所有相片
          • +
          • Beth (是一个 "家庭" 成员) 将可以看到此相片
          • +
          • Mary (只是一个 "朋友") 将不能看到此相片
          • +
          + +

          如果一个用户没有看到类别内容的权限,那么他也不能看到自己的类别,甚至是它的标题。同样的规则也适用于标签。

          + +

          您可以在 管理员 » 用户 » 管理 的界面里为用户设置私有级别。

          + +
          + +
          +类别的权限 + +

          如果私有级别不能满足您的需要,您也可以设置类别上的权限以管理用户或组。您可以同时设置相片和类别上的权限,这并没有冲突。

          + +

          如果您想禁止类别的访问,可以改变类别访问类型为 "私有"

          + +

          您可以通过 +(管理员 » 类别 » 管理 » 修改) 将某个类别设置为私有,或者通过设置选项 +(管理员 » 类别 » 属性 » 公有 / 私有) 设置全局的类别属性.

          + +

          当类别被设置为私有时,您可以通过以下3个界面对用户组和用户的权限进行管理:

          + +
            + +
          • 管理员 » 用户 » 管理 » 权限设置 (每个用户一个链接)
          • + +
          • 管理员 » 用户 » 组 » 权限设置 (每个组一个链接)
          • + +
          • 管理员 » 类别 » 管理 » 权限设置 (每个类别一个链接)
          • + +
          +
          diff --git a/sources/language/zh_CN/help/help_virtual_links.html b/sources/language/zh_CN/help/help_virtual_links.html new file mode 100644 index 0000000..214e71f --- /dev/null +++ b/sources/language/zh_CN/help/help_virtual_links.html @@ -0,0 +1,6 @@ +

          在类别里显示的相片相当于文件夹里的文件。

          + +

          你也可以将一张图片放在多个类别里显示,在你的网站服务器里没有重复的文件。在图片修改界面可以将图片关联到任何类别里 (任何一个管理员都可以从相册进入到图片修改页面).

          + +

          虚拟类别就建立在这个概念上 : 他们并没有对应的文件夹。可以通过 管理员 » 类 » 管理 创建虚拟类别。

          + diff --git a/sources/language/zh_CN/help/history.html b/sources/language/zh_CN/help/history.html new file mode 100755 index 0000000..d1a7114 --- /dev/null +++ b/sources/language/zh_CN/help/history.html @@ -0,0 +1,22 @@ +

          历史

          + + + +

          统计

          +
            +

            如果您选择记录 (index.phppicture.php) 的访问量,您可以在这个标签页查看数据。

            +
          • 全局统计: 每年的访问量。
          • +
          • 按年统计: 选中年份中每个月的访问量。
          • +
          • 按月统计、:选中月份中每天的访问量。
          • +
          • 按日统计: 选中日期每小时的访问量。
          • +
          + +

          搜索

          +
            +

            如果您选择记录 (index.phppicture.php) 的访问量,您可以通过不同的筛选方式查看统计细节。

            +
          • 按日期筛选:选择搜索开始的和结束的时间范围。、
          • +
          • 按元素类型筛选: 选择需要统计的元素类型。
          • +
          • 按用户筛选:选择需要统计的用户。
          • +
          • 按图像定义筛选: 选择需要统计的图像定义。
          • +
          • 按文件名筛选: 选择需要统计的文件名。
          • +
          \ No newline at end of file diff --git a/sources/language/zh_CN/help/maintenance.html b/sources/language/zh_CN/help/maintenance.html new file mode 100644 index 0000000..28db521 --- /dev/null +++ b/sources/language/zh_CN/help/maintenance.html @@ -0,0 +1,57 @@ +

          维护

          + +

          Piwigo使用缓存信息以最优化页面生成时间。例如:为了避免每次页面载入时重新计 +算每个相册中的图片数量,信息会被自动保存在数据库中。理论上,这些信息是准确无 +误的,但是偶尔可能会出现小问题而导致一些错误从而引发缓存信息错误。

          + +

          随着时间的变更,有些信息可能无法再使用。从数据库删除这些无用的信息将会帮 +助您节约数据储存空间。

          + +
            + +
          • + 未增加链接的图片: + 未与任何虚拟相册相连接的图片展示。 +
          • +
          • + 在多个实际相册中出现的具有同样文件名称的文件 + 在多个相册集中图片或文件使用相同的文件名称。 +
          • + +
          + +
            + +
          • 更新相册信息: 如有需要,相册中的以下信息将会被定期检查并更新。 +上级相册列表、图片数目、近期图片上传时间、在兄弟相册中的位置、在所有相册中的 +位置。 +本项还会定期检查封面图片的持续性。
          • + +
          • 更新图片信息:对于每张图片的信息更新如下: +文件完整路径和平均分警告,请勿与下列信息混淆:META资料信息必须从 +管理员» +工具 » 同步以完成更新,或者以单张图片的编辑面板(通过例子图片)进行。 +
          • + +
          • 数据库维修与优化 + 在每个数据库的面板运行重置顺序、维修或优化等操作。
          • +
          + +
            +
          • 清除历史记录细节: 删除来自历史界面的全部内容 +. 在 管理员» +工具 » 同步等界面将不会再出现过去的历史记录。警告:您将无法以 +任何方式挽回这些数据。 +
          • + +
          • 清除历史记录总结: 删除有关访问历史记录的总结信息。这是由历史细节计算而生的总结。
          • + +
          • 清除会话 删除过期的用户对话
          • + +
          • 清除从未使用过的通知
          • + +
          • 清除搜索记录
          • + +
          • 清除编译模板
          • +
          diff --git a/sources/language/zh_CN/help/notification_by_mail.html b/sources/language/zh_CN/help/notification_by_mail.html new file mode 100644 index 0000000..d0e8094 --- /dev/null +++ b/sources/language/zh_CN/help/notification_by_mail.html @@ -0,0 +1,15 @@ +

          邮件通知

          + +

          本页面可以允许使用者设置及管理E-mail,以告知用户有关您网站的一切变更。

          + +

          本页面由3个标签组成:

          + +

          参数

          +

          用于站长,此标签用以设置邮件通知的参数。

          + +

          订阅

          +

          用于站长,此标签用于管理用户对邮件通知的订阅及订阅的取消。

          + +

          后记

          +

          用于站长及管理员,此标签将允许以邮件方式发送网站变更信息。

          + diff --git a/sources/language/zh_CN/help/permalinks.html b/sources/language/zh_CN/help/permalinks.html new file mode 100644 index 0000000..7b08456 --- /dev/null +++ b/sources/language/zh_CN/help/permalinks.html @@ -0,0 +1,7 @@ +

          永久链接

          + +

          永久链接可以使相册url地址更简洁。当一个相册被定义了一个永久链接后,url地 址中则不再需要相册的id.

          + +

          当删除一个永久链接后,你可以将它保存在永久链接历史记录中,这样从外部访问 到Piwigo相册地址仍然奏效。 在永久链接历史记录中,你可以查看该链接被删除的时间,该链接的最后使用日期以及 该链接被使用过的次数。

          + +

          注意:每个相册的永久链接必须为独立的。同样,在永久链接历史记录中,同一个 永久链接地址不能被多次定义。

          \ No newline at end of file diff --git a/sources/language/zh_CN/help/photos_add_ftp.html b/sources/language/zh_CN/help/photos_add_ftp.html new file mode 100644 index 0000000..d2bb799 --- /dev/null +++ b/sources/language/zh_CN/help/photos_add_ftp.html @@ -0,0 +1,96 @@ +
          + 快速开始 + +
            +
          1. 在你的电脑里创建一个文件夹。
          2. + +
          3. 复制一些图片到此文件夹,调整它们的大小以适合网上浏览。 注意: 文件名和文件夹必须以字母、数字、 "-"、 "_" 或者 "." 组成。没有空格,没有特别的符号。
          4. + +
          5. 使用FTP客户端,复制你的文件夹到 Piwigo 的 "galleries" 文件夹里。
          6. + +
          7. 登录你的相册,进入 管理员 » 图片 » 缩略图 以创建你的缩略图。
          8. + +
          9. 进入 管理员 然后点击“快速同步”的大按钮。
          10. +
          + +恭喜!你已成功地为你的相册创建了第一个类别。 + +
          +
          + 文件夹与文件结构 +
            + +
          • + +

            类别文件夹均放在 Piwigo 的 "galleries" 文件夹里。以下的文件夹树里有一个很小的相册(但使用了很多功能) :

            + +
            +.
            +|-- admin
            +|-- doc
            +|-- galleries
            +|   |-- category-1
            +|   |   |-- category-1.1
            +|   |   |   |-- category-1.1.1
            +|   |   |   |   |-- category-1.1.1.1
            +|   |   |   |   |   |-- pwg_high
            +|   |   |   |   |   |   +-- wedding.jpg
            +|   |   |   |   |   |-- thumbnail
            +|   |   |   |   |   |   +-- TN-wedding.jpg
            +|   |   |   |   |   +-- wedding.jpg
            +|   |   |   |   +-- category-1.1.1.2
            +|   |   |   +-- category-1.1.2
            +|   |   |-- category-1.2
            +|   |   |   |-- pookie.jpg
            +|   |   |   +-- thumbnail
            +|   |   |       +-- TN-pookie.jpg
            +|   |   +-- category-1.3
            +|   +-- category-2
            +|       |-- piglet.gif
            +|       |-- pwg_representative
            +|       |   +-- video.jpg
            +|       |-- thumbnail
            +|       |   +-- TN-piglet.jpg
            +|       +-- video.avi
            +|-- include
            +|-- install
            +|-- language
            +|-- template
            ++-- tool
            + +
          • + +
          • 每个在 "galleries" 下面的文件夹都是一个产品类别。没有级别限制,即可以添加无限子级别。
          • + +
          • 基本上,一个文件代表一个元素。如果文件的扩展名存在于 file_ext 参数配置里,其将可作为 Piwigo 的一个元素(参见 include/config_default.inc.php 文件)。如果文件的扩展名存在于 picture_ext 参数配置里,其将作为一个图片。
          • + +
          • 图片元素必须要有一张对应的缩略图 (参见以下缩略图的相关说明)
          • + +
          • 图片元素可以有一个高品质的文件与其关联。如以上 wedding.jpg 的例子。高品质图片不需要前缀。
          • + +
          • 非图片元素 (如视频,声频,文本文件,一切你想到的...) 均以文件扩展名的默认图标显示。或者,你可以用一张缩略图来代表这个文件 (参见 video.avi 的例子)。
          • + +
          • 注意: 文件名和文件夹必须以字母、数字、 "-"、 "_" 或者 "." 组成。没有空格,没有特别的符号。
          • + +
          • 一旦文件、缩略图都放到其正确的位置后,进入 : 管理员 » 类 » + 同步
          • + +
          + +
          +
          + 缩略图 +
            + +
          • 每个图片必须要有一张缩略图。
          • + +
          • 缩略图保存在类别文件夹里名为 "thumbnail" 的子文件夹。缩略图文件名与图片的文件名一致,将会以 TN- 为前缀
          • + +
          • 建议: 使用外部工具来创建缩略图。
          • + +
          • 你可以使用管理员 » 图片 » 缩略图 页面来创建缩略图。即使这是不被推荐的 (考虑到图片品质,网络服务器资源读取等问题)。
          • + +
          • 分配给所有类别文件夹写权限。
          • + +
          +
          diff --git a/sources/language/zh_CN/help/search.html b/sources/language/zh_CN/help/search.html new file mode 100644 index 0000000..818117f --- /dev/null +++ b/sources/language/zh_CN/help/search.html @@ -0,0 +1,19 @@ +

          搜索

          + +

          可以在本页面搜索整个相册中的图片。

          + +
          + +
          文字搜索
          +
          通过相册中图片的相关属性搜索一个或多个文字。使用*作为通配符匹配的部分。
          + +
          作者搜索
          +
          使用*作为通配符匹配的部分。
          + +
          日期搜索
          +
          选择一个日期或者您要查询的截止日期。若要使用一个”之前“的查询,请将日期区域留空。年份栏必须以下列格式输入:AAAA(如:2004)
          + +
          分类搜索
          +
          选择一个或多个您要搜索的分类。若搜索全部子分类,通过选择搜索母分类和子分类下面的设置启用搜索。
          + +
          diff --git a/sources/language/zh_CN/help/synchronize.html b/sources/language/zh_CN/help/synchronize.html new file mode 100644 index 0000000..76b0554 --- /dev/null +++ b/sources/language/zh_CN/help/synchronize.html @@ -0,0 +1,11 @@ +

          + +

          有两种同步方式可供选择:目录/文件 以及 文件meta数据。 +目录/文件方式可以使数据库中的相册树与目录树同步。 +Meta数据方式则是同步照片信息诸如:文件大小、像素大小、EXIF或IPTC等信息。 +

          + +

          同步的第一步必须由目录/文件方式进行。

          + +

          同步过程可能花费的时间较长(取决于您的服务器速度以及要管理的元素质量),所以 +尽可能一个相册一个相册地处理。

          diff --git a/sources/language/zh_CN/help/user_list.html b/sources/language/zh_CN/help/user_list.html new file mode 100755 index 0000000..0ae5b14 --- /dev/null +++ b/sources/language/zh_CN/help/user_list.html @@ -0,0 +1,23 @@ +

          用户列表

          + +

          相册用户管理

          + +

          Add a user

          + +

          管理员可手动添加用户。为每个用户创建用户名,密码及提交邮箱地址。

          + +

          用户列表

          + +

          可使用如用户名(*为通配符),组和状态筛选已有用户列表。可按升序或降序对注册日期或用户名排序。

          + +

          此页面可一次管理多个用户,可使用如下多种操作:

          + +
            +
          • 删除用户(需要确认)
          • +
          • 更改用户状态
          • +
          • 加入组或从组内移除
          • +
          • 修改显示属性
          • +
          • 修改额外偏好
          • +
          + +

          修改对象是已选中用户(默认) 或筛选列表中的所有用户。

          \ No newline at end of file diff --git a/sources/language/zh_CN/install.lang.php b/sources/language/zh_CN/install.lang.php new file mode 100644 index 0000000..b991589 --- /dev/null +++ b/sources/language/zh_CN/install.lang.php @@ -0,0 +1,69 @@ +Piwigo message board.'] = '需要帮助吗?请到Piwigo论坛提出您的问题。'; +$lang['Visitors will be able to contact site administrator with this mail'] = '访问者将可通过此email跟站长取得联系'; +$lang['PHP 5 is required'] = '必须PHP 5版本'; +$lang['It appears your webhost is currently running PHP %s.'] = '你主机PHP版本好像是PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo会尝试创建或修改.htaccess文件以将您的设置转换到PHP 5。'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注意:你也可以自己修改设置PHP然后重新启动Piwigo。'; +$lang['Try to configure PHP 5'] = '尝试配置PHP 5'; +$lang['Sorry!'] = '对不起!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo不能设置PHP 5。'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = '你应该联系你的主机管理员并向其请教如何设置PHP 5.'; +$lang['Hope to see you back soon.'] = '希望不久后能再见到你。'; +$lang['Congratulations, Piwigo installation is completed'] = '恭喜,Piwigo 已安装完成'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '另一个解决办法是,将以上文本框里的文本拷贝到 "local/config/database.inc.php" 文件里(注意:database.inc.php 必须只能包含此文本框里的内容,没有换行或者空格字符)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = '创建 local/config/database.inc.php 配置文件失败。'; +$lang['Download the config file'] = '下载配置文件'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = '您可以下载配置文件,并上传到 local/config 目录以完成您的安装。'; +$lang['Welcome to my photo gallery'] = '欢迎来到我的相册'; +$lang['Just another Piwigo gallery'] = '另一个崭新的Piwigo图库'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = '欢迎来我们的论坛咨询任何Piwigo相关问题:%s'; +$lang['Welcome to your new installation of Piwigo!'] = '欢迎安装Piwigo!'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = '您需要联系您的主机供应商的技术支持,向其咨询如何自行转换为PHP 5。'; +$lang['localhost or other, supplied by your host provider'] = '由你的服务器提供商提供本地服务器或者其他的'; +?> \ No newline at end of file diff --git a/sources/language/zh_CN/iso.txt b/sources/language/zh_CN/iso.txt new file mode 100644 index 0000000..eec88ce --- /dev/null +++ b/sources/language/zh_CN/iso.txt @@ -0,0 +1 @@ +简体中文 [CN] \ No newline at end of file diff --git a/sources/language/zh_CN/upgrade.lang.php b/sources/language/zh_CN/upgrade.lang.php new file mode 100644 index 0000000..05f0882 --- /dev/null +++ b/sources/language/zh_CN/upgrade.lang.php @@ -0,0 +1,42 @@ +release %s (or equivalent).'] = '这个页面试图更新你的与Piwigo相关的数据库。 更新助手发现您现在正在运行的版本为 %s (或同等的版本)。'; +$lang['Upgrade from version %s to %s'] = '从 %s 版本更新到 %s 版本'; +$lang['Statistics'] = '统计'; +$lang['total upgrade time'] = '总更新用时'; +$lang['total SQL time'] = '总 SQL 用时'; +$lang['SQL queries'] = "SQL 查询"; +$lang['Upgrade informations'] = '更新信息'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = '如果你遇上任何问题请到 [管理>工具>维护] 运行一次维护检查。'; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = '保险起见,以下插件已被停用。您在重新启用它们之前,必须先检查插件的更新版本:'; +$lang['Only administrator can run upgrade: please sign in below.'] = '只有站长才能运行更新,请在下面登入:'; +$lang['You do not have access rights to run upgrade'] = "你没有权限运行更新"; +$lang['All sub-albums of private albums become private'] = '所有非公开相册的子相册均变为非公开'; +$lang['User permissions and group permissions have been erased'] = "用户权限和组权限已经删除"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = '之前的设置只有缩略图前缀和站长电子邮件地址被保存'; +$lang['In %s, before ?>, insert:'] = '在%s中,?>之前,插入:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '保险起见,以下主题已被停用。您在重新启用它们之前,必须先检查主题的更新版本:'; +?> \ No newline at end of file diff --git a/sources/language/zh_CN/zh_CN.jpg b/sources/language/zh_CN/zh_CN.jpg new file mode 100644 index 0000000..fbcb52d Binary files /dev/null and b/sources/language/zh_CN/zh_CN.jpg differ diff --git a/sources/language/zh_HK/about.html b/sources/language/zh_HK/about.html new file mode 100644 index 0000000..d2a6b4e --- /dev/null +++ b/sources/language/zh_HK/about.html @@ -0,0 +1,13 @@ +

          這相簿是建基於 Piwigo.

          + +

          Piwigo 是一套網上的相簿軟件, 由一群活躍的用戶及開發人員建立. 擴充功能令 Piwigo 更容易按須求定制. 更好的是, Piwigo 是開源及免費的.

          + +

          瀏覽 Piwigo +網站

          + +

          中文 (香港) 由以下人士維護 (名字按字母順序): +

          +謝謝翻譯人員!

          \ No newline at end of file diff --git a/sources/language/zh_HK/admin.lang.php b/sources/language/zh_HK/admin.lang.php new file mode 100755 index 0000000..36dc5b7 --- /dev/null +++ b/sources/language/zh_HK/admin.lang.php @@ -0,0 +1,972 @@ +Click here to show log error.'] = '在提取過程中發生錯誤。請檢查您piwigo安裝時的檔案權限.
          點擊這裡顯示日誌中的錯誤.'; +$lang['An information email was sent to group "%s"'] = '已向群組"%s"的所有成員發送了信息郵件'; +$lang['Anyway only webmasters can see this tab and never administrators.'] = '任何人都不能使用此標籤(網管除外).'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture是Mac的一項強大工具,可微調讓圖像更精緻,並管理超大照片庫.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture是為專業攝影師設計的軟體,但使用起來又與iPhoto一樣簡單.'; +$lang['Applications'] = '申請'; +$lang['Apply action'] = '套用'; +$lang['Apply selected corrections'] = '套用所選的修正'; +$lang['Apply to sub-albums'] = '套用到子相冊'; +$lang['Apply watermark if height is bigger than'] = '使用浮水印當高度大於'; +$lang['Apply watermark if width is bigger than'] = '使用浮水印當寬度大於'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = '大約最高解像度: %dM像素 (即 %dx%d像素).'; +$lang['Are you sure to install this upgrade? You must verify if this version does not need uninstallation.'] = '確定安裝此更新嗎? 你必須核實無需卸載操作再進行安裝此更新.'; +$lang['Are you sure you want to delete this plugin?'] = '確定要刪除此插件嗎?'; +$lang['%d of %d users selected'] = '%d到%d位用戶選擇'; +$lang['(filtered from %s total users)'] = '(共%s用戶被過濾)'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Android 版的Piwigo允許從 Android 手機或平版連接到您的Piwigo畫廊,建立多個相冊並一次上傳多張相片。'; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'iOS 版的Piwigo允許您從iPhone, iPad 或 iPod Touch 連接到您的Piwigo畫廊,建立多個相冊並一次上傳多張相片。'; +$lang['Add a criteria'] = '增加准則'; +$lang['Add a filter'] = '增加篩選'; +$lang['Add a tag'] = '增加標籤'; +$lang['Add a virtual album'] = '增加虛擬相冊'; +$lang['Add another set of photos'] = '增加另一組相片'; +$lang['Add detailed content'] = '增加內容細節'; +$lang['Add tags'] = '增加標籤'; +$lang['Add to caddie'] = '放入購物籃'; +$lang['Add write access to the "%s" directory'] = '為"%s"目錄增加寫入權限'; +$lang['Add/delete a permalink'] = '增加/刪除一個固定連結'; +$lang['Added by %s'] = '由 %s 加入'; +$lang['Administration Home'] = '管理員首頁'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe Photoshop Lightroom 是一套攝影軟件,可管理大量數位影像和進行後製工作。'; +$lang['Advanced features'] = '進階功能'; +$lang['Album "%s" has been added'] = '已增加相冊 "%s" '; +$lang['Album "%s" now contains %d photos'] = '相冊"%s"現已包含了%d張相片'; +$lang['pending validation'] = '待審定'; +$lang['photos added in the database'] = '增加圖片到資料庫'; +$lang['photos candidates for metadata synchronization'] = '對應同步元數據的候選圖片'; +$lang['photos deleted from the database'] = '圖片已從資料庫中刪除'; +$lang['photos informations synchronized with files metadata'] = '相片信息已和檔案metadata同步'; +$lang['photos per page'] = '每頁圖片'; +$lang['photos updated in the database'] = '更新資料庫中的圖片'; +$lang['pixels'] = '像素'; +$lang['reduce to single existing albums'] = '減少現有的單獨相冊'; +$lang['remove author'] = '刪除作者'; +$lang['remove creation date'] = '刪除建立日期'; +$lang['remove tags'] = '刪除所有標籤'; +$lang['remove this filter'] = '刪除此篩選'; +$lang['remove title'] = '刪除標題'; +$lang['set to'] = '設定為'; +$lang['show details'] = '顯示細節'; +$lang['singly represented'] = '固定相冊縮略圖'; +$lang['status'] = '狀態'; +$lang['synchronize files metadata with database photos informations'] = '根據文件metadata同步資料庫中的相片信息'; +$lang['jump to photo'] = '跳到圖'; +$lang['leave'] = '離開'; +$lang['manage album photos'] = '管理相冊裡的相片'; +$lang['manage sub-albums'] = '管理子相冊'; +$lang['manual order'] = '手工排序'; +$lang['middle'] = '中間'; +$lang['modified'] = '已修改'; +$lang['new'] = '新增'; +$lang['no write access'] = '沒有寫入權限'; +$lang['none'] = '沒有寫入權限'; +$lang['nothing'] = '沒有寫入權限'; +$lang['number of miniaturized photos'] = '數量的縮略圖建立'; +$lang['on'] = '在'; +$lang['on the %d selected photos'] = '在%d張已選相片上'; +$lang['on the %d selected users'] = '%d的選定用戶'; +$lang['only directories'] = '僅目錄'; +$lang['only perform a simulation (no change in database will be made)'] = '只進行模擬操作(不會改變資料庫中的任何內容)'; +$lang['other'] = '另外'; +$lang['overrides existing values with empty ones'] = '用空數據來刪除已存在的數據'; +$lang['pLoader stands for Piwigo Uploader. From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader 是 Piwigo 上傳者 的官方標準軟件。pLoader 可將您電腦裡的相片傳送到 Piwigo 的相片畫廊裡。'; +$lang['display maximum informations (added albums and photos, deleted albums and photos)'] = '顯示最大量的信息(增加相冊和相片,刪除的相冊和照片)'; +$lang['dissociate from group'] = '取消群組關聯'; +$lang['errors during synchronization'] = '同步期間發生錯誤'; +$lang['even already synchronized photos'] = '包括已經同步的圖片'; +$lang['existing album'] = '現有的相冊'; +$lang['first photo added on %s'] = '於%s上傳了第一幅圖'; +$lang['for the file format'] = '對於檔案格式'; +$lang['for this file format'] = '對於此檔案格式'; +$lang['global mode'] = '全局模式'; +$lang['group "%s" added'] = '增加 "%s" 群組'; +$lang['group "%s" deleted'] = '刪除 "%s" 群組'; +$lang['group "%s" updated'] = '更新 "%s" 群組'; +$lang['guest'] = '訪客'; +$lang['height must be a number superior to'] = '圖片高度必須超過(整數)'; +$lang['hide details'] = '隱藏細節'; +$lang['high'] = '高'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto是MacOSX預設的相片管理軟體。此Piwigo匯出插件,可讓你直接從iPhoto匯出相片至Piwigo圖庫,並建立新相冊'; +$lang['include child albums'] = '包含子相冊'; +$lang['include photos with lower privacy level'] = '包含隱私級別較低的相片'; +$lang['jump to album'] = '跳到相冊'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = '您可直接升級到Piwigo的%s,而不需升級到Piwigo的%s(建議版本)'; +$lang['add new photos to caddie'] = '把所有新圖片放到購物籃'; +$lang['added'] = '已加入'; +$lang['administrators'] = '管理員'; +$lang['associate to group'] = '關聯到群組'; +$lang['create a new album'] = '建立一個新相冊'; +$lang['create a new site'] = '建立新的網站'; +$lang['created'] = '已建立'; +$lang['custom'] = '自定義'; +$lang['default'] = '預設'; +$lang['default values'] = '預設值'; +$lang['delete'] = '刪除'; +$lang['delete album'] = '刪除相冊'; +$lang['delete photo'] = '刪除相冊'; +$lang['delete this site and all its attached elements'] = '刪除此站點和與其相關聯的所有信息'; +$lang['deleted'] = '已刪除'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam是一套先進的數位相片管理軟體,它是自由軟體,適用於LINUX,WINDOWS和MacOSX。'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam是專為攝影師瀏覽、管理、編輯、加工、整理、標記及分享照片等用途而設計。'; +$lang['directories + files'] = '目錄+文件'; +$lang['display'] = '顯示'; +$lang['You are running the latest version of Piwigo.'] = '你正在執行的是Piwigo最新版。'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = '您正在使用瀏覽器上傳,您也可改用Flash上傳器上傳。'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = '您正在使用Flash上傳器上傳;若有問題,您也可改用瀏覽器上傳。'; +$lang['You can activate only one mobile theme.'] = '您最多只能啟用一個手機主題。'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = '無法使用預設相片順序,因你在本機配置另有自訂設定。'; +$lang['You cannot delete your account'] = '你不能刪除自己本身帳號'; +$lang['You cannot move an album in its own sub album'] = '您不能將一個相冊移動到其子相冊裡'; +$lang['You have %d orphan tags: %s.'] = '您已 %d 無關聯標籤: %s。'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = '你已在本地設定檔選用 $conf[\'order_by\'],造成參數矛盾,請將它移除或重新命名為 $conf[\'order_by_custom\']!'; +$lang['You have subscribed to receiving notifications by mail.'] = '你開通了郵件通知功能。'; +$lang['You have unsubscribed from receiving notifications by mail.'] = '你取消了你的郵件通知功能。'; +$lang['You might go to plugin list to install and activate it.'] = '在插件列表中安裝和啟動插件。'; +$lang['You need to confirm deletion'] = '您必須確認刪除。'; +$lang['You need to upgrade your system to take full advantage of the application else the application will not work correctly, or not at all'] = '你應該升級你的系統,以充分利用該應用程序,否則應用程序可能無法正常工作,或者不是。'; +$lang['Your configuration settings are saved'] = '你的設定已儲存'; +$lang['Zoom'] = '放大'; +$lang['[%s] Visit album %s'] = '[%s] 參觀相冊 %s'; +$lang['[NBM] Problems or questions'] = '[NBM] 故障或者疑問'; +$lang['add a new watermark'] = '增加新浮水印'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '警告! 這個插件與此Piwigo版本不相容!'; +$lang['Waiting'] = '等待'; +$lang['Warning: subscribing or unsubscribing will send mails to users'] = '注意, 訂閱或退訂都會給相關用戶發送郵件'; +$lang['Watermark'] = '浮水印'; +$lang['Web Form'] = '網頁表格'; +$lang['Webmaster cannot be deleted'] = '不能刪除網管帳戶'; +$lang['Webmaster status is required.'] = '必須設置網站管理員。'; +$lang['Week starts on'] = '星期起始於'; +$lang['Who can see these photos?'] = '哪些人可以看到這些相片?'; +$lang['Who can see this photo?'] = '有哪些人能看這些相片?'; +$lang['Width'] = '寬度'; +$lang['With blank value, gallery title will be used'] = '圖庫標題允許為空'; +$lang['With no album'] = '沒有相冊'; +$lang['With no tag'] = '沒有標籤'; +$lang['With no virtual album'] = '沒有虛擬相冊'; +$lang['X Position'] = 'X 位置'; +$lang['X Repeat'] = 'X 重複'; +$lang['Y Position'] = 'Y 重複'; +$lang['Year'] = '年'; +$lang['You are running on development sources, no check possible.'] = '你運行的是源碼開發版本, 不能檢測最新版。'; +$lang['User list'] = '用戶名單'; +$lang['User status'] = '用戶狀態'; +$lang['Users'] = '用戶'; +$lang['Users modified'] = '用戶修改'; +$lang['Validate'] = '確認'; +$lang['Validation'] = '確認'; +$lang['Version'] = '版本'; +$lang['View in gallery'] = '以畫廊模式瀏覽'; +$lang['Virtual Links'] = '虛擬連結'; +$lang['Virtual album'] = '虛擬相冊'; +$lang['Virtual album added'] = '虛擬相冊已添加'; +$lang['Virtual album deleted'] = '虛擬相冊已刪除'; +$lang['Virtual album name'] = '虛擬相冊名稱'; +$lang['Virtual albums to move'] = '移動虛擬相冊'; +$lang['Visit Gallery'] = '瀏覽畫廊'; +$lang['Visit Piwigo project website'] = '瀏覽 Piwigo 項目網站'; +$lang['Visit language site'] = '瀏覽語言頁面'; +$lang['Visit plugin site'] = '瀏覽插件網站'; +$lang['Visit theme site'] = '瀏覽主題頁面'; +$lang['Visited %d times'] = '訪問了 %d 次'; +$lang['Update in progress... Please wait.'] = '更新進行中,請稍候。'; +$lang['Update photos information'] = '更新相片信息'; +$lang['Update to Piwigo %s'] = '更新到Piwigo %s'; +$lang['Update user'] = '更新用戶'; +$lang['Updates'] = '更新'; +$lang['Upload'] = '上傳'; +$lang['Upload Photos'] = '上傳相片'; +$lang['Uploaded Photos'] = '相片已上傳'; +$lang['Use the default photo sort order (defined in the configuration file)'] = '使用預設的的照片排序順序(在設定檔中定義)'; +$lang['Used metadata'] = 'metadata已使用'; +$lang['User'] = '用戶'; +$lang['User "%s" created with "%s" like password'] = '用戶 "%s" 已建立,密碼是"%s"'; +$lang['User %s [%s] added.'] = '用戶 %s [%s] 已加入。'; +$lang['User %s [%s] was added to the subscription list.'] = '用戶 %s [%s] 加入到註冊名單中。'; +$lang['User %s [%s] was not added to the subscription list.'] = '用戶 %s [%s] 沒有加到註冊名當中。'; +$lang['User %s [%s] was not removed from the subscription list.'] = '用戶 %s [%s] 沒有從註冊名單中刪除。'; +$lang['User %s [%s] was removed from the subscription list.'] = '用戶 %s [%s] 從註冊名單中刪除。'; +$lang['User %s added'] = '用戶 %s 已添加'; +$lang['User %s updated'] = '用戶 %s 已更新'; +$lang['User comments validation'] = '確認用戶評論'; +$lang['Toggle \'default group\' property'] = '賦予\'預設的群組\'屬性'; +$lang['Tools'] = '工具'; +$lang['Two updates are available'] = '兩個更新可使用'; +$lang['Type here the author name'] = '在此輸入作者名稱'; +$lang['Type here the name of the new group'] = '在這輸入新的群組別名稱'; +$lang['Type here the title'] = '在此輸入標題'; +$lang['Type in a search term'] = '輸入一個搜索詞'; +$lang['Unable to check for upgrade.'] = '無法檢查是否有升級。'; +$lang['Unable to dump database.'] = '無法轉儲資料庫。'; +$lang['Uncheck all'] = '取消全選'; +$lang['Uninstall'] = '解除安裝'; +$lang['Uninstalled Plugins'] = '未安裝的插件'; +$lang['Unknown upload error'] = '未知上傳錯誤'; +$lang['Unlock gallery'] = '將畫廊解鎖'; +$lang['Unlocked'] = '解除鎖定'; +$lang['Unsubscribe from notification by mail'] = '取消訂閱郵件通知功能'; +$lang['Unsubscribed'] = '已取消訂閱'; +$lang['Update All'] = '已取消訂閱'; +$lang['Update Complete'] = '已完成更新'; +$lang['Update albums informations'] = '上傳相冊信息'; +$lang['There is no other theme available.'] = '沒有其他可用的主題。'; +$lang['This album contains %d photos, added between %s and %s.'] = '這本相冊包含 %d 張照片,在 %s 和 %s 之間增加。'; +$lang['This album contains %d photos, added on %s.'] = '這本相冊包含 %d 張照片,在 %s 上增加。'; +$lang['This album contains no photo.'] = '這本相冊沒有照片'; +$lang['This group will be set to default'] = '這本相冊沒有照片'; +$lang['This group will be unset to default'] = '該群組別不再被使用為預設'; +$lang['This is a major update, with new exciting features.'] = '這是一個重大更新,包括這個令人興奮的新功能。'; +$lang['This is a minor update, with only bug corrections.'] = '這是一個次要更新,只有bug修正'; +$lang['This name is already used by another group.'] = '群組名已存在。'; +$lang['This site already exists'] = '此站點已存在'; +$lang['This theme was not designed to be directly activated'] = '此主題並未設計為直接啟動'; +$lang['Thumbnail'] = '縮略圖'; +$lang['Thumbnails generation in progress...'] = '縮略圖製作中...'; +$lang['Time'] = '時間'; +$lang['Time to send mail is limited. Others mails are skipped.'] = '發送郵件時間有限,其餘郵件被忽略。'; +$lang['Title'] = '標題'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = '從digiKam要匯出相片到Piwigo,只需安裝digiKam和Kipi-plugins插件。'; +$lang['To send ?'] = '發送?'; +$lang['To subscribe'] = '如要訂閱'; +$lang['To unsubscribe'] = '要取消訂閱'; +$lang['The original maximum height must be a number between %d and %d'] = '原始高度上限必須在 %d 和 %d 之間'; +$lang['The original maximum width must be a number between %d and %d'] = '原始寬度上限必須在 %d 和 %d 之間 '; +$lang['The permalink name must be composed of a-z, A-Z, 0-9, "-", "_" or "/". It must not be numeric or start with number followed by "-"'] = '固定連結中包含了非法字符("a-zA-Z0-9", "-", "_" ou "/"). 禁止使用數字和以"-"開頭後面緊跟數字'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = '圖片的尺寸將減少到 %dx%d 像素。'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = '上傳文件超過了在 HTML 表單指定的 MAX_FILE_SIZE 的限制'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = '上傳文件超過了在 php.ini 文件裡的 upload_max_filesize 限制: %sB'; +$lang['The uploaded file was only partially uploaded'] = '上傳文件只上傳了一部分'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = '上傳文件超過了在 php.ini 文件裡的 post_max_size 限制: %sB'; +$lang['The version of %s [%s] installed is not compatible with the version required ']['%s'] = '%s [%s]安裝版本跟[%s]版本不兼容'; +$lang['The webmaster has subscribed you to receiving notifications by mail.'] = '網管開通了你的郵件通知功能。'; +$lang['The webmaster has unsubscribed you from receiving notifications by mail.'] = '網管取消了你的郵件通知功能。'; +$lang['The whole page'] = '整張相片'; +$lang['The whole set'] = '整個集合'; +$lang['Theme has been successfully installed'] = '主題已成功安裝'; +$lang['Themes'] = '主題'; +$lang['Themes which need upgrade'] = '需更新的主題'; +$lang['There is no available subscribers to mail.'] = '沒有用戶需要郵件通知。'; +$lang['There is no group in this gallery.'] = '此畫廊內沒有群組。'; +$lang['There is no other language available.'] = '沒有其他可用的語言。'; +$lang['There is no other plugin available.'] = '沒有其他可用的插件。'; +$lang['Tag "%s" already exists'] = '標籤 "%s" 已存在'; +$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" 標籤與 "%s" 標籤重複'; +$lang['Tag "%s" was added'] = '標籤 "%s" 已加入'; +$lang['Tag selection'] = '標籤選擇'; +$lang['Tags %s merged into tag %s'] = '標籤 %s 已合併成標籤 %s'; +$lang['Templates'] = '模板'; +$lang['Templates configuration has been recorded.'] = '模板設定已經被記錄。'; +$lang['The %d following tags were deleted'] = '下面標籤 %d 已刪除'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo的匯出插件,允許你建立相冊和匯出照片'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo的發布插件允許你 從Lightroom匯出照片,使你的Lightroom照片與您的Piwigo相冊同步。'; +$lang['The anomaly will be ignored until next application version'] = '此異常將被忽略,待下次版本中解決'; +$lang['The center of interest is the most meaningful zone in the photo.'] = '焦點是相片中最有意思的部份'; +$lang['The file or directory cannot be accessed (either it does not exist or the access is denied)'] = '檔案或目錄無法訪問(無論是它不存在或訪問被拒絕)'; +$lang['The following tag was deleted'] = '以下標籤已刪除'; +$lang['The gallery URL is not valid.'] = '以下標籤已刪除'; +$lang['The name of a group must not contain " or \' or be empty.'] = '以下標籤已刪除'; +$lang['The name of an album must not be empty'] = '相冊名稱不能為空白'; +$lang['The name of directories and files must be composed of letters, numbers, "-", "_" or "."'] = '目錄和檔案的名稱必須包括字母,數字,"-", "_" 或 "."'; +$lang['The number of comments a page must be between 5 and 50 included.'] = '每頁用戶評論數必須在5和50之間。'; +$lang['The original image quality must be a number between %d and %d'] = '原始圖品質必須在 %d 和 %d 之間'; +$lang['Start Upload'] = '開始上傳'; +$lang['Start pLoader and add your photos.'] = '開始使用pLoader的並新增你的照片。'; +$lang['Statistics'] = '統計'; +$lang['Status'] = '狀態'; +$lang['Status of user "%s" updated'] = '用戶 "%s" 狀態已更新'; +$lang['Storage album'] = '存儲相冊'; +$lang['Subscribe'] = '訂閱'; +$lang['Subscribe %s'] = '訂閱 %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '訂閱 %s Piwigo中國最新消息公告'; +$lang['Subscribe to notification by mail'] = '訂閱郵件通知功能'; +$lang['Subscribe/unsubscribe users'] = '訂閱/取消訂閱用戶'; +$lang['Subscribed'] = '已訂閱'; +$lang['Subscribers could be listed (available) only if there is new elements to notify.'] = '當有新圖片時,才能使用用戶郵件通知功能.'; +$lang['Sum of rates'] = '總投票分'; +$lang['Summary'] = '概述'; +$lang['Support'] = '支持'; +$lang['Switch to clear or dark colors for administration'] = '切換管理員後台為清晰或黑暗的顏色'; +$lang['Synchronize'] = '同步'; +$lang['Synchronize metadata'] = 'metadata 同步'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = '這個插件已是Piwigo核心一部份! 請立即移除它!'; +$lang['Send mail as'] = '發送郵件為'; +$lang['Send mail on HTML format'] = '以HTML格式發送郵件'; +$lang['Send mail to users'] = '給用戶發送郵件'; +$lang['Set as default language for unregistered and new users'] = '未註冊和新用戶的語言設定為預設的語言'; +$lang['Set as default theme for unregistered and new users'] = '未註冊者和新用戶的主題設定為預設的主題'; +$lang['Set author'] = '設定作者'; +$lang['Set creation date'] = '設定建立日期'; +$lang['Set title'] = '設定標題'; +$lang['Settings'] = '設定'; +$lang['Sharpen'] = '銳化'; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell是一套Linux作業系統下的數位相片管理工具,它是自由軟體,也是 Ubuntu 和 Fedora 中 預設的相片管理軟體。'; +$lang['Show %s users'] = '顯示%s用戶'; +$lang['Show info'] = '顯示所有信息'; +$lang['Show menubar'] = '顯示選單列'; +$lang['Showing %s to %s of %s users'] = '顯示%s的用戶從%s到%s'; +$lang['Simulation'] = '模擬'; +$lang['Site manager'] = '網管'; +$lang['Some themes and plugins may be not available yet.'] = '一些主題和插件可能尚無法使用'; +$lang['Some upgrades are available for extensions.'] = '一些可升級用於擴展。'; +$lang['Source tag'] = '來源標籤'; +$lang['See you soon.'] = '很快再見。'; +$lang['Select a file'] = '選擇檔案'; +$lang['Select a zone with your mouse to define a new center of interest.'] = '用鼠標選擇新的焦點'; +$lang['Select an album'] = '選擇一個相冊'; +$lang['Select at least one album'] = '選擇最後一個相冊'; +$lang['Select at least one comment'] = '至少選擇一個評論'; +$lang['Select at least one photo'] = '至少選中一張圖片'; +$lang['Select at least one tag'] = '選擇至少一個標籤'; +$lang['Select at least one user'] = '至少選中一個用戶'; +$lang['Select at least two tags for merging'] = '至少選擇兩個需合併的標籤'; +$lang['Select files'] = '選擇檔案'; +$lang['Select groups...'] = '選擇群組別...'; +$lang['Select recipients'] = '選擇接受郵件用戶'; +$lang['Select the destination tag'] = '選擇目的標籤'; +$lang['Select users...'] = '選擇用戶...'; +$lang['Select:'] = '選擇:'; +$lang['Selection'] = '選擇:'; +$lang['Send'] = '發送'; +$lang['Send an information email to group members'] = '發送一份信息郵件給群組成員'; +$lang['Send connection settings by email'] = '通過電子郵件發送連接的設定'; +$lang['Representant'] = '相冊縮略圖'; +$lang['Representation of albums'] = '相冊縮略圖'; +$lang['Representative'] = '相冊縮略圖'; +$lang['Represents'] = '縮略圖是給'; +$lang['Reset ignored updates'] = '重設忽略更新'; +$lang['Resize'] = '調整大小'; +$lang['Resize after upload'] = '上傳後調整大小'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = '由於使用了GD圖形程式,上傳後調整尺寸的功能已關閉。'; +$lang['Restore'] = '還原'; +$lang['Restore default configuration. You will lose your plugin settings!'] = '還原至預設設定。你會失去你的插件的設定!'; +$lang['Save Settings'] = '儲存設定'; +$lang['Save Template Directory'] = '儲存模板目錄'; +$lang['Save manual order'] = '儲存手動排序'; +$lang['Save order'] = '儲存排序'; +$lang['Save to permalink history'] = '儲存到固定連結的歷史記錄中'; +$lang['Save visits in history for'] = '保存訪問的歷史'; +$lang['Search for new images in the directories'] = '在目錄中搜尋新圖片'; +$lang['Searching...'] = '搜尋中...'; +$lang['Section'] = '區域'; +$lang['See you soon,'] = '很快再見,'; +$lang['Rate date'] = '投票日期'; +$lang['Rated %d times, score : %.2f'] = '被評價 %d 次,分數為 %.2f'; +$lang['Rating'] = '投票'; +$lang['Rating by guests'] = '訪客投票數'; +$lang['Ratio'] = '比例'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid(Android行動相冊)是一個開放原始碼軟體(GPL V3),是Android平台上的Piwigo'; +$lang['Read Piwigo Documentation'] = '閱讀 Piwigo 檔案'; +$lang['Refresh'] = '刷新'; +$lang['Refresh photo set'] = '刷新相片集'; +$lang['Registered on %s, %s.'] = '註冊在%s, %s。'; +$lang['Reinitialize check integrity'] = '重新完整性檢測'; +$lang['Reject'] = '拒絕'; +$lang['Released on'] = '發佈於'; +$lang['Remote'] = '遠端'; +$lang['Remove all filters'] = '刪除所有篩選'; +$lang['Remove from caddie'] = '從購物藍裡移除'; +$lang['Rename'] = '重新命名'; +$lang['Repair and optimize database'] = '修復和優化資料庫'; +$lang['Replacement of original templates by customized templates from template-extension subfolder'] = '用位於template-extension文件夾下的用戶自定義模板更換原模板'; +$lang['Replacers (customized templates)'] = '替代(自訂的模板)'; +$lang['Posted %s on %s'] = '在 %s 貼上 %s'; +$lang['Predefined filter'] = '預先定義的篩選'; +$lang['Preferences'] = '偏好設定'; +$lang['Prepared time for list of users to send mail is limited. Others users are not listed.'] = '由於發送用戶列表的準備時間受限制,其餘用戶將不被列出.'; +$lang['Privacy level'] = '隱私等級'; +$lang['Privacy level set to "%s"'] = '私有級別設定為 "%s"'; +$lang['Private'] = '私人'; +$lang['Properties'] = '屬性'; +$lang['Public'] = '公開'; +$lang['Public / Private'] = '私人/公開'; +$lang['Purge compiled templates'] = '清除編譯模板'; +$lang['Purge history detail'] = '清除歷史記錄'; +$lang['Purge history summary'] = '清除歷史摘要'; +$lang['Purge never used notification feeds'] = '清除從沒使用過的通知回饋'; +$lang['Purge search history'] = '清除查尋歷史記錄'; +$lang['Purge sessions'] = '清除Sessions'; +$lang['Purge user cache'] = '清除用戶快取'; +$lang['Quick Local Synchronization'] = '快速同步'; +$lang['Random photo'] = '隨機相片'; +$lang['Rate'] = '評分'; +$lang['Piwigo Update'] = 'Piwigo 更新'; +$lang['Piwigo Uploader'] = 'Piwigo 上傳者'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo 無法從伺服器中取得升級檔 '; +$lang['Piwigo configuration'] = 'Piwigo的設定'; +$lang['Piwigo export plugin for Aperture'] = 'Aperture的Piwigo匯出插件'; +$lang['Piwigo export plugin for iPhoto'] = 'iPhoto的Piwigo匯出插件'; +$lang['Piwigo for Android'] = 'Android 版的Piwigo'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch) 版的 Piwigo '; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo 的 Shotwell 照片發布插件 '; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo 的 ddgiKam 照片發布插件'; +$lang['Piwigo version'] = 'Piwigo版本'; +$lang['Please check "plugins" folder and sub-folders permissions (CHMOD).'] = '請核實"plugins"文件夾及其子文件夾的權限(CHMOD).'; +$lang['Please select at least two groups'] = '請最少選擇二個群組別'; +$lang['Please wait...'] = '請稍後...'; +$lang['Plugin has been successfully copied'] = '插件複製成功.'; +$lang['Plugin list'] = '插件列表'; +$lang['Plugins'] = '插件'; +$lang['Plugins which need upgrade'] = '插件待升級'; +$lang['Portrait'] = '人像'; +$lang['Position'] = '位置'; +$lang['Permalinks'] = '固定連結'; +$lang['Permission denied'] = '禁止訪問'; +$lang['Permission granted'] = '允許訪問'; +$lang['Permission granted for groups'] = '群組別擁有的權限'; +$lang['Permission granted for users'] = '用戶擁有的權限'; +$lang['Permission granted thanks to a group'] = '同群組成員可以訪問授權類'; +$lang['Permission management'] = '權限管理'; +$lang['Permissions'] = '權限'; +$lang['Photo %s of %s'] = '圖片 %s 中的圖片 %s'; +$lang['Photo Page'] = '相片頁'; +$lang['Photo Properties'] = '相片屬性'; +$lang['Photo informations updated'] = '相片更新信息'; +$lang['Photo name'] = '相片名稱'; +$lang['Photo sizes with crop'] = '相片剪裁'; +$lang['Photo unreachable or no support'] = '不支持圖片格式或無法顯示'; +$lang['Photos'] = '相片'; +$lang['Photos generation in progress...'] = '相片製作中...'; +$lang['Piwigo Administration'] = 'Piwigo管理'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo最新消息公告'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo 的 Lightroom 照片發布插件'; +$lang['Orphan tags deleted'] = '無關聯標籤已被刪除'; +$lang['Other plugins'] = '其他可用的插件'; +$lang['Other private albums'] = '其他私人相冊'; +$lang['Overall'] = '概覽'; +$lang['Page banner'] = '網頁標語'; +$lang['Page end'] = '頁尾'; +$lang['Pages seen'] = '已訪問過的頁面'; +$lang['Panorama'] = '全景'; +$lang['Parameter'] = '設定'; +$lang['Parameters'] = '參數'; +$lang['Parent album'] = '主相冊'; +$lang['Password confirmation is missing. Please confirm the chosen password.'] = '密碼確認未完成,請確認所選定的密碼。'; +$lang['Password is missing. Please enter the password.'] = '密碼沒有輸入,請輸入密碼。'; +$lang['Password updated'] = '密碼已更新'; +$lang['Path'] = '路徑'; +$lang['Pending Comments'] = '待批的評論'; +$lang['Permalink'] = '固定連結'; +$lang['Permalink %s has been previously used by album %s. Delete from the permalink history first'] = '固定連結 %s 已被 %s 相冊使用了。請先從固定鏈接歷史記錄刪除。'; +$lang['Permalink %s is already used by album %s'] = '固定連結 %s 已被 %s 相冊使用了'; +$lang['Permalink history'] = '固定連結歷史記錄'; +$lang['Notify administrators when a comment is'] = '通知管理員當評論是'; +$lang['Number of albums per page'] = '每頁相本數量'; +$lang['Number of comments per page'] = '每頁評論數量'; +$lang['Number of downloads'] = '下載次數'; +$lang['Number of rates'] = '投票數'; +$lang['Number of thumbnails to create'] = '縮略圖數'; +$lang['Numeric identifier : %d'] = '數字識別碼: %d'; +$lang['Obsolete Plugins'] = '廢棄的插件'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = '在Linux下,只需安裝Shotwell套件和啟用 Piwigo發佈選項。'; +$lang['Only private albums are listed'] = '只列出私人相冊'; +$lang['Opacity'] = '不透明度'; +$lang['Operating system'] = '操作系統'; +$lang['Operation in progress'] = '正在處理中。'; +$lang['Optimizations have been completed with some errors.'] = '優化已完成,但出現一些錯誤。'; +$lang['Optional URL keyword'] = '可選URL關鍵字'; +$lang['Options'] = '選項'; +$lang['Order of menubar items has been updated successfully.'] = '已成功更新的選單欄項目的順序。'; +$lang['Original Size'] = '原始大小'; +$lang['Original file : %s'] = '原始檔案 : %s'; +$lang['Original templates'] = '原模板'; +$lang['No display'] = '不顯示'; +$lang['No file was uploaded'] = '沒有文件被上傳'; +$lang['No group is permitted to see this private album'] = '沒有群組別有權限觀看此私人相冊'; +$lang['No group selected, no action possible.'] = '尚未選取群組別,無法動作'; +$lang['No mail to send.'] = '沒有郵件要發送.'; +$lang['No matching user found'] = '沒有發現匹配的用戶'; +$lang['No members to manage'] = '沒有會員可以管理'; +$lang['No order field selected'] = '未選取排序欄位'; +$lang['No photo can be deleted'] = '沒有圖片可以刪除'; +$lang['No photo in the current set.'] = '當前集合沒有相片.'; +$lang['No photo in this album'] = '沒有相片在此相冊裡'; +$lang['No photo selected, %d photos in current set'] = '沒有選擇相片, 當前集合有%d張相片'; +$lang['No photo selected, no action possible.'] = '沒有選擇相片,不會有動作執行'; +$lang['No results'] = '沒有結果'; +$lang['No user selected of %d users'] = '%d個用戶沒有用戶選擇'; +$lang['No user selected, no action possible.'] = '沒有用戶選擇,沒有行動的可能。'; +$lang['No user to send notifications by mail.'] = '沒有郵件通知用戶.'; +$lang['None'] = '沒有'; +$lang['Not cropped correctly?'] = '不正確的裁剪?'; +$lang['Notification'] = '通知'; +$lang['Minimum privacy level'] = '最小隱私等級'; +$lang['Minimum width'] = '最小寬度'; +$lang['Miscellaneous'] = '雜項'; +$lang['Missing Plugins'] = '丟失的插件'; +$lang['Missing a temporary folder'] = '缺少臨時文件目錄'; +$lang['Modify information'] = '修改信息'; +$lang['Month'] = '月'; +$lang['Move'] = '移動'; +$lang['Move albums'] = '移動相冊'; +$lang['Move to album'] = '移動到相冊'; +$lang['Multiple Size'] = '多種大小'; +$lang['Name'] = '名字'; +$lang['Name of the duplicate'] = '名稱重複'; +$lang['New Version'] = '新版本'; +$lang['New name'] = '新名'; +$lang['New parent album'] = '新的父相冊'; +$lang['New photos added'] = '已加入新相片'; +$lang['New photos were added'] = '已加入新相片'; +$lang['New tag'] = '新標籤'; +$lang['No destination tag selected'] = '未選擇目標標籤'; +$lang['Manage authorizations for selected albums'] = '管理所選相冊的授權'; +$lang['Manage permissions for group "%s"'] = '對群組 "%s" 進行權限管理'; +$lang['Manage permissions for user "%s"'] = '對用戶 "%s" 進行權限管理'; +$lang['Manage photo ranks'] = '管理圖片排序'; +$lang['Manage photos'] = '管理照片'; +$lang['Manage tags'] = '管理標籤'; +$lang['Manage the members'] = '管理會員'; +$lang['Manage this set of %d photos'] = '管理此設置的%d張照片 '; +$lang['Manual order'] = '手工排序'; +$lang['Maximum file size: %sB.'] = '最大尺寸: %sB'; +$lang['Maximum height'] = '最大高度'; +$lang['Maximum width'] = '最大寬度'; +$lang['Members'] = '會員'; +$lang['Menu Management'] = '功能表'; +$lang['Merge selected groups'] = '合併選擇群組'; +$lang['Merge selected tags'] = '合併選定的標籤'; +$lang['Merge tags'] = '合併標籤'; +$lang['Metadata synchronization results'] = 'Metadata更新結果'; +$lang['Metadata synchronized from file'] = '對文件進行Metadata同步'; +$lang['Minimum height'] = '最小高度'; +$lang['Loading...'] = '加載中...'; +$lang['Local'] = '本地'; +$lang['Lock'] = '上鎖'; +$lang['Lock albums'] = '鎖定相冊'; +$lang['Lock gallery'] = '鎖定圖庫'; +$lang['Locked'] = '鎖定'; +$lang['Mail address is obligatory for all users'] = '每個用戶必須提供郵箱地址'; +$lang['Mail content'] = '郵件內容'; +$lang['Mail sent to %s [%s].'] = '已發送至 %s [%s].'; +$lang['Mail theme'] = '郵件主題'; +$lang['Main "guest" user does not exist'] = '主"訪客"用戶不存在'; +$lang['Main "guest" user status is incorrect'] = '主"訪客"用戶狀態異常'; +$lang['Main "webmaster" user does not exist'] = '主網管帳戶不再存在'; +$lang['Main "webmaster" user status is incorrect'] = '主網管用戶狀態異常'; +$lang['Main Page'] = '主頁'; +$lang['Maintenance'] = '維護'; +$lang['Make this language available to users'] = '讓用戶可使用此語言'; +$lang['Make this theme available to users'] = '讓用戶可使用此主題'; +$lang['Manage'] = '管理'; +$lang['Manage Permissions'] = '管理權限'; +$lang['Keep in touch with Piwigo project, subscribe to Piwigo Announcement Newsletter. You will receive emails when a new release is available (sometimes including a security bug fix, it\'s important to know and upgrade) and when major events happen to the project. Only a few emails a year.'] = '訂閱 Piwigo 最新消息,與 Piwigo 項目保持聯繫。當有新版本發佈時,您將會收到郵件通知(有時也包括安全漏洞的修復,這對於升級是很重要的)和項目裡一些重要事情的發生。一年裡也只有幾封郵件。'; +$lang['Landscape'] = '橫向'; +$lang['Language has been successfully installed'] = '語言已成功安裝'; +$lang['Languages'] = '語言'; +$lang['Languages which need upgrade'] = '需更新的語言'; +$lang['Last hit'] = '最後一次查看'; +$lang['Last import'] = '最後匯入'; +$lang['Last revisions'] = '最新修訂版'; +$lang['Last send'] = '最後一次發送'; +$lang['Last visit on %s, %s.'] = '最後的訪問在%s, %s。'; +$lang['Learn more'] = '瞭解更多'; +$lang['Level 0'] = '---'; +$lang['Level 1'] = '聯繫'; +$lang['Level 2'] = '朋友'; +$lang['Level 4'] = '家庭'; +$lang['Level 8'] = '管理者'; +$lang['Link all album photos to a new album'] = '鏈接所有相冊的相片到新的相冊'; +$lang['Link all album photos to some existing albums'] = '連結所有相冊的相片到現有的相冊'; +$lang['Linked albums'] = '已鏈接相冊'; +$lang['List'] = '清單'; +$lang['Impossible automatic correction'] = '無法自動修復'; +$lang['Impossible to activate this theme, the parent theme is missing: %s'] = '這個主題不能啟動,因為缺少主頁主題:%s'; +$lang['Impossible to deactivate this language, first set another language as default.'] = '無法停用這個語言,首先設定另一種語言為預設值。'; +$lang['Impossible to deactivate this language, you need at least one language.'] = '無法停用這個語言,你需要至少一種語言。'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = '無法停用這個語言,你需要至少一種語言。'; +$lang['Impossible to delete this theme. Other themes depends on it: %s'] = '此主題不能刪除,因為其他主題還有依賴與它: %s'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = '在你的 php.ini 文件, 如果 upload_max_filesize (%sB) 大於 post_max_size (%sB), 那麼你需要修改此設定'; +$lang['Inactive Languages'] = '停用語言'; +$lang['Inactive Plugins'] = '停用語言'; +$lang['Inactive Themes'] = '停用主題'; +$lang['Include display of recent photos grouped by dates'] = '包括顯示最近按日期分群組的圖片'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = '包含歷史數據(警告:可能會超過伺服器儲存限制)'; +$lang['Information data registered in database'] = '信息已保存到資料庫中'; +$lang['Informations'] = '信息'; +$lang['Install'] = '安裝'; +$lang['Install on your computer,'] = '安裝到您的電腦,'; +$lang['Installed Languages'] = '安裝語言'; +$lang['Installed Themes'] = '安裝主題'; +$lang['Instructions to use Piwigo'] = 'Piwigo 使用指南'; +$lang['Invert'] = '反轉'; +$lang['Close user details'] = '關閉用戶詳細信息'; +$lang['Open user details'] = '打開用戶詳細信息'; +$lang['close'] = '關閉'; +?> \ No newline at end of file diff --git a/sources/language/zh_HK/common.lang.php b/sources/language/zh_HK/common.lang.php new file mode 100644 index 0000000..86ff5d8 --- /dev/null +++ b/sources/language/zh_HK/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/zh_HK/help/cat_move.html b/sources/language/zh_HK/help/cat_move.html new file mode 100755 index 0000000..bd894c1 --- /dev/null +++ b/sources/language/zh_HK/help/cat_move.html @@ -0,0 +1,14 @@ +

          移動虛擬相冊 + +

          只有虛擬的專輯能有一個新的父專輯。 + +

          移動虛擬相冊 + +

          選擇要移動一個或多個虛擬相簿。 +如果列表是空的,這意味著你還沒有創建了一個呢。 + +

          新的父專輯 + +

          選擇新的父專輯(虛擬或實體)。 +如果您不選擇任何父,虛擬選取的相簿將被移動到根。 +一個相冊不能移動到自身或其子女之一。 \ No newline at end of file diff --git a/sources/language/zh_HK/help/cat_options.html b/sources/language/zh_HK/help/cat_options.html new file mode 100755 index 0000000..204fc54 --- /dev/null +++ b/sources/language/zh_HK/help/cat_options.html @@ -0,0 +1,20 @@ +

          相冊選項

          + +

          選項一次管理幾個相冊。

          + +
          + +
          評論
          +
          照片可以給訪客留言,如果它屬於某個相冊及啟動了留言功能。
          + +
          +
          鎖定專輯禁止進行維護。只有管理員可以在畫廊裡看到它們。
          + +
          公共/私有
          +
          一旦專輯成為私人的,對用戶和組給訪問權限
          + +
          代表
          +
          當您設定組態設定此選項可用的 allow_random_representative/code>(參見(see include/config_defaults.inc.php),以true。每張專輯可以通過隨機的照片或者選擇作為一個獨特的代表照片來表示。
          + +
          \ No newline at end of file diff --git a/sources/language/zh_HK/help/cat_perm.html b/sources/language/zh_HK/help/cat_perm.html new file mode 100755 index 0000000..035ba82 --- /dev/null +++ b/sources/language/zh_HK/help/cat_perm.html @@ -0,0 +1,11 @@ +

          編輯相簿權限

          + +

          此畫面僅限於私人相簿。在這裡,您可以選擇用戶和群組進行相簿授權。

          + +

          群組

          + +

          您可以拒絕或授予群組訪問當前相簿。通過修改群組授權,屬於這些群組的用戶將被拒絕或允許訪問相簿。

          + +

          用戶

          + +

          您可以拒絕或授予個別用戶訪問相簿。用戶透過群組授權訪問可以拒絕。

          \ No newline at end of file diff --git a/sources/language/zh_HK/help/index.php b/sources/language/zh_HK/help/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/language/zh_HK/help/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/language/zh_HK/index.php b/sources/language/zh_HK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/language/zh_HK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/language/zh_HK/install.lang.php b/sources/language/zh_HK/install.lang.php new file mode 100755 index 0000000..4a451e0 --- /dev/null +++ b/sources/language/zh_HK/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = '需要幫助嗎?你可以在Piwigo 留言板提出問題。'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注意:你可以更改設定,然後重新啟動Piwigo。'; +$lang['PHP 5 is required'] = '需要PHP5'; +$lang['Password ']['confirm'] = '密碼[確認]'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo嘗試建立或修改您的.htaccess檔案, 來設定系統使用PHP5。'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo的無法設定使用PHP5。'; +$lang['Sorry!'] = '對不起!'; +$lang['Start Install'] = '開始安裝'; +$lang['Try to configure PHP 5'] = '嘗試設定PHP5'; +$lang['User'] = '用戶'; +$lang['Visitors will be able to contact site administrator with this mail'] = '訪客可以使用這個電子郵件與網站管理員聯繫'; +$lang['Welcome to my photo gallery'] = '歡迎來到我的相簿'; +$lang['Welcome to your new installation of Piwigo!'] = '歡迎來到你新安裝的Piwigo!'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = '您可以下載設定檔案,並裝它上傳到local/config目錄中安裝。'; +$lang['You may referer to your hosting provider\'s support and see how you could switch to PHP 5 by yourself.'] = '請聯繫你的網站託管服務提供商,看看你怎麼可以自己切換到PHP 5。'; +$lang['also given by your host provider'] = '也可由網站託管服務提供商幫助設定'; +$lang['Admin configuration'] = '管理員設定'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '另一種解決方案是將上面框中的文字複製,並貼到檔案 "local/config/database.inc.php"上 (警告:database.inc.php只可以包括文字框內容,不可以有,或空格字符)'; +$lang['Basic configuration'] = '基本設定'; +$lang['Can\'t connect to server'] = '無法連接到伺服器'; +$lang['Congratulations, Piwigo installation is completed'] = '恭喜你,Piwigo已安裝完成'; +$lang['Connection to server succeed, but it was impossible to connect to database'] = '成功連接到伺服器, 但不能連接到數據庫。'; +$lang['Creation of config file local/config/database.inc.php failed.'] = '無法創建設定檔案 local/config/database.inc.php。'; +$lang['Database configuration'] = '數據庫設定'; +$lang['Database name'] = '數據庫名稱'; +$lang['Database table prefix'] = '數據庫表格前置詞'; +$lang['Default gallery language'] = '預設相簿語言'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = '如需要任何幫助,請不要猶豫到我們的論壇諮詢:%s'; +$lang['Download the config file'] = '下載設定檔案。'; +$lang['Hope to see you back soon.'] = '希望盡快看到你回來。'; +$lang['Host'] = '主機'; +$lang['Installation'] = '安裝'; +$lang['It appears your webhost is currently running PHP %s.'] = '目前您的網頁寄存伺服器運行PHP %s。'; +$lang['It will be shown to the visitors. It is necessary for website administration'] = '這是必要的網站管理,因它會顯示給所有訪客。'; +$lang['Just another Piwigo gallery'] = '只是另一個Piwigo相簿'; +$lang['Keep it confidential, it enables you to access administration panel'] = '請保密,它使您能夠訪問管理面板'; +$lang['localhost or other, supplied by your host provider'] = '本地主機或其它,由你的主機提供商提供'; +?> \ No newline at end of file diff --git a/sources/language/zh_HK/iso.txt b/sources/language/zh_HK/iso.txt new file mode 100644 index 0000000..437d9af --- /dev/null +++ b/sources/language/zh_HK/iso.txt @@ -0,0 +1 @@ +中文 (香港) [HK] \ No newline at end of file diff --git a/sources/language/zh_HK/upgrade.lang.php b/sources/language/zh_HK/upgrade.lang.php new file mode 100755 index 0000000..3306f66 --- /dev/null +++ b/sources/language/zh_HK/upgrade.lang.php @@ -0,0 +1,40 @@ +%s, before ?>, insert:'] = '在%s之前?>,插入:'; +$lang['Only administrator can run upgrade: please sign in below.'] = '只有管理員才能執行升級:請在下面登錄。'; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = '只有縮圖的前綴和網站管理員的郵件地址可以從舊版設定中保存'; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = '如果您遇到任何問題, 請執行維護檢查[管理>工具>維護]。'; +$lang['SQL queries'] = 'SQL查詢'; +$lang['Statistics'] = '統計'; +$lang['This page proposes to upgrade your database corresponding to your old version of Piwigo to the current version. The upgrade assistant thinks you are currently running a release %s (or equivalent).'] = '本頁建議數據庫從舊的Piwigo版本升級到新版本。升級助手認為你正在運行的版本%s(或同等版本)。'; +$lang['Upgrade'] = '升級'; +$lang['Upgrade from version %s to %s'] = '從版本%s升級到%s'; +$lang['Upgrade informations'] = '升級信息'; +$lang['User permissions and group permissions have been erased'] = '使用者和群組的權限已被刪除'; +$lang['You do not have access rights to run upgrade'] = '您沒有權限執行升級'; +$lang['total SQL time'] = '總SQL執行時間'; +$lang['total upgrade time'] = '總升級時間'; +?> \ No newline at end of file diff --git a/sources/language/zh_HK/zh_HK.jpg b/sources/language/zh_HK/zh_HK.jpg new file mode 100644 index 0000000..4560737 Binary files /dev/null and b/sources/language/zh_HK/zh_HK.jpg differ diff --git a/sources/language/zh_TW/about.html b/sources/language/zh_TW/about.html new file mode 100644 index 0000000..3be3093 --- /dev/null +++ b/sources/language/zh_TW/about.html @@ -0,0 +1,14 @@ +

          此相冊畫廊是基於 Piwigo 的.

          + +

          Piwigo 是一個網絡的相冊畫廊軟件,她是由一個活躍的社區用戶和開發者創建的。 +製作 Piwigo 的自定義擴展是非常容易的。使得 Piwigo 更錦上添花的是, +她還是一個完全免費和開源的項目。

          + +

          瀏覽 Piwigo 網站

          + +

          以下是 Piwigo 的中文翻譯與維護人員 (以字母排序): + +

            +
          • 周毓華
          • +
          + .... 感謝他們!

          \ No newline at end of file diff --git a/sources/language/zh_TW/admin.lang.php b/sources/language/zh_TW/admin.lang.php new file mode 100644 index 0000000..8270729 --- /dev/null +++ b/sources/language/zh_TW/admin.lang.php @@ -0,0 +1,974 @@ +Piwigo Uploader
          . From your computer, pLoader prepares your photos and transfer them to your Piwigo photo gallery.'] = 'pLoader 是 Piwigo 上傳者 的官方標準軟件。pLoader 可將您電腦裡的相片傳送到 Piwigo 的相片畫廊裡。'; +$lang['Guest Settings'] = '訪客設定'; +$lang['Main Page'] = '主頁'; +$lang['Photo Page'] = '相片頁'; +$lang['Activate Navigation Bar'] = '啟動導航欄'; +$lang['Activate Navigation Thumbnails'] = '啟動縮略圖導航'; +$lang['Activate icon "%s"'] = '啟動圖標 "%s"'; +$lang['Photo Properties'] = '相片屬性'; +$lang['Allow user customization'] = '允許使用者客制化'; +$lang['Languages'] = '語言'; +$lang['Installed Languages'] = '安裝語言'; +$lang['Add New Language'] = '增加新的語言'; +$lang['Language has been successfully installed'] = '語言已成功安裝'; +$lang['Select:'] = '選擇:'; +$lang['None'] = '沒有'; +$lang['Invert'] = '反轉'; +$lang['Impossible to deactivate this theme, you need at least one theme.'] = '無法停用這個主題,你至少需要一個主題。'; +$lang['Webmaster status is required.'] = '必須設置網站管理員。'; +$lang['Bound Theme'] = '綁定主題'; +$lang['Allow rating'] = '允許投票'; +$lang['Select at least one comment'] = '至少選擇一個評論'; +$lang['Active Plugins'] = '啟動插件'; +$lang['Inactive Plugins'] = '停用插件'; +$lang['Missing Plugins'] = '丟失的插件'; +$lang['Uninstalled Plugins'] = '未安裝的插件'; +$lang['By %s'] = '按 %s'; +$lang['Visit plugin site'] = '瀏覽插件網站'; +$lang['Active Languages'] = '啟動語言'; +$lang['Delete this language'] = '刪除此語言'; +$lang['Forbid this language to users'] = '禁止用戶使用此語言'; +$lang['Impossible to deactivate this language, first set another language as default.'] = '無法停用這個語言,首先設定另一種語言為預設值。'; +$lang['Impossible to deactivate this language, you need at least one language.'] = '無法停用這個語言,你需要至少一種語言。'; +$lang['Inactive Languages'] = '停用語言'; +$lang['Make this language available to users'] = '讓用戶可使用此語言'; +$lang['Set as default language for unregistered and new users'] = '未註冊和新用戶的語言設定為預設的語言'; +$lang['Add Photos'] = '上傳照片'; +$lang['The following tag was deleted'] = '以下標籤已刪除'; +$lang['Miscellaneous'] = '雜項'; +$lang['Virtual Links'] = '虛擬連結'; +$lang['There is no other language available.'] = '沒有其他可用的語言。'; +$lang['There is no other plugin available.'] = '沒有其他可用的插件。'; +$lang['There is no other theme available.'] = '沒有其他可用的主題。'; +$lang['Add another set of photos'] = '增加另一組相片'; +$lang['By rank'] = '按等級'; +$lang['Manual order'] = '手工排序'; +$lang['Piwigo Announcements Newsletter'] = 'Piwigo最新消息公告'; +$lang['Subscribe %s'] = '訂閱 %s'; +$lang['Subscribe %s to Piwigo Announcements Newsletter'] = '訂閱 %s Piwigo中國最新消息公告'; +$lang['Purge search history'] = '清除查尋歷史記錄'; +$lang['Hide'] = '隱藏'; +$lang['Order of menubar items has been updated successfully.'] = '已成功更新的選單欄項目的順序。'; +$lang['This theme was not designed to be directly activated'] = '此主題並未設計為直接啟動'; +$lang['Who can see this photo?'] = '有哪些人能看這些相片?'; +$lang['Pending Comments'] = '待批的評論'; +$lang['Menu Management'] = '選單'; +$lang['In your php.ini file, the upload_max_filesize (%sB) is bigger than post_max_size (%sB), you should change this setting'] = '在你的 php.ini 文件, 如果 upload_max_filesize (%sB) 大於 post_max_size (%sB), 那麼你需要修改此項'; +$lang['Exif extension not available, admin should disable exif use'] = 'Exif 擴展不能使用,管理員應該禁用 exif 功能。'; +$lang['The uploaded file exceeds the upload_max_filesize directive in php.ini: %sB'] = '上傳文件超過了在 php.ini 文件裡的 upload_max_filesize 限制: %sB'; +$lang['The uploaded files exceed the post_max_size directive in php.ini: %sB'] = '上傳文件超過了在 php.ini 文件裡的 post_max_size 限制: %sB'; +$lang['The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'] = '上傳文件超過了在 HTML 表單指定的 MAX_FILE_SIZE 的限制'; +$lang['The uploaded file was only partially uploaded'] = '上傳文件只上傳了一部分'; +$lang['No file was uploaded'] = '沒有文件被上傳'; +$lang['Missing a temporary folder'] = '缺少臨時文件目錄'; +$lang['Failed to write file to disk'] = '寫入失敗的檔案'; +$lang['File upload stopped by extension'] = '擴展使文件上傳停止'; +$lang['Unknown upload error'] = '未知上傳錯誤'; +$lang['Error on file "%s" : %s'] = '文件上的錯誤 "%s" : %s'; +$lang['%d of %d photos selected'] = '%d 張/總 %d 相片被選取'; +$lang['Action'] = '動作'; +$lang['Add a filter'] = '增加一個過濾器'; +$lang['Album photos associated to the following albums: %s'] = '相片已關聯到以下相冊: %s'; +$lang['Albums automatically sorted'] = '相冊已自動排序'; +$lang['All %d photos are selected'] = '全部 %d 張相片已選中'; +$lang['Apply action'] = '應用動作'; +$lang['automatic order'] = '自動排序'; +$lang['Batch Manager'] = '批量管理'; +$lang['Choose an action'] = '選擇一個動作'; +$lang['Delete orphan tags'] = '刪除沒被關聯的標籤'; +$lang['delete photo'] = '刪除相片'; +$lang['Duplicates'] = '重複'; +$lang['include child albums'] = '包含子相冊'; +$lang['manual order'] = '手工排序'; +$lang['No photo in the current set.'] = '當前集合沒有相片.'; +$lang['No photo selected, %d photos in current set'] = '沒有選擇相片, 當前集合有 %d 張相片'; +$lang['No photo selected, no action possible.'] = '沒有選擇相片,不會有動作執行.'; +$lang['on the %d selected photos'] = '在 %d 張已選相片上'; +$lang['Orphan tags deleted'] = '無關聯標籤已被刪除'; +$lang['Refresh photo set'] = '刷新相片集'; +$lang['Remove all filters'] = '刪除所有過濾器'; +$lang['remove author'] = '刪除作者'; +$lang['remove creation date'] = '刪除建立日期'; +$lang['remove this filter'] = '刪除此過濾器'; +$lang['remove title'] = '刪除標題'; +$lang['Selection'] = '選擇'; +$lang['Set author'] = '設定作者'; +$lang['Set creation date'] = '設定建立日期'; +$lang['Set title'] = '設定標題'; +$lang['The whole page'] = '整張相片'; +$lang['The whole set'] = '整個集合'; +$lang['Type here the author name'] = '在此輸入作者名稱'; +$lang['Type here the title'] = '在此輸入標題'; +$lang['Week starts on'] = '星期起始於'; +$lang['You have %d orphan tags: %s.'] = '您已 %d 無關聯標籤: %s。'; +$lang['Remove from caddie'] = '從購物藍裡移除'; +$lang['Themes which need upgrade'] = '需更新的主題'; +$lang['Languages which need upgrade'] = '需更新的語言'; +$lang['All themes are up to date.'] = '所有主題都是最新的'; +$lang['All plugins are up to date.'] = '所有插件都是最新的'; +$lang['All languages are up to date.'] = '所有語言都是最新的'; +$lang['Visit theme site'] = '瀏覽主題頁面'; +$lang['Visit language site'] = '瀏覽語言頁面'; +$lang['New Version'] = '新版本'; +$lang['new'] = '新增'; +$lang['No results'] = '沒有結果'; +$lang['Searching...'] = '搜尋中...'; +$lang['Type in a search term'] = '輸入一個搜索詞'; +$lang['Obsolete Plugins'] = '過時(廢棄)的插件'; +$lang['WARNING! This plugin does not seem to be compatible with this version of Piwigo.'] = '警告! 這個插件與此Piwigo版本不相容!'; +$lang['Do you want to activate anyway?'] = '你無論如何都要啟動嗎?'; +$lang['THIS PLUGIN IS NOW PART OF PIWIGO CORE! DELETE IT NOW.'] = '這個插件目前是Piwigo核心一部份! 請立即移除它!'; +$lang['ERROR: THIS PLUGIN IS MISSING BUT IT IS INSTALLED! UNINSTALL IT NOW.'] = '錯誤:這個插件雖已安裝但並不存在! 請立即移除它!'; +$lang['display'] = '顯示'; +$lang['Learn more'] = '瞭解更多'; +$lang['Rate'] = '評分'; +$lang['Average rate'] = '評分'; +$lang['Activate icon "new" next to albums and pictures'] = '在相簿及相片旁邊加上"新"的圖示'; +$lang['Add a criteria'] = '新增標準'; +$lang['Deactivate all'] = '停用所有'; +$lang['Default photos order'] = '預設的相片順序'; +$lang['Restore'] = '還原'; +$lang['Restore default configuration. You will lose your plugin settings!'] = '還原至預設設定。你會失去你的插件的設定!'; +$lang['Show menubar'] = '顯示選單列'; +$lang['You can\'t define a default photo order because you have a custom setting in your local configuration.'] = '無法使用預設相片順序,因你在本機配置另有自訂設定。'; +$lang['You have specified $conf[\'order_by\'] in your local configuration file, this parameter in deprecated, please remove it or rename it into $conf[\'order_by_custom\'] !'] = '你已在本地設定檔選用 $conf[\'order_by\'],造成參數矛盾,請將它移除或重新命名為 $conf[\'order_by_custom\']!'; +$lang['Thumbnails generation in progress...'] = '小圖製作中...'; +$lang['Photos generation in progress...'] = '圖片製作中...'; +$lang['%s photos have been regenerated'] = '%s 圖片製作完成'; +$lang['%s photos can not be regenerated'] = '無法製作 %s 圖片'; +$lang['Add to caddie'] = '放入購物籃'; +$lang['%s has been successfully updated.'] = '%s 已更新成功'; +$lang['(this tag will be deleted)'] = '(此標籤將被刪除)'; +$lang['... or '] = '... 或 '; +$lang['Activate comments'] = '啟動評論'; +$lang['Add tags'] = '新增標籤'; +$lang['All extensions are up to date.'] = '所有的擴展是最新的'; +$lang['Allowed file types: %s.'] = '允許的文件類型: %s.'; +$lang['An error has occured during extract. Please check files permissions of your piwigo installation.
          Click here to show log error.'] = '在提取過程中發生錯誤。請檢查您piwigo安裝時的檔案權限.
          點擊這裡顯示日誌中的錯誤.'; +$lang['An error has occured during upgrade.'] = '升級過程中發生錯誤.'; +$lang['Approximate maximum resolution: %dM pixels (that\'s %dx%d pixels).'] = '大約最高解釋度: %dM 像素 (即 %dx%d像素).'; +$lang['By default, Piwigo will create a new websize from the HD (high definition) version of your photo.'] = '預設狀況下,Piwigo 將從原照片的高清晰度版本,建立另一個適用於網頁的尺寸版本。'; +$lang['Confirm merge'] = '確認合併'; +$lang['Create'] = '建立'; +$lang['Crop'] = '剪裁'; +$lang['Default comments order'] = '預設評論順序'; +$lang['Dump Database'] = '轉儲資料庫'; +$lang['ERROR'] = '錯誤'; +$lang['Extensions Update'] = '擴充更新'; +$lang['Follow Orientation'] = '定位'; +$lang['Following plugins may not be compatible with the new version of Piwigo:'] = '以下插件可能無法兼容新Piwigo的版本:'; +$lang['Following themes may not be compatible with the new version of Piwigo:'] = '以下主題可能無法兼容新版本Piwigo:'; +$lang['Graphics Library'] = '圖庫'; +$lang['Height'] = '高度'; +$lang['hide details'] = '隱藏細節'; +$lang['I decide to update anyway'] = '我決定要更新'; +$lang['If no HD is available and if the current websize is bigger than resize dimensions, Piwigo will move it as HD and create a downsized websize photo from it.'] = '假如圖片非高畫質,但在網頁上圖片尺寸大於調整後尺寸,Piwigo仍會將圖片標為高畫質,並另存一張縮圖'; +$lang['Ignore All'] = '忽略全部'; +$lang['Ignore this update'] = '忽略此更新'; +$lang['Include history data (Warning: server memory limit may be exceeded)'] = '包含歷史數據(警告:可能會超過伺服器儲存限制)'; +$lang['Last import'] = '最後匯入'; +$lang['Manage Permissions'] = '管理權限'; +$lang['Maximum file size: %sB.'] = '最大尺寸: %sB'; +$lang['Merge selected tags'] = '合併選定的標籤'; +$lang['Merge tags'] = '合併標籤'; +$lang['No destination tag selected'] = '未選擇目標標籤'; +$lang['Photo %s of %s'] = '圖片 %s 中的圖片 %s'; +$lang['Photo name'] = '圖片名稱'; +$lang['Piwigo cannot retrieve upgrade file from server'] = 'Piwigo 無法從伺服器中取得升級檔 '; +$lang['Piwigo Update'] = 'Piwigo 更新'; +$lang['Predefined filter'] = '預先定義的過濾器'; +$lang['Reset ignored updates'] = '重設忽略更新'; +$lang['Save Template Directory'] = '儲存模板目錄'; +$lang['Select an album'] = '選擇一個相冊'; +$lang['Select at least two tags for merging'] = '至少選擇兩個需合併的標籤'; +$lang['Select the destination tag'] = '選擇目的標籤'; +$lang['Send connection settings by email'] = '通過電子郵件發送連接的設定'; +$lang['show details'] = '顯示細節'; +$lang['Some themes and plugins may be not available yet.'] = '一些主題和插件可能尚無法使用'; +$lang['Some upgrades are available for extensions.'] = '一些可升級用於擴展。'; +$lang['Start Upload'] = '開始上傳'; +$lang['Tags %s merged into tag %s'] = '標籤 %s 已合併成標籤 %s'; +$lang['The original image quality must be a number between %d and %d'] = '原始圖品質必須在 %d 和 %d 之間'; +$lang['The original maximum height must be a number between %d and %d'] = '原始高度上限必須在 %d 和 %d 之間'; +$lang['The original maximum width must be a number between %d and %d'] = '原始寬度上限必須在 %d 和 %d 之間 '; +$lang['This is a major update, with new exciting features.'] = '這是一個重大更新,包括這個令人興奮的新功能。'; +$lang['This is a minor update, with only bug corrections.'] = '這是一個次要更新,只有bug修正'; +$lang['Two updates are available'] = '兩個更新可使用'; +$lang['Unable to dump database.'] = '無法轉儲資料庫。'; +$lang['Update All'] = '全部更新'; +$lang['Update Complete'] = '更新完成'; +$lang['Update in progress... Please wait.'] = '更新正在進行,請稍候。'; +$lang['Update to Piwigo %s'] = '更新到Piwigo %s'; +$lang['Updates'] = '更新'; +$lang['Width'] = '寬度'; +$lang['With no album'] = '沒有相冊'; +$lang['With no tag'] = '沒有標籤'; +$lang['With no virtual album'] = '沒有虛擬相冊'; +$lang['You are using the Browser uploader. Try the Flash uploader instead.'] = '您正在使用瀏覽器上傳,您也可改用Flash上傳器上傳。'; +$lang['You are using the Flash uploader. Problems? Try the Browser uploader instead.'] = '您正在使用Flash上傳器上傳;若有問題,您也可改用瀏覽器上傳。'; +$lang['You can update to Piwigo %s directly, without upgrading to Piwigo %s (recommended).'] = '您可直接升級到Piwigo的%s,而不需升級到Piwigo的%(建議版本)'; +$lang['Zoom'] = '放大'; +$lang['Resize after upload'] = '上傳後調整大小'; +$lang['Original Size'] = '原始大小'; +$lang['A locked gallery is only visible to administrators'] = '鎖定的畫廊,只有管理員可以看見'; +$lang['Unlock gallery'] = '將畫廊解鎖'; +$lang['Gallery unlocked'] = '畫廊已解鎖'; +$lang['Notify administrators when a comment is'] = '通知管理員當評論是'; +$lang['modified'] = '已修改'; +$lang['pending validation'] = '待審定'; +$lang['Save visits in history for'] = '保存訪問的歷史'; +$lang['simple visitors'] = '普通訪客'; +$lang['registered users'] = '註冊用戶'; +$lang['administrators'] = '管理員'; +$lang['This album contains %d photos, added on %s.'] = '這本相冊包含 %d 張照片,在 %s 上增加。'; +$lang['This album contains %d photos, added between %s and %s.'] = '這本相冊包含 %d 張照片,在 %s 和 %s 之間增加。'; +$lang['This album contains no photo.'] = '這本相冊沒有照片'; +$lang['Not cropped correctly?'] = '不正確的裁剪?'; +$lang['Center of interest'] = '我的收藏'; +$lang['Move to album'] = '移動到相冊'; +$lang['You can activate only one mobile theme.'] = '您最多只能啟用一個手機主題。'; +$lang['Automatic sort order'] = '自動排序'; +$lang['apply automatic sort order'] = '使用自動排序'; +$lang['Save manual order'] = '儲存手動排序'; +$lang['cancel manual order'] = '取消手動排序'; +$lang['Cancel'] = '取消'; +$lang['List'] = '清單'; +$lang['Web Form'] = '網頁表格'; +$lang['Applications'] = '申請'; +$lang['Available versions for'] = '可用的版本是'; +$lang['Available on'] = '可用的'; +$lang['Piwigo for iOS (iPhone, iPad, iPod Touch)'] = 'iOS (iPhone, iPad, iPod Touch) 版的 Piwigo '; +$lang['Piwigo for iOS application empowers you to connect to your Piwigo gallery from your iPhone, iPad or iPod Touch, create some albums and upload several photos at once.'] = 'iOS 版的Piwigo允許您從iPhone, iPad 或 iPod Touch 連接到您的Piwigo畫廊,建立多個相冊並一次上傳多張相片。'; +$lang['Piwigo for Android'] = 'Android 版的Piwigo'; +$lang['Piwigo for Android application empowers you to connect your Android phone or table to your Piwigo gallery, create some albums and upload several photos at once.'] = 'Android 版的Piwigo允許從 Android 手機或平版連接到您的Piwigo畫廊,建立多個相冊並一次上傳多張相片。'; +$lang['Piwigo Publish plugin for Lightroom'] = 'Piwigo 的 Lightroom 照片發布插件'; +$lang['Adobe Photoshop Lightroom is a photography software designed to manage large quantities of digital images and doing post production work.'] = 'Adobe 的 Photoshop Lightroom 是一套攝影軟件,可管理大量數位影像和進行後製工作。'; +$lang['The Piwigo publish Plug-in allows you to export and synchronize photos from Lightroom directly to your Piwigo photo gallery.'] = 'Piwigo的發布插件允許你 從Lightroom匯出照片,使你的Lightroom照片與您的Piwigo相冊同步。'; +$lang['Piwigo publish plugin for Shotwell'] = 'Piwigo 的 Shotwell 照片發布插件 '; +$lang['Shotwell is an open source digital photo organizer that runs on Linux. It is the default photo manager in Ubuntu and Fedora.'] = 'Shotwell是一套Linux作業系統下的數位相片管理工具,它是自由軟體,也是 Ubuntu 和 Fedora 中 預設的相片管理軟體。'; +$lang['On your Linux, simply install Shotwell with your package manager and the activate Piwigo publishing option.'] = '在Linux下,只需安裝Shotwell套件和啟用 Piwigo發佈選項。'; +$lang['Piwigo publish plugin for digiKam'] = 'Piwigo 的 ddgiKam 照片發布插件'; +$lang['digiKam is an advanced digital photo management free software for Linux, Windows, and MacOSX.'] = 'digiKam是一套先進的數位相片管理軟體,它是自由軟體,適用於LINUX,WINDOWS和MacOSX。'; +$lang['digiKam is designed for photographers who want to view, manage, edit, enhance, organize, tag, and share photographs.'] = 'digiKam是專為攝影師瀏覽、管理、編輯、加工、整理、標記及分享照片等用途而設計。'; +$lang['To export your photos from digiKam to Piwigo, simply install digiKam and the Kipi-plugins.'] = '從digiKam要匯出相片到Piwigo,只需安裝digiKam和Kipi-plugins插件。'; +$lang['Piwigo export plugin for iPhoto'] = 'iPhoto的Piwigo匯出插件'; +$lang['iPhoto is the default photo manager on MacOSX. The Piwigo export plugin let you create new albums and export your photos directly from iPhoto to your Piwigo photo gallery.'] = 'iPhoto是MacOSX預設的相片管理軟體。此Piwigo匯出插件,可讓你直接從iPhoto匯出相片至Piwigo圖庫,並建立新相冊'; +$lang['Piwigo export plugin for Aperture'] = 'Aperture的Piwigo匯出插件'; +$lang['Aperture is a powerful tool to refine images and manage massive libraries on Mac.'] = 'Aperture是Mac的一項強大工具,可微調讓圖像更精緻,並管理超大照片庫.'; +$lang['Aperture is designed for professional photographers with iPhoto simplicity.'] = 'Aperture是為專業攝影師設計的軟體,但使用起來又與iPhoto一樣簡單.'; +$lang['The Piwigo export plugin allows you to create albums and export photos.'] = 'Piwigo的匯出插件,允許你建立相冊和匯出照片'; +$lang['ReGalAndroid (RemoteGallery client for Android) is an open source (GPL v3) Piwigo client for the Android platform.'] = 'ReGalAndroid(Android行動相冊)是一個開放原始碼軟體(GPL V3),是Android平台上的Piwigo'; +$lang['Features include gallery browsing, album creation and photo upload.'] = '特色包括:畫廊瀏覽、建立相冊和照片上傳'; +$lang['Generate multiple size images'] = '產生多種大小的圖像'; +$lang['Delete multiple size images'] = '刪除多種大小的圖像'; +$lang['any visitor can see this album'] = '任何訪客都可以看到這本相冊'; +$lang['visitors need to login and have the appropriate permissions to see this album'] = '訪客必須登錄並擁有權限才能觀看這本相冊'; +$lang['Groups and users'] = '群組別和用戶'; +$lang['Permission granted for groups'] = '群組別擁有的權限'; +$lang['Select groups...'] = '選擇群組別...'; +$lang['There is no group in this gallery.'] = '此畫廊內沒有群組。'; +$lang['Permission granted for users'] = '用戶擁有的權限'; +$lang['Select users...'] = '選擇用戶...'; +$lang['%u users have automatic permission because they belong to a granted group.'] = '%u 用戶因屬自動許可授權群組別,所以自動擁有權限.'; +$lang['include photos with lower privacy level'] = '包含隱私級別較低的相片'; +$lang['custom'] = '自定義'; +$lang['No group is permitted to see this private album'] = '沒有群組別有權限觀看此私人相冊'; +$lang['Permission management'] = '權限管理'; +$lang['Photo sizes with crop'] = '相片剪裁'; +$lang['The center of interest is the most meaningful zone in the photo.'] = '焦點是相片中最有意思的部份'; +$lang['For photo sizes with crop, such as "Square", Piwigo will do its best to include the center of interest.'] = '如選擇相片剪裁(如「正方形」),Piwigo會盡可能保留相片的焦點'; +$lang['By default, the center of interest is placed in the middle of the photo.'] = '預設情況下,焦點是擺在相片的中間'; +$lang['Select a zone with your mouse to define a new center of interest.'] = '用鼠標選擇新的焦點'; +$lang['X Position'] = 'X 位置'; +$lang['Y Position'] = 'Y 位置'; +$lang['X Repeat'] = 'X 重複'; +$lang['Opacity'] = '不透明度'; +$lang['top left corner'] = '左上角'; +$lang['top right corner'] = '右上角'; +$lang['middle'] = '中間'; +$lang['bottom left corner'] = '左下角'; +$lang['bottom right corner'] = '右下角'; +$lang['Select a file'] = '選擇檔案'; +$lang['add a new watermark'] = '增加一個新的浮水印'; +$lang['Apply watermark if width is bigger than'] = '使用浮水印,假如浮水印寬度大於'; +$lang['Apply watermark if height is bigger than'] = '使用浮水印,假如浮水印高度高於'; +$lang['Multiple Size'] = '多種大小'; +$lang['Watermark'] = '浮水印'; +$lang['Original file : %s'] = '原始檔案 : %s'; +$lang['Posted %s on %s'] = '在 %s 貼上 %s'; +$lang['Added by %s'] = '由 %s 加入'; +$lang['Visited %d times'] = '訪問了 %d 次'; +$lang['Numeric identifier : %d'] = '數字識別碼 : %d'; +$lang['%s ago'] = '%s 以前'; +$lang['%s in the future'] = '%s 在未來'; +$lang['Rated %d times, score : %.2f'] = '被評價 %d 次,分數為 %.2f'; +$lang['%d year'] = '%d 年'; +$lang['%d years'] = '%d 年'; +$lang['%d month'] = '%d 月'; +$lang['%d months'] = '%d 月'; +$lang['%d day'] = '%d 天'; +$lang['%d days'] = '%d 天'; +$lang['%d hour'] = '%d 小時'; +$lang['%d hours'] = '%d 小時'; +$lang['%d minute'] = '%d 分鐘'; +$lang['%d minutes'] = '%d 分鐘'; +$lang['%d second'] = '%d 秒'; +$lang['%d seconds'] = '%d 秒'; +$lang['Sharpen'] = '銳化'; +$lang['%d week'] = '%d 週'; +$lang['%d weeks'] = '%d 週'; +$lang['Edit photo'] = '編輯相片'; +$lang['create a new site'] = '建立新的網站'; +$lang['Duplicate selected tags'] = '重複選取標籤'; +$lang['Name of the duplicate'] = '名稱重複'; +$lang['No order field selected'] = '未選取排序欄位'; +$lang['Source tag'] = '來源標籤'; +$lang['Tag "%s" is now a duplicate of "%s"'] = '"%s" 標籤與 "%s" 標籤重複'; +$lang['between %d and %d pixels'] = '在 %d 和 %d 像素之間'; +$lang['between %.2f and %.2f'] = '在 %.2f 和 %.2f 之間'; +$lang['Duplicate'] = '重複'; +$lang['Landscape'] = '橫向'; +$lang['Manage photos'] = '管理照片'; +$lang['Manage the members'] = '會員管理'; +$lang['Merge selected groups'] = '合併選擇群組'; +$lang['Minimum width'] = '最小寬度'; +$lang['Minimum height'] = '最小高度'; +$lang['No group selected, no action possible.'] = '尚未選取群組別,無法動作'; +$lang['No members to manage'] = '沒有會員可以管理'; +$lang['Number of albums per page'] = '每頁相本數量'; +$lang['Panorama'] = '全景'; +$lang['Please select at least two groups'] = '請最少選擇二個群組別'; +$lang['Portrait'] = '人像'; +$lang['Ratio'] = '比例'; +$lang['Rename'] = '重新命名'; +$lang['This group will be set to default'] = '該群組別將被設定為預設'; +$lang['This group will be unset to default'] = '該群組別不再被使用為預設'; +$lang['Type here the name of the new group'] = '在這輸入新的群組別名稱'; +$lang['View in gallery'] = '以畫廊模式瀏覽'; +$lang['Purge user cache'] = '清除用戶快取'; +$lang['The picture dimensions will be reduced to %dx%d pixels.'] = '圖片的尺寸將減少到 %dx%d 像素。'; +$lang['Resize after upload disabled due to the use of GD as graphic library'] = '由於使用了GD圖形程式,上傳後調整尺寸的功能已關閉。'; +$lang['Select at least one tag'] = '選擇至少一個標籤'; +$lang['Basic settings'] = '基本設置'; +$lang['General'] = '能用'; +$lang['Mail theme'] = '郵件主題'; +$lang['%d of %d users selected'] = '%d 到 %d 位用戶選擇'; +$lang['(filtered from %s total users)'] = '(總共%s 用戶被過濾)'; +$lang['All %d users are selected'] = '所有%d的用戶都被選中'; +$lang['Change password'] = '更改密碼'; +$lang['Change username'] = '更改用戶名'; +$lang['Last visit on %s, %s.'] = '最後的訪問在%s, %s。'; +$lang['Loading...'] = '加載中...'; +$lang['No matching user found'] = '沒有發現匹配的用戶'; +$lang['No user selected of %d users'] = '%d個用戶沒有用戶選擇'; +$lang['No user selected, no action possible.'] = '沒有用戶選擇,沒有行動的可能。'; +$lang['Password updated'] = '更新密碼'; +$lang['Registered on %s, %s.'] = '註冊在%s, %s。'; +$lang['Show %s users'] = '顯示%s用戶'; +$lang['Showing %s to %s of %s users'] = '顯示%s的用戶從%s到%s'; +$lang['Update user'] = '更新用戶'; +$lang['User %s added'] = '用戶 %s添加'; +$lang['User %s updated'] = '用戶 %s更新'; +$lang['Users modified'] = '用戶修改'; +$lang['on the %d selected users'] = '%d的選定用戶'; +$lang['Close user details'] = '關閉用戶詳細信息'; +$lang['Open user details'] = '打開用戶詳細信息'; +$lang['close'] = '關閉'; +?> \ No newline at end of file diff --git a/sources/language/zh_TW/common.lang.php b/sources/language/zh_TW/common.lang.php new file mode 100644 index 0000000..07d904c --- /dev/null +++ b/sources/language/zh_TW/common.lang.php @@ -0,0 +1,422 @@ + \ No newline at end of file diff --git a/sources/language/zh_TW/help/cat_modify.html b/sources/language/zh_TW/help/cat_modify.html new file mode 100755 index 0000000..a8e021d --- /dev/null +++ b/sources/language/zh_TW/help/cat_modify.html @@ -0,0 +1,127 @@ +

          編輯相本

          + +

          相關資訊

          + +
            + +
          • 名稱: 為相本重新命名 (實際相本的附加虛擬代稱).
          • + +
          • 簡介: 以簡短的文字為該相本內容做簡短描述, + 這些文字將顯示於縮圖頁面的下方。
          • + +
          + +

          移動

          + +

          若該相本為虛擬的,您將可以移動它。移動該相本即為改變它的上層相本

          + +

          選項

          + +
            + +
          • 訪問類型: 權限管理。若您設定了一本私人相本,所有附屬於它的子相本也將轉為私人性質。若您將一本相簿設定為公開性質,則它的上層相本也將轉為公開性質。
          • + +
          • 鎖定: 該相本與其內的子相本都將暫時被關閉以進行維護。
          • + +
          • 回應: 讓使用者能夠針對該相本做出回應。
          • + +
          + +

          You can also manage these options on the "Properties" +management screen (screens Comments, Lock, +Public/Private, Representative available from Administration » Albums » Properties).

          + +

          Sort order

          + +

          Use the default images sort order.

          + +

          Indicate whether this sort order will apply to subalbums also.

          + +

          Select specific sorting criteria to be used with this album.

          +
            +
          • Creation date: Photo shooting date
          • +
          • Post date: Synchronization date
          • +
          • Average rate (*): Average rate could be changed by the visitor rating
          • +
          • Most visited (*): The current visit might change the most visited order
          • +
          • File name: Name given in information field
          • +
          • Id: Internal Id (recent categories have an higher id than previous ones.
          • + +
          +

          (*)Warning: Be sure to test these sort orders by yourself as they can give unexpected results.

          + + +

          Representant

          + +

          The album representative is the thumbnail displayed on the main page (category.php) to represent +the album when +it contains only sub-albums and no direct photo (just as the root album).

          +photo of a album :

          + +
            + +
          • Photo page: one of the action buttons let you set the current photo as the representative for the + displayed album. This button is available only for administrators.
          • + +
          • Modify informations about a photo in + administration. This screen can be reached from picture.php or Batch + management in unit mode. See the help of this screen for + details.
          • + +
          • Administration » Albums » Properties, + Representative. See the help of this screen for details.
          • + +
          • Edit album (the present screen).
          • + +
          + +

          The choice of a representative depends on the +allow_random_representative configuration parameter (see include/config_default.inc.php).

          + +

          In default mode (allow_random_representative set to false), +each album containing at least one element is represented by a fixed +element. Once set (at album creation), the representative changes only +when an administrator ask for it. If the representative is not appropriate, +you can ask to Find a new representant by random.

          + +

          If the allow_random_representative configuration parameter is +set to true, a category containing photos may have no fixed +representant. Just use Delete representant button.

          + +

          If the album contains only sub-albums and no photo, it can nonetheless be represented by any element thanks to Modify +informations about a photo screen. The only option on the current screen +is the Delete representant button.

          + +

          Link all album photos to a new album

          + +
            + +
          • Virtual album name: Name of the new album to be created, +all photos of the current category will be linked to the new one.
          • + +
          • Parent album: Where the new album will be, +leave empty to create it at root.
          • + +
          + +

          Link all album photos to existing albums

          + +
            + +
          • Albums: Choose the destination album.
          • + +
          + +

          Send an information email to group members

          + +
            + +
          • Group: recipients group
          • + +
          • Mail content: Free text to send to them.
          • + +
          \ No newline at end of file diff --git a/sources/language/zh_TW/help/cat_move.html b/sources/language/zh_TW/help/cat_move.html new file mode 100755 index 0000000..2c6b111 --- /dev/null +++ b/sources/language/zh_TW/help/cat_move.html @@ -0,0 +1,14 @@ +

          移動虛擬相冊

          + +

          只有虛擬相冊可以有一個新的父相冊

          + +

          虛擬相冊移動 + +

          選擇您要移動的一個或多個虛擬相冊。 +如果列表是空的,這意味著你還沒有創建一個

          + +

          新的父相冊

          + +

          選擇新的父相冊(虛擬或物理)。 +如果你不選擇任何父相冊,選擇的虛擬相冊將被移動到根目錄。 +一個相冊不能搬進自己本身,或它的一個子相冊

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/cat_options.html b/sources/language/zh_TW/help/cat_options.html new file mode 100755 index 0000000..f88e35e --- /dev/null +++ b/sources/language/zh_TW/help/cat_options.html @@ -0,0 +1,22 @@ +

          相冊選項

          + +

          一次管理數個相冊的選項。

          + +
          + +
          評論
          +
          如果它所屬相冊的留言被啟用,照片可以收到您的訪問者意見
          + +
          +
          鎖定相冊來停用維修。只有管​​理員可以在相冊中查看他們
          + +
          公共 / 私人
          +
          一旦相冊成為私人的,將訪問權限給某些用戶和組
          + +
          代表
          +
          當你設置的配置被設定,此選項是啟動的 +允許隨機代表 (看 include/config_defaults.inc.php) 為 +. 每個相冊可以表示由隨機照片或由所選擇的照片作為一個獨特的代表。
          + +
          \ No newline at end of file diff --git a/sources/language/zh_TW/help/cat_perm.html b/sources/language/zh_TW/help/cat_perm.html new file mode 100755 index 0000000..f465ad3 --- /dev/null +++ b/sources/language/zh_TW/help/cat_perm.html @@ -0,0 +1,14 @@ +

          編輯相冊權限

          + +

          這個屏幕僅可用於私人相冊。在這裡,你可以選擇 +用戶和用戶組授權一個相冊。

          + +

          + +

          +您可以拒絕或授予組訪問當前相冊。通過修改 +組授權,屬於這些組的用戶將被拒絕或授予訪問該相冊。

          + +

          用戶

          + +

          您可以拒絕或允許單個用戶的訪問。即屬於某用戶的組,可以用異常來拒絕訪問。

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/configuration.html b/sources/language/zh_TW/help/configuration.html new file mode 100755 index 0000000..96bbe7d --- /dev/null +++ b/sources/language/zh_TW/help/configuration.html @@ -0,0 +1,107 @@ +

          配置

          + +

          這個畫面讓管理員做基本畫廊配置。事實上,這個畫面只顯示簡單的配置參數,對於絕大多數的管理員,應該是足夠的。如果你想看到其他眾多(高級)配置參數,讀取默認的配置文件 +include/config_default.inc.php.

          + +

          畫面分成不同的部分,按主題分組來配置參數。

          + + +

          主要

          +
            +
          • 圖庫標題: 通過電子郵件,使用RSS訂閱和通知。
          • + +
          • 網頁橫幅: 顯示每個公共頁面頂部。
          • + +
          • 圖庫網址: 用於RSS提要。
          • + +
          • 鎖定圖庫: 鎖定整個圖庫來維護。只有管​​理員組的用戶將能夠到達圖庫。
          • + +
          • 評分: 照片評分功能被啟用。
          • + +
          • 客人也可評分: 即使是未註冊的用戶,也能評分圖片。
          • + +
          • 允許用戶註冊: 任何人都可以註冊。
          • + +
          • 強制所有用戶留下郵件地址: 除了管理員以外,所有用戶登記或更新資料時,將檢查郵件地址。
          • + +
          • 當一個新用戶註冊用電子郵件通知管理員: 每個註冊都將用郵件通知管理員。
          • + +
          • 默認照片順序: 你可以將下拉菜單定義個人化的順序
          • + +
          + +

          歷史

          + +

          頁面的訪客 category.phppicture.php 將被保存在在 history 表。

          + +

          訪客將顯示在 管理 » 工具 » 歷史.

          + +
            +
          • 保存訪客的訪問頁面 : 訪客的訪問頁面將會被記錄
          • + +
          • 保存用戶的訪問頁面 : 用戶的訪問頁面將會被記錄
          • + +
          • 保存管理員的訪問頁面 : 管理員的訪問頁面將會被記錄
          • + +
          + +

          評論

          +
            + +
          • 所有人都可評論: 即使是未登記的訪客也可以發表評論
          • + +
          • 每頁的意見數.
          • + +
          • 驗證: 管理員必須驗證用戶的評論,才能在網站上看到。用戶評論驗證發生在畫面 +管理 » 工具 » 掛起的評論.
          • + +
          • 當輸入一個有效的評論,用電子郵件通知管理員: 當用戶輸入一個有效的評論,發送電子郵件給管理員。
          • + +
          • 當評論需要審核,用電子郵件通知管理員: +發送電子郵件給管理員,當用戶輸入的評論需要由管理員驗證。用戶評論驗證發生在畫面 +管理 » 工具 » 掛起的評論.
          • + +
          + +

          默認顯示

          + +

          +在這裡,你可以改變訪客使用的顯示選項,默認用戶是沒有連接的。 +一旦連接成功,這些選項是由用戶自己選擇覆蓋。 +(修改中的 配置).

          + +

          +這可能改變所有現有用戶的顯示選項,在管理 » 用戶 » 管理 + 畫面,在那裡你可以選擇一個用戶列表。

          + +
            + +
          • 語言: 只應用在Piwigo的標籤、相冊名稱、相片名稱,和所有沒有本地化的描述欄位
          • + +
          • 每行的照片數
          • + +
          • 每頁的行數
          • + +
          • 界面主題
          • + +
          • 最近一段時期: 按天數。顯示此期間的新照片。必須大於1天。
          • + +
          • 展開所有的相冊: 默認情況下,在菜單中展開所有的相冊 + 警告: ​​此選項在資源密集時,比如你的相冊集中包含多本相冊時,可能會產生巨大的菜單。
          • + +
          • 顯示評論數: 每張照片縮略圖頁面上,顯示評論的數量。資源密集型的。
          • + +
          • 顯示點擊數: + 在縮略圖頁面上的縮略圖照片中,顯示點擊數。 + 只有當進階的配置參數是:
            + $conf['show_nb_hits'] = true;
            + 注意:默認為不顯示
          • + +
          • 照片的最大寬度: 最大顯示寬度。 照片大於這個設置,顯示時將被調整。 + 如果不選擇此項,你可能會考慮修改照片的寬度,這將是一個更好的做法。
          • + +
          • 照片的最大高度: 設置為與最大寬度相同。
          • + +
          \ No newline at end of file diff --git a/sources/language/zh_TW/help/extend_for_templates.html b/sources/language/zh_TW/help/extend_for_templates.html new file mode 100755 index 0000000..e241e9b --- /dev/null +++ b/sources/language/zh_TW/help/extend_for_templates.html @@ -0,0 +1,71 @@ +

          模板擴展配置

          + +

          關於

          +

          +可以自定義你的Piwigo畫​​廊,用定制的版本取代現有的模板文件。 +例如,默認的的標頭模板(header.tpl)可以用定制標頭模板(my-header.tpl)取代。提交更改到數據庫後,畫廊將展示定制的標頭 - 而不是原來的標頭。
          +模板擴展是一種強大的方式,來創建新及先進的用戶自定義主題。與LocalFiles編輯器一起使用,你可以創建自己的子主題。

          + +

          原始模板

          +

          主題包含了一些模板文件,來增強畫廊頁。這些是原始模板。

          + +

          選擇性的URL關鍵字

          +

          在畫廊網址的模塊名稱後,發現關鍵字的話。它們也可以是活躍的永久鏈接(參考永久鏈接的文檔,了解更多信息)。 +警告: +如果​​相同的原始模板,並使用相同的關鍵字在一個以上的自定義模板,只有最後一個是活躍的。

          + +

          綁定主題

          +

          綁定主題是主題的模板文件被替換。

          + +

          原始模板在哪裡?

          +

          原始模板隨每個主題的模板文件。 +這些被保存在/themes/default/template (或 themes//template)。 +這些模板文件不應該被編輯,更改將會失去主題的升級。
          +支持的原始模板包括:

          + +
            +
          • index.tpl
          • +
          • mainpage_categories.tpl 和/或 thumbnails.tpl
          • +
          • menubar.tpl
          • +
          • header.tpl 和/或 footer.tpl
          • +
          • picture_content.tpl 和/或 picture.tpl
          • + +
          • profile.tpl 和/或 profile_content.tpl
          • +
          • tags.tpl
          • +
          • upload.tpl
          • +
          • about.tpl
          • +
          • popuphelp.tpl
          • +
          • search.tpl 和/或 search_rules.tpl
          • +
          • nbm.tpl 和/或 notification.tpl
          • +
          • identification.tpl 和/或 register.tpl
          • +
          • redirect.tpl
          • +
          + +

          保存自定義模板

          +

          +定制模板應保存在模板的擴展文件夾或子文件夾。 +例如,/template-extension/my-default/header.tpl (或 /template-extension//header.tpl) +模板文件可以使用任何名稱,與.tpl的副檔名。 +子文件夾中的模板文件,會顯示在模板配置屏幕中,可用的自定義模板。

          + +

          激活定制模板

          +

          +選擇要取代的原來模板。 +選擇一個URL關鍵字,以確保定制的模板,只顯示在該關鍵字的頁面上。 +選擇綁定的主題,該主題的變化將是有效的。 +提交更改到數據庫中。

          + +

          停用定制模板

          +

          取消選擇原始模板,並提交改變到數據庫。
          +在模板的擴展文件夾中,刪除自定義模板文件。

          + + +

          警告

          +
            +
          • 原始模板 >必須是原始模板,否則你可能會產生不可預知的結果。
          • +
          • 如果不止一個定制模板,使用相同的原始模板,和相同的URL關鍵字,只有最後一個是活躍的。
          • +
          • 分佈式樣本模板文件,僅用於測試目的。不能編輯它們。創建你自己的或複製現有的主題模板文件 /template-extension//
          • +
          • 當定制模板被刪除,原來的模板文件將立即激活。
          • +
          + + \ No newline at end of file diff --git a/sources/language/zh_TW/help/group_list.html b/sources/language/zh_TW/help/group_list.html new file mode 100755 index 0000000..c3afc93 --- /dev/null +++ b/sources/language/zh_TW/help/group_list.html @@ -0,0 +1,21 @@ +

          組名單

          + +

          這是管理組的地方

          + +

          添加一個組

          + +

          管理員可以添加組

          + +

          組名單

          + +

          對於每個組,可應用以下操作:

          + +
            +
          • 移到用戶管理 (幫助 » 用戶 » 管理)
          • +
          • 移到權限管理畫面,授予或拒絕訪問私人相冊。
          • +
          • 刪除組(需要確認)
          • +
          • 切換狀態 “默認”(需要確認)
          • +
          + +

          默認組

          +

          默認組是自動關聯,對每個新用戶註冊或創建一個管理員。

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/help_add_photos.html b/sources/language/zh_TW/help/help_add_photos.html new file mode 100755 index 0000000..57a7381 --- /dev/null +++ b/sources/language/zh_TW/help/help_add_photos.html @@ -0,0 +1,25 @@ +

          幾種方法,將照片添加到您的畫廊:

          + +
            +
          • 直接上傳 從您的網頁瀏覽器內,是最簡單,最直接的方式。它取決於你的瀏覽器功能和Web服務器。 + 對於數量龐大的照片或情況下,你會遇到一些問題,但其他方法都只是等著你!
          • +
          + + + +
            +
          • pLoader 是一個桌面應用程序,要安裝在你的計算機上。 +拖 & 放照片到pLoader窗口, 點擊 "上傳到Piwigo" 讓pLoader工作。 +你可以找到其他桌面應用程序,如WinToPiwigo,或Digikam匯出插件到Piwigo。
          • +
          + + + +
          +
            +
          • FTP傳輸是最值得推薦的方式,用最少的點擊次數,來增加非常大的照片集。 + 遵循指南來準備你的照片。FTP方法讓你精確控制,您照片的物理組織到您的服務器上。
          • +
          + + +
          \ No newline at end of file diff --git a/sources/language/zh_TW/help/help_groups.html b/sources/language/zh_TW/help/help_groups.html new file mode 100755 index 0000000..d9ca118 --- /dev/null +++ b/sources/language/zh_TW/help/help_groups.html @@ -0,0 +1,12 @@ + +

          組是一種便捷的方式,為其設置列表用戶的權限。

          + +

          創建組 管理 » 用戶 +» 組 和聯繫用戶到該組 +在 管理 » 用戶 » +管理.

          + +

          一個用戶可以屬於多個組。 授權的優先級高於 +阻截 : 如果用戶“傑克”屬於組“家庭”和“朋友”,並 +且只有組“家庭”可以看到“2010年聖誕節”專輯,那麼 +“傑克”將能看到“2010年聖誕節”。

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/help_misc.html b/sources/language/zh_TW/help/help_misc.html new file mode 100755 index 0000000..ebb068a --- /dev/null +++ b/sources/language/zh_TW/help/help_misc.html @@ -0,0 +1,9 @@ +

          一旦你創建你的畫廊,你可以為你的訪問者配置它 +

            +
          • 默認顯示你喜歡的 管理 » 配置 » 選項客戶設置
          • +
          • 默認主題 管理 » 配置 » 主題
          • +
          • 默認語言 管理 » 配置 » 語言
          • +
          + 默認情況下,每個新用戶登記後,將繼承這些屬性。 +

          +

          如果您有任何問題,Piwigo的社區歡迎您在 這個論壇

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/help_permissions.html b/sources/language/zh_TW/help/help_permissions.html new file mode 100755 index 0000000..507a221 --- /dev/null +++ b/sources/language/zh_TW/help/help_permissions.html @@ -0,0 +1,56 @@ +
          +照片權限 + +

          每個照片有隱私級別(鎖)。每個用戶也有自己的隱私級別(鍵)。隱私級別有5個:

          +
            +
          1. +
          2. 接觸
          3. +
          4. 朋友(這是高於接觸)
          5. +
          6. 家庭(這是高於朋友)
          7. +
          8. 管理員(這是比其他任何級別高)
          9. +
          + +

          高級別比低級別有權限的多。對於一個給定的用戶,隱私級別越高,他可以看到的照片越多。

          + +

          例如,如果照片“peter_wedding-0024.jpg”有“家庭”的隱私級別,那麼:

          +
            +
          • 彼得(是“管理員”)會看到照片,因為"管理員"可以看到所有的照片
          • +
          • 貝絲(是“家庭”)也將看到照片
          • +
          • 瑪麗(是“朋友”)將不會看到照片
          • +
          + +

          用戶沒有看到內容的權限,就不會看到該相冊,甚至它的標題。同樣的原則也適用於一個標籤。

          + +

          您可以設置用戶的隱私級別,在管理 » 用戶 » 管理 畫面。

          + +
          + +
          +相冊權限 + +

          如果隱私級別不適合您的需求,您也可以管理相冊的權限對用戶或組。你可以在同一時間管理照片和相冊的權限,而不會發生衝突。

          + +

          您可以禁止訪問相冊。如果你想管理權限,切換相冊的訪問類型為“私人”。

          + +

          您可以由編輯中的單一相冊,設置一個私人相冊 +(管理 » 相冊 » 管理 + » 編輯)或通過設置選項所有的相冊樹 +(管理 » 相冊 » +屬性 » 公共/私人))。

          + +

          一旦相冊是私人的,你可以管理權限組和 +用戶從3個屏幕:

          + +
            + +
          • 管理 » 用戶 » 管理 » + 權限行為(每用戶一個鏈接)
          • + +
          • 管理 » 用戶 » 組 » + 權限行為(每組一個鏈接)
          • + +
          • 管理 » 相冊 » 管理 » 編輯 + 相冊權限行為(每個相冊一個鏈接)
          • + +
          +
          diff --git a/sources/language/zh_TW/help/help_virtual_links.html b/sources/language/zh_TW/help/help_virtual_links.html new file mode 100755 index 0000000..b72b678 --- /dev/null +++ b/sources/language/zh_TW/help/help_virtual_links.html @@ -0,0 +1,7 @@ +

          照片顯示他們相冊的對應文件目錄中。

          + +

          你也可以顯示幾個相冊中的照片,而無需在Web服務器上複製文件。 +在照片編輯屏幕,從任何相冊來關聯照片(任何管理員都可以達到,從照片頁畫廊側)。

          + +

          虛擬相冊基於這樣的理念:他們有沒有相應的目錄。 +創建虛擬相冊從 管理 » 相冊 » 管理

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/history.html b/sources/language/zh_TW/help/history.html new file mode 100755 index 0000000..f5236e8 --- /dev/null +++ b/sources/language/zh_TW/help/history.html @@ -0,0 +1,23 @@ +

          歷史

          + +

          在這些屏幕上,您可以瀏覽您相冊的訪問歷史,根據您選擇的選項:管理 » 配置 » 選項 » 歷史

          + +

          統計

          +
            +

            如果您選擇記錄頁面訪問 (index.phppicture.php), 您可以從這個標籤瀏覽他們。

            +
          • 全局統計信息: 每年的訪問。
          • +
          • 每年統計: 在選定年的每月訪問
          • +
          • 每月統計: 在選定月的每日訪問
          • +
          • 每日統計: 在選定日的每小時訪問
          • +
          + +

          搜索

          +
            +

            如果您選擇記錄頁面訪問 (index.phppicture.php) +,你可以瀏覽在此選項卡中的細節,不同的過濾器可以幫助你。

            +
          • 過濾日期:選擇日期範圍搜索,通過設置開始和結束日期。
          • +
          • 過濾元素的類型: 選擇該元素的類型進行統計。
          • +
          • 過濾用戶: 選擇用戶在該用戶的統計。
          • +
          • 過濾圖片標識: 選擇圖片標籤在該標籤的統計。
          • +
          • 過濾文件名: 選擇該文件的文件名統計..
          • +
          \ No newline at end of file diff --git a/sources/language/zh_TW/help/maintenance.html b/sources/language/zh_TW/help/maintenance.html new file mode 100755 index 0000000..a2b6718 --- /dev/null +++ b/sources/language/zh_TW/help/maintenance.html @@ -0,0 +1,32 @@ +

          維護

          + +

          為了優化頁面生成時間,Piwigo使用緩存信息。 +例如,重新加載當前的信息時,計數每頁相冊中包含的照片數量,是儲存在數據庫中。 +在理論上,這信息應該永遠是正確的,但有時可能會發生錯誤緩存,使信息變得過時了。

          + +

          隨著時間的推移,一些信息變得不那麼有用。從數據庫中刪除這個無用的信息,會為你節省一些磁盤空間。

          + +
            +
          • 刪除孤兒標籤
          • +
          +
            +
          • 更新相冊信息: 對每個相冊,檢查以下的信息,並在必要時更新:父相冊,照片數,最後一張照片的日期,兄相冊之間的位置,所有相冊中的位置。這個動作也檢查照片的一致性。
          • + +
          • 更新照片信息: 對於每張照片,更新的信息是:文件的完整路徑,平均速率。警告,千萬不能混用:元數據信息必須同步,從 管理 » 工具 » 同步化,或在修改屏幕上的一張照片 (例如通過 照片)。
          • +
          + +
            +
          • 修理和優化數據庫:執行重新排序,修復和優化操作對數據庫中的每個表。
          • +
          • 初始化完整性檢查
          • +
          + +
        • 重新初始化完整性檢查 + +
            +
          • 清除歷史細節: 刪除歷史記錄表的所有行。屏幕 管理 » 工具 » 歷史 將不再顯示過去的歷史信息。 警告: 所有數據將會丟失,沒有任何辦法讓他們回來。
          • +
          • 清除歷史摘要: 刪除所有訪問歷史記錄的摘要信息。此摘要從歷史記錄的細節計算。
          • +
          • 清除會話: 刪除過期的用戶會話。
          • +
          • 清除從未使用的通知供稿
          • +
          • 清除搜索歷史
          • +
          • 清除編譯模板
          • +
          \ No newline at end of file diff --git a/sources/language/zh_TW/help/notification_by_mail.html b/sources/language/zh_TW/help/notification_by_mail.html new file mode 100755 index 0000000..59fde07 --- /dev/null +++ b/sources/language/zh_TW/help/notification_by_mail.html @@ -0,0 +1,14 @@ +

          通知郵件 (NBM)

          + +

          配置和管理電子郵件通知用戶,通知他們,您網站的變化。

          + +

          這個屏幕包含三個選項卡:

          + +

          設置

          +

          此選項卡只為站長,設置通過郵件通知的參數

          + +

          訂閱

          +

          此選項卡只為站長,管理訂閱用戶的電子郵件通知。將用戶添加到訂閱框中,他們就會收到通知郵件。

          + +

          發送

          +

          僅可用於站長和管理員,此選項卡允許管理員發送通知郵件給訂閱用戶。

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/permalinks.html b/sources/language/zh_TW/help/permalinks.html new file mode 100755 index 0000000..c992768 --- /dev/null +++ b/sources/language/zh_TW/help/permalinks.html @@ -0,0 +1,7 @@ +

          永久鏈接

          + +

          永久鏈接被用來製作更好的相冊網址。當相冊有定義一個永久連結,相冊的id不再是需要的網址。

          + +

          當一個永久鏈接被刪除時,你可以將它保存在永久鏈接的歷史,所以,外連到Piwigo頁面的鏈接仍然有效。在永久歷史表中,你可以看到將固定鏈接已被刪除的日期,這是最後一次使用,和已被使用的次數。

          + +

          注意:每個相冊的永久鏈接必須是唯一的。此外,在永久鏈接的歷史中,你不能有相同的永久鏈接。

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/photos_add_ftp.html b/sources/language/zh_TW/help/photos_add_ftp.html new file mode 100755 index 0000000..8835276 --- /dev/null +++ b/sources/language/zh_TW/help/photos_add_ftp.html @@ -0,0 +1,85 @@ +
          + 快速入門 + +
            +
          1. 在您的電腦上創建一個目錄。
          2. + +
          3. 複製這個目錄裡面的一些照片,並在網頁顯示中調整他們。警告:​​目錄和文件的名稱必須只包含字母,數字,“ - ”,“_” 或“.”。不能空白,及特殊字符。
          4. + +
          5. 一個FTP客戶端,複製目錄到Piwigo安裝的“照片庫”目錄。
          6. + +
          7. 登錄您的畫廊,去到 管理 ,然後按一下大型的同步按鈕。
          8. +
          + +

          恭喜您!您已成功創建您的照片庫的第一本相冊

          +
          + +
          + 組織目錄和文件 + +
            + +
          • + +

            Piwigo目錄中的相冊目錄 + "照片庫"。下面的目錄樹中一個非常小的畫廊(但 + 使用許多功能):

            + +
            +照片庫
            +|-- 婚禮
            +|   |-- 慶祝
            +|   |   |-- 到達
            +|   |   |   |-- paul-alone.jpg
            +|   |   |   +-- sarah-alone.jpg
            +|   |   +-- 出發
            +|   |       +-- paul-and-sarah.jpg
            +|   +-- 聚會
            +|       |-- dancers001.jpg
            +|       |-- dancers002.jpg
            +|       +-- dancers003.jpg
            ++-- 蜜月
            +    |-- hotel.png
            +    |-- video-from-plane.avi
            +    +-- pwg_representative
            +        +-- video-from-plane.jpg
            +
            + +
          • + +
          • Except for "pwg_representative" (see explanations below), each directory under "galleries" produces a album. There is no limit on deepness.
          • + +
          • Basically, an element is represented by a file. A file can be a + Piwigo element if its extension is among file_ext + configuration parameter possibilities (see include/config_default.inc.php file). A file can + be a picture if its extension is among picture_ext + configuration parameter possibilities.
          • + +
          • No photo elements (video, sounds, file texts, whatever you want...) are represented by default by an icon corresponding to the filename + extension. Optionally, you can associate a thumbnail and a representative + file (see video.avi in the example above).
          • + +
          • 警告: ​​目錄和文件的名稱必須包含字母,數字,“ - ”,“_”或“.”。不能空白,及特殊字符。
          • + +
          • 一旦照片被放置在正確的 + 目錄, 去到: 管理 » 工具 » + 同步
          • + +
          +
          + + + + 每個目錄下的“畫廊”除為“pwg_representative”(見下面的說明),
        • 產生一個專輯。有沒有深度的限制。 + +
        • 基本上,一個元素表示的一個文件。一個文件就可以了 + Piwigo的元素,如果其擴展名之間的 file_ext + 配置參數的可能性(請參閱<跨度 + 類=“文件名”> / config_default.inc.php 文件)。一個文件可以 + 是一個圖片,如果其擴展名之間的 picture_ext + 配置參數的可能性。 + +
        • 沒有照片元素(視頻,聲音,文件文本,無論你想...)默認情況下,文件名對應一個圖標代表 + 擴展名。或者,您可以將一個縮略圖,並代表 + 文件(見video.avi在上面的例子)。 diff --git a/sources/language/zh_TW/help/search.html b/sources/language/zh_TW/help/search.html new file mode 100755 index 0000000..594e3df --- /dev/null +++ b/sources/language/zh_TW/help/search.html @@ -0,0 +1,21 @@ +

          搜索

          + +

          這頁讓您搜索所有相冊之間的照片。

          + +
          + +
          搜索詞
          +
          搜索一個或多個關鍵字之間的屬性從相關的相冊照片。使用*作為一個部分匹配的萬用字元。
          + +
          按作者搜尋
          +
          使用*作為一個部分匹配的萬用字元。
          + +
          按日期搜索
          +
          您可選擇日期和(或)結束日期為查詢。如果你想要做一個“前”查詢,將發表日期字段設為空。 + 在結束年的字段必須輸入的格式如下:AAAA(例如2004年)
          + +
          按相冊搜索
          + + +
          diff --git a/sources/language/zh_TW/help/synchronize.html b/sources/language/zh_TW/help/synchronize.html new file mode 100755 index 0000000..52f3873 --- /dev/null +++ b/sources/language/zh_TW/help/synchronize.html @@ -0,0 +1,14 @@ +

          同步

          + +

          有兩種不同類型的同步:

          +
            +
          • 目錄/文件
          • +
          • 文件元數據
          • +
          + +

          同步的目錄和文件,是根據你的目錄樹,到數據庫中的相冊樹。 +同步文件的元數據是關於更新的照片信息,如文件大小,像素尺寸,EXIF或IPTC信息,在數據庫中。

          + +

          當您同步上傳您的相冊,您必須首先同步目錄和文件

          + +

          在同步過程可能需要很長一段時間(取決於服務器負載以及管理的元素數量),所以它是可以做到相冊對相冊的

          \ No newline at end of file diff --git a/sources/language/zh_TW/help/user_list.html b/sources/language/zh_TW/help/user_list.html new file mode 100755 index 0000000..0567b41 --- /dev/null +++ b/sources/language/zh_TW/help/user_list.html @@ -0,0 +1,23 @@ +

          用戶列表

          + +

          這理是你管理Piwigo相冊用戶的地方。

          + +

          添加用戶

          + +

          管理員可以手動添加用戶。對於每個用戶創建一個用戶名,一個密碼,並提交有效的電子郵件地址。

          + +

          用戶列表

          + +

          在現有用戶列表,可以過濾用戶名(使用 * 通配符),群組或狀態。可以依據登記日期或用戶名,升序或降序排列。

          + +

          這個畫面允許一次管理多個用戶,使用不同的操作:

          + +
            +
          • 刪除用戶(需確認)
          • +
          • 改變用戶的狀態
          • +
          • 關聯或脫離於群體
          • +
          • 修改顯示屬性
          • +
          • 修改附加的偏好
          • +
          + +

          目標是選定的用戶(默認),或在過濾列表中所顯示的所有用戶。

          \ No newline at end of file diff --git a/sources/language/zh_TW/install.lang.php b/sources/language/zh_TW/install.lang.php new file mode 100644 index 0000000..cdc0ce4 --- /dev/null +++ b/sources/language/zh_TW/install.lang.php @@ -0,0 +1,68 @@ +Piwigo message board.'] = '需要幫助? 請到Piwigo論壇提出你的問題.'; +$lang['Visitors will be able to contact site administrator with this mail'] = '遊客通過此Email跟你聯繫'; +$lang['PHP 5 is required'] = '必須PHP 5版本'; +$lang['It appears your webhost is currently running PHP %s.'] = '你主機PHP版本好像是PHP %s.'; +$lang['Piwigo may try to switch your configuration to PHP 5 by creating or modifying a .htaccess file.'] = 'Piwigo試著創建或修改.htaccess文件來轉換到PHP 5。'; +$lang['Note you can change your configuration by yourself and restart Piwigo after that.'] = '注意;你也可以自己修改設置PHP然後重新啟動Piwigo。'; +$lang['Try to configure PHP 5'] = '試試配置PHP 5'; +$lang['Sorry!'] = '對不起!'; +$lang['Piwigo was not able to configure PHP 5.'] = 'Piwigo不能設置PHP 5.'; +$lang["You may referer to your hosting provider's support and see how you could switch to PHP 5 by yourself."] = '你應該聯繫你的主機管理員並向其請教如何設置PHP 5.'; +$lang['Hope to see you back soon.'] = '希望下次再見到你...'; +$lang['Congratulations, Piwigo installation is completed'] = '恭喜,Piwigo 已安裝完成。'; +$lang['An alternate solution is to copy the text in the box above and paste it into the file "local/config/database.inc.php" (Warning : database.inc.php must only contain what is in the textarea, no line return or space character)'] = '另一個解決辦法是,將以上文本框裡的文本拷貝到 "local/config/database.inc.php" 文件裡(注意:database.inc.php 必須只能包含此文本框裡的內容,沒有換行或者空格字符)'; +$lang['Creation of config file local/config/database.inc.php failed.'] = '創建 local/config/database.inc.php 文件失敗.'; +$lang['Download the config file'] = '下載配置文件'; +$lang['You can download the config file and upload it to local/config directory of your installation.'] = '您可以下載配置文件,然後上傳到 local/config 目錄以完成您的安裝.'; +$lang['Just another Piwigo gallery'] = '另一本Piwigo相片集'; +$lang['Welcome to my photo gallery'] = '歡迎進入我的相片集'; +$lang['Welcome to your new installation of Piwigo!'] = '歡迎安裝Piwigo!'; +$lang['Don\'t hesitate to consult our forums for any help : %s'] = '如有任何問題,請至我們的論壇提出:%s '; +$lang['localhost or other, supplied by your host provider'] = '本地主機或其它,由你的主機提供商提供'; +?> \ No newline at end of file diff --git a/sources/language/zh_TW/iso.txt b/sources/language/zh_TW/iso.txt new file mode 100644 index 0000000..08b83af --- /dev/null +++ b/sources/language/zh_TW/iso.txt @@ -0,0 +1 @@ +中文 (繁體) [TW] \ No newline at end of file diff --git a/sources/language/zh_TW/upgrade.lang.php b/sources/language/zh_TW/upgrade.lang.php new file mode 100644 index 0000000..883b7f6 --- /dev/null +++ b/sources/language/zh_TW/upgrade.lang.php @@ -0,0 +1,44 @@ +release %s
          (or equivalent).'] = "此頁面將把您的 Piwigo 舊版本的數據庫升級為新版本。 +升級助手將會認為您正在運行 版本 %s (或者相同的版本)."; +$lang['Upgrade from version %s to %s'] = "從 %s 版升級到 %s"; +$lang['Statistics'] = "統計"; +$lang['total upgrade time'] = "總共升級時間"; +$lang['total SQL time'] = "總共 SQL 時間"; +$lang['SQL queries'] = "SQL 查詢"; +$lang['Upgrade informations'] = "升級信息"; +$lang['Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'] = "如果您遇到任何問題,請在[管理員>工具>維護]執行維護檢測"; +$lang['As a precaution, following plugins have been deactivated. You must check for plugins upgrade before reactiving them:'] = "為了預防萬一,以下插件已被停用。在您重新啟用它們之前,必須先檢查這些插件的更新:"; +$lang['Only administrator can run upgrade: please sign in below.'] = "只有管理員能運行升級操作:請先登錄。"; +$lang['You do not have access rights to run upgrade'] = "您沒有執行升級程序的權限"; +$lang['All sub-albums of private albums become private'] = '相冊裡的所有子相冊都成為私有'; +$lang['User permissions and group permissions have been erased'] = "用戶和組的權限已被清除"; +$lang['Only thumbnails prefix and webmaster mail address have been saved from previous configuration'] = "在前一個配置操作中,只有縮略圖的前綴和網站管理員的郵件地址被保存了。"; +$lang['In %s, before ?>, insert:'] = '在 %s, 之前 ?>, 插入:'; +$lang['As a precaution, following themes have been deactivated. You must check for themes upgrade before reactiving them:'] = '為小心起見,以下主題已停用。假如要重新啟用它們,你必須先檢查有沒有可更新的主題:'; + +?> \ No newline at end of file diff --git a/sources/language/zh_TW/zh_TW.jpg b/sources/language/zh_TW/zh_TW.jpg new file mode 100644 index 0000000..29df8cb Binary files /dev/null and b/sources/language/zh_TW/zh_TW.jpg differ diff --git a/sources/local/config/index.php b/sources/local/config/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/local/config/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/local/css/index.php b/sources/local/css/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/local/css/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/local/index.php b/sources/local/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/local/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/local/language/index.php b/sources/local/language/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/local/language/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/nbm.php b/sources/nbm.php new file mode 100644 index 0000000..3e89df0 --- /dev/null +++ b/sources/nbm.php @@ -0,0 +1,81 @@ +true, 'local'=>true) ); + + +// +-----------------------------------------------------------------------+ +// | Main | +// +-----------------------------------------------------------------------+ +if (isset($_GET['subscribe']) + and preg_match('/^[A-Za-z0-9]{16}$/', $_GET['subscribe'])) +{ + subscribe_notification_by_mail(false, array($_GET['subscribe'])); +} +else if (isset($_GET['unsubscribe']) + and preg_match('/^[A-Za-z0-9]{16}$/', $_GET['unsubscribe'])) +{ + unsubscribe_notification_by_mail(false, array($_GET['unsubscribe'])); +} +else +{ + $page['errors'][] = l10n('Unknown identifier'); +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ +$title = l10n('Notification'); +$page['body_id'] = 'theNBMPage'; + +$template->set_filenames(array('nbm'=>'nbm.tpl')); + + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theNBMPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ +include(PHPWG_ROOT_PATH.'include/page_header.php'); +flush_page_messages(); +$template->parse('nbm'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> diff --git a/sources/notification.php b/sources/notification.php new file mode 100644 index 0000000..e0205e4 --- /dev/null +++ b/sources/notification.php @@ -0,0 +1,122 @@ +1, 'nofollow'=>1); + + +$template->set_filenames(array('notification'=>'notification.tpl')); + +$template->assign( + array( + 'U_FEED' => $feed_url, + 'U_FEED_IMAGE_ONLY' => $feed_image_only_url, + ) + ); + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theNotificationPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_notification'); +flush_page_messages(); +$template->pparse('notification'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); + +?> \ No newline at end of file diff --git a/sources/password.php b/sources/password.php new file mode 100644 index 0000000..abcd502 --- /dev/null +++ b/sources/password.php @@ -0,0 +1,361 @@ + $activation_key), + array('user_id' => $user_id) + ); + + $userdata['activation_key'] = $activation_key; + } + + set_make_full_url(); + + $message = l10n('Someone requested that the password be reset for the following user account:') . "\r\n\r\n"; + $message.= l10n( + 'Username "%s" on gallery %s', + $userdata['username'], + get_gallery_home_url() + ); + $message.= "\r\n\r\n"; + $message.= l10n('To reset your password, visit the following address:') . "\r\n"; + $message.= get_gallery_home_url().'/password.php?key='.$userdata['activation_key']."\r\n\r\n"; + $message.= l10n('If this was a mistake, just ignore this email and nothing will happen.')."\r\n"; + + unset_make_full_url(); + + $message = trigger_event('render_lost_password_mail_content', $message); + + $email_params = array( + 'subject' => '['.$conf['gallery_title'].'] '.l10n('Password Reset'), + 'content' => $message, + 'email_format' => 'text/plain', + ); + + if (pwg_mail($userdata['email'], $email_params)) + { + $page['infos'][] = l10n('Check your email for the confirmation link'); + return true; + } + else + { + $page['errors'][] = l10n('Error sending email'); + return false; + } +} + +/** + * checks the activation key: does it match the expected pattern? is it + * linked to a user? is this user allowed to reset his password? + * + * @return mixed (user_id if OK, false otherwise) + */ +function check_password_reset_key($key) +{ + global $page; + + if (!preg_match('/^[a-z0-9]{20}$/i', $key)) + { + $page['errors'][] = l10n('Invalid key'); + return false; + } + + $query = ' +SELECT + user_id, + status + FROM '.USER_INFOS_TABLE.' + WHERE activation_key = \''.$key.'\' +;'; + $result = pwg_query($query); + + if (pwg_db_num_rows($result) == 0) + { + $page['errors'][] = l10n('Invalid key'); + return false; + } + + $userdata = pwg_db_fetch_assoc($result); + + if (is_a_guest($userdata['status']) or is_generic($userdata['status'])) + { + $page['errors'][] = l10n('Password reset is not allowed for this user'); + return false; + } + + return $userdata['user_id']; +} + +/** + * checks the passwords, checks that user is allowed to reset his password, + * update password, fills $page['errors'] and $page['infos']. + * + * @return bool (true if password was reset, false otherwise) + */ +function reset_password() +{ + global $page, $user, $conf; + + if ($_POST['use_new_pwd'] != $_POST['passwordConf']) + { + $page['errors'][] = l10n('The passwords do not match'); + return false; + } + + if (isset($_GET['key'])) + { + $user_id = check_password_reset_key($_GET['key']); + if (!is_numeric($user_id)) + { + $page['errors'][] = l10n('Invalid key'); + return false; + } + } + else + { + // we check the currently logged in user + if (is_a_guest() or is_generic()) + { + $page['errors'][] = l10n('Password reset is not allowed for this user'); + return false; + } + + $user_id = $user['id']; + } + + single_update( + USERS_TABLE, + array($conf['user_fields']['password'] => $conf['password_hash']($_POST['use_new_pwd'])), + array($conf['user_fields']['id'] => $user_id) + ); + + $page['infos'][] = l10n('Your password has been reset'); + + if (isset($_GET['key'])) + { + $page['infos'][] = ''.l10n('Login').''; + } + else + { + $page['infos'][] = ''.l10n('Return to home page').''; + } + + return true; +} + +// +-----------------------------------------------------------------------+ +// | Process form | +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit'])) +{ + check_pwg_token(); + + if ('lost' == $_GET['action']) + { + if (process_password_request()) + { + $page['action'] = 'none'; + } + } + + if ('reset' == $_GET['action']) + { + if (reset_password()) + { + $page['action'] = 'none'; + } + } +} + +// +-----------------------------------------------------------------------+ +// | key and action | +// +-----------------------------------------------------------------------+ + +// a connected user can't reset the password from a mail +if (isset($_GET['key']) and !is_a_guest()) +{ + unset($_GET['key']); +} + +if (isset($_GET['key'])) +{ + $user_id = check_password_reset_key($_GET['key']); + if (is_numeric($user_id)) + { + $userdata = getuserdata($user_id, false); + $page['username'] = $userdata['username']; + $template->assign('key', $_GET['key']); + + if (!isset($page['action'])) + { + $page['action'] = 'reset'; + } + } + else + { + $page['action'] = 'none'; + } +} + +if (!isset($page['action'])) +{ + if (!isset($_GET['action'])) + { + $page['action'] = 'lost'; + } + elseif (in_array($_GET['action'], array('lost', 'reset', 'none'))) + { + $page['action'] = $_GET['action']; + } +} + +if ('reset' == $page['action'] and !isset($_GET['key']) and (is_a_guest() or is_generic())) +{ + redirect(get_gallery_home_url()); +} + +if ('lost' == $page['action'] and !is_a_guest()) +{ + redirect(get_gallery_home_url()); +} + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ + +$title = l10n('Password Reset'); +if ('lost' == $page['action']) +{ + $title = l10n('Forgot your password?'); + + if (isset($_POST['username_or_email'])) + { + $template->assign('username_or_email', htmlspecialchars(stripslashes($_POST['username_or_email']))); + } +} + +$page['body_id'] = 'thePasswordPage'; + +$template->set_filenames(array('password'=>'password.tpl')); +$template->assign( + array( + 'title' => $title, + 'form_action'=> get_root_url().'password.php', + 'action' => $page['action'], + 'username' => isset($page['username']) ? $page['username'] : $user['username'], + 'PWG_TOKEN' => get_pwg_token(), + ) + ); + + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('thePasswordPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_password'); +flush_page_messages(); +$template->pparse('password'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); + +?> diff --git a/sources/picture.php b/sources/picture.php new file mode 100644 index 0000000..98c9593 --- /dev/null +++ b/sources/picture.php @@ -0,0 +1,1003 @@ +0) + { + $query .= 'id = '.$page['image_id']; + } + else + {// url given by file name + assert( !empty($page['image_file']) ); + $query .= 'file LIKE \'' . + str_replace(array('_','%'), array('/_','/%'), $page['image_file'] ). + '.%\' ESCAPE \'/\' LIMIT 1'; + } + if ( ! ( $row = pwg_db_fetch_assoc(pwg_query($query)) ) ) + {// element does not exist + page_not_found( 'The requested image does not exist', + duplicate_index_url() + ); + } + if ($row['level']>$user['level']) + { + access_denied(); + } + + $page['image_id'] = $row['id']; + $page['image_file'] = $row['file']; + if ( !isset($page['rank_of'][$page['image_id']]) ) + {// the image can still be non accessible (filter/cat perm) and/or not in the set + global $filter; + if ( !empty($filter['visible_images']) and + !in_array($page['image_id'], explode(',',$filter['visible_images']) ) ) + { + page_not_found( 'The requested image is filtered', + duplicate_index_url() + ); + } + if ('categories'==$page['section'] and !isset($page['category']) ) + {// flat view - all items + access_denied(); + } + else + {// try to see if we can access it differently + $query = ' +SELECT id + FROM '.IMAGES_TABLE.' INNER JOIN '.IMAGE_CATEGORY_TABLE.' ON id=image_id + WHERE id='.$page['image_id'] + . get_sql_condition_FandF( + array('forbidden_categories' => 'category_id'), + " AND" + ).' + LIMIT 1'; + if ( pwg_db_num_rows( pwg_query($query) ) == 0 ) + { + access_denied(); + } + else + { + if ('best_rated'==$page['section']) + { + $page['rank_of'][ $page['image_id'] ] = count($page['items']); + $page['items'][] = $page['image_id']; + } + else + { + $url = make_picture_url( + array( + 'image_id' => $page['image_id'], + 'image_file' => $page['image_file'], + 'section' => 'categories', + 'flat' => true, + ) + ); + set_status_header( 'recent_pics'==$page['section'] ? 301 : 302); + redirect_http( $url ); + } + } + } + } +} + +// There is cookie, so we must handle it at the beginning +if ( isset($_GET['metadata']) ) +{ + if ( pwg_get_session_var('show_metadata') == null ) + { + pwg_set_session_var('show_metadata', 1 ); + } else { + pwg_unset_session_var('show_metadata'); + } +} + +// add default event handler for rendering element content +add_event_handler( + 'render_element_content', + 'default_picture_content', + EVENT_HANDLER_PRIORITY_NEUTRAL, + 2 + ); +// add default event handler for rendering element description +add_event_handler('render_element_description', 'nl2br'); + +trigger_action('loc_begin_picture'); + +// this is the default handler that generates the display for the element +function default_picture_content($content, $element_info) +{ + global $conf; + + if ( !empty($content) ) + {// someone hooked us - so we skip; + return $content; + } + + if (isset($_COOKIE['picture_deriv'])) + { + if ( array_key_exists($_COOKIE['picture_deriv'], ImageStdParams::get_defined_type_map()) ) + { + pwg_set_session_var('picture_deriv', $_COOKIE['picture_deriv']); + } + setcookie('picture_deriv', false, 0, cookie_path() ); + } + $deriv_type = pwg_get_session_var('picture_deriv', $conf['derivative_default_size']); + $selected_derivative = $element_info['derivatives'][$deriv_type]; + + $unique_derivatives = array(); + $show_original = isset($element_info['element_url']); + $added = array(); + foreach($element_info['derivatives'] as $type => $derivative) + { + if ($type==IMG_SQUARE || $type==IMG_THUMB) + continue; + if (!array_key_exists($type, ImageStdParams::get_defined_type_map())) + continue; + $url = $derivative->get_url(); + if (isset($added[$url])) + continue; + $added[$url] = 1; + $show_original &= !($derivative->same_as_source()); + $unique_derivatives[$type]= $derivative; + } + + global $page, $template; + + if ($show_original) + { + $template->assign( 'U_ORIGINAL', $element_info['element_url'] ); + } + + $template->append('current', array( + 'selected_derivative' => $selected_derivative, + 'unique_derivatives' => $unique_derivatives, + ), true); + + + $template->set_filenames( + array('default_content'=>'picture_content.tpl') + ); + + $template->assign( array( + 'ALT_IMG' => $element_info['file'], + 'COOKIE_PATH' => cookie_path(), + ) + ); + return $template->parse( 'default_content', true); +} + +// +-----------------------------------------------------------------------+ +// | initialization | +// +-----------------------------------------------------------------------+ + +// caching first_rank, last_rank, current_rank in the displayed +// section. This should also help in readability. +$page['first_rank'] = 0; +$page['last_rank'] = count($page['items']) - 1; +$page['current_rank'] = $page['rank_of'][ $page['image_id'] ]; + +// caching current item : readability purpose +$page['current_item'] = $page['image_id']; + +if ($page['current_rank'] != $page['first_rank']) +{ + // caching first & previous item : readability purpose + $page['previous_item'] = $page['items'][ $page['current_rank'] - 1 ]; + $page['first_item'] = $page['items'][ $page['first_rank'] ]; +} + +if ($page['current_rank'] != $page['last_rank']) +{ + // caching next & last item : readability purpose + $page['next_item'] = $page['items'][ $page['current_rank'] + 1 ]; + $page['last_item'] = $page['items'][ $page['last_rank'] ]; +} + +$url_up = duplicate_index_url( + array( + 'start' => + floor($page['current_rank'] / $page['nb_image_page']) + * $page['nb_image_page'] + ), + array( + 'start', + ) + ); + +$url_self = duplicate_picture_url(); + +// +-----------------------------------------------------------------------+ +// | actions | +// +-----------------------------------------------------------------------+ + +/** + * Actions are favorite adding, user comment deletion, setting the picture + * as representative of the current category... + * + * Actions finish by a redirection + */ + +if (isset($_GET['action'])) +{ + switch ($_GET['action']) + { + case 'add_to_favorites' : + { + $query = ' +INSERT INTO '.FAVORITES_TABLE.' + (image_id,user_id) + VALUES + ('.$page['image_id'].','.$user['id'].') +;'; + pwg_query($query); + + redirect($url_self); + + break; + } + case 'remove_from_favorites' : + { + $query = ' +DELETE FROM '.FAVORITES_TABLE.' + WHERE user_id = '.$user['id'].' + AND image_id = '.$page['image_id'].' +;'; + pwg_query($query); + + if ('favorites' == $page['section']) + { + redirect($url_up); + } + else + { + redirect($url_self); + } + + break; + } + case 'set_as_representative' : + { + if (is_admin() and isset($page['category'])) + { + $query = ' +UPDATE '.CATEGORIES_TABLE.' + SET representative_picture_id = '.$page['image_id'].' + WHERE id = '.$page['category']['id'].' +;'; + pwg_query($query); + + include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); + invalidate_user_cache(); + } + + redirect($url_self); + + break; + } + case 'add_to_caddie' : + { + fill_caddie(array($page['image_id'])); + redirect($url_self); + break; + } + case 'rate' : + { + include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php'); + rate_picture($page['image_id'], $_POST['rate']); + redirect($url_self); + } + case 'edit_comment': + { + include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php'); + check_input_parameter('comment_to_edit', $_GET, false, PATTERN_ID); + $author_id = get_comment_author_id($_GET['comment_to_edit']); + + if (can_manage_comment('edit', $author_id)) + { + if (!empty($_POST['content'])) + { + check_pwg_token(); + $comment_action = update_user_comment( + array( + 'comment_id' => $_GET['comment_to_edit'], + 'image_id' => $page['image_id'], + 'content' => $_POST['content'], + 'website_url' => @$_POST['website_url'], + ), + $_POST['key'] + ); + + $perform_redirect = false; + switch ($comment_action) + { + case 'moderate': + $_SESSION['page_infos'][] = l10n('An administrator must authorize your comment before it is visible.'); + case 'validate': + $_SESSION['page_infos'][] = l10n('Your comment has been registered'); + $perform_redirect = true; + break; + case 'reject': + $_SESSION['page_errors'][] = l10n('Your comment has NOT been registered because it did not pass the validation rules'); + break; + default: + trigger_error('Invalid comment action '.$comment_action, E_USER_WARNING); + } + + if ($perform_redirect) + { + redirect($url_self); + } + unset($_POST['content']); + } + + $edit_comment = $_GET['comment_to_edit']; + } + break; + } + case 'delete_comment' : + { + check_pwg_token(); + + include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php'); + + check_input_parameter('comment_to_delete', $_GET, false, PATTERN_ID); + + $author_id = get_comment_author_id($_GET['comment_to_delete']); + + if (can_manage_comment('delete', $author_id)) + { + delete_user_comment($_GET['comment_to_delete']); + } + + redirect($url_self); + } + case 'validate_comment' : + { + check_pwg_token(); + + include_once(PHPWG_ROOT_PATH.'include/functions_comment.inc.php'); + + check_input_parameter('comment_to_validate', $_GET, false, PATTERN_ID); + + $author_id = get_comment_author_id($_GET['comment_to_validate']); + + if (can_manage_comment('validate', $author_id)) + { + validate_user_comment($_GET['comment_to_validate']); + } + + redirect($url_self); + } + + } +} + + +//---------- incrementation of the number of hits +// don't increment counter if in the Mozilla Firefox prefetch +if (isset($_SERVER['HTTP_X_MOZ']) and $_SERVER['HTTP_X_MOZ'] == 'prefetch') +{ + add_event_handler('allow_increment_element_hit_count', create_function('$b', 'return false;')); +} +else +{ + // don't increment counter if comming from the same picture (actions) + if (pwg_get_session_var('referer_image_id',0) == $page['image_id']) + { + add_event_handler('allow_increment_element_hit_count', create_function('$b', 'return false;')); + } + pwg_set_session_var('referer_image_id', $page['image_id']); +} + +// don't increment if adding a comment +if (trigger_event('allow_increment_element_hit_count', !isset($_POST['content']) ) ) +{ + $query = ' +UPDATE + '.IMAGES_TABLE.' + SET hit = hit+1 + WHERE id = '.$page['image_id'].' +;'; + pwg_query($query); +} + +//---------------------------------------------------------- related categories +$query = ' +SELECT id,uppercats,commentable,visible,status,global_rank + FROM '.IMAGE_CATEGORY_TABLE.' + INNER JOIN '.CATEGORIES_TABLE.' ON category_id = id + WHERE image_id = '.$page['image_id'].' +'.get_sql_condition_FandF + ( + array + ( + 'forbidden_categories' => 'id', + 'visible_categories' => 'id' + ), + 'AND' + ).' +;'; +$related_categories = array_from_query($query); +usort($related_categories, 'global_rank_compare'); +//-------------------------first, prev, current, next & last picture management +$picture = array(); + +$ids = array($page['image_id']); +if (isset($page['previous_item'])) +{ + $ids[] = $page['previous_item']; + $ids[] = $page['first_item']; +} +if (isset($page['next_item'])) +{ + $ids[] = $page['next_item']; + $ids[] = $page['last_item']; +} + +$query = ' +SELECT * + FROM '.IMAGES_TABLE.' + WHERE id IN ('.implode(',', $ids).') +;'; + +$result = pwg_query($query); + +while ($row = pwg_db_fetch_assoc($result)) +{ + if (isset($page['previous_item']) and $row['id'] == $page['previous_item']) + { + $i = 'previous'; + } + elseif (isset($page['next_item']) and $row['id'] == $page['next_item']) + { + $i = 'next'; + } + elseif (isset($page['first_item']) and $row['id'] == $page['first_item']) + { + $i = 'first'; + } + elseif (isset($page['last_item']) and $row['id'] == $page['last_item']) + { + $i = 'last'; + } + else + { + $i = 'current'; + } + + $row['src_image'] = new SrcImage($row); + $row['derivatives'] = DerivativeImage::get_all($row['src_image']); + + if ($i=='current') + { + $row['element_path'] = get_element_path($row); + + if ( $row['src_image']->is_original() ) + {// we have a photo + if ( $user['enabled_high']=='true' ) + { + $row['element_url'] = $row['src_image']->get_url(); + $row['download_url'] = get_action_url($row['id'], 'e', true); + } + } + else + { // not a pic - need download link + $row['download_url'] = $row['element_url'] = get_element_url($row);; + } + } + + $row['url'] = duplicate_picture_url( + array( + 'image_id' => $row['id'], + 'image_file' => $row['file'], + ), + array( + 'start', + ) + ); + + $picture[$i] = $row; + $picture[$i]['TITLE'] = render_element_name($row); + $picture[$i]['TITLE_ESC'] = str_replace('"', '"', $picture[$i]['TITLE']); + + if ('previous'==$i and $page['previous_item']==$page['first_item']) + { + $picture['first'] = $picture[$i]; + } + if ('next'==$i and $page['next_item']==$page['last_item']) + { + $picture['last'] = $picture[$i]; + } +} + +$slideshow_params = array(); +$slideshow_url_params = array(); + +if (isset($_GET['slideshow'])) +{ + $page['slideshow'] = true; + $page['meta_robots'] = array('noindex'=>1, 'nofollow'=>1); + + $slideshow_params = decode_slideshow_params($_GET['slideshow']); + $slideshow_url_params['slideshow'] = encode_slideshow_params($slideshow_params); + + if ($slideshow_params['play']) + { + $id_pict_redirect = ''; + if (isset($page['next_item'])) + { + $id_pict_redirect = 'next'; + } + else + { + if ($slideshow_params['repeat'] and isset($page['first_item'])) + { + $id_pict_redirect = 'first'; + } + } + + if (!empty($id_pict_redirect)) + { + // $refresh, $url_link and $title are required for creating + // an automated refresh page in header.tpl + $refresh = $slideshow_params['period']; + $url_link = add_url_params( + $picture[$id_pict_redirect]['url'], + $slideshow_url_params + ); + } + } +} +else +{ + $page['slideshow'] = false; +} +if ($page['slideshow'] and $conf['light_slideshow']) +{ + $template->set_filenames( array('slideshow' => 'slideshow.tpl')); +} +else +{ + $template->set_filenames( array('picture' => 'picture.tpl')); +} + +$title = $picture['current']['TITLE']; +$title_nb = ($page['current_rank'] + 1).'/'.count($page['items']); + +// metadata +$url_metadata = duplicate_picture_url(); +$url_metadata = add_url_params( $url_metadata, array('metadata'=>null) ); + + +// do we have a plugin that can show metadata for something else than images? +$metadata_showable = trigger_event( + 'get_element_metadata_available', + ( + ($conf['show_exif'] or $conf['show_iptc']) + and !$picture['current']['src_image']->is_mimetype() + ), + $picture['current'] + ); + +if ( $metadata_showable and pwg_get_session_var('show_metadata') ) +{ + $page['meta_robots']=array('noindex'=>1, 'nofollow'=>1); +} + + +$page['body_id'] = 'thePicturePage'; + +// allow plugins to change what we computed before passing data to template +$picture = trigger_event('picture_pictures_data', $picture); + +//------------------------------------------------------- navigation management +foreach (array('first','previous','next','last', 'current') as $which_image) +{ + if (isset($picture[$which_image])) + { + $template->assign( + $which_image, + array_merge( + $picture[$which_image], + array( + 'THUMB_SRC' => $picture[$which_image]['derivatives'][IMG_THUMB]->get_url(), + // Params slideshow was transmit to navigation buttons + 'U_IMG' => + add_url_params( + $picture[$which_image]['url'], $slideshow_url_params), + ) + ) + ); + } +} +if ($conf['picture_download_icon'] and !empty($picture['current']['download_url'])) +{ + $template->append('current', array('U_DOWNLOAD' => $picture['current']['download_url']), true); +} + + +if ($page['slideshow']) +{ + $tpl_slideshow = array(); + + //slideshow end + $template->assign( + array( + 'U_SLIDESHOW_STOP' => $picture['current']['url'], + ) + ); + + foreach (array('repeat', 'play') as $p) + { + $var_name = + 'U_' + .($slideshow_params[$p] ? 'STOP_' : 'START_') + .strtoupper($p); + + $tpl_slideshow[$var_name] = + add_url_params( + $picture['current']['url'], + array('slideshow' => + encode_slideshow_params( + array_merge($slideshow_params, + array($p => ! $slideshow_params[$p])) + ) + ) + ); + } + + foreach (array('dec', 'inc') as $op) + { + $new_period = $slideshow_params['period'] + ((($op == 'dec') ? -1 : 1) * $conf['slideshow_period_step']); + $new_slideshow_params = + correct_slideshow_params( + array_merge($slideshow_params, + array('period' => $new_period))); + + if ($new_slideshow_params['period'] === $new_period) + { + $var_name = 'U_'.strtoupper($op).'_PERIOD'; + $tpl_slideshow[$var_name] = + add_url_params( + $picture['current']['url'], + array('slideshow' => encode_slideshow_params($new_slideshow_params) + ) + ); + } + } + $template->assign('slideshow', $tpl_slideshow ); +} +elseif ($conf['picture_slideshow_icon']) +{ + $template->assign( + array( + 'U_SLIDESHOW_START' => + add_url_params( + $picture['current']['url'], + array( 'slideshow'=>'')) + ) + ); +} + +$template->assign( + array( + 'SECTION_TITLE' => $page['section_title'], + 'PHOTO' => $title_nb, + 'IS_HOME' => ('categories'==$page['section'] and !isset($page['category']) ), + + 'LEVEL_SEPARATOR' => $conf['level_separator'], + + 'U_UP' => $url_up, + 'DISPLAY_NAV_BUTTONS' => $conf['picture_navigation_icons'], + 'DISPLAY_NAV_THUMB' => $conf['picture_navigation_thumb'] + ) + ); + +if ($conf['picture_metadata_icon']) +{ + $template->assign('U_METADATA', $url_metadata); +} + + +//------------------------------------------------------- upper menu management + +// admin links +if (is_admin()) +{ + if (isset($page['category'])) + { + $template->assign( + array( + 'U_SET_AS_REPRESENTATIVE' => add_url_params($url_self, + array('action'=>'set_as_representative') + ) + ) + ); + } + + $url_admin = + get_root_url().'admin.php?page=photo-'.$page['image_id'] + .(isset($page['category']) ? '&cat_id='.$page['category']['id'] : '') + ; + + $template->assign( + array( + 'U_CADDIE' => add_url_params($url_self, + array('action'=>'add_to_caddie') + ), + 'U_PHOTO_ADMIN' => $url_admin, + ) + ); + + $template->assign('available_permission_levels', get_privacy_level_options()); +} + +// favorite manipulation +if (!is_a_guest() and $conf['picture_favorite_icon']) +{ + // verify if the picture is already in the favorite of the user + $query = ' +SELECT COUNT(*) AS nb_fav + FROM '.FAVORITES_TABLE.' + WHERE image_id = '.$page['image_id'].' + AND user_id = '.$user['id'].' +;'; + $row = pwg_db_fetch_assoc( pwg_query($query) ); + $is_favorite = $row['nb_fav'] != 0; + + $template->assign( + 'favorite', + array( + 'IS_FAVORITE' => $is_favorite, + 'U_FAVORITE' => add_url_params( + $url_self, + array('action'=> !$is_favorite ? 'add_to_favorites' : 'remove_from_favorites' ) + ), + ) + ); +} + +//--------------------------------------------------------- picture information +// legend +if (isset($picture['current']['comment']) + and !empty($picture['current']['comment'])) +{ + $template->assign( + 'COMMENT_IMG', + trigger_event('render_element_description', + $picture['current']['comment'], + 'picture_page_element_description' + ) + ); +} + +// author +if (!empty($picture['current']['author'])) +{ + $infos['INFO_AUTHOR'] = $picture['current']['author']; +} + +// creation date +if (!empty($picture['current']['date_creation'])) +{ + $val = format_date($picture['current']['date_creation']); + $url = make_index_url( + array( + 'chronology_field'=>'created', + 'chronology_style'=>'monthly', + 'chronology_view'=>'list', + 'chronology_date' => explode('-', substr($picture['current']['date_creation'], 0, 10)) + ) + ); + $infos['INFO_CREATION_DATE'] = + ''.$val.''; +} + +// date of availability +$val = format_date($picture['current']['date_available']); +$url = make_index_url( + array( + 'chronology_field'=>'posted', + 'chronology_style'=>'monthly', + 'chronology_view'=>'list', + 'chronology_date' => explode( + '-', + substr($picture['current']['date_available'], 0, 10) + ) + ) + ); +$infos['INFO_POSTED_DATE'] = ''.$val.''; + +// size in pixels +if ($picture['current']['src_image']->is_original() and isset($picture['current']['width']) ) +{ + $infos['INFO_DIMENSIONS'] = + $picture['current']['width'].'*'.$picture['current']['height']; +} + +// filesize +if (!empty($picture['current']['filesize'])) +{ + $infos['INFO_FILESIZE'] = l10n('%d Kb', $picture['current']['filesize']); +} + +// number of visits +$infos['INFO_VISITS'] = $picture['current']['hit']; + +// file +$infos['INFO_FILE'] = $picture['current']['file']; + +$template->assign($infos); +$template->assign('display_info', unserialize($conf['picture_informations'])); + +// related tags +$tags = get_common_tags( array($page['image_id']), -1); +if ( count($tags) ) +{ + foreach ($tags as $tag) + { + $template->append( + 'related_tags', + array_merge( $tag, + array( + 'URL' => make_index_url( + array( + 'tags' => array($tag) + ) + ), + 'U_TAG_IMAGE' => duplicate_picture_url( + array( + 'section' => 'tags', + 'tags' => array($tag) + ) + ) + ) + ) + ); + } +} + +// related categories +if ( count($related_categories)==1 and + isset($page['category']) and + $related_categories[0]['id']==$page['category']['id'] ) +{ // no need to go to db, we have all the info + $template->append( + 'related_categories', + get_cat_display_name( $page['category']['upper_names'] ) + ); +} +else +{ // use only 1 sql query to get names for all related categories + $ids = array(); + foreach ($related_categories as $category) + {// add all uppercats to $ids + $ids = array_merge($ids, explode(',', $category['uppercats']) ); + } + $ids = array_unique($ids); + $query = ' +SELECT id, name, permalink + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('.implode(',',$ids).')'; + $cat_map = hash_from_query($query, 'id'); + foreach ($related_categories as $category) + { + $cats = array(); + foreach ( explode(',', $category['uppercats']) as $id ) + { + $cats[] = $cat_map[$id]; + } + $template->append('related_categories', get_cat_display_name($cats) ); + } +} + +// maybe someone wants a special display (call it before page_header so that +// they can add stylesheets) +$element_content = trigger_event( + 'render_element_content', + '', + $picture['current'] + ); +$template->assign( 'ELEMENT_CONTENT', $element_content ); + +if (isset($picture['next']) + and $picture['next']['src_image']->is_original() + and $template->get_template_vars('U_PREFETCH') == null + and strpos($_SERVER['HTTP_USER_AGENT'], 'Chrome/') === false) +{ + $template->assign( + 'U_PREFETCH', + $picture['next']['derivatives'][pwg_get_session_var('picture_deriv', $conf['derivative_default_size'])]->get_url() + ); +} + +$template->assign( + 'U_CANONICAL', + make_picture_url( + array( + 'image_id' => $picture['current']['id'], + 'image_file' => $picture['current']['file']) + ) + ); + +// +-----------------------------------------------------------------------+ +// | sub pages | +// +-----------------------------------------------------------------------+ + +include(PHPWG_ROOT_PATH.'include/picture_rate.inc.php'); +if ($conf['activate_comments']) +{ + include(PHPWG_ROOT_PATH.'include/picture_comment.inc.php'); +} +if ($metadata_showable and pwg_get_session_var('show_metadata') <> null ) +{ + include(PHPWG_ROOT_PATH.'include/picture_metadata.inc.php'); +} + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if ($conf['picture_menu'] AND (!isset($themeconf['hide_menu_on']) OR !in_array('thePicturePage', $themeconf['hide_menu_on']))) +{ + if (!isset($page['start'])) $page['start'] = 0; + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_picture'); +flush_page_messages(); +if ($page['slideshow'] and $conf['light_slideshow']) +{ + $template->pparse('slideshow'); +} +else +{ + $template->parse_picture_buttons(); + $template->pparse('picture'); +} +//------------------------------------------------------------ log informations +pwg_log($picture['current']['id'], 'picture'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/admin.php b/sources/plugins/LocalFilesEditor/admin.php new file mode 100644 index 0000000..f9f297b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/admin.php @@ -0,0 +1,151 @@ +add($tab, l10n('locfiledit_onglet_'.$tab), $my_base_url.'-'.$tab); +} +$tabsheet->select($page['tab']); +$tabsheet->assign(); + +include_once(LOCALEDIT_PATH.'include/'.$page['tab'].'.inc.php'); + +// +-----------------------------------------------------------------------+ +// | Load backup file +// +-----------------------------------------------------------------------+ +if (isset($_POST['restore'])) +{ + $content_file = file_get_contents(get_bak_file($edited_file)); + $page['infos'][] = l10n('locfiledit_bak_loaded1'); + $page['infos'][] = l10n('locfiledit_bak_loaded2'); +} + +// +-----------------------------------------------------------------------+ +// | Save file +// +-----------------------------------------------------------------------+ +if (isset($_POST['submit'])) +{ + check_pwg_token(); + + if (!is_webmaster()) + { + $page['errors'][] = l10n('locfiledit_webmaster_only'); + } + else + { + $content_file = stripslashes($_POST['text']); + if (get_extension($edited_file) == 'php') + { + $content_file = eval_syntax($content_file); + } + if ($content_file === false) + { + $page['errors'][] = l10n('locfiledit_syntax_error'); + } + else + { + if ($page['tab'] == 'plug' and !is_dir(PHPWG_PLUGINS_PATH . 'PersonalPlugin')) + { + @mkdir(PHPWG_PLUGINS_PATH . "PersonalPlugin"); + } + if (file_exists($edited_file)) + { + @copy($edited_file, get_bak_file($edited_file)); + $page['infos'][] = l10n('locfiledit_saved_bak', substr(get_bak_file($edited_file), 2)); + } + + if ($file = @fopen($edited_file , "w")) + { + @fwrite($file , $content_file); + @fclose($file); + array_unshift($page['infos'], l10n('locfiledit_save_config')); + $template->delete_compiled_templates(); + } + else + { + $page['errors'][] = l10n('locfiledit_cant_save'); + } + } + } +} + +// +-----------------------------------------------------------------------+ +// | template initialization +// +-----------------------------------------------------------------------+ +$template->set_filenames(array( + 'plugin_admin_content' => dirname(__FILE__) . '/template/admin.tpl')); + +if (!empty($edited_file)) +{ + if (!empty($page['errors'])) + { + $content_file = stripslashes($_POST['text']); + } + $template->assign('zone_edit', + array( + 'EDITED_FILE' => $edited_file, + 'CONTENT_FILE' => htmlspecialchars($content_file), + 'FILE_NAME' => trim($edited_file, './\\') + ) + ); + if (file_exists(get_bak_file($edited_file))) + { + $template->assign('restore', true); + } + if (file_exists($edited_file)) + { + $template->assign('restore_infos', true); + } +} + +$template->assign(array( + 'F_ACTION' => PHPWG_ROOT_PATH.'admin.php?page=plugin-LocalFilesEditor-'.$page['tab'], + 'LOCALEDIT_PATH' => LOCALEDIT_PATH, + 'PWG_TOKEN' => get_pwg_token(), + 'CODEMIRROR_MODE' => @$codemirror_mode + ) +); + +$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content'); + +?> diff --git a/sources/plugins/LocalFilesEditor/codemirror/lib/codemirror.css b/sources/plugins/LocalFilesEditor/codemirror/lib/codemirror.css new file mode 100644 index 0000000..578af41 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/lib/codemirror.css @@ -0,0 +1,53 @@ +.CodeMirror { + overflow: auto; + height: 300px; + line-height: 1em; + font-family: monospace; + _position: relative; /* IE6 hack */ +} + +.CodeMirror-gutter { + position: absolute; left: 0; top: 0; + background-color: #f7f7f7; + border-right: 1px solid #eee; + min-width: 2em; + height: 100%; +} +.CodeMirror-gutter-text { + color: #aaa; + text-align: right; + padding: .4em .2em .4em .4em; +} +.CodeMirror-lines { + padding: .4em; +} + +.CodeMirror pre { + -moz-border-radius: 0; + -webkit-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + border-width: 0; margin: 0; padding: 0; background: transparent; + font-family: inherit; +} + +.CodeMirror-cursor { + z-index: 10; + position: absolute; + visibility: hidden; + border-left: 1px solid black !important; +} +.CodeMirror-focused .CodeMirror-cursor { + visibility: visible; +} + +span.CodeMirror-selected { + background: #ccc !important; + color: HighlightText !important; +} +.CodeMirror-focused span.CodeMirror-selected { + background: Highlight !important; +} + +.CodeMirror-matchingbracket {color: #0f0 !important;} +.CodeMirror-nonmatchingbracket {color: #f22 !important;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/lib/codemirror.js b/sources/plugins/LocalFilesEditor/codemirror/lib/codemirror.js new file mode 100644 index 0000000..390e68c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/lib/codemirror.js @@ -0,0 +1,1915 @@ +// All functions that need access to the editor's state live inside +// the CodeMirror function. Below that, at the bottom of the file, +// some utilities are defined. + +// CodeMirror is the only global var we claim +var CodeMirror = (function() { + // This is the function that produces an editor instance. It's + // closure is used to store the editor state. + function CodeMirror(place, givenOptions) { + // Determine effective options based on given values and defaults. + var options = {}, defaults = CodeMirror.defaults; + for (var opt in defaults) + if (defaults.hasOwnProperty(opt)) + options[opt] = (givenOptions && givenOptions.hasOwnProperty(opt) ? givenOptions : defaults)[opt]; + + // The element in which the editor lives. Takes care of scrolling + // (if enabled). + var wrapper = document.createElement("div"); + wrapper.className = "CodeMirror"; + // This mess creates the base DOM structure for the editor. + wrapper.innerHTML = + '
          ' + // Set to the height of the text, causes scrolling + '
          ' + // To measure line/char size
          +           'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
          ' + + '
          ' + // Moved around its parent to cover visible view + '
          ' + + '
          ' + // Wraps and hides input textarea + '
          ' + + // Provides positioning relative to (visible) text origin + '
          ' + + '
           
          ' + // Absolutely positioned blinky cursor + '
          '; // This DIV contains the actual code + if (place.appendChild) place.appendChild(wrapper); else place(wrapper); + // I've never seen more elegant code in my life. + var code = wrapper.firstChild, measure = code.firstChild, mover = measure.nextSibling, + gutter = mover.firstChild, gutterText = gutter.firstChild, + inputDiv = gutter.nextSibling, input = inputDiv.firstChild, + lineSpace = inputDiv.nextSibling.firstChild, cursor = lineSpace.firstChild, lineDiv = cursor.nextSibling; + if (options.tabindex != null) input.tabindex = options.tabindex; + if (!options.gutter && !options.lineNumbers) gutter.style.display = "none"; + + // Delayed object wrap timeouts, making sure only one is active. blinker holds an interval. + var poll = new Delayed(), highlight = new Delayed(), blinker; + + // mode holds a mode API object. lines an array of Line objects + // (see Line constructor), work an array of lines that should be + // parsed, and history the undo history (instance of History + // constructor). + var mode, lines = [new Line("")], work, history = new History(), focused; + loadMode(); + // The selection. These are always maintained to point at valid + // positions. Inverted is used to remember that the user is + // selecting bottom-to-top. + var sel = {from: {line: 0, ch: 0}, to: {line: 0, ch: 0}, inverted: false}; + // Selection-related flags. shiftSelecting obviously tracks + // whether the user is holding shift. reducedSelection is a hack + // to get around the fact that we can't create inverted + // selections. See below. + var shiftSelecting, reducedSelection; + // Variables used by startOperation/endOperation to track what + // happened during the operation. + var updateInput, changes, textChanged, selectionChanged, leaveInputAlone; + // Current visible range (may be bigger than the view window). + var showingFrom = 0, showingTo = 0, lastHeight = 0, curKeyId = null; + // editing will hold an object describing the things we put in the + // textarea, to help figure out whether something changed. + // bracketHighlighted is used to remember that a backet has been + // marked. + var editing, bracketHighlighted; + + // Initialize the content. Somewhat hacky (delayed prepareInput) + // to work around browser issues. + operation(function(){setValue(options.value || ""); updateInput = false;})(); + setTimeout(prepareInput, 20); + + // Register our event handlers. + connect(wrapper, "mousedown", operation(onMouseDown)); + // Gecko browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for Gecko. + if (!gecko) connect(wrapper, "contextmenu", operation(onContextMenu)); + connect(code, "dblclick", operation(onDblClick)); + connect(wrapper, "scroll", function() {updateDisplay([]); if (options.onScroll) options.onScroll(instance);}); + connect(window, "resize", function() {updateDisplay(true);}); + connect(input, "keyup", operation(onKeyUp)); + connect(input, "keydown", operation(onKeyDown)); + connect(input, "keypress", operation(onKeyPress)); + connect(input, "focus", onFocus); + connect(input, "blur", onBlur); + + connect(wrapper, "dragenter", function(e){e.stop();}); + connect(wrapper, "dragover", function(e){e.stop();}); + connect(wrapper, "drop", operation(onDrop)); + connect(wrapper, "paste", function(){input.focus(); fastPoll();}); + connect(input, "paste", function(){fastPoll();}); + connect(input, "cut", function(){fastPoll();}); + + if (document.activeElement == input) onFocus(); + else onBlur(); + + function isLine(l) {return l >= 0 && l < lines.length;} + // The instance object that we'll return. Mostly calls out to + // local functions in the CodeMirror function. Some do some extra + // range checking and/or clipping. operation is used to wrap the + // call so that changes it makes are tracked, and the display is + // updated afterwards. + var instance = { + getValue: getValue, + setValue: operation(setValue), + getSelection: getSelection, + replaceSelection: operation(replaceSelection), + focus: function(){input.focus(); onFocus(); fastPoll();}, + setOption: function(option, value) { + options[option] = value; + if (option == "lineNumbers" || option == "gutter") gutterChanged(); + else if (option == "mode" || option == "indentUnit") loadMode(); + }, + getOption: function(option) {return options[option];}, + undo: operation(undo), + redo: operation(redo), + indentLine: operation(function(n) {if (isLine(n)) indentLine(n, "smart");}), + historySize: function() {return {undo: history.done.length, redo: history.undone.length};}, + matchBrackets: operation(function(){matchBrackets(true);}), + getTokenAt: function(pos) { + pos = clipPos(pos); + return lines[pos.line].getTokenAt(mode, getStateBefore(pos.line), pos.ch); + }, + cursorCoords: function(start){ + if (start == null) start = sel.inverted; + return pageCoords(start ? sel.from : sel.to); + }, + charCoords: function(pos){return pageCoords(clipPos(pos));}, + coordsChar: function(coords) { + var off = eltOffset(lineSpace); + var line = Math.min(showingTo - 1, showingFrom + Math.floor(coords.y / lineHeight())); + return clipPos({line: line, ch: charFromX(clipLine(line), coords.x)}); + }, + getSearchCursor: function(query, pos, caseFold) {return new SearchCursor(query, pos, caseFold);}, + markText: operation(function(a, b, c){return operation(markText(a, b, c));}), + setMarker: addGutterMarker, + clearMarker: removeGutterMarker, + setLineClass: operation(setLineClass), + lineInfo: lineInfo, + addWidget: function(pos, node, scroll) { + var pos = localCoords(clipPos(pos), true); + node.style.top = (showingFrom * lineHeight() + pos.yBot + paddingTop()) + "px"; + node.style.left = (pos.x + paddingLeft()) + "px"; + code.appendChild(node); + if (scroll) + scrollIntoView(pos.x, pos.yBot, pos.x + node.offsetWidth, pos.yBot + node.offsetHeight); + }, + + lineCount: function() {return lines.length;}, + getCursor: function(start) { + if (start == null) start = sel.inverted; + return copyPos(start ? sel.from : sel.to); + }, + somethingSelected: function() {return !posEq(sel.from, sel.to);}, + setCursor: operation(function(line, ch) { + if (ch == null && typeof line.line == "number") setCursor(line.line, line.ch); + else setCursor(line, ch); + }), + setSelection: operation(function(from, to) {setSelection(clipPos(from), clipPos(to || from));}), + getLine: function(line) {if (isLine(line)) return lines[line].text;}, + setLine: operation(function(line, text) { + if (isLine(line)) replaceRange(text, {line: line, ch: 0}, {line: line, ch: lines[line].text.length}); + }), + removeLine: operation(function(line) { + if (isLine(line)) replaceRange("", {line: line, ch: 0}, clipPos({line: line+1, ch: 0})); + }), + replaceRange: operation(replaceRange), + getRange: function(from, to) {return getRange(clipPos(from), clipPos(to));}, + + operation: function(f){return operation(f)();}, + refresh: function(){updateDisplay(true);}, + getInputField: function(){return input;}, + getWrapperElement: function(){return wrapper;} + }; + + function setValue(code) { + history = null; + var top = {line: 0, ch: 0}; + updateLines(top, {line: lines.length - 1, ch: lines[lines.length-1].text.length}, + splitLines(code), top, top); + history = new History(); + } + function getValue(code) { + var text = []; + for (var i = 0, l = lines.length; i < l; ++i) + text.push(lines[i].text); + return text.join("\n"); + } + + function onMouseDown(e) { + // First, see if this is a click in the gutter + for (var n = e.target(); n != wrapper; n = n.parentNode) + if (n.parentNode == gutterText) { + if (options.onGutterClick) + options.onGutterClick(instance, indexOf(gutterText.childNodes, n) + showingFrom); + return e.stop(); + } + + if (gecko && e.button() == 3) onContextMenu(e); + if (e.button() != 1) return; + // For button 1, if it was clicked inside the editor + // (posFromMouse returning non-null), we have to adjust the + // selection. + var start = posFromMouse(e), last = start, going; + if (!start) {if (e.target() == wrapper) e.stop(); return;} + setCursor(start.line, start.ch, false); + + if (!focused) onFocus(); + e.stop(); + // And then we have to see if it's a drag event, in which case + // the dragged-over text must be selected. + function end() { + input.focus(); + updateInput = true; + move(); up(); + } + function extend(e) { + var cur = posFromMouse(e, true); + if (cur && !posEq(cur, last)) { + if (!focused) onFocus(); + last = cur; + setSelection(start, cur); + updateInput = false; + var visible = visibleLines(); + if (cur.line >= visible.to || cur.line < visible.from) + going = setTimeout(operation(function(){extend(e);}), 150); + } + } + + var move = connect(document, "mousemove", operation(function(e) { + clearTimeout(going); + e.stop(); + extend(e); + }), true); + var up = connect(document, "mouseup", operation(function(e) { + clearTimeout(going); + var cur = posFromMouse(e); + if (cur) setSelection(start, cur); + e.stop(); + end(); + }), true); + } + function onDblClick(e) { + var pos = posFromMouse(e); + if (!pos) return; + selectWordAt(pos); + e.stop(); + } + function onDrop(e) { + var pos = posFromMouse(e, true), files = e.e.dataTransfer.files; + if (!pos || options.readOnly) return; + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0; + for (var i = 0; i < n; ++i) loadFile(files[i], i); + function loadFile(file, i) { + var reader = new FileReader; + reader.onload = function() { + text[i] = reader.result; + if (++read == n) replaceRange(text.join(""), clipPos(pos), clipPos(pos)); + }; + reader.readAsText(file); + } + } + else { + try { + var text = e.e.dataTransfer.getData("Text"); + if (text) replaceRange(text, pos, pos); + } + catch(e){} + } + } + function onKeyDown(e) { + if (!focused) onFocus(); + + var code = e.e.keyCode; + // Tries to detect ctrl on non-mac, cmd on mac. + var mod = (mac ? e.e.metaKey : e.e.ctrlKey) && !e.e.altKey, anyMod = e.e.ctrlKey || e.e.altKey || e.e.metaKey; + if (code == 16 || e.e.shiftKey) shiftSelecting = shiftSelecting || (sel.inverted ? sel.to : sel.from); + else shiftSelecting = null; + // First give onKeyEvent option a chance to handle this. + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return; + + if (code == 33 || code == 34) {scrollPage(code == 34); return e.stop();} // page up/down + if (mod && (code == 36 || code == 35)) {scrollEnd(code == 36); return e.stop();} // ctrl-home/end + if (mod && code == 65) {selectAll(); return e.stop();} // ctrl-a + if (!options.readOnly) { + if (!anyMod && code == 13) {return;} // enter + if (!anyMod && code == 9 && handleTab(e.e.shiftKey)) return e.stop(); // tab + if (mod && code == 90) {undo(); return e.stop();} // ctrl-z + if (mod && ((e.e.shiftKey && code == 90) || code == 89)) {redo(); return e.stop();} // ctrl-shift-z, ctrl-y + } + + // Key id to use in the movementKeys map. We also pass it to + // fastPoll in order to 'self learn'. We need this because + // reducedSelection, the hack where we collapse the selection to + // its start when it is inverted and a movement key is pressed + // (and later restore it again), shouldn't be used for + // non-movement keys. + curKeyId = (mod ? "c" : "") + code; + if (sel.inverted && movementKeys.hasOwnProperty(curKeyId)) { + var range = selRange(input); + if (range) { + reducedSelection = {anchor: range.start}; + setSelRange(input, range.start, range.start); + } + } + fastPoll(curKeyId); + } + function onKeyUp(e) { + if (reducedSelection) { + reducedSelection = null; + updateInput = true; + } + if (e.e.keyCode == 16) shiftSelecting = null; + } + function onKeyPress(e) { + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e.e))) return; + if (options.electricChars && mode.electricChars) { + var ch = String.fromCharCode(e.e.charCode == null ? e.e.keyCode : e.e.charCode); + if (mode.electricChars.indexOf(ch) > -1) + setTimeout(operation(function() {indentLine(sel.to.line, "smart");}), 50); + } + var code = e.e.keyCode; + // Re-stop tab and enter. Necessary on some browsers. + if (code == 13) {handleEnter(); e.stop();} + else if (code == 9 && options.tabMode != "default") e.stop(); + else fastPoll(curKeyId); + } + + function onFocus() { + if (!focused && options.onFocus) options.onFocus(instance); + focused = true; + slowPoll(); + if (wrapper.className.search(/\bCodeMirror-focused\b/) == -1) + wrapper.className += " CodeMirror-focused"; + restartBlink(); + } + function onBlur() { + if (focused && options.onBlur) options.onBlur(instance); + clearInterval(blinker); + shiftSelecting = null; + focused = false; + wrapper.className = wrapper.className.replace(" CodeMirror-focused", ""); + } + + // Replace the range from from to to by the strings in newText. + // Afterwards, set the selection to selFrom, selTo. + function updateLines(from, to, newText, selFrom, selTo) { + if (history) { + var old = []; + for (var i = from.line, e = to.line + 1; i < e; ++i) old.push(lines[i].text); + history.addChange(from.line, newText.length, old); + while (history.done.length > options.undoDepth) history.done.shift(); + } + updateLinesNoUndo(from, to, newText, selFrom, selTo); + } + function unredoHelper(from, to) { + var change = from.pop(); + if (change) { + var replaced = [], end = change.start + change.added; + for (var i = change.start; i < end; ++i) replaced.push(lines[i].text); + to.push({start: change.start, added: change.old.length, old: replaced}); + var pos = clipPos({line: change.start + change.old.length - 1, + ch: editEnd(replaced[replaced.length-1], change.old[change.old.length-1])}); + updateLinesNoUndo({line: change.start, ch: 0}, {line: end - 1, ch: lines[end-1].text.length}, change.old, pos, pos); + } + } + function undo() {unredoHelper(history.done, history.undone);} + function redo() {unredoHelper(history.undone, history.done);} + + function updateLinesNoUndo(from, to, newText, selFrom, selTo) { + var nlines = to.line - from.line, firstLine = lines[from.line], lastLine = lines[to.line]; + // First adjust the line structure, taking some care to leave highlighting intact. + if (firstLine == lastLine) { + if (newText.length == 1) + firstLine.replace(from.ch, to.ch, newText[0]); + else { + lastLine = firstLine.split(to.ch, newText[newText.length-1]); + var spliceargs = [from.line + 1, nlines]; + firstLine.replace(from.ch, firstLine.text.length, newText[0]); + for (var i = 1, e = newText.length - 1; i < e; ++i) spliceargs.push(new Line(newText[i])); + spliceargs.push(lastLine); + lines.splice.apply(lines, spliceargs); + } + } + else if (newText.length == 1) { + firstLine.replace(from.ch, firstLine.text.length, newText[0] + lastLine.text.slice(to.ch)); + lines.splice(from.line + 1, nlines); + } + else { + var spliceargs = [from.line + 1, nlines - 1]; + firstLine.replace(from.ch, firstLine.text.length, newText[0]); + lastLine.replace(0, to.ch, newText[newText.length-1]); + for (var i = 1, e = newText.length - 1; i < e; ++i) spliceargs.push(new Line(newText[i])); + lines.splice.apply(lines, spliceargs); + } + + // Add these lines to the work array, so that they will be + // highlighted. Adjust work lines if lines were added/removed. + var newWork = [], lendiff = newText.length - nlines - 1; + for (var i = 0, l = work.length; i < l; ++i) { + var task = work[i]; + if (task < from.line) newWork.push(task); + else if (task > to.line) newWork.push(task + lendiff); + } + if (newText.length) newWork.push(from.line); + work = newWork; + startWorker(100); + // Remember that these lines changed, for updating the display + changes.push({from: from.line, to: to.line + 1, diff: lendiff}); + textChanged = true; + + // Update the selection + function updateLine(n) {return n <= Math.min(to.line, to.line + lendiff) ? n : n + lendiff;} + setSelection(selFrom, selTo, updateLine(sel.from.line), updateLine(sel.to.line)); + + // Make sure the scroll-size div has the correct height. + code.style.height = (lines.length * lineHeight() + 2 * paddingTop()) + "px"; + } + + function replaceRange(code, from, to) { + from = clipPos(from); + if (!to) to = from; else to = clipPos(to); + code = splitLines(code); + function adjustPos(pos) { + if (posLess(pos, from)) return pos; + if (!posLess(to, pos)) return end; + var line = pos.line + code.length - (to.line - from.line) - 1; + var ch = pos.ch; + if (pos.line == to.line) + ch += code[code.length-1].length - (to.ch - (to.line == from.line ? from.ch : 0)); + return {line: line, ch: ch}; + } + var end; + replaceRange1(code, from, to, function(end1) { + end = end1; + return {from: adjustPos(sel.from), to: adjustPos(sel.to)}; + }); + return end; + } + function replaceSelection(code, collapse) { + replaceRange1(splitLines(code), sel.from, sel.to, function(end) { + if (collapse == "end") return {from: end, to: end}; + else if (collapse == "start") return {from: sel.from, to: sel.from}; + else return {from: sel.from, to: end}; + }); + } + function replaceRange1(code, from, to, computeSel) { + var endch = code.length == 1 ? code[0].length + from.ch : code[code.length-1].length; + var newSel = computeSel({line: from.line + code.length - 1, ch: endch}); + updateLines(from, to, code, newSel.from, newSel.to); + } + + function getRange(from, to) { + var l1 = from.line, l2 = to.line; + if (l1 == l2) return lines[l1].text.slice(from.ch, to.ch); + var code = [lines[l1].text.slice(from.ch)]; + for (var i = l1 + 1; i < l2; ++i) code.push(lines[i].text); + code.push(lines[l2].text.slice(0, to.ch)); + return code.join("\n"); + } + function getSelection() { + return getRange(sel.from, sel.to); + } + + var pollingFast = false; // Ensures slowPoll doesn't cancel fastPoll + function slowPoll() { + if (pollingFast) return; + poll.set(2000, function() { + startOperation(); + readInput(); + if (focused) slowPoll(); + endOperation(); + }); + } + function fastPoll(keyId) { + var missed = false; + pollingFast = true; + function p() { + startOperation(); + var changed = readInput(); + if (changed == "moved" && keyId) movementKeys[keyId] = true; + if (!changed && !missed) {missed = true; poll.set(80, p);} + else {pollingFast = false; slowPoll();} + endOperation(); + } + poll.set(20, p); + } + + // Inspects the textarea, compares its state (content, selection) + // to the data in the editing variable, and updates the editor + // content or cursor if something changed. + function readInput() { + var changed = false, text = input.value, sr = selRange(input); + if (!sr) return false; + var changed = editing.text != text, rs = reducedSelection; + var moved = changed || sr.start != editing.start || sr.end != (rs ? editing.start : editing.end); + if (reducedSelection && !moved && sel.from.line == 0 && sel.from.ch == 0) + reducedSelection = null; + else if (!moved) return false; + if (changed) { + shiftSelecting = reducedSelection = null; + if (options.readOnly) {updateInput = true; return "changed";} + } + + // Compute selection start and end based on start/end offsets in textarea + function computeOffset(n, startLine) { + var pos = 0; + for (;;) { + var found = text.indexOf("\n", pos); + if (found == -1 || (text.charAt(found-1) == "\r" ? found - 1 : found) >= n) + return {line: startLine, ch: n - pos}; + ++startLine; + pos = found + 1; + } + } + var from = computeOffset(sr.start, editing.from), + to = computeOffset(sr.end, editing.from); + // Here we have to take the reducedSelection hack into account, + // so that you can, for example, press shift-up at the start of + // your selection and have the right thing happen. + if (rs) { + from = sr.start == rs.anchor ? to : from; + to = shiftSelecting ? sel.to : sr.start == rs.anchor ? from : to; + if (!posLess(from, to)) { + reducedSelection = null; + sel.inverted = false; + var tmp = from; from = to; to = tmp; + } + } + + // In some cases (cursor on same line as before), we don't have + // to update the textarea content at all. + if (from.line == to.line && from.line == sel.from.line && from.line == sel.to.line && !shiftSelecting) + updateInput = false; + + // Magic mess to extract precise edited range from the changed + // string. + if (changed) { + var start = 0, end = text.length, len = Math.min(end, editing.text.length); + var c, line = editing.from, nl = -1; + while (start < len && (c = text.charAt(start)) == editing.text.charAt(start)) { + ++start; + if (c == "\n") {line++; nl = start;} + } + var ch = nl > -1 ? start - nl : start, endline = editing.to - 1, edend = editing.text.length; + for (;;) { + c = editing.text.charAt(edend); + if (c == "\n") endline--; + if (text.charAt(end) != c) {++end; ++edend; break;} + if (edend <= start || end <= start) break; + --end; --edend; + } + var nl = editing.text.lastIndexOf("\n", edend - 1), endch = nl == -1 ? edend : edend - nl - 1; + updateLines({line: line, ch: ch}, {line: endline, ch: endch}, splitLines(text.slice(start, end)), from, to); + if (line != endline || from.line != line) updateInput = true; + } + else setSelection(from, to); + + editing.text = text; editing.start = sr.start; editing.end = sr.end; + return changed ? "changed" : moved ? "moved" : false; + } + + // Set the textarea content and selection range to match the + // editor state. + function prepareInput() { + var text = []; + var from = Math.max(0, sel.from.line - 1), to = Math.min(lines.length, sel.to.line + 2); + for (var i = from; i < to; ++i) text.push(lines[i].text); + text = input.value = text.join(lineSep); + var startch = sel.from.ch, endch = sel.to.ch; + for (var i = from; i < sel.from.line; ++i) + startch += lineSep.length + lines[i].text.length; + for (var i = from; i < sel.to.line; ++i) + endch += lineSep.length + lines[i].text.length; + editing = {text: text, from: from, to: to, start: startch, end: endch}; + setSelRange(input, startch, reducedSelection ? startch : endch); + } + + function scrollCursorIntoView() { + var cursor = localCoords(sel.inverted ? sel.from : sel.to); + return scrollIntoView(cursor.x, cursor.y, cursor.x, cursor.yBot); + } + function scrollIntoView(x1, y1, x2, y2) { + var pl = paddingLeft(), pt = paddingTop(); + y1 += pt; y2 += pt; x1 += pl; x2 += pl; + var screen = wrapper.clientHeight, screentop = wrapper.scrollTop, scrolled = false, result = true; + if (y1 < screentop) {wrapper.scrollTop = Math.max(0, y1 - 10); scrolled = true;} + else if (y2 > screentop + screen) {wrapper.scrollTop = y2 + 10 - screen; scrolled = true;} + + var screenw = wrapper.clientWidth, screenleft = wrapper.scrollLeft; + if (x1 < screenleft) {wrapper.scrollLeft = Math.max(0, x1 - 10); scrolled = true;} + else if (x2 > screenw + screenleft) { + wrapper.scrollLeft = x2 + 10 - screenw; + scrolled = true; + if (x2 > code.clientWidth) result = false; + } + if (scrolled && options.onScroll) options.onScroll(instance); + return result; + } + + function visibleLines() { + var lh = lineHeight(), top = wrapper.scrollTop - paddingTop(); + return {from: Math.min(lines.length, Math.max(0, Math.floor(top / lh))), + to: Math.min(lines.length, Math.ceil((top + wrapper.clientHeight) / lh))}; + } + // Uses a set of changes plus the current scroll position to + // determine which DOM updates have to be made, and makes the + // updates. + function updateDisplay(changes) { + if (!wrapper.clientWidth) { + showingFrom = showingTo = 0; + return; + } + // First create a range of theoretically intact lines, and punch + // holes in that using the change info. + var intact = changes === true ? [] : [{from: showingFrom, to: showingTo, domStart: 0}]; + for (var i = 0, l = changes.length || 0; i < l; ++i) { + var change = changes[i], intact2 = [], diff = change.diff || 0; + for (var j = 0, l2 = intact.length; j < l2; ++j) { + var range = intact[j]; + if (change.to <= range.from) + intact2.push({from: range.from + diff, to: range.to + diff, domStart: range.domStart}); + else if (range.to <= change.from) + intact2.push(range); + else { + if (change.from > range.from) + intact2.push({from: range.from, to: change.from, domStart: range.domStart}) + if (change.to < range.to) + intact2.push({from: change.to + diff, to: range.to + diff, + domStart: range.domStart + (change.to - range.from)}); + } + } + intact = intact2; + } + + // Then, determine which lines we'd want to see, and which + // updates have to be made to get there. + var visible = visibleLines(); + var from = Math.min(showingFrom, Math.max(visible.from - 3, 0)), + to = Math.min(lines.length, Math.max(showingTo, visible.to + 3)), + updates = [], domPos = 0, domEnd = showingTo - showingFrom, pos = from, changedLines = 0; + + for (var i = 0, l = intact.length; i < l; ++i) { + var range = intact[i]; + if (range.to <= from) continue; + if (range.from >= to) break; + if (range.domStart > domPos || range.from > pos) { + updates.push({from: pos, to: range.from, domSize: range.domStart - domPos, domStart: domPos}); + changedLines += range.from - pos; + } + pos = range.to; + domPos = range.domStart + (range.to - range.from); + } + if (domPos != domEnd || pos != to) { + changedLines += Math.abs(to - pos); + updates.push({from: pos, to: to, domSize: domEnd - domPos, domStart: domPos}); + } + + if (!updates.length) return; + lineDiv.style.display = "none"; + // If more than 30% of the screen needs update, just do a full + // redraw (which is quicker than patching) + if (changedLines > (visible.to - visible.from) * .3) + refreshDisplay(from = Math.max(visible.from - 10, 0), to = Math.min(visible.to + 7, lines.length)); + // Otherwise, only update the stuff that needs updating. + else + patchDisplay(updates); + lineDiv.style.display = ""; + + // Position the mover div to align with the lines it's supposed + // to be showing (which will cover the visible display) + var different = from != showingFrom || to != showingTo || lastHeight != wrapper.clientHeight; + showingFrom = from; showingTo = to; + mover.style.top = (from * lineHeight()) + "px"; + if (different) { + lastHeight = wrapper.clientHeight; + code.style.height = (lines.length * lineHeight() + 2 * paddingTop()) + "px"; + updateGutter(); + } + + // Since this is all rather error prone, it is honoured with the + // only assertion in the whole file. + if (lineDiv.childNodes.length != showingTo - showingFrom) + throw new Error("BAD PATCH! " + JSON.stringify(updates) + " size=" + (showingTo - showingFrom) + + " nodes=" + lineDiv.childNodes.length); + updateCursor(); + } + + function refreshDisplay(from, to) { + var html = [], start = {line: from, ch: 0}, inSel = posLess(sel.from, start) && !posLess(sel.to, start); + for (var i = from; i < to; ++i) { + var ch1 = null, ch2 = null; + if (inSel) { + ch1 = 0; + if (sel.to.line == i) {inSel = false; ch2 = sel.to.ch;} + } + else if (sel.from.line == i) { + if (sel.to.line == i) {ch1 = sel.from.ch; ch2 = sel.to.ch;} + else {inSel = true; ch1 = sel.from.ch;} + } + html.push(lines[i].getHTML(ch1, ch2, true)); + } + lineDiv.innerHTML = html.join(""); + } + function patchDisplay(updates) { + // Slightly different algorithm for IE (badInnerHTML), since + // there .innerHTML on PRE nodes is dumb, and discards + // whitespace. + var sfrom = sel.from.line, sto = sel.to.line, off = 0, + scratch = badInnerHTML && document.createElement("div"); + for (var i = 0, e = updates.length; i < e; ++i) { + var rec = updates[i]; + var extra = (rec.to - rec.from) - rec.domSize; + var nodeAfter = lineDiv.childNodes[rec.domStart + rec.domSize + off] || null; + if (badInnerHTML) + for (var j = Math.max(-extra, rec.domSize); j > 0; --j) + lineDiv.removeChild(nodeAfter ? nodeAfter.previousSibling : lineDiv.lastChild); + else if (extra) { + for (var j = Math.max(0, extra); j > 0; --j) + lineDiv.insertBefore(document.createElement("pre"), nodeAfter); + for (var j = Math.max(0, -extra); j > 0; --j) + lineDiv.removeChild(nodeAfter ? nodeAfter.previousSibling : lineDiv.lastChild); + } + var node = lineDiv.childNodes[rec.domStart + off], inSel = sfrom < rec.from && sto >= rec.from; + for (var j = rec.from; j < rec.to; ++j) { + var ch1 = null, ch2 = null; + if (inSel) { + ch1 = 0; + if (sto == j) {inSel = false; ch2 = sel.to.ch;} + } + else if (sfrom == j) { + if (sto == j) {ch1 = sel.from.ch; ch2 = sel.to.ch;} + else {inSel = true; ch1 = sel.from.ch;} + } + if (badInnerHTML) { + scratch.innerHTML = lines[j].getHTML(ch1, ch2, true); + lineDiv.insertBefore(scratch.firstChild, nodeAfter); + } + else { + node.innerHTML = lines[j].getHTML(ch1, ch2, false); + node.className = lines[j].className || ""; + node = node.nextSibling; + } + } + off += extra; + } + } + + function updateGutter() { + if (!options.gutter && !options.lineNumbers) return; + var hText = mover.offsetHeight, hEditor = wrapper.clientHeight; + gutter.style.height = (hText - hEditor < 2 ? hEditor : hText) + "px"; + var html = []; + for (var i = showingFrom; i < showingTo; ++i) { + var marker = lines[i].gutterMarker; + var text = options.lineNumbers ? i + options.firstLineNumber : null; + if (marker && marker.text) + text = marker.text.replace("%N%", text != null ? text : ""); + else if (text == null) + text = "\u00a0"; + html.push((marker && marker.style ? '
          ' : "
          "), text, "
          "); + } + gutter.style.display = "none"; + gutterText.innerHTML = html.join(""); + var minwidth = String(lines.length).length, firstNode = gutterText.firstChild, val = eltText(firstNode), pad = ""; + while (val.length + pad.length < minwidth) pad += "\u00a0"; + if (pad) firstNode.insertBefore(document.createTextNode(pad), firstNode.firstChild); + gutter.style.display = ""; + lineSpace.style.marginLeft = gutter.offsetWidth + "px"; + } + function updateCursor() { + var head = sel.inverted ? sel.from : sel.to; + var x = charX(head.line, head.ch) + "px", y = (head.line - showingFrom) * lineHeight() + "px"; + inputDiv.style.top = y; inputDiv.style.left = x; + if (posEq(sel.from, sel.to)) { + cursor.style.top = y; cursor.style.left = x; + cursor.style.display = ""; + } + else cursor.style.display = "none"; + } + + // Update the selection. Last two args are only used by + // updateLines, since they have to be expressed in the line + // numbers before the update. + function setSelection(from, to, oldFrom, oldTo) { + if (posEq(sel.from, from) && posEq(sel.to, to)) return; + var sh = shiftSelecting && clipPos(shiftSelecting); + if (posLess(to, from)) {var tmp = to; to = from; from = tmp;} + if (sh) { + if (posLess(sh, from)) from = sh; + else if (posLess(to, sh)) to = sh; + } + + var startEq = posEq(sel.to, to), endEq = posEq(sel.from, from); + if (posEq(from, to)) sel.inverted = false; + else if (startEq && !endEq) sel.inverted = true; + else if (endEq && !startEq) sel.inverted = false; + + // Some ugly logic used to only mark the lines that actually did + // see a change in selection as changed, rather than the whole + // selected range. + if (oldFrom == null) {oldFrom = sel.from.line; oldTo = sel.to.line;} + if (posEq(from, to)) { + if (!posEq(sel.from, sel.to)) + changes.push({from: oldFrom, to: oldTo + 1}); + } + else if (posEq(sel.from, sel.to)) { + changes.push({from: from.line, to: to.line + 1}); + } + else { + if (!posEq(from, sel.from)) { + if (from.line < oldFrom) + changes.push({from: from.line, to: Math.min(to.line, oldFrom) + 1}); + else + changes.push({from: oldFrom, to: Math.min(oldTo, from.line) + 1}); + } + if (!posEq(to, sel.to)) { + if (to.line < oldTo) + changes.push({from: Math.max(oldFrom, from.line), to: oldTo + 1}); + else + changes.push({from: Math.max(from.line, oldTo), to: to.line + 1}); + } + } + sel.from = from; sel.to = to; + selectionChanged = true; + } + function setCursor(line, ch) { + var pos = clipPos({line: line, ch: ch || 0}); + setSelection(pos, pos); + } + + function clipLine(n) {return Math.max(0, Math.min(n, lines.length-1));} + function clipPos(pos) { + if (pos.line < 0) return {line: 0, ch: 0}; + if (pos.line >= lines.length) return {line: lines.length-1, ch: lines[lines.length-1].text.length}; + var ch = pos.ch, linelen = lines[pos.line].text.length; + if (ch == null || ch > linelen) return {line: pos.line, ch: linelen}; + else if (ch < 0) return {line: pos.line, ch: 0}; + else return pos; + } + + function scrollPage(down) { + var linesPerPage = Math.floor(wrapper.clientHeight / lineHeight()), head = sel.inverted ? sel.from : sel.to; + setCursor(head.line + (Math.max(linesPerPage - 1, 1) * (down ? 1 : -1)), head.ch); + } + function scrollEnd(top) { + setCursor(top ? 0 : lines.length - 1); + } + function selectAll() { + var endLine = lines.length - 1; + setSelection({line: 0, ch: 0}, {line: endLine, ch: lines[endLine].text.length}); + } + function selectWordAt(pos) { + var line = lines[pos.line].text; + var start = pos.ch, end = pos.ch; + while (start > 0 && /\w/.test(line.charAt(start - 1))) --start; + while (end < line.length - 1 && /\w/.test(line.charAt(end))) ++end; + setSelection({line: pos.line, ch: start}, {line: pos.line, ch: end}); + } + function handleEnter() { + replaceSelection("\n", "end"); + if (options.enterMode != "flat") + indentLine(sel.from.line, options.enterMode == "keep" ? "prev" : "smart"); + } + function handleTab(shift) { + shiftSelecting = null; + switch (options.tabMode) { + case "default": + return false; + case "indent": + for (var i = sel.from.line, e = sel.to.line; i <= e; ++i) indentLine(i, "smart"); + break; + case "classic": + if (posEq(sel.from, sel.to)) { + if (shift) indentLine(sel.from.line, "smart"); + else replaceSelection("\t", "end"); + break; + } + case "shift": + for (var i = sel.from.line, e = sel.to.line; i <= e; ++i) indentLine(i, shift ? "subtract" : "add"); + break; + } + return true; + } + + function indentLine(n, how) { + if (how == "smart") { + if (!mode.indent) how = "prev"; + else var state = getStateBefore(n); + } + + var line = lines[n], curSpace = line.indentation(), curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (how == "prev") { + if (n) indentation = lines[n-1].indentation(); + else indentation = 0; + } + else if (how == "smart") indentation = mode.indent(state, line.text.slice(curSpaceString.length)); + else if (how == "add") indentation = curSpace + options.indentUnit; + else if (how == "subtract") indentation = curSpace - options.indentUnit; + indentation = Math.max(0, indentation); + var diff = indentation - curSpace; + + if (!diff) { + if (sel.from.line != n && sel.to.line != n) return; + var indentString = curSpaceString; + } + else { + var indentString = "", pos = 0; + if (options.indentWithTabs) + for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} + while (pos < indentation) {++pos; indentString += " ";} + } + + replaceRange(indentString, {line: n, ch: 0}, {line: n, ch: curSpaceString.length}); + } + + function loadMode() { + mode = CodeMirror.getMode(options, options.mode); + for (var i = 0, l = lines.length; i < l; ++i) + lines[i].stateAfter = null; + work = [0]; + } + function gutterChanged() { + var visible = options.gutter || options.lineNumbers; + gutter.style.display = visible ? "" : "none"; + if (visible) updateGutter(); + else lineDiv.parentNode.style.marginLeft = 0; + } + + function markText(from, to, className) { + from = clipPos(from); to = clipPos(to); + var accum = []; + function add(line, from, to, className) { + var line = lines[line], mark = line.addMark(from, to, className); + mark.line = line; + accum.push(mark); + } + if (from.line == to.line) add(from.line, from.ch, to.ch, className); + else { + add(from.line, from.ch, null, className); + for (var i = from.line + 1, e = to.line; i < e; ++i) + add(i, 0, null, className); + add(to.line, 0, to.ch, className); + } + changes.push({from: from.line, to: to.line + 1}); + return function() { + var start, end; + for (var i = 0; i < accum.length; ++i) { + var mark = accum[i], found = indexOf(lines, mark.line); + mark.line.removeMark(mark); + if (found > -1) { + if (start == null) start = found; + end = found; + } + } + if (start != null) changes.push({from: start, to: end + 1}); + }; + } + + function addGutterMarker(line, text, className) { + if (typeof line == "number") line = lines[clipLine(line)]; + line.gutterMarker = {text: text, style: className}; + updateGutter(); + return line; + } + function removeGutterMarker(line) { + if (typeof line == "number") line = lines[clipLine(line)]; + line.gutterMarker = null; + updateGutter(); + } + function setLineClass(line, className) { + if (typeof line == "number") { + var no = line; + line = lines[clipLine(line)]; + } + else { + var no = indexOf(lines, line); + if (no == -1) return null; + } + line.className = className; + changes.push({from: no, to: no + 1}); + return line; + } + + function lineInfo(line) { + if (typeof line == "number") { + var n = line; + line = lines[line]; + if (!line) return null; + } + else { + var n = indexOf(lines, line); + if (n == -1) return null; + } + var marker = line.gutterMarker; + return {line: n, text: line.text, markerText: marker && marker.text, markerClass: marker && marker.style}; + } + + // These are used to go from pixel positions to character + // positions, taking tabs into account. + function charX(line, pos) { + var text = lines[line].text, span = measure.firstChild; + if (text.lastIndexOf("\t", pos) == -1) return pos * charWidth(); + var old = span.firstChild.nodeValue; + try { + span.firstChild.nodeValue = text.slice(0, pos); + return span.offsetWidth; + } finally {span.firstChild.nodeValue = old;} + } + function charFromX(line, x) { + var text = lines[line].text, cw = charWidth(); + if (x <= 0) return 0; + if (text.indexOf("\t") == -1) return Math.min(text.length, Math.round(x / cw)); + var mspan = measure.firstChild, mtext = mspan.firstChild, old = mtext.nodeValue; + try { + mtext.nodeValue = text; + var from = 0, fromX = 0, to = text.length, toX = mspan.offsetWidth; + if (x > toX) return to; + for (;;) { + if (to - from <= 1) return (toX - x > x - fromX) ? from : to; + var middle = Math.ceil((from + to) / 2); + mtext.nodeValue = text.slice(0, middle); + var curX = mspan.offsetWidth; + if (curX > x) {to = middle; toX = curX;} + else {from = middle; fromX = curX;} + } + } finally {mtext.nodeValue = old;} + } + + function localCoords(pos, inLineWrap) { + var lh = lineHeight(), line = pos.line - (inLineWrap ? showingFrom : 0); + return {x: charX(pos.line, pos.ch), y: line * lh, yBot: (line + 1) * lh}; + } + function pageCoords(pos) { + var local = localCoords(pos, true), off = eltOffset(lineSpace); + return {x: off.left + local.x, y: off.top + local.y, yBot: off.top + local.yBot}; + } + + function lineHeight() { + var nlines = lineDiv.childNodes.length; + if (nlines) return lineDiv.offsetHeight / nlines; + else return measure.firstChild.offsetHeight || 1; + } + function charWidth() {return (measure.firstChild.offsetWidth || 320) / 40;} + function paddingTop() {return lineSpace.offsetTop;} + function paddingLeft() {return lineSpace.offsetLeft;} + + function posFromMouse(e, liberal) { + var off = eltOffset(lineSpace), + x = e.pageX() - off.left, + y = e.pageY() - off.top; + if (!liberal && e.target() != lineSpace.parentNode && !(e.target() == wrapper && y > (lines.length * lineHeight()))) + for (var n = e.target(); n != lineDiv && n != cursor; n = n.parentNode) + if (!n || n == wrapper) return null; + var line = showingFrom + Math.floor(y / lineHeight()); + return clipPos({line: line, ch: charFromX(clipLine(line), x)}); + } + function onContextMenu(e) { + var pos = posFromMouse(e); + if (!pos || window.opera) return; // Opera is difficult. + if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)) + setCursor(pos.line, pos.ch); + + var oldCSS = input.style.cssText; + input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.pageY() - 1) + + "px; left: " + (e.pageX() - 1) + "px; z-index: 1000; background: white; " + + "border-width: 0; outline: none; overflow: hidden;"; + var val = input.value = getSelection(); + input.focus(); + setSelRange(input, 0, val.length); + if (gecko) e.stop(); + leaveInputAlone = true; + setTimeout(function() { + if (input.value != val) operation(replaceSelection)(input.value, "end"); + input.style.cssText = oldCSS; + leaveInputAlone = false; + prepareInput(); + slowPoll(); + }, 50); + } + + // Cursor-blinking + function restartBlink() { + clearInterval(blinker); + var on = true; + cursor.style.visibility = ""; + blinker = setInterval(function() { + cursor.style.visibility = (on = !on) ? "" : "hidden"; + }, 650); + } + + var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; + function matchBrackets(autoclear) { + var head = sel.inverted ? sel.from : sel.to, line = lines[head.line], pos = head.ch - 1; + var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)]; + if (!match) return; + var ch = match.charAt(0), forward = match.charAt(1) == ">", d = forward ? 1 : -1, st = line.styles; + for (var off = pos + 1, i = 0, e = st.length; i < e; i+=2) + if ((off -= st[i].length) <= 0) {var style = st[i+1]; break;} + + var stack = [line.text.charAt(pos)], re = /[(){}[\]]/; + function scan(line, from, to) { + if (!line.text) return; + var st = line.styles, pos = forward ? 0 : line.text.length - 1, cur; + for (var i = forward ? 0 : st.length - 2, e = forward ? st.length : -2; i != e; i += 2*d) { + var text = st[i]; + if (st[i+1] != null && st[i+1] != style) {pos += d * text.length; continue;} + for (var j = forward ? 0 : text.length - 1, te = forward ? text.length : -1; j != te; j += d, pos+=d) { + if (pos >= from && pos < to && re.test(cur = text.charAt(j))) { + var match = matching[cur]; + if (match.charAt(1) == ">" == forward) stack.push(cur); + else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false}; + else if (!stack.length) return {pos: pos, match: true}; + } + } + } + } + for (var i = head.line, e = forward ? Math.min(i + 50, lines.length) : Math.max(0, i - 50); i != e; i+=d) { + var line = lines[i], first = i == head.line; + var found = scan(line, first && forward ? pos + 1 : 0, first && !forward ? pos : line.text.length); + if (found) { + var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style), + two = markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style); + var clear = operation(function(){one(); two();}); + if (autoclear) setTimeout(clear, 800); + else bracketHighlighted = clear; + break; + } + } + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(n) { + var minindent, minline; + for (var search = n, lim = n - 40; search > lim; --search) { + if (search == 0) return 0; + var line = lines[search-1]; + if (line.stateAfter) return search; + var indented = line.indentation(); + if (minline == null || minindent > indented) { + minline = search; + minindent = indented; + } + } + return minline; + } + function getStateBefore(n) { + var start = findStartLine(n), state = start && lines[start-1].stateAfter; + if (!state) state = startState(mode); + else state = copyState(mode, state); + for (var i = start; i < n; ++i) { + var line = lines[i]; + line.highlight(mode, state); + line.stateAfter = copyState(mode, state); + } + if (!lines[n].stateAfter) work.push(n); + return state; + } + function highlightWorker() { + var end = +new Date + options.workTime; + while (work.length) { + if (!lines[showingFrom].stateAfter) var task = showingFrom; + else var task = work.pop(); + if (task >= lines.length) continue; + var start = findStartLine(task), state = start && lines[start-1].stateAfter; + if (state) state = copyState(mode, state); + else state = startState(mode); + + for (var i = start, l = lines.length; i < l; ++i) { + var line = lines[i], hadState = line.stateAfter; + if (+new Date > end) { + work.push(i); + startWorker(options.workDelay); + changes.push({from: task, to: i}); + return; + } + var changed = line.highlight(mode, state); + line.stateAfter = copyState(mode, state); + if (hadState && !changed && line.text) break; + } + changes.push({from: task, to: i}); + } + } + function startWorker(time) { + if (!work.length) return; + highlight.set(time, operation(highlightWorker)); + } + + // Operations are used to wrap changes in such a way that each + // change won't have to update the cursor and display (which would + // be awkward, slow, and error-prone), but instead updates are + // batched and then all combined and executed at once. + function startOperation() { + updateInput = null; changes = []; textChanged = selectionChanged = false; + } + function endOperation() { + var reScroll = false; + if (selectionChanged) reScroll = !scrollCursorIntoView(); + if (changes.length) updateDisplay(changes); + else if (selectionChanged) updateCursor(); + if (reScroll) scrollCursorIntoView(); + if (selectionChanged) restartBlink(); + + // updateInput can be set to a boolean value to force/prevent an + // update. + if (!leaveInputAlone && (updateInput === true || (updateInput !== false && selectionChanged))) + prepareInput(); + + if (selectionChanged && options.onCursorActivity) + options.onCursorActivity(instance); + if (textChanged && options.onChange) + options.onChange(instance); + if (selectionChanged && options.matchBrackets) + setTimeout(operation(function() { + if (bracketHighlighted) {bracketHighlighted(); bracketHighlighted = null;} + matchBrackets(false); + }), 20); + } + var nestedOperation = 0; + function operation(f) { + return function() { + if (!nestedOperation++) startOperation(); + try {var result = f.apply(this, arguments);} + finally {if (!--nestedOperation) endOperation();} + return result; + }; + } + + function SearchCursor(query, pos, caseFold) { + this.atOccurrence = false; + if (caseFold == null) caseFold = typeof query == "string" && query == query.toLowerCase(); + + if (pos && typeof pos == "object") pos = clipPos(pos); + else pos = {line: 0, ch: 0}; + this.pos = {from: pos, to: pos}; + + // The matches method is filled in based on the type of query. + // It takes a position and a direction, and returns an object + // describing the next occurrence of the query, or null if no + // more matches were found. + if (typeof query != "string") // Regexp match + this.matches = function(reverse, pos) { + if (reverse) { + var line = lines[pos.line].text.slice(0, pos.ch), match = line.match(query), start = 0; + while (match) { + var ind = line.indexOf(match[0]); + start += ind; + line = line.slice(ind + 1); + var newmatch = line.match(query); + if (newmatch) match = newmatch; + else break; + } + } + else { + var line = lines[pos.line].text.slice(pos.ch), match = line.match(query), + start = match && pos.ch + line.indexOf(match[0]); + } + if (match) + return {from: {line: pos.line, ch: start}, + to: {line: pos.line, ch: start + match[0].length}, + match: match}; + }; + else { // String query + if (caseFold) query = query.toLowerCase(); + var fold = caseFold ? function(str){return str.toLowerCase();} : function(str){return str;}; + var target = query.split("\n"); + // Different methods for single-line and multi-line queries + if (target.length == 1) + this.matches = function(reverse, pos) { + var line = fold(lines[pos.line].text), len = query.length, match; + if (reverse ? (pos.ch >= len && (match = line.lastIndexOf(query, pos.ch - len)) != -1) + : (match = line.indexOf(query, pos.ch)) != -1) + return {from: {line: pos.line, ch: match}, + to: {line: pos.line, ch: match + len}}; + }; + else + this.matches = function(reverse, pos) { + var ln = pos.line, idx = (reverse ? target.length - 1 : 0), match = target[idx], line = fold(lines[ln].text); + var offsetA = (reverse ? line.indexOf(match) + match.length : line.lastIndexOf(match)); + if (reverse ? offsetA >= pos.ch || offsetA != match.length + : offsetA <= pos.ch || offsetA != line.length - match.length) + return; + for (;;) { + if (reverse ? !ln : ln == lines.length - 1) return; + line = fold(lines[ln += reverse ? -1 : 1].text); + match = target[reverse ? --idx : ++idx]; + if (idx > 0 && idx < target.length - 1) { + if (line != match) return; + else continue; + } + var offsetB = (reverse ? line.lastIndexOf(match) : line.indexOf(match) + match.length); + if (reverse ? offsetB != line.length - match.length : offsetB != match.length) + return; + var start = {line: pos.line, ch: offsetA}, end = {line: ln, ch: offsetB}; + return {from: reverse ? end : start, to: reverse ? start : end}; + } + }; + } + } + + SearchCursor.prototype = { + findNext: function() {return this.find(false);}, + findPrevious: function() {return this.find(true);}, + + find: function(reverse) { + var self = this, pos = clipPos(reverse ? this.pos.from : this.pos.to); + function savePosAndFail(line) { + var pos = {line: line, ch: 0}; + self.pos = {from: pos, to: pos}; + self.atOccurrence = false; + return false; + } + + for (;;) { + if (this.pos = this.matches(reverse, pos)) { + this.atOccurrence = true; + return this.pos.match || true; + } + if (reverse) { + if (!pos.line) return savePosAndFail(0); + pos = {line: pos.line-1, ch: lines[pos.line-1].text.length}; + } + else { + if (pos.line == lines.length - 1) return savePosAndFail(lines.length); + pos = {line: pos.line+1, ch: 0}; + } + } + }, + + from: function() {if (this.atOccurrence) return copyPos(this.pos.from);}, + to: function() {if (this.atOccurrence) return copyPos(this.pos.to);} + }; + + return instance; + } // (end of function CodeMirror) + + // The default configuration options. + CodeMirror.defaults = { + value: "", + mode: null, + indentUnit: 2, + indentWithTabs: false, + tabMode: "classic", + enterMode: "indent", + electricChars: true, + onKeyEvent: null, + lineNumbers: false, + gutter: false, + firstLineNumber: 1, + readOnly: false, + onChange: null, + onCursorActivity: null, + onGutterClick: null, + onFocus: null, onBlur: null, onScroll: null, + matchBrackets: false, + workTime: 100, + workDelay: 200, + undoDepth: 40, + tabindex: null + }; + + // Known modes, by name and by MIME + var modes = {}, mimeModes = {}; + CodeMirror.defineMode = function(name, mode) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; + modes[name] = mode; + }; + CodeMirror.defineMIME = function(mime, spec) { + mimeModes[mime] = spec; + }; + CodeMirror.getMode = function(options, spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) + spec = mimeModes[spec]; + if (typeof spec == "string") + var mname = spec, config = {}; + else + var mname = spec.name, config = spec; + var mfactory = modes[mname]; + if (!mfactory) { + if (window.console) console.warn("No mode " + mname + " found, falling back to plain text."); + return CodeMirror.getMode(options, "text/plain"); + } + return mfactory(options, config); + } + CodeMirror.listModes = function() { + var list = []; + for (var m in modes) + if (modes.propertyIsEnumerable(m)) list.push(m); + return list; + }; + CodeMirror.listMIMEs = function() { + var list = []; + for (var m in mimeModes) + if (mimeModes.propertyIsEnumerable(m)) list.push(m); + return list; + }; + + CodeMirror.fromTextArea = function(textarea, options) { + if (!options) options = {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabindex) + options.tabindex = textarea.tabindex; + + function save() {textarea.value = instance.getValue();} + if (textarea.form) { + // Deplorable hack to make the submit method do the right thing. + var rmSubmit = connect(textarea.form, "submit", save, true); + if (typeof textarea.form.submit == "function") { + var realSubmit = textarea.form.submit; + function wrappedSubmit() { + save(); + textarea.form.submit = realSubmit; + textarea.form.submit(); + textarea.form.submit = wrappedSubmit; + } + textarea.form.submit = wrappedSubmit; + } + } + + textarea.style.display = "none"; + var instance = CodeMirror(function(node) { + textarea.parentNode.insertBefore(node, textarea.nextSibling); + }, options); + instance.save = save; + instance.toTextArea = function() { + save(); + textarea.parentNode.removeChild(instance.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + rmSubmit(); + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit; + } + }; + return instance; + }; + + // Utility functions for working with state. Exported because modes + // sometimes need to do this. + function copyState(mode, state) { + if (state === true) return state; + if (mode.copyState) return mode.copyState(state); + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) val = val.concat([]); + nstate[n] = val; + } + return nstate; + } + CodeMirror.startState = startState; + function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true; + } + CodeMirror.copyState = copyState; + + // The character stream used by a mode's parser. + function StringStream(string) { + this.pos = this.start = 0; + this.string = string; + } + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == 0;}, + peek: function() {return this.string.charAt(this.pos);}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.start; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() {return countColumn(this.string, this.start);}, + indentation: function() {return countColumn(this.string);}, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + function cased(str) {return caseInsensitive ? str.toLowerCase() : str;} + if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } + else { + var match = this.string.slice(this.pos).match(pattern); + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);} + }; + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + function Line(text, styles) { + this.styles = styles || [text, null]; + this.stateAfter = null; + this.text = text; + this.marked = this.gutterMarker = this.className = null; + } + Line.prototype = { + // Replace a piece of a line, keeping the styles around it intact. + replace: function(from, to, text) { + var st = [], mk = this.marked; + copyStyles(0, from, this.styles, st); + if (text) st.push(text, null); + copyStyles(to, this.text.length, this.styles, st); + this.styles = st; + this.text = this.text.slice(0, from) + text + this.text.slice(to); + this.stateAfter = null; + if (mk) { + var diff = text.length - (to - from), end = this.text.length; + function fix(n) {return n <= Math.min(to, to + diff) ? n : n + diff;} + for (var i = 0; i < mk.length; ++i) { + var mark = mk[i], del = false; + if (mark.from >= end) del = true; + else {mark.from = fix(mark.from); if (mark.to != null) mark.to = fix(mark.to);} + if (del || mark.from >= mark.to) {mk.splice(i, 1); i--;} + } + } + }, + // Split a line in two, again keeping styles intact. + split: function(pos, textBefore) { + var st = [textBefore, null]; + copyStyles(pos, this.text.length, this.styles, st); + return new Line(textBefore + this.text.slice(pos), st); + }, + addMark: function(from, to, style) { + var mk = this.marked, mark = {from: from, to: to, style: style}; + if (this.marked == null) this.marked = []; + this.marked.push(mark); + this.marked.sort(function(a, b){return a.from - b.from;}); + return mark; + }, + removeMark: function(mark) { + var mk = this.marked; + if (!mk) return; + for (var i = 0; i < mk.length; ++i) + if (mk[i] == mark) {mk.splice(i, 1); break;} + }, + // Run the given mode's parser over a line, update the styles + // array, which contains alternating fragments of text and CSS + // classes. + highlight: function(mode, state) { + var stream = new StringStream(this.text), st = this.styles, pos = 0, changed = false; + while (!stream.eol()) { + var style = mode.token(stream, state); + var substr = this.text.slice(stream.start, stream.pos); + stream.start = stream.pos; + if (pos && st[pos-1] == style) + st[pos-2] += substr; + else if (substr) { + if (!changed && st[pos] != substr || st[pos+1] != style) changed = true; + st[pos++] = substr; st[pos++] = style; + } + // Give up when line is ridiculously long + if (stream.pos > 5000) { + st[pos++] = this.text.slice(stream.pos); st[pos++] = null; + break; + } + } + if (st.length != pos) {st.length = pos; changed = true;} + return changed; + }, + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(mode, state, ch) { + var txt = this.text, stream = new StringStream(txt); + while (stream.pos < ch && !stream.eol()) { + stream.start = stream.pos; + var style = mode.token(stream, state); + } + return {start: stream.start, + end: stream.pos, + string: stream.current(), + className: style || null, + state: state}; + }, + indentation: function() {return countColumn(this.text);}, + // Produces an HTML fragment for the line, taking selection, + // marking, and highlighting into account. + getHTML: function(sfrom, sto, includePre) { + var html = []; + if (includePre) + html.push(this.className ? '
          ': "
          ");
          +      function span(text, style) {
          +        if (!text) return;
          +        if (style) html.push('', htmlEscape(text), "");
          +        else html.push(htmlEscape(text));
          +      }
          +      var st = this.styles, allText = this.text, marked = this.marked;
          +      if (sfrom == sto) sfrom = null;
          +
          +      if (!allText)
          +        span(" ", sfrom != null && sto == null ? "CodeMirror-selected" : null);
          +      else if (!marked && sfrom == null)
          +        for (var i = 0, e = st.length; i < e; i+=2) span(st[i], st[i+1]);
          +      else {
          +        var pos = 0, i = 0, text = "", style, sg = 0;
          +        var markpos = -1, mark = null;
          +        function nextMark() {
          +          if (marked) {
          +            markpos += 1;
          +            mark = (markpos < marked.length) ? marked[markpos] : null;
          +          }
          +        }
          +        nextMark();        
          +        while (pos < allText.length) {
          +          var upto = allText.length;
          +          var extraStyle = "";
          +          if (sfrom != null) {
          +            if (sfrom > pos) upto = sfrom;
          +            else if (sto == null || sto > pos) {
          +              extraStyle = " CodeMirror-selected";
          +              if (sto != null) upto = Math.min(upto, sto);
          +            }
          +          }
          +          while (mark && mark.to != null && mark.to <= pos) nextMark();
          +          if (mark) {
          +            if (mark.from > pos) upto = Math.min(upto, mark.from);
          +            else {
          +              extraStyle += " " + mark.style;
          +              if (mark.to != null) upto = Math.min(upto, mark.to);
          +            }
          +          }
          +          for (;;) {
          +            var end = pos + text.length;
          +            var apliedStyle = style;
          +            if (extraStyle) apliedStyle = style ? style + extraStyle : extraStyle;
          +            span(end > upto ? text.slice(0, upto - pos) : text, apliedStyle);
          +            if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;}
          +            pos = end;
          +            text = st[i++]; style = st[i++];
          +          }
          +        }
          +        if (sfrom != null && sto == null) span(" ", "CodeMirror-selected");
          +      }
          +      if (includePre) html.push("
          "); + return html.join(""); + } + }; + // Utility used by replace and split above + function copyStyles(from, to, source, dest) { + for (var i = 0, pos = 0, state = 0; pos < to; i+=2) { + var part = source[i], end = pos + part.length; + if (state == 0) { + if (end > from) dest.push(part.slice(from - pos, Math.min(part.length, to - pos)), source[i+1]); + if (end >= from) state = 1; + } + else if (state == 1) { + if (end > to) dest.push(part.slice(0, to - pos), source[i+1]); + else dest.push(part, source[i+1]); + } + pos = end; + } + } + + // The history object 'chunks' changes that are made close together + // and at almost the same time into bigger undoable units. + function History() { + this.time = 0; + this.done = []; this.undone = []; + } + History.prototype = { + addChange: function(start, added, old) { + this.undone.length = 0; + var time = +new Date, last = this.done[this.done.length - 1]; + if (time - this.time > 400 || !last || + last.start > start + added || last.start + last.added < start - last.added + last.old.length) + this.done.push({start: start, added: added, old: old}); + else { + var oldoff = 0; + if (start < last.start) { + for (var i = last.start - start - 1; i >= 0; --i) + last.old.unshift(old[i]); + last.added += last.start - start; + last.start = start; + } + else if (last.start < start) { + oldoff = start - last.start; + added += oldoff; + } + for (var i = last.added - oldoff, e = old.length; i < e; ++i) + last.old.push(old[i]); + if (last.added < added) last.added = added; + } + this.time = time; + } + }; + + // Event stopping compatibility wrapper. + function stopEvent() { + if (this.preventDefault) {this.preventDefault(); this.stopPropagation();} + else {this.returnValue = false; this.cancelBubble = true;} + } + // Ensure an event has a stop method. + function addStop(event) { + if (!event.stop) event.stop = stopEvent; + return event; + } + + // Event wrapper, exposing the few operations we need. + function Event(orig) {this.e = orig;} + Event.prototype = { + stop: function() {stopEvent.call(this.e);}, + target: function() {return this.e.target || this.e.srcElement;}, + button: function() { + if (this.e.which) return this.e.which; + else if (this.e.button & 1) return 1; + else if (this.e.button & 2) return 3; + else if (this.e.button & 4) return 2; + }, + pageX: function() { + if (this.e.pageX != null) return this.e.pageX; + else return this.e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; + }, + pageY: function() { + if (this.e.pageY != null) return this.e.pageY; + else return this.e.clientY + document.body.scrollTop + document.documentElement.scrollTop; + } + }; + + // Event handler registration. If disconnect is true, it'll return a + // function that unregisters the handler. + function connect(node, type, handler, disconnect) { + function wrapHandler(event) {handler(new Event(event || window.event));} + if (typeof node.addEventListener == "function") { + node.addEventListener(type, wrapHandler, false); + if (disconnect) return function() {node.removeEventListener(type, wrapHandler, false);}; + } + else { + node.attachEvent("on" + type, wrapHandler); + if (disconnect) return function() {node.detachEvent("on" + type, wrapHandler);}; + } + } + + function Delayed() {this.id = null;} + Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}}; + + // Some IE versions don't preserve whitespace when setting the + // innerHTML of a PRE tag. + var badInnerHTML = (function() { + var pre = document.createElement("pre"); + pre.innerHTML = " "; return !pre.innerHTML; + })(); + + var gecko = /gecko\/\d{7}/i.test(navigator.userAgent); + + var lineSep = "\n"; + // Feature-detect whether newlines in textareas are converted to \r\n + (function () { + var te = document.createElement("textarea"); + te.value = "foo\nbar"; + if (te.value.indexOf("\r") > -1) lineSep = "\r\n"; + }()); + + var tabSize = 8; + var mac = /Mac/.test(navigator.platform); + var movementKeys = {}; + for (var i = 35; i <= 40; ++i) + movementKeys[i] = movementKeys["c" + i] = true; + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + function countColumn(string, end) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) end = string.length; + } + for (var i = 0, n = 0; i < end; ++i) { + if (string.charAt(i) == "\t") n += tabSize - (n % tabSize); + else ++n; + } + return n; + } + + // Find the position of an element by following the offsetParent chain. + function eltOffset(node) { + var x = 0, y = 0, n2 = node; + for (var n = node; n; n = n.offsetParent) {x += n.offsetLeft; y += n.offsetTop;} + for (var n = node; n != document.body; n = n.parentNode) {x -= n.scrollLeft; y -= n.scrollTop;} + return {left: x, top: y}; + } + // Get a node's text content. + function eltText(node) { + return node.textContent || node.innerText || node.nodeValue || ""; + } + + // Operations on {line, ch} objects. + function posEq(a, b) {return a.line == b.line && a.ch == b.ch;} + function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);} + function copyPos(x) {return {line: x.line, ch: x.ch};} + + function htmlEscape(str) { + return str.replace(/[<&]/g, function(str) {return str == "&" ? "&" : "<";}); + } + + // Used to position the cursor after an undo/redo by finding the + // last edited character. + function editEnd(from, to) { + if (!to) return from ? from.length : 0; + if (!from) return to.length; + for (var i = from.length, j = to.length; i >= 0 && j >= 0; --i, --j) + if (from.charAt(i) != to.charAt(j)) break; + return j + 1; + } + + function indexOf(collection, elt) { + if (collection.indexOf) return collection.indexOf(elt); + for (var i = 0, e = collection.length; i < e; ++i) + if (collection[i] == elt) return i; + return -1; + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + if ("\n\nb".split(/\n/).length != 3) + var splitLines = function(string) { + var pos = 0, nl, result = []; + while ((nl = string.indexOf("\n", pos)) > -1) { + result.push(string.slice(pos, string.charAt(nl-1) == "\r" ? nl - 1 : nl)); + pos = nl + 1; + } + result.push(string.slice(pos)); + return result; + }; + else + var splitLines = function(string){return string.split(/\r?\n/);}; + + // Sane model of finding and setting the selection in a textarea + if (window.getSelection) { + var selRange = function(te) { + try {return {start: te.selectionStart, end: te.selectionEnd};} + catch(e) {return null;} + }; + var setSelRange = function(te, start, end) { + try {te.setSelectionRange(start, end);} + catch(e) {} // Fails on Firefox when textarea isn't part of the document + }; + } + // IE model. Don't ask. + else { + var selRange = function(te) { + try {var range = document.selection.createRange();} + catch(e) {return null;} + if (!range || range.parentElement() != te) return null; + var val = te.value, len = val.length, localRange = te.createTextRange(); + localRange.moveToBookmark(range.getBookmark()); + var endRange = te.createTextRange(); + endRange.collapse(false); + + if (localRange.compareEndPoints("StartToEnd", endRange) > -1) + return {start: len, end: len}; + + var start = -localRange.moveStart("character", -len); + for (var i = val.indexOf("\r"); i > -1 && i < start; i = val.indexOf("\r", i+1), start++) {} + + if (localRange.compareEndPoints("EndToEnd", endRange) > -1) + return {start: start, end: len}; + + var end = -localRange.moveEnd("character", -len); + for (var i = val.indexOf("\r"); i > -1 && i < end; i = val.indexOf("\r", i+1), end++) {} + return {start: start, end: end}; + }; + var setSelRange = function(te, start, end) { + var range = te.createTextRange(); + range.collapse(true); + var endrange = range.duplicate(); + var newlines = 0, txt = te.value; + for (var pos = txt.indexOf("\n"); pos > -1 && pos < start; pos = txt.indexOf("\n", pos + 1)) + ++newlines; + range.move("character", start - newlines); + for (; pos > -1 && pos < end; pos = txt.indexOf("\n", pos + 1)) + ++newlines; + endrange.move("character", end - newlines); + range.setEndPoint("EndToEnd", endrange); + range.select(); + }; + } + + CodeMirror.defineMode("null", function() { + return {token: function(stream) {stream.skipToEnd();}}; + }); + CodeMirror.defineMIME("text/plain", "null"); + + return CodeMirror; +})(); diff --git a/sources/plugins/LocalFilesEditor/codemirror/lib/overlay.js b/sources/plugins/LocalFilesEditor/codemirror/lib/overlay.js new file mode 100644 index 0000000..c4cdf9f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/lib/overlay.js @@ -0,0 +1,51 @@ +// Utility function that allows modes to be combined. The mode given +// as the base argument takes care of most of the normal mode +// functionality, but a second (typically simple) mode is used, which +// can override the style of text. Both modes get to parse all of the +// text, but when both assign a non-null style to a piece of code, the +// overlay wins, unless the combine argument was true, in which case +// the styles are combined. + +CodeMirror.overlayParser = function(base, overlay, combine) { + return { + startState: function() { + return { + base: CodeMirror.startState(base), + overlay: CodeMirror.startState(overlay), + basePos: 0, baseCur: null, + overlayPos: 0, overlayCur: null + }; + }, + copyState: function(state) { + return { + base: CodeMirror.copyState(base, state.base), + overlay: CodeMirror.copyState(overlay, state.overlay), + basePos: state.basePos, baseCur: null, + overlayPos: state.overlayPos, overlayCur: null + }; + }, + + token: function(stream, state) { + if (stream.start == state.basePos) { + state.baseCur = base.token(stream, state.base); + state.basePos = stream.pos; + } + if (stream.start == state.overlayPos) { + stream.pos = stream.start; + state.overlayCur = overlay.token(stream, state.overlay); + state.overlayPos = stream.pos; + } + stream.pos = Math.min(state.basePos, state.overlayPos); + if (stream.eol()) state.basePos = state.overlayPos = 0; + + if (state.overlayCur == null) return state.baseCur; + if (state.baseCur != null && combine) return state.baseCur + " " + state.overlayCur; + else return state.overlayCur; + }, + + indent: function(state, textAfter) { + return base.indent(state.base, textAfter); + }, + electricChars: base.electricChars + }; +}; diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/clike/clike.css b/sources/plugins/LocalFilesEditor/codemirror/mode/clike/clike.css new file mode 100644 index 0000000..21016d7 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/clike/clike.css @@ -0,0 +1,6 @@ +span.c-like-keyword {color: #90b;} +span.c-like-number {color: #291;} +span.c-like-comment {color: #a70;} +span.c-like-string {color: #a22;} +span.c-like-preprocessor {color: #049;} +span.c-like-var {color: #22b;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/clike/clike.js b/sources/plugins/LocalFilesEditor/codemirror/mode/clike/clike.js new file mode 100644 index 0000000..25bd791 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/clike/clike.js @@ -0,0 +1,181 @@ +CodeMirror.defineMode("clike", function(config, parserConfig) { + var indentUnit = config.indentUnit, keywords = parserConfig.keywords, + cpp = parserConfig.useCPP, multiLineStrings = parserConfig.multiLineStrings, $vars = parserConfig.$vars; + var isOperatorChar = /[+\-*&%=<>!?|]/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + var type; + function ret(tp, style) { + type = tp; + return style; + } + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") + return chain(stream, state, tokenString(ch)); + else if (/[\[\]{}\(\),;\:\.]/.test(ch)) + return ret(ch); + else if (ch == "#" && cpp && state.startOfLine) { + stream.skipToEnd(); + return ret("directive", "c-like-preprocessor"); + } + else if (/\d/.test(ch)) { + stream.eatWhile(/[\w\.]/) + return ret("number", "c-like-number"); + } + else if (ch == "/") { + if (stream.eat("*")) { + return chain(stream, state, tokenComment); + } + else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "c-like-comment"); + } + else { + stream.eatWhile(isOperatorChar); + return ret("operator"); + } + } + else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return ret("operator"); + } + else if ($vars && ch == "$") { + stream.eatWhile(/[\w\$_]/); + return ret("word", "c-like-var"); + } + else { + stream.eatWhile(/[\w\$_]/); + if (keywords && keywords.propertyIsEnumerable(stream.current())) return ret("keyword", "c-like-keyword"); + return ret("word", "c-like-word"); + } + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, next, end = false; + while ((next = stream.next()) != null) { + if (next == quote && !escaped) {end = true; break;} + escaped = !escaped && next == "\\"; + } + if (end || !(escaped || multiLineStrings)) + state.tokenize = tokenBase; + return ret("string", "c-like-string"); + }; + } + + function tokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "c-like-comment"); + } + + function Context(indented, column, type, align, prev) { + this.indented = indented; + this.column = column; + this.type = type; + this.align = align; + this.prev = prev; + } + + function pushContext(state, col, type) { + return state.context = new Context(state.indented, col, type, null, state.context); + } + function popContext(state) { + return state.context = state.context.prev; + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: tokenBase, + context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), + indented: 0, + startOfLine: true + }; + }, + + token: function(stream, state) { + var ctx = state.context; + if (stream.sol()) { + if (ctx.align == null) ctx.align = false; + state.indented = stream.indentation(); + state.startOfLine = true; + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + if (ctx.align == null) ctx.align = true; + + if ((type == ";" || type == ":") && ctx.type == "statement") popContext(state); + else if (type == "{") pushContext(state, stream.column(), "}"); + else if (type == "[") pushContext(state, stream.column(), "]"); + else if (type == "(") pushContext(state, stream.column(), ")"); + else if (type == "}") { + if (ctx.type == "statement") ctx = popContext(state); + if (ctx.type == "}") ctx = popContext(state); + if (ctx.type == "statement") ctx = popContext(state); + } + else if (type == ctx.type) popContext(state); + else if (ctx.type == "}") pushContext(state, stream.column(), "statement"); + state.startOfLine = false; + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), ctx = state.context, closing = firstChar == ctx.type; + if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); + else if (ctx.align) return ctx.column + (closing ? 0 : 1); + else return ctx.indented + (closing ? 0 : indentUnit); + }, + + electricChars: "{}" + }; +}); + +(function() { + function keywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var cKeywords = "auto if break int case long char register continue return default short do sizeof " + + "double static else struct entry switch extern typedef float union for unsigned " + + "goto while enum void const signed volatile"; + + CodeMirror.defineMIME("text/x-csrc", { + name: "clike", + useCPP: true, + keywords: keywords(cKeywords) + }); + CodeMirror.defineMIME("text/x-c++src", { + name: "clike", + useCPP: true, + keywords: keywords(cKeywords + " asm dynamic_cast namespace reinterpret_cast try bool explicit new " + + "static_cast typeid catch false operator template typename class friend private " + + "this using const_cast inline public throw virtual delete mutable protected true " + + "wchar_t") + }); + CodeMirror.defineMIME("text/x-java", { + name: "clike", + keywords: keywords("abstract assert boolean break byte case catch char class const continue default " + + "do double else enum extends false final finally float for goto if implements import " + + "instanceof int interface long native new null package private protected public " + + "return short static strictfp super switch synchronized this throw throws transient " + + "true try void volatile while") + }); +}()); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/clike/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/clike/index.html new file mode 100644 index 0000000..0836535 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/clike/index.html @@ -0,0 +1,101 @@ + + + + CodeMirror 2: C-like mode + + + + + + + + +

          CodeMirror 2: C-like mode

          + +
          + + + +

          Simple mode that tries to handle C-like languages as well as it + can. Takes two configuration parameters: keywords, an + object whose property names are the keywords in the language, + and useCPP, which determines whether C preprocessor + directives are recognized.

          + +

          MIME types defined: text/x-csrc + (C code), text/x-c++src (C++ + code), text/x-java (Java code).

          + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/css/css.css b/sources/plugins/LocalFilesEditor/codemirror/mode/css/css.css new file mode 100644 index 0000000..02d40ec --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/css/css.css @@ -0,0 +1,9 @@ +span.css-at {color: #708;} +span.css-unit {color: #281;} +span.css-value {color: #708;} +span.css-identifier {color: black;} +span.css-selector {color: #11B;} +span.css-important {color: #00F;} +span.css-colorcode {color: #299;} +span.css-comment {color: #A70;} +span.css-string {color: #A22;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/css/css.js b/sources/plugins/LocalFilesEditor/codemirror/mode/css/css.js new file mode 100644 index 0000000..5faad7b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/css/css.js @@ -0,0 +1,124 @@ +CodeMirror.defineMode("css", function(config) { + var indentUnit = config.indentUnit, type; + function ret(style, tp) {type = tp; return style;} + + function tokenBase(stream, state) { + var ch = stream.next(); + if (ch == "@") {stream.eatWhile(/\w/); return ret("css-at", stream.current());} + else if (ch == "/" && stream.eat("*")) { + state.tokenize = tokenCComment; + return tokenCComment(stream, state); + } + else if (ch == "<" && stream.eat("!")) { + state.tokenize = tokenSGMLComment; + return tokenSGMLComment(stream, state); + } + else if (ch == "=") ret(null, "compare"); + else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); + else if (ch == "\"" || ch == "'") { + state.tokenize = tokenString(ch); + return state.tokenize(stream, state); + } + else if (ch == "#") { + stream.eatWhile(/\w/); + return ret("css-selector", "hash"); + } + else if (ch == "!") { + stream.match(/^\s*\w*/); + return ret("css-important", "important"); + } + else if (/\d/.test(ch)) { + stream.eatWhile(/[\w.%]/); + return ret("css-unit", "unit"); + } + else if (/[,.+>*\/]/.test(ch)) { + return ret(null, "select-op"); + } + else if (/[;{}:\[\]]/.test(ch)) { + return ret(null, ch); + } + else { + stream.eatWhile(/[\w\\\-_]/); + return ret("css-identifier", "identifier"); + } + } + + function tokenCComment(stream, state) { + var maybeEnd = false, ch; + while ((ch = stream.next()) != null) { + if (maybeEnd && ch == "/") { + state.tokenize = tokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("css-comment", "comment"); + } + + function tokenSGMLComment(stream, state) { + var dashes = 0, ch; + while ((ch = stream.next()) != null) { + if (dashes >= 2 && ch == ">") { + state.tokenize = tokenBase; + break; + } + dashes = (ch == "-") ? dashes + 1 : 0; + } + return ret("css-comment", "comment"); + } + + function tokenString(quote) { + return function(stream, state) { + var escaped = false, ch; + while ((ch = stream.next()) != null) { + if (ch == quote && !escaped) + break; + escaped = !escaped && ch == "\\"; + } + if (!escaped) state.tokenize = tokenBase; + return ret("css-string", "string"); + }; + } + + return { + startState: function(base) { + return {tokenize: tokenBase, + baseIndent: base || 0, + stack: []}; + }, + + token: function(stream, state) { + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + + var context = state.stack[state.stack.length-1]; + if (type == "hash" && context == "rule") style = "css-colorcode"; + else if (style == "css-identifier") { + if (context == "rule") style = "css-value"; + else if (!context || context == "@media{") style = "css-selector"; + } + + if (context == "rule" && /^[\{\};]$/.test(type)) + state.stack.pop(); + if (type == "{") { + if (context == "@media") state.stack[state.stack.length-1] = "@media{"; + else state.stack.push("{"); + } + else if (type == "}") state.stack.pop(); + else if (type == "@media") state.stack.push("@media"); + else if (context != "rule" && context != "@media" && type != "comment") state.stack.push("rule"); + return style; + }, + + indent: function(state, textAfter) { + var n = state.stack.length; + if (/^\}/.test(textAfter)) + n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; + return state.baseIndent + n * indentUnit; + }, + + electricChars: "}" + }; +}); + +CodeMirror.defineMIME("text/css", "css"); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/css/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/css/index.html new file mode 100644 index 0000000..ad89561 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/css/index.html @@ -0,0 +1,56 @@ + + + + CodeMirror 2: CSS mode + + + + + + + + +

          CodeMirror 2: CSS mode

          +
          + + +

          MIME types defined: text/css.

          + + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/diff/diff.css b/sources/plugins/LocalFilesEditor/codemirror/mode/diff/diff.css new file mode 100644 index 0000000..60c1379 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/diff/diff.css @@ -0,0 +1,3 @@ +span.diff-rangeinfo {color: #a0b;} +span.diff-minus {color: #a22;} +span.diff-plus {color: #2b2;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/diff/diff.js b/sources/plugins/LocalFilesEditor/codemirror/mode/diff/diff.js new file mode 100644 index 0000000..619d74e --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/diff/diff.js @@ -0,0 +1,13 @@ +CodeMirror.defineMode("diff", function() { + return { + token: function(stream) { + var ch = stream.next(); + stream.skipToEnd(); + if (ch == "+") return "diff-plus"; + if (ch == "-") return "diff-minus"; + if (ch == "@") return "diff-rangeinfo"; + } + }; +}); + +CodeMirror.defineMIME("text/x-diff", "diff"); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/diff/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/diff/index.html new file mode 100644 index 0000000..2748f2f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/diff/index.html @@ -0,0 +1,99 @@ + + + + CodeMirror 2: Diff mode + + + + + + + + +

          CodeMirror 2: Diff mode

          +
          + + +

          MIME types defined: text/x-diff.

          + + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.css b/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.css new file mode 100644 index 0000000..41f9155 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.css @@ -0,0 +1,25 @@ +span.hs-char, +span.hs-float, +span.hs-integer, +span.hs-string {color: #762;} + +span.hs-comment {color: #262;font-style: italic;} +span.hs-pragma {color: #555;font-style: italic;} + +span.hs-special, +span.hs-varid, +span.hs-varsym {color: #000;} + +span.hs-conid, +span.hs-consym {color: #b11;} + +span.hs-qualifier {color: #555;} + +span.hs-reservedid, +span.hs-reservedop {color: #730;} + +span.hs-prelude-varid, +span.hs-prelude-varsym {color: #30a;} +span.hs-prelude-conid {color: #b11;} + +span.hs-error {background-color: #fdd;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.js b/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.js new file mode 100644 index 0000000..107885c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/haskell.js @@ -0,0 +1,242 @@ +CodeMirror.defineMode("haskell", function(cmCfg, modeCfg) { + + function switchState(source, setState, f) { + setState(f); + return f(source, setState); + } + + // These should all be Unicode extended, as per the Haskell 2010 report + var smallRE = /[a-z_]/; + var largeRE = /[A-Z]/; + var digitRE = /[0-9]/; + var hexitRE = /[0-9A-Fa-f]/; + var octitRE = /[0-7]/; + var idRE = /[a-z_A-Z0-9']/; + var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; + var specialRE = /[(),;[\]`{}]/; + var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer + + function normal(source, setState) { + if (source.eatWhile(whiteCharRE)) { + return null; + } + + var ch = source.next(); + if (specialRE.test(ch)) { + if (ch == '{' && source.eat('-')) { + var t = "hs-comment"; + if (source.eat('#')) { + t = "hs-pragma"; + } + return switchState(source, setState, ncomment(t, 1)); + } + return "hs-special"; + } + + if (ch == '\'') { + if (source.eat('\\')) { + source.next(); // should handle other escapes here + } + else { + source.next(); + } + if (source.eat('\'')) { + return "hs-char"; + } + return "hs-error"; + } + + if (ch == '"') { + return switchState(source, setState, stringLiteral); + } + + if (largeRE.test(ch)) { + source.eatWhile(idRE); + if (source.eat('.')) { + return "hs-qualifier"; + } + return "hs-conid"; + } + + if (smallRE.test(ch)) { + source.eatWhile(idRE); + return "hs-varid"; + } + + if (digitRE.test(ch)) { + if (ch == '0') { + if (source.eat(/[xX]/)) { + source.eatWhile(hexitRE); // should require at least 1 + return "hs-integer"; + } + if (source.eat(/[oO]/)) { + source.eatWhile(octitRE); // should require at least 1 + return "hs-integer"; + } + } + source.eatWhile(digitRE); + var t = "hs-integer"; + if (source.eat('.')) { + t = "hs-float"; + source.eatWhile(digitRE); // should require at least 1 + } + if (source.eat(/[eE]/)) { + t = "hs-float"; + source.eat(/[-+]/); + source.eatWhile(digitRE); // should require at least 1 + } + return t; + } + + if (symbolRE.test(ch)) { + if (ch == '-' && source.eat(/-/)) { + source.eatWhile(/-/); + if (!source.eat(symbolRE)) { + source.skipToEnd(); + return "hs-comment"; + } + } + var t = "hs-varsym"; + if (ch == ':') { + t = "hs-consym"; + } + source.eatWhile(symbolRE); + return t; + } + + return "hs-error"; + } + + function ncomment(type, nest) { + if (nest == 0) { + return normal; + } + return function(source, setState) { + var currNest = nest; + while (!source.eol()) { + ch = source.next(); + if (ch == '{' && source.eat('-')) { + ++currNest; + } + else if (ch == '-' && source.eat('}')) { + --currNest; + if (currNest == 0) { + setState(normal); + return type; + } + } + } + setState(ncomment(type, currNest)); + return type; + } + } + + function stringLiteral(source, setState) { + while (!source.eol()) { + var ch = source.next(); + if (ch == '"') { + setState(normal); + return "hs-string"; + } + if (ch == '\\') { + if (source.eol() || source.eat(whiteCharRE)) { + setState(stringGap); + return "hs-string"; + } + if (source.eat('&')) { + } + else { + source.next(); // should handle other escapes here + } + } + } + setState(normal); + return "hs-error"; + } + + function stringGap(source, setState) { + if (source.eat('\\')) { + return switchState(source, setState, stringLiteral); + } + source.next(); + setState(normal); + return "hs-error"; + } + + + var wellKnownWords = (function() { + var wkw = {}; + function setType(t) { + return function () { + for (var i = 0; i < arguments.length; i++) + wkw[arguments[i]] = t; + } + } + + setType("hs-reservedid")( + "case", "class", "data", "default", "deriving", "do", "else", "foreign", + "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", + "module", "newtype", "of", "then", "type", "where", "_"); + + setType("hs-reservedop")( + "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>"); + + setType("hs-prelude-varsym")( + "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", + "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); + + setType("hs-prelude-conid")( + "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", + "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", + "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", + "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", + "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", + "String", "True"); + + setType("hs-prelude-varid")( + "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", + "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", + "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", + "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", + "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", + "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", + "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", + "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", + "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", + "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", + "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", + "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", + "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", + "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", + "otherwise", "pi", "pred", "print", "product", "properFraction", + "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", + "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", + "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", + "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", + "sequence", "sequence_", "show", "showChar", "showList", "showParen", + "showString", "shows", "showsPrec", "significand", "signum", "sin", + "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", + "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", + "toRational", "truncate", "uncurry", "undefined", "unlines", "until", + "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", + "zip3", "zipWith", "zipWith3"); + + return wkw; + })(); + + + + return { + startState: function () { return { f: normal }; }, + copyState: function (s) { return { f: s.f }; }, + + token: function(stream, state) { + var t = state.f(stream, function(s) { state.f = s; }); + var w = stream.current(); + return (w in wellKnownWords) ? wellKnownWords[w] : t; + } + }; + +}); + +CodeMirror.defineMIME("text/x-haskell", "haskell"); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/index.html new file mode 100644 index 0000000..0bf34d5 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/haskell/index.html @@ -0,0 +1,59 @@ + + + + CodeMirror 2: Haskell mode + + + + + + + + +

          CodeMirror 2: Haskell mode

          + +
          + + + +

          MIME types defined: text/x-haskell.

          + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js b/sources/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js new file mode 100644 index 0000000..8d71652 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js @@ -0,0 +1,66 @@ +CodeMirror.defineMode("htmlmixed", function(config, parserConfig) { + var htmlMode = CodeMirror.getMode(config, {name: "xml", htmlMode: true}); + var jsMode = CodeMirror.getMode(config, "javascript"); + var cssMode = CodeMirror.getMode(config, "css"); + + function html(stream, state) { + var style = htmlMode.token(stream, state.htmlState); + if (style == "xml-tag" && stream.current() == ">" && state.htmlState.context) { + if (/^script$/i.test(state.htmlState.context.tagName)) { + state.token = javascript; + state.localState = jsMode.startState(htmlMode.indent(state.htmlState, "")); + } + else if (/^style$/i.test(state.htmlState.context.tagName)) { + state.token = css; + state.localState = cssMode.startState(htmlMode.indent(state.htmlState, "")); + } + } + return style; + } + function javascript(stream, state) { + if (stream.match(/^<\/\s*script\s*>/i, false)) { + state.token = html; + state.curState = null; + return html(stream, state); + } + return jsMode.token(stream, state.localState); + } + function css(stream, state) { + if (stream.match(/^<\/\s*style\s*>/i, false)) { + state.token = html; + state.localState = null; + return html(stream, state); + } + return cssMode.token(stream, state.localState); + } + + return { + startState: function() { + var state = htmlMode.startState(); + return {token: html, localState: null, htmlState: state}; + }, + + copyState: function(state) { + if (state.localState) + var local = CodeMirror.copyState(state.token == css ? cssMode : jsMode, state.localState); + return {token: state.token, localState: local, htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; + }, + + token: function(stream, state) { + return state.token(stream, state); + }, + + indent: function(state, textAfter) { + if (state.token == html || /^\s*<\//.test(textAfter)) + return htmlMode.indent(state.htmlState, textAfter); + else if (state.token == javascript) + return jsMode.indent(state.localState, textAfter); + else + return cssMode.indent(state.localState, textAfter); + }, + + electricChars: "/{}:" + } +}); + +CodeMirror.defineMIME("text/html", "htmlmixed"); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/index.html new file mode 100644 index 0000000..c661c98 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/htmlmixed/index.html @@ -0,0 +1,54 @@ + + + + CodeMirror 2: HTML mixed mode + + + + + + + + + + + + + +

          CodeMirror 2: HTML mixed mode

          +
          + + +

          The HTML mixed mode depends on the XML, JavaScript, and CSS modes.

          + +

          MIME types defined: text/html + (redefined, only takes effect if you load this parser after the + XML parser).

          + + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/index.html new file mode 100644 index 0000000..7b528e0 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/index.html @@ -0,0 +1,78 @@ + + + + CodeMirror 2: JavaScript mode + + + + + + + + +

          CodeMirror 2: JavaScript mode

          + +
          + + + +

          JavaScript mode supports a single configuration + option, json, which will set the mode to expect JSON + data rather than a JavaScript program.

          + +

          MIME types defined: text/javascript, application/json.

          + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css b/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css new file mode 100644 index 0000000..84fb1df --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css @@ -0,0 +1,6 @@ +span.js-keyword {color: #90b;} +span.js-atom {color: #291;} +span.js-variabledef {color: #00f;} +span.js-localvariable {color: #049;} +span.js-comment {color: #a70;} +span.js-string {color: #a22;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js b/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js new file mode 100644 index 0000000..0652165 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js @@ -0,0 +1,348 @@ +CodeMirror.defineMode("javascript", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var jsonMode = parserConfig.json; + + // Tokenizer + + var keywords = function(){ + function kw(type) {return {type: type, style: "js-keyword"};} + var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); + var operator = kw("operator"), atom = {type: "atom", style: "js-atom"}; + return { + "if": A, "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, + "return": C, "break": C, "continue": C, "new": C, "delete": C, "throw": C, + "var": kw("var"), "function": kw("function"), "catch": kw("catch"), + "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), + "in": operator, "typeof": operator, "instanceof": operator, + "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom + }; + }(); + + var isOperatorChar = /[+\-*&%=<>!?|]/; + + function chain(stream, state, f) { + state.tokenize = f; + return f(stream, state); + } + + function nextUntilUnescaped(stream, end) { + var escaped = false, next; + while ((next = stream.next()) != null) { + if (next == end && !escaped) + return false; + escaped = !escaped && next == "\\"; + } + return escaped; + } + + // Used as scratch variables to communicate multiple values without + // consing up tons of objects. + var type, content; + function ret(tp, style, cont) { + type = tp; content = cont; + return style; + } + + function jsTokenBase(stream, state) { + var ch = stream.next(); + if (ch == '"' || ch == "'") + return chain(stream, state, jsTokenString(ch)); + else if (/[\[\]{}\(\),;\:\.]/.test(ch)) + return ret(ch); + else if (ch == "0" && stream.eat(/x/i)) { + stream.eatWhile(/[\da-f]/i); + return ret("number", "js-atom"); + } + else if (/\d/.test(ch)) { + stream.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/); + return ret("number", "js-atom"); + } + else if (ch == "/") { + if (stream.eat("*")) { + return chain(stream, state, jsTokenComment); + } + else if (stream.eat("/")) { + stream.skipToEnd(); + return ret("comment", "js-comment"); + } + else if (state.reAllowed) { + nextUntilUnescaped(stream, "/"); + stream.eatWhile(/[gimy]/); // 'y' is "sticky" option in Mozilla + return ret("regexp", "js-string"); + } + else { + stream.eatWhile(isOperatorChar); + return ret("operator", null, stream.current()); + } + } + else if (isOperatorChar.test(ch)) { + stream.eatWhile(isOperatorChar); + return ret("operator", null, stream.current()); + } + else { + stream.eatWhile(/[\w\$_]/); + var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; + return known ? ret(known.type, known.style, word) : + ret("variable", "js-variable", word); + } + } + + function jsTokenString(quote) { + return function(stream, state) { + if (!nextUntilUnescaped(stream, quote)) + state.tokenize = jsTokenBase; + return ret("string", "js-string"); + }; + } + + function jsTokenComment(stream, state) { + var maybeEnd = false, ch; + while (ch = stream.next()) { + if (ch == "/" && maybeEnd) { + state.tokenize = jsTokenBase; + break; + } + maybeEnd = (ch == "*"); + } + return ret("comment", "js-comment"); + } + + // Parser + + var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; + + function JSLexical(indented, column, type, align, prev, info) { + this.indented = indented; + this.column = column; + this.type = type; + this.prev = prev; + this.info = info; + if (align != null) this.align = align; + } + + function inScope(state, varname) { + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return true; + } + + function parseJS(state, style, type, content, stream) { + var cc = state.cc; + // Communicate our context to the combinators. + // (Less wasteful than consing up a hundred closures on every call.) + cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; + + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = true; + + while(true) { + var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; + if (combinator(type, content)) { + while(cc.length && cc[cc.length - 1].lex) + cc.pop()(); + if (cx.marked) return cx.marked; + if (type == "variable" && inScope(state, content)) return "js-localvariable"; + return style; + } + } + } + + // Combinator utils + + var cx = {state: null, column: null, marked: null, cc: null}; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + function register(varname) { + var state = cx.state; + if (state.context) { + cx.marked = "js-variabledef"; + for (var v = state.localVars; v; v = v.next) + if (v.name == varname) return; + state.localVars = {name: varname, next: state.localVars}; + } + } + + // Combinators + + var defaultVars = {name: "this", next: {name: "arguments"}}; + function pushcontext() { + if (!cx.state.context) cx.state.localVars = defaultVars; + cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; + } + function popcontext() { + cx.state.localVars = cx.state.context.vars; + cx.state.context = cx.state.context.prev; + } + function pushlex(type, info) { + var result = function() { + var state = cx.state; + state.lexical = new JSLexical(state.indented, cx.stream.column(), type, null, state.lexical, info) + }; + result.lex = true; + return result; + } + function poplex() { + var state = cx.state; + if (state.lexical.prev) { + if (state.lexical.type == ")") + state.indented = state.lexical.indented; + state.lexical = state.lexical.prev; + } + } + poplex.lex = true; + + function expect(wanted) { + return function expecting(type) { + if (type == wanted) return cont(); + else if (wanted == ";") return pass(); + else return cont(arguments.callee); + }; + } + + function statement(type) { + if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); + if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); + if (type == "keyword b") return cont(pushlex("form"), statement, poplex); + if (type == "{") return cont(pushlex("}"), block, poplex); + if (type == ";") return cont(); + if (type == "function") return cont(functiondef); + if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), + poplex, statement, poplex); + if (type == "variable") return cont(pushlex("stat"), maybelabel); + if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), + block, poplex, poplex); + if (type == "case") return cont(expression, expect(":")); + if (type == "default") return cont(expect(":")); + if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), + statement, poplex, popcontext); + return pass(pushlex("stat"), expression, expect(";"), poplex); + } + function expression(type) { + if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); + if (type == "function") return cont(functiondef); + if (type == "keyword c") return cont(expression); + if (type == "(") return cont(pushlex(")"), expression, expect(")"), poplex, maybeoperator); + if (type == "operator") return cont(expression); + if (type == "[") return cont(pushlex("]"), commasep(expression, "]"), poplex, maybeoperator); + if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); + return cont(); + } + function maybeoperator(type, value) { + if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); + if (type == "operator") return cont(expression); + if (type == ";") return; + if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); + if (type == ".") return cont(property, maybeoperator); + if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); + } + function maybelabel(type) { + if (type == ":") return cont(poplex, statement); + return pass(maybeoperator, expect(";"), poplex); + } + function property(type) { + if (type == "variable") {cx.marked = "js-property"; return cont();} + } + function objprop(type) { + if (type == "variable") cx.marked = "js-property"; + if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); + } + function commasep(what, end) { + function proceed(type) { + if (type == ",") return cont(what, proceed); + if (type == end) return cont(); + return cont(expect(end)); + } + return function commaSeparated(type) { + if (type == end) return cont(); + else return pass(what, proceed); + }; + } + function block(type) { + if (type == "}") return cont(); + return pass(statement, block); + } + function vardef1(type, value) { + if (type == "variable"){register(value); return cont(vardef2);} + return cont(); + } + function vardef2(type, value) { + if (value == "=") return cont(expression, vardef2); + if (type == ",") return cont(vardef1); + } + function forspec1(type) { + if (type == "var") return cont(vardef1, forspec2); + if (type == ";") return pass(forspec2); + if (type == "variable") return cont(formaybein); + return pass(forspec2); + } + function formaybein(type, value) { + if (value == "in") return cont(expression); + return cont(maybeoperator, forspec2); + } + function forspec2(type, value) { + if (type == ";") return cont(forspec3); + if (value == "in") return cont(expression); + return cont(expression, expect(";"), forspec3); + } + function forspec3(type) { + if (type != ")") cont(expression); + } + function functiondef(type, value) { + if (type == "variable") {register(value); return cont(functiondef);} + if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, statement, popcontext); + } + function funarg(type, value) { + if (type == "variable") {register(value); return cont();} + } + + // Interface + + return { + startState: function(basecolumn) { + return { + tokenize: jsTokenBase, + reAllowed: true, + cc: [], + lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), + localVars: null, + context: null, + indented: 0 + }; + }, + + token: function(stream, state) { + if (stream.sol()) { + if (!state.lexical.hasOwnProperty("align")) + state.lexical.align = false; + state.indented = stream.indentation(); + } + if (stream.eatSpace()) return null; + var style = state.tokenize(stream, state); + if (type == "comment") return style; + state.reAllowed = type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/); + return parseJS(state, style, type, content, stream); + }, + + indent: function(state, textAfter) { + if (state.tokenize != jsTokenBase) return 0; + var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, + type = lexical.type, closing = firstChar == type; + if (type == "vardef") return lexical.indented + 4; + else if (type == "form" && firstChar == "{") return lexical.indented; + else if (type == "stat" || type == "form") return lexical.indented + indentUnit; + else if (lexical.info == "switch" && !closing) + return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); + else if (lexical.align) return lexical.column + (closing ? 0 : 1); + else return lexical.indented + (closing ? 0 : indentUnit); + }, + + electricChars: ":{}" + }; +}); + +CodeMirror.defineMIME("text/javascript", "javascript"); +CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/php/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/php/index.html new file mode 100644 index 0000000..020e248 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/php/index.html @@ -0,0 +1,52 @@ + + + + CodeMirror 2: PHP mode + + + + + + + + + + + + + + + +

          CodeMirror 2: PHP mode

          + +
          + + + +

          Simple HTML/PHP mode based on + the C-like mode. Depends on XML, + JavaScript, CSS, and C-like modes.

          + +

          MIME types defined: application/x-httpd-php.

          + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/php/php.js b/sources/plugins/LocalFilesEditor/codemirror/mode/php/php.js new file mode 100644 index 0000000..a23538f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/php/php.js @@ -0,0 +1,83 @@ +(function() { + function keywords(str) { + var obj = {}, words = str.split(" "); + for (var i = 0; i < words.length; ++i) obj[words[i]] = true; + return obj; + } + var phpKeywords = + keywords("abstract and array as break case catch cfunction class clone const continue declare " + + "default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends " + + "final for foreach function global goto if implements interface instanceof namespace " + + "new or private protected public static switch throw try use var while xor"); + + CodeMirror.defineMode("php", function(config, parserConfig) { + var htmlMode = CodeMirror.getMode(config, "text/html"); + var jsMode = CodeMirror.getMode(config, "text/javascript"); + var cssMode = CodeMirror.getMode(config, "text/css"); + var phpMode = CodeMirror.getMode(config, {name: "clike", keywords: phpKeywords, multiLineStrings: true, $vars: true}); + + function dispatch(stream, state) { // TODO open PHP inside text/css + if (state.curMode == htmlMode) { + var style = htmlMode.token(stream, state.curState); + if (style == "xml-processing" && /^<\?/.test(stream.current())) { + state.curMode = phpMode; + state.curState = state.php; + state.curClose = /^\?>/; + } + else if (style == "xml-tag" && stream.current() == ">" && state.curState.context) { + if (/^script$/i.test(state.curState.context.tagName)) { + state.curMode = jsMode; + state.curState = jsMode.startState(htmlMode.indent(state.curState, "")); + state.curClose = /^<\/\s*script\s*>/i; + } + else if (/^style$/i.test(state.curState.context.tagName)) { + state.curMode = cssMode; + state.curState = cssMode.startState(htmlMode.indent(state.curState, "")); + state.curClose = /^<\/\s*style\s*>/i; + } + } + return style; + } + else if (stream.match(state.curClose, false)) { + state.curMode = htmlMode; + state.curState = state.html; + state.curClose = null; + return dispatch(stream, state); + } + else return state.curMode.token(stream, state.curState); + } + + return { + startState: function() { + var html = htmlMode.startState(); + return {html: html, + php: phpMode.startState(), + curMode: htmlMode, + curState: html, + curClose: null} + }, + + copyState: function(state) { + var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), + php = state.php, phpNew = CodeMirror.copyState(phpMode, php), cur; + if (state.curState == html) cur = htmlNew; + else if (state.curState == php) cur = phpNew; + else cur = CodeMirror.copyState(state.curMode, state.curState); + return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, curClose: state.curClose}; + }, + + token: dispatch, + + indent: function(state, textAfter) { + if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || + (state.curMode == phpMode && /^\?>/.test(textAfter))) + return htmlMode.indent(state.html, textAfter); + return state.curMode.indent(state.curState, textAfter); + }, + + electricChars: "/{}:" + } + }); +})(); + +CodeMirror.defineMIME("application/x-httpd-php", "php"); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/stex/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/stex/index.html new file mode 100644 index 0000000..73b07ac --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/stex/index.html @@ -0,0 +1,96 @@ + + + + CodeMirror 2: sTeX mode + + + + + + + + +

          CodeMirror 2: sTeX mode

          +
          + + +

          MIME types defined: text/stex.

          + + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/stex/stex.css b/sources/plugins/LocalFilesEditor/codemirror/mode/stex/stex.css new file mode 100644 index 0000000..64b975e --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/stex/stex.css @@ -0,0 +1,20 @@ +span.css-at {color: #708;} +span.css-unit {color: #281;} +span.css-value {color: #708;} +span.css-identifier {color: black;} +span.css-selector {color: #11B;} +span.css-important {color: #00F;} +span.css-colorcode {color: #299;} +span.css-comment {color: #A70;} +span.css-string {color: #A22;} + +span.stex-unit { color: #281; } +span.stex-identifier { color: black; } +span.stex-slash { color: #FAA; } +span.stex-command { color: #00F; } +span.stex-comment { color: #A70; } +span.stex-import { color: #00F; } +span.stex-filepath { color: #852626; } +span.stex-module { color: #852626; } +span.stex-error { text-decoration: underline; color: red; } +span.stex-string { color: #A22; } diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/stex/stex.js b/sources/plugins/LocalFilesEditor/codemirror/mode/stex/stex.js new file mode 100644 index 0000000..10e0d6c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/stex/stex.js @@ -0,0 +1,167 @@ +/* + * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) + * Licence: MIT + */ + +CodeMirror.defineMode("stex", function(cmCfg, modeCfg) +{ + function pushCommand(state, command) { + state.cmdState.push(command); + } + + function peekCommand(state) { + if (state.cmdState.length>0) + return state.cmdState[state.cmdState.length-1]; + else + return null; + } + + function popCommand(state) { + if (state.cmdState.length>0) { + var plug = state.cmdState.pop(); + plug.closeBracket(); + } + } + + function applyMostPowerful(state) { + context = state.cmdState; + for (var i = context.length - 1; i >= 0; i--) { + var plug = context[i]; + if (plug.name=="DEFAULT") + continue; + return plug.styleIdentifier(); + } + return "stex-identifier"; + } + + function addPluginPattern(pluginName, cmdStyle, brackets, styles) { + return function () { + this.name=pluginName; + this.bracketNo = 0; + this.style=cmdStyle; + this.styles = styles; + this.brackets = brackets; + + this.styleIdentifier = function(content) { + if (this.bracketNo<=this.styles.length) + return this.styles[this.bracketNo-1]; + else + return null; + }; + this.openBracket = function(content) { + this.bracketNo++; + return "stex-bracket"; + }; + this.closeBracket = function(content) { + }; + } + } + + var plugins = new Array(); + + plugins["importmodule"] = addPluginPattern("importmodule", "stex-command", "{[", ["stex-filepath", "stex-module"]); + plugins["documentclass"] = addPluginPattern("documentclass", "stex-command", "{[", ["", "stex-unit"]); + plugins["usepackage"] = addPluginPattern("documentclass", "stex-command", "[", ["stex-unit"]); + plugins["begin"] = addPluginPattern("documentclass", "stex-command", "[", ["stex-unit"]); + plugins["end"] = addPluginPattern("documentclass", "stex-command", "[", ["stex-unit"]); + + plugins["DEFAULT"] = function () { + this.name="DEFAULT"; + this.style="stex-command"; + + this.styleIdentifier = function(content) { + }; + this.openBracket = function(content) { + }; + this.closeBracket = function(content) { + }; + }; + + function setState(state, f) { + state.f = f; + } + + function normal(source, state) { + if (source.match(/^\\[a-z]+/)) { + cmdName = source.current(); + cmdName = cmdName.substr(1, cmdName.length-1); + var plug = plugins[cmdName]; + if (typeof(plug) == 'undefined') { + plug = plugins["DEFAULT"]; + } + plug = new plug(); + pushCommand(state, plug); + setState(state, beginParams); + return plug.style; + } + + var ch = source.next(); + if (ch == "%") { + setState(state, inCComment); + return "stex-comment"; + } + else if (ch=='}' || ch==']') { + plug = peekCommand(state); + if (plug) { + plug.closeBracket(ch); + setState(state, beginParams); + } else + return "stex-error"; + return "stex-bracket"; + } else if (ch=='{' || ch=='[') { + plug = plugins["DEFAULT"]; + plug = new plug(); + pushCommand(state, plug); + return "stex-bracket"; + } + else if (/\d/.test(ch)) { + source.eatWhile(/[\w.%]/); + return "stex-unit"; + } + else { + source.eatWhile(/[\w-_]/); + return applyMostPowerful(state); + } + } + + function inCComment(source, state) { + source.skipToEnd(); + setState(state, normal); + return "css-comment"; + } + + function beginParams(source, state) { + var ch = source.peek(); + if (ch == '{' || ch == '[') { + lastPlug = peekCommand(state); + style = lastPlug.openBracket(ch); + source.eat(ch); + setState(state, normal); + return "stex-bracket"; + } + if (/[ \t\r]/.test(ch)) { + source.eat(ch); + return null; + } + setState(state, normal); + lastPlug = peekCommand(state); + if (lastPlug) { + popCommand(state); + } + return normal(source, state); + } + + return { + startState: function() { return { f:normal, cmdState:[] }; }, + copyState: function(s) { return { f: s.f, cmdState: s.cmdState.slice(0, s.cmdState.length) }; }, + + token: function(stream, state) { + var t = state.f(stream, state); + var w = stream.current(); + return t; + } + }; +}); + + +CodeMirror.defineMIME("text/x-stex", "stex"); diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/xml/index.html b/sources/plugins/LocalFilesEditor/codemirror/mode/xml/index.html new file mode 100644 index 0000000..5ad7c63 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/xml/index.html @@ -0,0 +1,42 @@ + + + + CodeMirror 2: XML mode + + + + + + + + +

          CodeMirror 2: XML mode

          +
          + +

          The XML mode supports two configuration parameters:

          +
          +
          htmlMode (boolean)
          +
          This switches the mode to parse HTML instead of XML. This + means attributes do not have to be quoted, and some elements + (such as br) do not require a closing tag.
          +
          alignCDATA (boolean)
          +
          Setting this to true will force the opening tag of CDATA + blocks to not be indented.
          +
          + +

          MIME types defined: application/xml, text/html.

          + + diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/xml/xml.css b/sources/plugins/LocalFilesEditor/codemirror/mode/xml/xml.css new file mode 100644 index 0000000..86845fa --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/xml/xml.css @@ -0,0 +1,7 @@ +span.xml-tag {color: #a0b;} +span.xml-attribute {color: #281;} +span.xml-attname {color: #00f;} +span.xml-comment {color: #a70;} +span.xml-cdata {color: #48a;} +span.xml-processing {color: #999;} +span.xml-entity {color: #a22;} diff --git a/sources/plugins/LocalFilesEditor/codemirror/mode/xml/xml.js b/sources/plugins/LocalFilesEditor/codemirror/mode/xml/xml.js new file mode 100644 index 0000000..21da47b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/codemirror/mode/xml/xml.js @@ -0,0 +1,206 @@ +CodeMirror.defineMode("xml", function(config, parserConfig) { + var indentUnit = config.indentUnit; + var Kludges = parserConfig.htmlMode ? { + autoSelfClosers: {"br": true, "img": true, "hr": true, "link": true, "input": true, + "meta": true, "col": true, "frame": true, "base": true, "area": true}, + doNotIndent: {"pre": true, "!cdata": true}, + allowUnquoted: true + } : {autoSelfClosers: {}, doNotIndent: {"!cdata": true}, allowUnquoted: false}; + var alignCDATA = parserConfig.alignCDATA; + + // Return variables for tokenizers + var tagName, type; + + function inText(stream, state) { + function chain(parser) { + state.tokenize = parser; + return parser(stream, state); + } + + var ch = stream.next(); + if (ch == "<") { + if (stream.eat("!")) { + if (stream.eat("[")) { + if (stream.match("[CDATA[")) return chain(inBlock("xml-cdata", "]]>")); + else return null; + } + else if (stream.match("--")) return chain(inBlock("xml-comment", "-->")); + else if (stream.match("DOCTYPE")) { + stream.eatWhile(/[\w\._\-]/); + return chain(inBlock("xml-doctype", ">")); + } + else return null; + } + else if (stream.eat("?")) { + stream.eatWhile(/[\w\._\-]/); + state.tokenize = inBlock("xml-processing", "?>"); + return "xml-processing"; + } + else { + type = stream.eat("/") ? "closeTag" : "openTag"; + stream.eatSpace(); + tagName = ""; + var c; + while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; + state.tokenize = inTag; + return "xml-tag"; + } + } + else if (ch == "&") { + stream.eatWhile(/[^;]/); + stream.eat(";"); + return "xml-entity"; + } + else { + stream.eatWhile(/[^&<]/); + return null; + } + } + + function inTag(stream, state) { + var ch = stream.next(); + if (ch == ">" || (ch == "/" && stream.eat(">"))) { + state.tokenize = inText; + type = ch == ">" ? "endTag" : "selfcloseTag"; + return "xml-tag"; + } + else if (ch == "=") { + type = "equals"; + return null; + } + else if (/[\'\"]/.test(ch)) { + state.tokenize = inAttribute(ch); + return state.tokenize(stream, state); + } + else { + stream.eatWhile(/[^\s\u00a0=<>\"\'\/?]/); + return "xml-word"; + } + } + + function inAttribute(quote) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.next() == quote) { + state.tokenize = inTag; + break; + } + } + return "xml-attribute"; + }; + } + + function inBlock(style, terminator) { + return function(stream, state) { + while (!stream.eol()) { + if (stream.match(terminator)) { + state.tokenize = inText; + break; + } + stream.next(); + } + return style; + }; + } + + var curState, setStyle; + function pass() { + for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); + } + function cont() { + pass.apply(null, arguments); + return true; + } + + function pushContext(tagName, startOfLine) { + var noIndent = Kludges.doNotIndent.hasOwnProperty(tagName) || (curState.context && curState.context.noIndent); + curState.context = { + prev: curState.context, + tagName: tagName, + indent: curState.indented, + startOfLine: startOfLine, + noIndent: noIndent + }; + } + function popContext() { + if (curState.context) curState.context = curState.context.prev; + } + + function element(type) { + if (type == "openTag") {curState.tagName = tagName; return cont(attributes, endtag(curState.startOfLine));} + else if (type == "closeTag") {popContext(); return cont(endclosetag);} + else if (type == "xml-cdata") { + if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); + if (curState.tokenize == inText) popContext(); + return cont(); + } + else return cont(); + } + function endtag(startOfLine) { + return function(type) { + if (type == "selfcloseTag" || + (type == "endTag" && Kludges.autoSelfClosers.hasOwnProperty(curState.tagName.toLowerCase()))) + return cont(); + if (type == "endTag") {pushContext(curState.tagName, startOfLine); return cont();} + return cont(); + }; + } + function endclosetag(type) { + if (type == "endTag") return cont(); + return pass(); + } + + function attributes(type) { + if (type == "xml-word") {setStyle = "xml-attname"; return cont(attributes);} + if (type == "equals") return cont(attvalue, attributes); + return pass(); + } + function attvalue(type) { + if (type == "xml-word" && Kludges.allowUnquoted) {setStyle = "xml-attribute"; return cont();} + if (type == "xml-attribute") return cont(); + return pass(); + } + + return { + startState: function() { + return {tokenize: inText, cc: [], indented: 0, startOfLine: true, tagName: null, context: null}; + }, + + token: function(stream, state) { + if (stream.sol()) { + state.startOfLine = true; + state.indented = stream.indentation(); + } + if (stream.eatSpace()) return null; + + setStyle = type = tagName = null; + var style = state.tokenize(stream, state); + if ((style || type) && style != "xml-comment") { + curState = state; + while (true) { + var comb = state.cc.pop() || element; + if (comb(type || style)) break; + } + } + state.startOfLine = false; + return setStyle || style; + }, + + indent: function(state, textAfter) { + var context = state.context; + if (context && context.noIndent) return 0; + if (alignCDATA && /fs_themes))) + { + $page['theme'] = get_default_theme(); + } + + $edited_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/'.$page['theme'].'-rules.css'; +} + +$template->assign('theme', $page['theme']); + +if (file_exists($edited_file)) +{ + $content_file = file_get_contents($edited_file); +} +else +{ + $content_file = "/* " . l10n('locfiledit_newfile') . " */\n\n"; +} + +$selected = 0; +$value = '~common~'; +$file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/rules.css'; + +$options[$value] = (file_exists($file) ? '✔' : '✘').' local / css / rules.css'; +if ($page['theme'] == $value) +{ + $selected = $value; +} + +// themes are displayed in the same order as on screen +// [Administration > Configuration > Themes] + +$themes->sort_fs_themes(); +$default_theme = get_default_theme(); +$db_themes = $themes->get_db_themes(); + +$db_theme_ids = array(); +foreach ($db_themes as $db_theme) +{ + $db_theme_ids[] = $db_theme['id']; +} + +$active_themes = array(); +$inactive_themes = array(); + +foreach ($themes->fs_themes as $theme_id => $fs_theme) +{ + if ($theme_id == 'default') + { + continue; + } + + if (in_array($theme_id, $db_theme_ids)) + { + if ($theme_id == $default_theme) + { + array_unshift($active_themes, $fs_theme); + } + else + { + $active_themes[] = $fs_theme; + } + } + else + { + $inactive_themes[] = $fs_theme; + } +} + +$active_theme_options = array(); +foreach ($active_themes as $theme) +{ + $file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/'.$theme['id'].'-rules.css'; + + $label = (file_exists($file) ? '✔' : '✘').' '.$theme['name']; + + if ($default_theme == $theme['id']) + { + $label.= ' ('.l10n('default').')'; + } + + $active_theme_options[$theme['id']] = $label; + + if ($theme['id'] == $page['theme']) + { + $selected = $theme['id']; + } +} + +if (count($active_theme_options) > 0) +{ + $options[l10n('Active Themes')] = $active_theme_options; +} + +$inactive_theme_options = array(); +foreach ($inactive_themes as $theme) +{ + $file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR . 'css/'.$theme['id'].'-rules.css'; + + $inactive_theme_options[$theme['id']] = (file_exists($file) ? '✔' : '✘').' '.$theme['name']; + + if ($theme['id'] == $page['theme']) + { + $selected = $theme['id']; + } +} + +if (count($inactive_theme_options) > 0) +{ + $options[l10n('Inactive Themes')] = $inactive_theme_options; +} + +$template->assign( + 'css_lang_tpl', + array( + 'SELECT_NAME' => 'theme_select', + 'OPTIONS' => $options, + 'SELECTED' => $selected + ) +); + +$codemirror_mode = 'text/css'; +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/include/functions.inc.php b/sources/plugins/LocalFilesEditor/include/functions.inc.php new file mode 100644 index 0000000..4690622 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/include/functions.inc.php @@ -0,0 +1,114 @@ +'), '', $code); + if (function_exists('token_get_all')) + { + $b = 0; + foreach (token_get_all($code) as $token) + { + if ('{' == $token) ++$b; + else if ('}' == $token) --$b; + } + if ($b) return false; + else + { + ob_start(); + $eval = eval('if(0){' . $code . '}'); + ob_end_clean(); + if ($eval === false) return false; + } + } + return ''; +} + +/** + * returns true or false if $str is bool + * returns $str if $str is integer + * else "$str" + * + * @param string + */ +function editarea_quote($value) +{ + switch (gettype($value)) + { + case "boolean": + return $value ? 'true' : 'false'; + case "integer": + return $value; + default: + return '"'.$value.'"'; + } +} + +/** + * returns bak file for restore + * @param string + */ +function get_bak_file($file) +{ + if (get_extension($file) == 'php') + { + return substr_replace($file, '.bak', strrpos($file , '.'), 0); + } + else + { + return $file . '.bak'; + } +} + +/** + * returns dirs and subdirs + * retun array + * @param string + */ +function get_rec_dirs($path='') +{ + $options = array(); + if (is_dir($path)) + { + $fh = opendir($path); + while ($file = readdir($fh)) + { + $pathfile = $path . '/' . $file; + if ($file != '.' and $file != '..' and $file != '.svn' and is_dir($pathfile)) + { + $options[$pathfile] = str_replace(array('./', '/'), array('', ' / '), $pathfile); + $options = array_merge($options, get_rec_dirs($pathfile)); + } + } + closedir($fh); + } + return $options; +} + +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/include/lang.inc.php b/sources/plugins/LocalFilesEditor/include/lang.inc.php new file mode 100644 index 0000000..e32a26c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/include/lang.inc.php @@ -0,0 +1,69 @@ +assign('language', $page['language']); + +$edited_file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'language/'.$page['language'].'.lang.php';; + +if (file_exists($edited_file)) +{ + $content_file = file_get_contents($edited_file); +} +else +{ + $content_file = ""; +} + +$selected = 0; +foreach (get_languages() as $language_code => $language_name) +{ + $file = PHPWG_ROOT_PATH.PWG_LOCAL_DIR.'language/'.$language_code.'.lang.php'; + + $options[$language_code] = (file_exists($file) ? '✔' : '✘').' '.$language_name; + + if ($page['language'] == $language_code) + { + $selected = $language_code; + $template->assign('show_default', array( + array( + 'URL' => LOCALEDIT_PATH.'show_default.php?file=language/'.$language_code.'/common.lang.php', + 'FILE' => 'common.lang.php' + ), + array( + 'URL' => LOCALEDIT_PATH.'show_default.php?file=language/'.$language_code.'/admin.lang.php', + 'FILE' => 'admin.lang.php' + ) + ) + ); + } +} + +$template->assign( + 'css_lang_tpl', + array( + 'SELECT_NAME' => 'language_select', + 'OPTIONS' => $options, + 'SELECTED' => $selected + ) + ); + +$codemirror_mode = 'application/x-httpd-php'; + +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/include/localconf.inc.php b/sources/plugins/LocalFilesEditor/include/localconf.inc.php new file mode 100644 index 0000000..b801db2 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/include/localconf.inc.php @@ -0,0 +1,26 @@ +"; +} + +$template->assign('show_default', array( + array( + 'URL' => LOCALEDIT_PATH.'show_default.php?file=include/config_default.inc.php', + 'FILE' => 'config_default.inc.php' + ) + ) +); + +$codemirror_mode = 'application/x-httpd-php'; + +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/include/plug.inc.php b/sources/plugins/LocalFilesEditor/include/plug.inc.php new file mode 100644 index 0000000..55c4b2d --- /dev/null +++ b/sources/plugins/LocalFilesEditor/include/plug.inc.php @@ -0,0 +1,25 @@ +"; +} + +$codemirror_mode = 'application/x-httpd-php'; + +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/include/tpl.inc.php b/sources/plugins/LocalFilesEditor/include/tpl.inc.php new file mode 100644 index 0000000..c1079a8 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/include/tpl.inc.php @@ -0,0 +1,157 @@ +assign('template', $_POST['template']); + + $edited_file = './template-extension/'.$_POST['template']; +} + +$content_file = ''; +if (file_exists($edited_file)) +{ + $content_file = file_get_contents($edited_file); +} + +$newfile_page = isset($_GET['newfile']); + +// Edit new tpl file +if (isset($_POST['create_tpl'])) +{ + $filename = $_POST['tpl_name']; + if (empty($filename)) + { + $page['errors'][] = l10n('locfiledit_empty_filename'); + } + if (get_extension($filename) != 'tpl') + { + $filename .= '.tpl'; + } + if (!preg_match('/^[a-zA-Z0-9-_.]+$/', $filename)) + { + $page['errors'][] = l10n('locfiledit_filename_error'); + } + if (is_numeric($_POST['tpl_model']) and $_POST['tpl_model'] != '0') + { + $page['errors'][] = l10n('locfiledit_model_error'); + } + if (file_exists($_POST['tpl_parent'] . '/' . $filename)) + { + $page['errors'][] = l10n('locfiledit_file_already_exists'); + } + if (!empty($page['errors'])) + { + $newfile_page = true; + } + else + { + $template->assign('template', $filename); + $edited_file = $_POST['tpl_parent'] . '/' . $filename; + $content_file = ($_POST['tpl_model'] == '0') ? '' : file_get_contents($_POST['tpl_model']); + } +} + +if ($newfile_page) +{ + $filename = isset($_POST['tpl_name']) ? $_POST['tpl_name'] : ''; + $selected['model'] = isset($_POST['tpl_model']) ? $_POST['tpl_model'] : '0'; + $selected['parent'] = isset($_POST['tpl_parent']) ? $_POST['tpl_parent'] : PHPWG_ROOT_PATH . 'template-extension'; + + // Parent directories list + $options['parent'] = array(PHPWG_ROOT_PATH . 'template-extension' => 'template-extension'); + $options['parent'] = array_merge($options['parent'], get_rec_dirs(PHPWG_ROOT_PATH . 'template-extension')); + + $options['model'][] = l10n('locfiledit_empty_page'); + $options['model'][] = '----------------------'; + $i = 0; + foreach (get_extents() as $pwg_template) + { + $value = PHPWG_ROOT_PATH . 'template-extension/' . $pwg_template; + $options['model'][$value] = 'template-extension / ' . str_replace('/', ' / ', $pwg_template); + $i++; + } + foreach (get_dirs($conf['themes_dir']) as $theme_id) + { + if ($i) + { + $options['model'][] = '----------------------'; + $i = 0; + } + $dir = $conf['themes_dir'] . '/' . $theme_id . '/template/'; + if (is_dir($dir) and $content = opendir($dir)) + { + while ($node = readdir($content)) + { + if (is_file($dir.$node) and get_extension($node) == 'tpl') + { + $value = $dir . $node; + $options['model'][$value] = $theme_id . ' / ' . $node; + $i++; + } + } + } + } + if (end($options['model']) == '----------------------') + { + array_pop($options['model']); + } + // Assign variables to template + $template->assign('create_tpl', array( + 'NEW_FILE_NAME' => $filename, + 'MODEL_OPTIONS' => $options['model'], + 'MODEL_SELECTED' => $selected['model'], + 'PARENT_OPTIONS' => $options['parent'], + 'PARENT_SELECTED' => $selected['parent'] + ) + ); +} +else +{ + // List existing template extensions + $selected = 0; + $options[] = l10n('locfiledit_choose_file'); + $options[] = '----------------------'; + foreach (get_extents() as $pwg_template) + { + $value = $pwg_template; + $options[$value] = str_replace('/', ' / ', $pwg_template); + if ($edited_file == $value) $selected = $value; + } + if ($selected == 0 and !empty($edited_file)) + { + $options[$edited_file] = str_replace(array('./template-extension/', '/'), array('', ' / '), $edited_file); + $selected = $edited_file; + } + $template->assign( + 'css_lang_tpl', + array( + 'SELECT_NAME' => 'file_to_edit', + 'OPTIONS' => $options, + 'SELECTED' => $selected, + 'NEW_FILE_URL' => $my_base_url.'-tpl&newfile', + 'NEW_FILE_CLASS' => empty($edited_file) ? '' : 'top_right' + ) + ); +} + +$codemirror_mode = 'text/html'; + +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/index.php b/sources/plugins/LocalFilesEditor/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/af_ZA/description.txt b/sources/plugins/LocalFilesEditor/language/af_ZA/description.txt new file mode 100755 index 0000000..7dc143a --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/af_ZA/description.txt @@ -0,0 +1 @@ +Verander plaaslike lêers vanaf die beheerpaneel. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/af_ZA/index.php b/sources/plugins/LocalFilesEditor/language/af_ZA/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/af_ZA/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/af_ZA/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/af_ZA/plugin.lang.php new file mode 100755 index 0000000..d423b0f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/af_ZA/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ar_SA/description.txt b/sources/plugins/LocalFilesEditor/language/ar_SA/description.txt new file mode 100644 index 0000000..6867b16 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ar_SA/description.txt @@ -0,0 +1 @@ +تحرير الملفات داخل لوحة التحكم \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ar_SA/index.php b/sources/plugins/LocalFilesEditor/language/ar_SA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ar_SA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/ar_SA/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ar_SA/plugin.lang.php new file mode 100644 index 0000000..3922858 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ar_SA/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/bg_BG/description.txt b/sources/plugins/LocalFilesEditor/language/bg_BG/description.txt new file mode 100755 index 0000000..09678d7 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/bg_BG/description.txt @@ -0,0 +1,2 @@ +LocalFilesEditor - Редактор на локални файлове +Български [BG] \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/bg_BG/index.php b/sources/plugins/LocalFilesEditor/language/bg_BG/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/bg_BG/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/bg_BG/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/bg_BG/plugin.lang.php new file mode 100755 index 0000000..a284e0a --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/bg_BG/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/br_FR/description.txt b/sources/plugins/LocalFilesEditor/language/br_FR/description.txt new file mode 100755 index 0000000..69462e8 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/br_FR/description.txt @@ -0,0 +1 @@ +Evit aozañ restroù lec'hel eus skramm ar mererezh. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/br_FR/index.php b/sources/plugins/LocalFilesEditor/language/br_FR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/br_FR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/br_FR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/br_FR/plugin.lang.php new file mode 100755 index 0000000..6aaece2 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/br_FR/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ca_ES/description.txt b/sources/plugins/LocalFilesEditor/language/ca_ES/description.txt new file mode 100755 index 0000000..cf0db50 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ca_ES/description.txt @@ -0,0 +1 @@ +Edita els teus arxius locals des del panell d'administració. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ca_ES/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ca_ES/plugin.lang.php new file mode 100755 index 0000000..59009ec --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ca_ES/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/cs_CZ/description.txt b/sources/plugins/LocalFilesEditor/language/cs_CZ/description.txt new file mode 100644 index 0000000..59178d0 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/cs_CZ/description.txt @@ -0,0 +1 @@ +Editujte lokální soubory z administračního panelu. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/cs_CZ/index.php b/sources/plugins/LocalFilesEditor/language/cs_CZ/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/cs_CZ/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/cs_CZ/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/cs_CZ/plugin.lang.php new file mode 100644 index 0000000..9ca473f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/cs_CZ/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/da_DK/description.txt b/sources/plugins/LocalFilesEditor/language/da_DK/description.txt new file mode 100755 index 0000000..f5ae706 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/da_DK/description.txt @@ -0,0 +1 @@ +Rediger lokale filer fra administrationspanel. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/da_DK/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/da_DK/plugin.lang.php new file mode 100755 index 0000000..198fd1c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/da_DK/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/de_DE/description.txt b/sources/plugins/LocalFilesEditor/language/de_DE/description.txt new file mode 100644 index 0000000..9872f8c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/de_DE/description.txt @@ -0,0 +1 @@ +Administratoren können lokale Dateien direkt in Piwigo bearbeiten. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/de_DE/index.php b/sources/plugins/LocalFilesEditor/language/de_DE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/de_DE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/de_DE/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/de_DE/plugin.lang.php new file mode 100644 index 0000000..97f9383 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/de_DE/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/el_GR/description.txt b/sources/plugins/LocalFilesEditor/language/el_GR/description.txt new file mode 100755 index 0000000..30b063d --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/el_GR/description.txt @@ -0,0 +1 @@ +Επεξεργασ?α τοπικ?ν αρχε?ων απ? τον π?νακα διαχε?ρισης. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/el_GR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/el_GR/plugin.lang.php new file mode 100755 index 0000000..82b73aa --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/el_GR/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/en_UK/description.txt b/sources/plugins/LocalFilesEditor/language/en_UK/description.txt new file mode 100644 index 0000000..685dd16 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/en_UK/description.txt @@ -0,0 +1 @@ +Edit local files from administration panel. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/en_UK/index.php b/sources/plugins/LocalFilesEditor/language/en_UK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/en_UK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php new file mode 100644 index 0000000..165b22b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/en_UK/plugin.lang.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/eo_EO/description.txt b/sources/plugins/LocalFilesEditor/language/eo_EO/description.txt new file mode 100755 index 0000000..dbc9ff9 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/eo_EO/description.txt @@ -0,0 +1 @@ +Redaktu lokajn dosierojn el la administra panelo. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/eo_EO/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/eo_EO/plugin.lang.php new file mode 100755 index 0000000..0274168 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/eo_EO/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/es_ES/description.txt b/sources/plugins/LocalFilesEditor/language/es_ES/description.txt new file mode 100644 index 0000000..f0c6b69 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/es_ES/description.txt @@ -0,0 +1 @@ +Edita tus archivos locales desde el panel de administración. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/es_ES/index.php b/sources/plugins/LocalFilesEditor/language/es_ES/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/es_ES/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php new file mode 100644 index 0000000..356e0f3 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/es_ES/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/et_EE/description.txt b/sources/plugins/LocalFilesEditor/language/et_EE/description.txt new file mode 100755 index 0000000..e2f49d9 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/et_EE/description.txt @@ -0,0 +1 @@ +Võimalda kohalike failide redigeerimist. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/et_EE/index.php b/sources/plugins/LocalFilesEditor/language/et_EE/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/et_EE/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/et_EE/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/et_EE/plugin.lang.php new file mode 100755 index 0000000..edfd7a8 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/et_EE/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fa_IR/description.txt b/sources/plugins/LocalFilesEditor/language/fa_IR/description.txt new file mode 100755 index 0000000..ab8e9cf --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fa_IR/description.txt @@ -0,0 +1 @@ +ویرایش فایل های داخل هاست بوسیله پنل مدیریت گالری. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fa_IR/index.php b/sources/plugins/LocalFilesEditor/language/fa_IR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fa_IR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/fa_IR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/fa_IR/plugin.lang.php new file mode 100755 index 0000000..e1618d7 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fa_IR/plugin.lang.php @@ -0,0 +1,54 @@ + +بدون ذخیره ی فایل بازیابی آن ممکن نخواهد بود.'; +$lang['locfiledit_restore'] = 'بازیابی فایل پشتیبان'; +$lang['locfiledit_save_bak'] = 'فایل پشتیبان پس از نخستین ذخیره ایجاد خواهد شد.'; +$lang['locfiledit_save_config'] = 'فایل با موفقیت ویرایش شد.'; +$lang['locfiledit_save_file'] = 'ذخیره فایل'; +$lang['locfiledit_saved_bak'] = 'فایل پشتیبان ایجاد شد (%s)'; +$lang['locfiledit_show_default'] = 'نمایش فایل مرجع'; +$lang['locfiledit_syntax_error'] = 'خطای دستوری (Syntax)! امکان ذخیره ی فایل وجود ندارد.'; +$lang['locfiledit_webmaster_only'] = 'فقط مدیرکل می تواند یک فایل محلی را ایجاد یا ویرایش کند.'; +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fi_FI/description.txt b/sources/plugins/LocalFilesEditor/language/fi_FI/description.txt new file mode 100755 index 0000000..7e6335e --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fi_FI/description.txt @@ -0,0 +1 @@ +Muokkaa paikallisia tiedostoja ylläpitopaneelista. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fi_FI/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/fi_FI/plugin.lang.php new file mode 100755 index 0000000..3aa3a28 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fi_FI/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fr_CA/description.txt b/sources/plugins/LocalFilesEditor/language/fr_CA/description.txt new file mode 100644 index 0000000..c89b333 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fr_CA/description.txt @@ -0,0 +1 @@ +Éditez vos fichiers locaux à partir du panneau d'administration. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fr_CA/index.php b/sources/plugins/LocalFilesEditor/language/fr_CA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fr_CA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/fr_CA/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/fr_CA/plugin.lang.php new file mode 100644 index 0000000..8caf06c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fr_CA/plugin.lang.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fr_FR/description.txt b/sources/plugins/LocalFilesEditor/language/fr_FR/description.txt new file mode 100644 index 0000000..e025da3 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fr_FR/description.txt @@ -0,0 +1 @@ +Editez vos fichiers locaux à partir du panneau d'administration. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/fr_FR/index.php b/sources/plugins/LocalFilesEditor/language/fr_FR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fr_FR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php new file mode 100644 index 0000000..1c5931c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/fr_FR/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/gl_ES/description.txt b/sources/plugins/LocalFilesEditor/language/gl_ES/description.txt new file mode 100755 index 0000000..943c381 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/gl_ES/description.txt @@ -0,0 +1 @@ +Modifica ficheiros locais desde o panel de administración. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/gl_ES/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/gl_ES/plugin.lang.php new file mode 100755 index 0000000..0653ff5 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/gl_ES/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/he_IL/description.txt b/sources/plugins/LocalFilesEditor/language/he_IL/description.txt new file mode 100644 index 0000000..65d420c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/he_IL/description.txt @@ -0,0 +1 @@ +ערוך קבצים מקומיים מהפאנל ניהול. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/he_IL/index.php b/sources/plugins/LocalFilesEditor/language/he_IL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/he_IL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/he_IL/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/he_IL/plugin.lang.php new file mode 100644 index 0000000..6ef6b57 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/he_IL/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/hr_HR/description.txt b/sources/plugins/LocalFilesEditor/language/hr_HR/description.txt new file mode 100644 index 0000000..d5b010d --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/hr_HR/description.txt @@ -0,0 +1 @@ +Uredivanje lokalnih datoteka iz panela za administraciju. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/hr_HR/index.php b/sources/plugins/LocalFilesEditor/language/hr_HR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/hr_HR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/hr_HR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/hr_HR/plugin.lang.php new file mode 100644 index 0000000..d66562a --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/hr_HR/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/hu_HU/description.txt b/sources/plugins/LocalFilesEditor/language/hu_HU/description.txt new file mode 100644 index 0000000..d9a9af9 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/hu_HU/description.txt @@ -0,0 +1 @@ +Helyi fájlok szerkesztése az adminisztrációs felületen. diff --git a/sources/plugins/LocalFilesEditor/language/hu_HU/index.php b/sources/plugins/LocalFilesEditor/language/hu_HU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/hu_HU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/hu_HU/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/hu_HU/plugin.lang.php new file mode 100644 index 0000000..e41269f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/hu_HU/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/index.php b/sources/plugins/LocalFilesEditor/language/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/it_IT/description.txt b/sources/plugins/LocalFilesEditor/language/it_IT/description.txt new file mode 100644 index 0000000..5921aaf --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/it_IT/description.txt @@ -0,0 +1 @@ +Modificare i file locali dal pannello di amministrazione. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/it_IT/index.php b/sources/plugins/LocalFilesEditor/language/it_IT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/it_IT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/it_IT/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/it_IT/plugin.lang.php new file mode 100644 index 0000000..5e228b9 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/it_IT/plugin.lang.php @@ -0,0 +1,53 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/ja_JP/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ja_JP/plugin.lang.php new file mode 100644 index 0000000..a160877 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ja_JP/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ka_GE/description.txt b/sources/plugins/LocalFilesEditor/language/ka_GE/description.txt new file mode 100644 index 0000000..3dbf09e --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ka_GE/description.txt @@ -0,0 +1 @@ +ლოკალური ფაილების შეცვლა ადმინისტრაციული პანელიდან. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ka_GE/index.php b/sources/plugins/LocalFilesEditor/language/ka_GE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ka_GE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/ka_GE/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ka_GE/plugin.lang.php new file mode 100644 index 0000000..8de794b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ka_GE/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/kn_IN/description.txt b/sources/plugins/LocalFilesEditor/language/kn_IN/description.txt new file mode 100755 index 0000000..3d99176 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/kn_IN/description.txt @@ -0,0 +1 @@ +ಸ್ಥಳೀಯ ಕಡತಗಳನ್ನು ನಿರ್ವಹಣಾ ಪ್ಯಾನೆಲ್ ನಿಂದ ಸಂಪಾದಿಸಿ. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/kn_IN/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/kn_IN/plugin.lang.php new file mode 100755 index 0000000..1c26ccb --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/kn_IN/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/lt_LT/description.txt b/sources/plugins/LocalFilesEditor/language/lt_LT/description.txt new file mode 100755 index 0000000..f6e626f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/lt_LT/description.txt @@ -0,0 +1 @@ +Redaguoti vietinius failus iš administracijos puslapio. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/lt_LT/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/lt_LT/plugin.lang.php new file mode 100755 index 0000000..9a84025 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/lt_LT/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/lv_LV/description.txt b/sources/plugins/LocalFilesEditor/language/lv_LV/description.txt new file mode 100644 index 0000000..5ad412b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/lv_LV/description.txt @@ -0,0 +1 @@ +Rediget lokalos failus no administratora panela. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/lv_LV/index.php b/sources/plugins/LocalFilesEditor/language/lv_LV/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/lv_LV/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/lv_LV/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/lv_LV/plugin.lang.php new file mode 100644 index 0000000..56f9aff --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/lv_LV/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/mn_MN/description.txt b/sources/plugins/LocalFilesEditor/language/mn_MN/description.txt new file mode 100755 index 0000000..3e38763 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/mn_MN/description.txt @@ -0,0 +1 @@ +Удирдлагын талбараас тохиргооны файлуудыг засах. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/mn_MN/index.php b/sources/plugins/LocalFilesEditor/language/mn_MN/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/mn_MN/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/mn_MN/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/mn_MN/plugin.lang.php new file mode 100755 index 0000000..493e84b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/mn_MN/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/nb_NO/description.txt b/sources/plugins/LocalFilesEditor/language/nb_NO/description.txt new file mode 100644 index 0000000..80e3b9a --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nb_NO/description.txt @@ -0,0 +1 @@ +Rediger lokale filer fra administrasjons panelet. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/nb_NO/index.php b/sources/plugins/LocalFilesEditor/language/nb_NO/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nb_NO/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/nb_NO/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/nb_NO/plugin.lang.php new file mode 100644 index 0000000..1d34947 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nb_NO/plugin.lang.php @@ -0,0 +1,51 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/nl_NL/description.txt b/sources/plugins/LocalFilesEditor/language/nl_NL/description.txt new file mode 100644 index 0000000..dccc22a --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nl_NL/description.txt @@ -0,0 +1 @@ +Wijzig lokale bestanden vanaf het administratie-scherm. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/nl_NL/index.php b/sources/plugins/LocalFilesEditor/language/nl_NL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nl_NL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/nl_NL/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/nl_NL/plugin.lang.php new file mode 100644 index 0000000..be25fed --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nl_NL/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/nn_NO/description.txt b/sources/plugins/LocalFilesEditor/language/nn_NO/description.txt new file mode 100755 index 0000000..f09a8d7 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nn_NO/description.txt @@ -0,0 +1 @@ +Endre lokale filer frå administrasjonspanelet. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/nn_NO/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/nn_NO/plugin.lang.php new file mode 100755 index 0000000..7f0cb5c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/nn_NO/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/pl_PL/description.txt b/sources/plugins/LocalFilesEditor/language/pl_PL/description.txt new file mode 100644 index 0000000..325c351 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pl_PL/description.txt @@ -0,0 +1 @@ +Edycja plików lokalnych z panelu administratora \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/pl_PL/index.php b/sources/plugins/LocalFilesEditor/language/pl_PL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pl_PL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/pl_PL/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/pl_PL/plugin.lang.php new file mode 100644 index 0000000..52afb42 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pl_PL/plugin.lang.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/pt_BR/description.txt b/sources/plugins/LocalFilesEditor/language/pt_BR/description.txt new file mode 100755 index 0000000..4de2255 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pt_BR/description.txt @@ -0,0 +1 @@ +Edite arquivos locais do painel de administração. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/pt_BR/index.php b/sources/plugins/LocalFilesEditor/language/pt_BR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pt_BR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/pt_BR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/pt_BR/plugin.lang.php new file mode 100755 index 0000000..3e78271 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pt_BR/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/pt_PT/description.txt b/sources/plugins/LocalFilesEditor/language/pt_PT/description.txt new file mode 100644 index 0000000..cce485c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pt_PT/description.txt @@ -0,0 +1 @@ +Editar ficheiros locais a partir do Painel Administrativo de Piwigo. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/pt_PT/index.php b/sources/plugins/LocalFilesEditor/language/pt_PT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pt_PT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/pt_PT/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/pt_PT/plugin.lang.php new file mode 100644 index 0000000..4de2276 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/pt_PT/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ro_RO/description.txt b/sources/plugins/LocalFilesEditor/language/ro_RO/description.txt new file mode 100755 index 0000000..a35a896 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ro_RO/description.txt @@ -0,0 +1 @@ +Modifică fișierele locale din panoul de administrare. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ro_RO/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ro_RO/plugin.lang.php new file mode 100755 index 0000000..e9fb6ad --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ro_RO/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ru_RU/description.txt b/sources/plugins/LocalFilesEditor/language/ru_RU/description.txt new file mode 100644 index 0000000..cb03177 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ru_RU/description.txt @@ -0,0 +1 @@ +Позволяет редактировать локальные файлы из панели администрирования. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ru_RU/index.php b/sources/plugins/LocalFilesEditor/language/ru_RU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ru_RU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/ru_RU/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ru_RU/plugin.lang.php new file mode 100644 index 0000000..942bd6b --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ru_RU/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sh_RS/description.txt b/sources/plugins/LocalFilesEditor/language/sh_RS/description.txt new file mode 100755 index 0000000..676daaa --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sh_RS/description.txt @@ -0,0 +1 @@ +Uredite lokalne fajlove iz administratorskog panela. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sh_RS/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/sh_RS/plugin.lang.php new file mode 100755 index 0000000..23925ff --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sh_RS/plugin.lang.php @@ -0,0 +1,52 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sk_SK/description.txt b/sources/plugins/LocalFilesEditor/language/sk_SK/description.txt new file mode 100644 index 0000000..4cad4ae --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sk_SK/description.txt @@ -0,0 +1 @@ +Editácia lokálnych súborov z panelu administrátora. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sk_SK/index.php b/sources/plugins/LocalFilesEditor/language/sk_SK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sk_SK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/sk_SK/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/sk_SK/plugin.lang.php new file mode 100644 index 0000000..9b9852c --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sk_SK/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sl_SI/description.txt b/sources/plugins/LocalFilesEditor/language/sl_SI/description.txt new file mode 100755 index 0000000..5202d65 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sl_SI/description.txt @@ -0,0 +1 @@ +Urejanje lokalnih datotek iz administratorske plošče \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sl_SI/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/sl_SI/plugin.lang.php new file mode 100755 index 0000000..e3ce114 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sl_SI/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sr_RS/description.txt b/sources/plugins/LocalFilesEditor/language/sr_RS/description.txt new file mode 100644 index 0000000..1d852f0 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sr_RS/description.txt @@ -0,0 +1 @@ +Уреди локалне датотеке преко администрационе странице. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sr_RS/index.php b/sources/plugins/LocalFilesEditor/language/sr_RS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sr_RS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/sr_RS/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/sr_RS/plugin.lang.php new file mode 100644 index 0000000..858166d --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sr_RS/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sv_SE/description.txt b/sources/plugins/LocalFilesEditor/language/sv_SE/description.txt new file mode 100644 index 0000000..286b6ae --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sv_SE/description.txt @@ -0,0 +1 @@ +Ändra lokala filer från administrationspanelen. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/sv_SE/index.php b/sources/plugins/LocalFilesEditor/language/sv_SE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sv_SE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/sv_SE/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/sv_SE/plugin.lang.php new file mode 100644 index 0000000..695c1e3 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/sv_SE/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ta_IN/description.txt b/sources/plugins/LocalFilesEditor/language/ta_IN/description.txt new file mode 100755 index 0000000..33bb876 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ta_IN/description.txt @@ -0,0 +1,2 @@ +உள்ளமை கோப்புகளை திருத்த +நிர்வாகத்தின் பலகத்தில். \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/ta_IN/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/ta_IN/plugin.lang.php new file mode 100755 index 0000000..aa49e76 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/ta_IN/plugin.lang.php @@ -0,0 +1,41 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/th_TH/description.txt b/sources/plugins/LocalFilesEditor/language/th_TH/description.txt new file mode 100644 index 0000000..4dc6786 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/th_TH/description.txt @@ -0,0 +1 @@ +แก้ไขไฟล์ภายใน ต่างๆ บนหน้าการจัดการระบบ. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/th_TH/index.php b/sources/plugins/LocalFilesEditor/language/th_TH/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/th_TH/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/th_TH/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/th_TH/plugin.lang.php new file mode 100644 index 0000000..6659f1f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/th_TH/plugin.lang.php @@ -0,0 +1,54 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/tr_TR/description.txt b/sources/plugins/LocalFilesEditor/language/tr_TR/description.txt new file mode 100755 index 0000000..60a9e57 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/tr_TR/description.txt @@ -0,0 +1 @@ +Yerel dosyaları yönetici panelinden düzenleyin. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/tr_TR/index.php b/sources/plugins/LocalFilesEditor/language/tr_TR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/tr_TR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/tr_TR/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/tr_TR/plugin.lang.php new file mode 100644 index 0000000..af35b62 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/tr_TR/plugin.lang.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/uk_UA/description.txt b/sources/plugins/LocalFilesEditor/language/uk_UA/description.txt new file mode 100644 index 0000000..e29c473 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/uk_UA/description.txt @@ -0,0 +1 @@ +Редагування локальних файлів з ​​панелі адміністрування. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/uk_UA/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/uk_UA/plugin.lang.php new file mode 100644 index 0000000..10a5859 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/uk_UA/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/vi_VN/description.txt b/sources/plugins/LocalFilesEditor/language/vi_VN/description.txt new file mode 100644 index 0000000..1d7f745 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/vi_VN/description.txt @@ -0,0 +1 @@ +Chỉnh sửa những tệp tin trên máy từ bảng điều khiển Quản trị viên. \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/vi_VN/index.php b/sources/plugins/LocalFilesEditor/language/vi_VN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/vi_VN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/vi_VN/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/vi_VN/plugin.lang.php new file mode 100644 index 0000000..514c9ae --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/vi_VN/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/zh_CN/description.txt b/sources/plugins/LocalFilesEditor/language/zh_CN/description.txt new file mode 100644 index 0000000..8eb6a7d --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_CN/description.txt @@ -0,0 +1 @@ +通过管理员面板编辑本地文件。 \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/zh_CN/index.php b/sources/plugins/LocalFilesEditor/language/zh_CN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_CN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/zh_CN/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/zh_CN/plugin.lang.php new file mode 100644 index 0000000..ae3b456 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_CN/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/zh_HK/description.txt b/sources/plugins/LocalFilesEditor/language/zh_HK/description.txt new file mode 100755 index 0000000..513365a --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_HK/description.txt @@ -0,0 +1 @@ +在管理面板編輯本地檔案。 \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/zh_HK/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/zh_HK/plugin.lang.php new file mode 100755 index 0000000..c60a8b4 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_HK/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/zh_TW/description.txt b/sources/plugins/LocalFilesEditor/language/zh_TW/description.txt new file mode 100644 index 0000000..6f11920 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_TW/description.txt @@ -0,0 +1 @@ +從管理者控制台編輯本地文件 \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/language/zh_TW/index.php b/sources/plugins/LocalFilesEditor/language/zh_TW/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_TW/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/LocalFilesEditor/language/zh_TW/plugin.lang.php b/sources/plugins/LocalFilesEditor/language/zh_TW/plugin.lang.php new file mode 100644 index 0000000..fa5fd70 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/language/zh_TW/plugin.lang.php @@ -0,0 +1,53 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/main.inc.php b/sources/plugins/LocalFilesEditor/main.inc.php new file mode 100644 index 0000000..ad8ccbf --- /dev/null +++ b/sources/plugins/LocalFilesEditor/main.inc.php @@ -0,0 +1,70 @@ + 'LocalFiles Editor', + 'URL' => get_root_url().'admin.php?page=plugin-'.basename(dirname(__FILE__)) + ); + + return $menu; +} + +function localfiles_css_link() +{ + global $template; + + $template->set_prefilter('themes', 'localfiles_css_link_prefilter'); +} + +function localfiles_css_link_prefilter($content, &$smarty) +{ + $search = '#{if isset\(\$theme.admin_uri\)}.*?{/if}#s'; + $replacement = ' +{if isset($theme.admin_uri)} +
          {\'Configuration\'|@translate} + | CSS +{else} +
          CSS +{/if} +'; + + return preg_replace($search, $replacement, $content); +} + +add_event_handler('get_admin_plugin_menu_links', 'localfiles_admin_menu'); +add_event_handler('loc_begin_admin', 'localfiles_css_link'); +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/maintain.inc.php b/sources/plugins/LocalFilesEditor/maintain.inc.php new file mode 100644 index 0000000..d3c6289 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/maintain.inc.php @@ -0,0 +1,32 @@ + \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/show_default.php b/sources/plugins/LocalFilesEditor/show_default.php new file mode 100644 index 0000000..d688ddb --- /dev/null +++ b/sources/plugins/LocalFilesEditor/show_default.php @@ -0,0 +1,59 @@ +set_filename('show_default', dirname(__FILE__) . '/template/show_default.tpl'); + + $file = file_get_contents(PHPWG_ROOT_PATH . $path); + $title = str_replace('/', ' / ', $path); + + $template->assign(array( + 'TITLE' => $title, + 'DEFAULT_CONTENT' => $file, + ) + ); + + $page['body_id'] = 'thePopuphelpPage'; + + include(PHPWG_ROOT_PATH.'include/page_header.php'); + + $template->pparse('show_default'); + + include(PHPWG_ROOT_PATH.'include/page_tail.php'); +} + +?> \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/template/admin.tpl b/sources/plugins/LocalFilesEditor/template/admin.tpl new file mode 100644 index 0000000..d79d000 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/template/admin.tpl @@ -0,0 +1,113 @@ +{combine_script id="codemirror" path="plugins/LocalFilesEditor/codemirror/lib/codemirror.js"} +{combine_script id="codemirror.xml" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.js"} +{combine_script id="codemirror.javascript" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js"} +{combine_script id="codemirror.css" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/css/css.js"} +{combine_script id="codemirror.clike" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.js"} +{combine_script id="codemirror.htmlmixed" require="codemirror.xml,codemirror.javascript,codemirror.css" path="plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js"} +{combine_script id="codemirror.php" require="codemirror.xml,codemirror.javascript,codemirror.css,codemirror.clike" path="plugins/LocalFilesEditor/codemirror/mode/php/php.js"} + +{combine_css path="plugins/LocalFilesEditor/codemirror/lib/codemirror.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/css/css.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.css"} +{combine_css path="plugins/LocalFilesEditor/template/locfiledit.css"} + +{footer_script} +if (document.getElementById("text") != null) + var editor = CodeMirror.fromTextArea(document.getElementById("text"), {ldelim} + matchBrackets: true, + mode: "{$CODEMIRROR_MODE}", + tabMode: "shift" + }); +{/footer_script} + +
          +

          LocalFiles Editor

          +
          + +
          + + +
          + +{if isset($theme)} + +{/if} + +{if isset($language)} + +{/if} + +{if isset($template)} + +{/if} + + +{if isset ($create_tpl)} + + + + + + + + + + + + + +
          {'locfiledit_new_filename'|@translate}
          {'locfiledit_parent_directory'|@translate}{html_options name=tpl_parent options=$create_tpl.PARENT_OPTIONS selected=$create_tpl.PARENT_SELECTED}
          {'locfiledit_model'|@translate}{html_options name=tpl_model options=$create_tpl.MODEL_OPTIONS selected=$create_tpl.MODEL_SELECTED}
          +

          + +{/if} + +{if isset ($css_lang_tpl)} + + + +

          +{/if} + +{if isset ($css_lang_tpl.NEW_FILE_URL)} + +{'locfiledit_new_tpl'|@translate} + +{/if} + +{if isset ($zone_edit)} +
          +{/if} + +{if !empty($show_default)} +{foreach from=$show_default item=file name=default_loop} + +{'locfiledit_show_default'|@translate} "{$file.FILE}" + +{if !($smarty.foreach.default_loop.last)}
          {/if} +{/foreach} +{/if} + +{if isset ($zone_edit)} +{$zone_edit.FILE_NAME} +
          {* title_bar *} + + +
          + + +{if isset ($restore)} + +{/if} + +{if isset ($restore_infos)} +

          +{'locfiledit_save_bak'|@translate} +{/if} + +{/if} {* zone_edit *} +
          +
          diff --git a/sources/plugins/LocalFilesEditor/template/locfiledit.css b/sources/plugins/LocalFilesEditor/template/locfiledit.css new file mode 100644 index 0000000..10589bc --- /dev/null +++ b/sources/plugins/LocalFilesEditor/template/locfiledit.css @@ -0,0 +1,32 @@ +#LocalFilesEditor { + text-align: center; + margin: 0 2em; +} + +#LocalFilesEditor #title_bar { + overflow: auto; +} + +#LocalFilesEditor .file_name { + font-weight: bold; + float: left; +} + +#LocalFilesEditor .default_file { + float: right; +} + +#LocalFilesEditor TD { + padding: 0.5em; +} + +#LocalFilesEditor TEXTAREA, .CodeMirror { + background-color: #EEEEEE; + font-family: monospace,Arial,sans-serif; + font-size: 1.2em; + border: 1px solid #999999; + margin: 0.5em 0; + width: 100%; + min-height: 500px; + height: auto; +} \ No newline at end of file diff --git a/sources/plugins/LocalFilesEditor/template/show_default.tpl b/sources/plugins/LocalFilesEditor/template/show_default.tpl new file mode 100644 index 0000000..cd6c3f3 --- /dev/null +++ b/sources/plugins/LocalFilesEditor/template/show_default.tpl @@ -0,0 +1,37 @@ +{combine_script id="codemirror" path="plugins/LocalFilesEditor/codemirror/lib/codemirror.js"} +{combine_script id="codemirror.xml" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.js"} +{combine_script id="codemirror.javascript" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.js"} +{combine_script id="codemirror.css" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/css/css.js"} +{combine_script id="codemirror.clike" require="codemirror" path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.js"} +{combine_script id="codemirror.htmlmixed" require="codemirror.xml,codemirror.javascript,codemirror.css" path="plugins/LocalFilesEditor/codemirror/mode/htmlmixed/htmlmixed.js"} +{combine_script id="codemirror.php" require="codemirror.xml,codemirror.javascript,codemirror.css,codemirror.clike" path="plugins/LocalFilesEditor/codemirror/mode/php/php.js"} + +{combine_css path="plugins/LocalFilesEditor/codemirror/lib/codemirror.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/xml/xml.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/javascript/javascript.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/css/css.css"} +{combine_css path="plugins/LocalFilesEditor/codemirror/mode/clike/clike.css"} +{combine_css path="plugins/LocalFilesEditor/template/locfiledit.css"} + +{footer_script} +var editor = CodeMirror.fromTextArea(document.getElementById("text"), {ldelim} + readOnly: true, + mode: "application/x-httpd-php" +}); +{/footer_script} + +{html_head} + +{/html_head} + +
          + +
          + {$TITLE} +
          + + + +
          diff --git a/sources/plugins/admin_multi_view/controller.php b/sources/plugins/admin_multi_view/controller.php new file mode 100644 index 0000000..6e30546 --- /dev/null +++ b/sources/plugins/admin_multi_view/controller.php @@ -0,0 +1,265 @@ + + + + + + 0 ) + pwg_set_session_var( 'multiview_show_queries', 1 ); + else + pwg_unset_session_var( 'multiview_show_queries' ); + $refresh_main = true; +} + +if ( isset($_GET['debug_l10n']) ) +{ + if ( $_GET['debug_l10n']>0 ) + pwg_set_session_var( 'multiview_debug_l10n', 1 ); + else + pwg_unset_session_var( 'multiview_debug_l10n' ); + $refresh_main = true; +} + + +if ( isset($_GET['debug_template']) ) +{ + if ( $_GET['debug_template']>0 ) + pwg_set_session_var( 'multiview_debug_template', 1 ); + else + pwg_unset_session_var( 'multiview_debug_template' ); + $refresh_main = true; +} + +if ( isset($_GET['template_combine_files']) ) +{ + if ( $_GET['template_combine_files']==0 ) + pwg_set_session_var( 'multiview_template_combine_files', 0 ); + else + pwg_unset_session_var( 'multiview_template_combine_files' ); + $refresh_main = true; +} + + +if ( isset($_GET['no_history']) ) +{ + if ( $_GET['no_history']>0 ) + pwg_set_session_var( 'multiview_no_history', 1 ); + else + pwg_unset_session_var( 'multiview_no_history' ); + $refresh_main = true; +} + +if ( isset($_GET['purge_template']) ) +{ + pwg_set_session_var( 'purge_template', 1 ); + $refresh_main = true; +} + +$my_url = get_root_url().'plugins/'.basename(dirname(__FILE__)).'/'.basename(__FILE__); + +// +-----------------------------------------------------------------------+ +// | users | +$query = ' +SELECT '.$conf['user_fields']['id'].' AS id,'.$conf['user_fields']['username'].' AS username +FROM '.USERS_TABLE.' + ORDER BY CONVERT('.$conf['user_fields']['username'].',CHAR) +;'; +$user_map = simple_hash_from_query($query, 'id', 'username'); + +$users_html = ''; + + +// +-----------------------------------------------------------------------+ +// | templates | +$my_theme = ''; +$themes_html=''; + +// +-----------------------------------------------------------------------+ +// | language | +$lang_html=''; + +// +-----------------------------------------------------------------------+ +// | show queries | +$show_queries_html=''; +if (!$conf['show_queries']) +{ + if ( !pwg_get_session_var( 'multiview_show_queries', 0 ) ) + $show_queries_html.='Show SQL queries'; + else + $show_queries_html.='Hide SQL queries'; +} + +// +-----------------------------------------------------------------------+ +// | debug language | +$debug_l10n_html=''; +if (!$conf['debug_l10n']) +{ + if ( !pwg_get_session_var( 'multiview_debug_l10n', 0 ) ) + $debug_l10n_html.='Debug language'; + else + $debug_l10n_html.='Revert debug language'; +} + +// +-----------------------------------------------------------------------+ +// | debug template | +$debug_template_html=''; +if (!$conf['debug_template']) +{ + if ( !pwg_get_session_var( 'multiview_debug_template', 0 ) ) + $debug_template_html.='Debug template'; + else + $debug_template_html.='Revert debug template'; +} + +// +-----------------------------------------------------------------------+ +// | template combine files | +$template_combine_files_html=''; +if ($conf['template_combine_files']) +{ + if ( pwg_get_session_var( 'multiview_template_combine_files', 1 ) ) + $template_combine_files_html.='Don\'t combine js&css'; + else + $template_combine_files_html.='Combine js&css'; +} + +// +-----------------------------------------------------------------------+ +// | no history | +$no_history_html=''; +if ( !pwg_get_session_var( 'multiview_no_history', 0 ) ) + $no_history_html.='Don\'t save to visit history'; +else + $no_history_html.='Save to visit history'; + +?> + + + + +Controller + + + +
          + + + + + + + + +
          User
          Theme
          Lang
          +\n", array($show_queries_html, $debug_l10n_html, $debug_template_html, $template_combine_files_html, $no_history_html) ); ?> +
          Purge compiled templates + + +
          + + diff --git a/sources/plugins/admin_multi_view/index.php b/sources/plugins/admin_multi_view/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/is_admin.inc.php b/sources/plugins/admin_multi_view/is_admin.inc.php new file mode 100644 index 0000000..659085d --- /dev/null +++ b/sources/plugins/admin_multi_view/is_admin.inc.php @@ -0,0 +1,51 @@ + +var theController = window.open("", "mview_controller", "alwaysRaised=yes,dependent=yes,toolbar=no,height=200,width=220,menubar=no,resizable=yes,scrollbars=yes,status=no"); +if ( theController.location.toString()=="about:blank" || !theController.location.toString().match(/^(https?.*\/)controller\.php(\?.+)?$/)) +{ + theController.location = "'.$my_root_url.'controller.php"; +} +'; + + $template->append( 'head_elements', $js ); +} +?> diff --git a/sources/plugins/admin_multi_view/is_admin_template.inc.php b/sources/plugins/admin_multi_view/is_admin_template.inc.php new file mode 100644 index 0000000..722592d --- /dev/null +++ b/sources/plugins/admin_multi_view/is_admin_template.inc.php @@ -0,0 +1,12 @@ +delete_compiled_templates(); + FileCombiner::clear_combined_files(); + pwg_unset_session_var( 'purge_template' ); + } +} +?> diff --git a/sources/plugins/admin_multi_view/language/af_ZA/description.txt b/sources/plugins/admin_multi_view/language/af_ZA/description.txt new file mode 100755 index 0000000..8c9d7f9 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/af_ZA/description.txt @@ -0,0 +1 @@ +Laat administrateurs toe om die gallery as 'n gas te sien en/of die taal en/of die tema onmiddelik te verander. Dit is handig om foute op te spoor... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/af_ZA/index.php b/sources/plugins/admin_multi_view/language/af_ZA/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/af_ZA/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/ar_SA/description.txt b/sources/plugins/admin_multi_view/language/ar_SA/description.txt new file mode 100644 index 0000000..5456c4d --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ar_SA/description.txt @@ -0,0 +1 @@ +يسمح للمسؤولين لمشاهدة المعرض كضيوف و / أو تغيير لغة و / أو واجهة عرض . عملية لتصحيح التغييرات \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/ar_SA/index.php b/sources/plugins/admin_multi_view/language/ar_SA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ar_SA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/bg_BG/description.txt b/sources/plugins/admin_multi_view/language/bg_BG/description.txt new file mode 100755 index 0000000..b8f8992 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/bg_BG/description.txt @@ -0,0 +1,2 @@ +AdminMultiView - Админ мулти изглед +Български [BG] \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/bg_BG/index.php b/sources/plugins/admin_multi_view/language/bg_BG/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/bg_BG/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/br_FR/description.txt b/sources/plugins/admin_multi_view/language/br_FR/description.txt new file mode 100755 index 0000000..38a475b --- /dev/null +++ b/sources/plugins/admin_multi_view/language/br_FR/description.txt @@ -0,0 +1 @@ +Ar merourien a c'hello gwellet ar palier evel an implijerien, ha cheñch yezh ha tem diwar nij. Talvoudus eo evit dizreinañ cheñchamantoù. \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/br_FR/index.php b/sources/plugins/admin_multi_view/language/br_FR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/br_FR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/ca_ES/description.txt b/sources/plugins/admin_multi_view/language/ca_ES/description.txt new file mode 100755 index 0000000..117d687 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ca_ES/description.txt @@ -0,0 +1 @@ +Aquest complement permet als administradors visualitzar la galeria com si fos un convidat, canviar d'idioma i tema sobre la marxa. Util per a tasques de depuracio. \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/cs_CZ/description.txt b/sources/plugins/admin_multi_view/language/cs_CZ/description.txt new file mode 100644 index 0000000..180442d --- /dev/null +++ b/sources/plugins/admin_multi_view/language/cs_CZ/description.txt @@ -0,0 +1 @@ +Umožní administrátorùm pracovat s galerií jako hosté, mìnit jazyk a šablony vzhledu. Praktické na testování zmìn... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/cs_CZ/index.php b/sources/plugins/admin_multi_view/language/cs_CZ/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/cs_CZ/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/da_DK/description.txt b/sources/plugins/admin_multi_view/language/da_DK/description.txt new file mode 100755 index 0000000..5a5d0d0 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/da_DK/description.txt @@ -0,0 +1 @@ +Giver administratorer mulighed for at se galleri som gæst og/eller ændre sprog og/eller tema med det samme. Praktisk til fejlsøgning af ændringer... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/de_DE/description.txt b/sources/plugins/admin_multi_view/language/de_DE/description.txt new file mode 100644 index 0000000..2d8ac7b --- /dev/null +++ b/sources/plugins/admin_multi_view/language/de_DE/description.txt @@ -0,0 +1 @@ +Erlaubt Administratoren, die Galerie als Gast oder in einer anderen Sprache anzusehen, ohne sich abzumelden. Praktisch z.B. für die Fehlersuche. \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/de_DE/index.php b/sources/plugins/admin_multi_view/language/de_DE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/de_DE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/el_GR/description.txt b/sources/plugins/admin_multi_view/language/el_GR/description.txt new file mode 100755 index 0000000..3368149 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/el_GR/description.txt @@ -0,0 +1 @@ +Επιτρέπει στους διαχειριστές να δουν την ιστοσελίδα ως επισκέπτες και / ή να αλλάξουν τη γλώσσα και / το θέμα σχετικά γρήγορα. Είναι πρακτικό χρήσιμο για τον εντοπισμό σφαλμάτων ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/en_UK/description.txt b/sources/plugins/admin_multi_view/language/en_UK/description.txt new file mode 100644 index 0000000..e37c82f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/en_UK/description.txt @@ -0,0 +1 @@ +Allows administrators to view gallery as guests and/or change the language and/or theme on the fly. Useful to debug changes... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/en_UK/index.php b/sources/plugins/admin_multi_view/language/en_UK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/en_UK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/eo_EO/description.txt b/sources/plugins/admin_multi_view/language/eo_EO/description.txt new file mode 100755 index 0000000..08eada2 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/eo_EO/description.txt @@ -0,0 +1 @@ +Permesas al la administrantoj vidi galerion kiel vizitantoj kaj/aŭ ŝanĝi la lingvon kaj/aŭ la temon dinamike. Utila por sencimigi ŝanĝojn... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/es_ES/description.txt b/sources/plugins/admin_multi_view/language/es_ES/description.txt new file mode 100644 index 0000000..b13fe8d --- /dev/null +++ b/sources/plugins/admin_multi_view/language/es_ES/description.txt @@ -0,0 +1 @@ +Permite a los administradores ver la galería como un invitado y/o cambiar tanto el idioma como el tema sobre la marcha. Útiles para acciones de depuración... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/es_ES/index.php b/sources/plugins/admin_multi_view/language/es_ES/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/es_ES/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/et_EE/description.txt b/sources/plugins/admin_multi_view/language/et_EE/description.txt new file mode 100755 index 0000000..f58bd2c --- /dev/null +++ b/sources/plugins/admin_multi_view/language/et_EE/description.txt @@ -0,0 +1 @@ +Võimaldab administraatoritel samal ajal vaadata oma galeriid külalisena, ning vahetada keele ja teema. Asjalik kui tahad jälgida seadistusi ja muid muutusi... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/et_EE/index.php b/sources/plugins/admin_multi_view/language/et_EE/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/et_EE/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/fa_IR/description.txt b/sources/plugins/admin_multi_view/language/fa_IR/description.txt new file mode 100755 index 0000000..ccce884 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fa_IR/description.txt @@ -0,0 +1 @@ +این افزونه به مدیران اجازه می دهد تا گالری را به عنوان مهمان مشاهده کرده، زبان یا قالب گالری را عوض کنند و هر مشکلی که در گالری وجود دارد را بررسی نمایند ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/fa_IR/index.php b/sources/plugins/admin_multi_view/language/fa_IR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fa_IR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/fi_FI/description.txt b/sources/plugins/admin_multi_view/language/fi_FI/description.txt new file mode 100755 index 0000000..38e1365 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fi_FI/description.txt @@ -0,0 +1 @@ +Mahdollistaa ylläpitäjien tarkastella galleriaa sellaisena kuin vieraat sen näkevät, sekä vaihtaa kieltä ja teemaa lennosta. \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/fr_CA/description.txt b/sources/plugins/admin_multi_view/language/fr_CA/description.txt new file mode 100644 index 0000000..66e01a5 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fr_CA/description.txt @@ -0,0 +1 @@ +Permet aux administrateurs de voir la galerie en tant qu'invité et/ou changer la langue et/ou changer de thème à la volée. Pratique pour le débuggage... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/fr_CA/index.php b/sources/plugins/admin_multi_view/language/fr_CA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fr_CA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/fr_FR/description.txt b/sources/plugins/admin_multi_view/language/fr_FR/description.txt new file mode 100644 index 0000000..66e01a5 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fr_FR/description.txt @@ -0,0 +1 @@ +Permet aux administrateurs de voir la galerie en tant qu'invité et/ou changer la langue et/ou changer de thème à la volée. Pratique pour le débuggage... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/fr_FR/index.php b/sources/plugins/admin_multi_view/language/fr_FR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/fr_FR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/gl_ES/description.txt b/sources/plugins/admin_multi_view/language/gl_ES/description.txt new file mode 100755 index 0000000..1e09d59 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/gl_ES/description.txt @@ -0,0 +1 @@ +Permite ós administradores ver a galería como invitados, mudar o idioma, o tema ó voo. É útil para depurar os cambios ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/he_IL/description.txt b/sources/plugins/admin_multi_view/language/he_IL/description.txt new file mode 100644 index 0000000..320c573 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/he_IL/description.txt @@ -0,0 +1 @@ +אפשר למנהל ראשי לצפות בגלריה כאורח ו\או לשנות את השפה ו\או לשנות את הערכה. שימושי כדי לאתר באגים... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/he_IL/index.php b/sources/plugins/admin_multi_view/language/he_IL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/he_IL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/hr_HR/description.txt b/sources/plugins/admin_multi_view/language/hr_HR/description.txt new file mode 100644 index 0000000..1dd5c02 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/hr_HR/description.txt @@ -0,0 +1 @@ +Dozvoljava administratorima pregledavanje galerije kao gost korisnik i/ili mijenjanje jezika i/ili teme u letu. Praktično za ispravljanje grešaka kod izmjena... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/hr_HR/index.php b/sources/plugins/admin_multi_view/language/hr_HR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/hr_HR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/hu_HU/description.txt b/sources/plugins/admin_multi_view/language/hu_HU/description.txt new file mode 100644 index 0000000..4cfbf4c --- /dev/null +++ b/sources/plugins/admin_multi_view/language/hu_HU/description.txt @@ -0,0 +1 @@ +Lehetővé teszi a rendszergazdák számára, hogy vendégként tekinthessék meg a galériát, módosíthatják a nyelvet és/vagy a témát menet közben. Praktikus hibakeresés, változtatásoknál ... diff --git a/sources/plugins/admin_multi_view/language/hu_HU/index.php b/sources/plugins/admin_multi_view/language/hu_HU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/hu_HU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/index.php b/sources/plugins/admin_multi_view/language/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/it_IT/description.txt b/sources/plugins/admin_multi_view/language/it_IT/description.txt new file mode 100644 index 0000000..36256c0 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/it_IT/description.txt @@ -0,0 +1 @@ +Permette agli amministratori di vedere la galleria come se fosse un'ospite e/o di cambiare lingua e/o cambiare tema facilmente. Pratico per il debug... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/it_IT/index.php b/sources/plugins/admin_multi_view/language/it_IT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/it_IT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/ja_JP/description.txt b/sources/plugins/admin_multi_view/language/ja_JP/description.txt new file mode 100644 index 0000000..94abad4 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ja_JP/description.txt @@ -0,0 +1 @@ + 管理人はガラリーをゲストとして回覧でき、言語・テーマを変更する。 \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/ja_JP/index.php b/sources/plugins/admin_multi_view/language/ja_JP/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ja_JP/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/ka_GE/description.txt b/sources/plugins/admin_multi_view/language/ka_GE/description.txt new file mode 100644 index 0000000..002c5ab --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ka_GE/description.txt @@ -0,0 +1 @@ +საშუალებას აძლევს ადმინისტრატორს ნახოს გალერეა როგორც სტუმარმა და/ან შეცვალოს ენა ან/და თემა. სასარგებლოა გამართვისათვის, შეტანილი ცვლილებების გასწორებისათვის... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/ka_GE/index.php b/sources/plugins/admin_multi_view/language/ka_GE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ka_GE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/km_KH/description.txt b/sources/plugins/admin_multi_view/language/km_KH/description.txt new file mode 100644 index 0000000..c7581ab --- /dev/null +++ b/sources/plugins/admin_multi_view/language/km_KH/description.txt @@ -0,0 +1 @@ +អនុញ្ញាតិ​អោយ​អ្នក​គ្រប់គ្រង​វេបសាយ មើលរាល់វិចិត្រសាលជា ភ្ញៀវ ហើយនិង​ឬក៏ ផ្លាស់ប្តូរ​ភាសា ហើយនិង​ឬក៏ សម្បក ដោយផ្ទាល់។ វាមាន​ប្រយោជន៍​ ដើម្បី debug ពេលផ្លាស់ប្តូ ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/km_KH/index.php b/sources/plugins/admin_multi_view/language/km_KH/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/km_KH/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/kn_IN/description.txt b/sources/plugins/admin_multi_view/language/kn_IN/description.txt new file mode 100755 index 0000000..9d2fba0 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/kn_IN/description.txt @@ -0,0 +1 @@ +ನಿರ್ವಹಣೆಗಾರರಿಗೆ ಚಿತ್ರಾಂಗಣ (ಗ್ಯಾಲರಿ) ವನ್ನು ಅತಿಥಿ (guest) ಗಳಂತೆ ವೀಕ್ಷಿಸಲು ಮತ್ತು/ಅಥವಾ ಭಾಷೆ, ಹೊರನೋಟ (ಥೀಮ್) ಅನ್ನು ಮಾರ್ಪಾಡಿಸಲು ಸುಲಭ ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಬದಲಾವಣೆಗಳ ದೋಷ ಪರಿಹಾರಕ್ಕೆ ಇದು ತುಂಬಾ ಉಪಯುಕ್ತ. \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/lt_LT/description.txt b/sources/plugins/admin_multi_view/language/lt_LT/description.txt new file mode 100755 index 0000000..9311e4e --- /dev/null +++ b/sources/plugins/admin_multi_view/language/lt_LT/description.txt @@ -0,0 +1 @@ +Leidžia administratoriams peržiūrėti galeriją svečio teisėmis, greitai keisti kalbas, išvaizdą. Naudinga debuginant pasikeitimus. diff --git a/sources/plugins/admin_multi_view/language/lv_LV/description.txt b/sources/plugins/admin_multi_view/language/lv_LV/description.txt new file mode 100644 index 0000000..705e56f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/lv_LV/description.txt @@ -0,0 +1 @@ +Dod iespēju Administratoriem apskatīt galeriju kā viesim un/vai nomainīt valodu un/vai tēmu ar vienu darbību. Derīgi skaņošanas darbos... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/lv_LV/index.php b/sources/plugins/admin_multi_view/language/lv_LV/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/lv_LV/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/mn_MN/description.txt b/sources/plugins/admin_multi_view/language/mn_MN/description.txt new file mode 100755 index 0000000..e030327 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/mn_MN/description.txt @@ -0,0 +1 @@ +Зохицуулагчид зочны горимоор галларейг харах, хэлийг сольж харах, загварыг сольж харах зэрэг боломжийг олгоно. Өөрчлөлтийг шалгах үед хэрэгтэй... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/mn_MN/index.php b/sources/plugins/admin_multi_view/language/mn_MN/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/mn_MN/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/nb_NO/description.txt b/sources/plugins/admin_multi_view/language/nb_NO/description.txt new file mode 100644 index 0000000..58307eb --- /dev/null +++ b/sources/plugins/admin_multi_view/language/nb_NO/description.txt @@ -0,0 +1 @@ +Tillater administratorer å se galleriet som gjest og/eller endre språk og/eller tema i umiddelbart. Praktisk for å feilsøke ved endringer... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/nb_NO/index.php b/sources/plugins/admin_multi_view/language/nb_NO/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/nb_NO/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/nl_NL/description.txt b/sources/plugins/admin_multi_view/language/nl_NL/description.txt new file mode 100644 index 0000000..5f18374 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/nl_NL/description.txt @@ -0,0 +1 @@ +Biedt administrators de mogelijkheid om een galerie als gast te bekijken en/of makkelijk van taal en/of thema te veranderen. Practisch bij het debuggen van wijzigingen... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/nl_NL/index.php b/sources/plugins/admin_multi_view/language/nl_NL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/nl_NL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/nn_NO/description.txt b/sources/plugins/admin_multi_view/language/nn_NO/description.txt new file mode 100755 index 0000000..1b637b1 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/nn_NO/description.txt @@ -0,0 +1 @@ +Tillet administratorar å sjå galleriet som ein gjest og/eller endre språket og/eller temaet "on the fly". Nyttig for å feilsøke når du gjer endringar... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/pl_PL/description.txt b/sources/plugins/admin_multi_view/language/pl_PL/description.txt new file mode 100644 index 0000000..35931c9 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/pl_PL/description.txt @@ -0,0 +1 @@ +Pozwala administratorom przeglądać galerię jako gość oraz zmieniać ustawienia języka i grafiki. Praktyczne narzędzie do weryfikacji zmian... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/pl_PL/index.php b/sources/plugins/admin_multi_view/language/pl_PL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/pl_PL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/pt_BR/description.txt b/sources/plugins/admin_multi_view/language/pt_BR/description.txt new file mode 100755 index 0000000..2546a7e --- /dev/null +++ b/sources/plugins/admin_multi_view/language/pt_BR/description.txt @@ -0,0 +1 @@ +Permite que os administradores vejam a galeria como convidado e/ou mude o idioma e/ou tema em tempo real. Prático para debugar as alterações ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/pt_BR/index.php b/sources/plugins/admin_multi_view/language/pt_BR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/pt_BR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/pt_PT/description.txt b/sources/plugins/admin_multi_view/language/pt_PT/description.txt new file mode 100644 index 0000000..d046403 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/pt_PT/description.txt @@ -0,0 +1 @@ +description -> Permite aos Administradores ver a galeria como Convidados e/ou mudar o idioma e/ou tema instantaneamente. Práctico para testar mudanças... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/pt_PT/index.php b/sources/plugins/admin_multi_view/language/pt_PT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/pt_PT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/ro_RO/description.txt b/sources/plugins/admin_multi_view/language/ro_RO/description.txt new file mode 100755 index 0000000..59f817a --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ro_RO/description.txt @@ -0,0 +1 @@ +Permite administratorilor să vizualizeze galeria în calitate de invitaţi şi/sau de a schimba limba şi/sau tema instantaneu. Practic pentru a depana schimbări făcute... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/ru_RU/description.txt b/sources/plugins/admin_multi_view/language/ru_RU/description.txt new file mode 100644 index 0000000..548ebb3 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ru_RU/description.txt @@ -0,0 +1,3 @@ +Позволяет администраторам просматривать галерею в качестве гостей и / или +изменить язык и / или тему "на лету". Удобно для +отладки изменения ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/ru_RU/index.php b/sources/plugins/admin_multi_view/language/ru_RU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ru_RU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/sh_RS/description.txt b/sources/plugins/admin_multi_view/language/sh_RS/description.txt new file mode 100644 index 0000000..6a2f140 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sh_RS/description.txt @@ -0,0 +1 @@ +Dozvoljava administratoru da vidi galeriju kao gost i/ili promeni jezik i/ili temu uživo. Praktično za proveru promena... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/sk_SK/description.txt b/sources/plugins/admin_multi_view/language/sk_SK/description.txt new file mode 100644 index 0000000..c419b02 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sk_SK/description.txt @@ -0,0 +1 @@ +Umožňuje administrátorom vidieť galériu aho hosťom a/alebo zmeniť jazyk a-alebo šablónu. Prakticky ladiť zmeny... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/sk_SK/index.php b/sources/plugins/admin_multi_view/language/sk_SK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sk_SK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/sl_SI/description.txt b/sources/plugins/admin_multi_view/language/sl_SI/description.txt new file mode 100755 index 0000000..3f6ff1a --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sl_SI/description.txt @@ -0,0 +1 @@ +Omogoči skrbnikom ogled galerije kot gost in/ali spremembo jezika in/ali preobleke v trenutku. Uporabno za odpravljanje napak pri spremembah... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/sr_RS/description.txt b/sources/plugins/admin_multi_view/language/sr_RS/description.txt new file mode 100644 index 0000000..8be6fa7 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sr_RS/description.txt @@ -0,0 +1 @@ +Дозвољава администратору да види галерију као гост и/или промени језик и/или тему уживо. Практично за проверу промена... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/sr_RS/index.php b/sources/plugins/admin_multi_view/language/sr_RS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sr_RS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/sv_SE/description.txt b/sources/plugins/admin_multi_view/language/sv_SE/description.txt new file mode 100644 index 0000000..fec498d --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sv_SE/description.txt @@ -0,0 +1 @@ +Tilllåter administratör att se gallerier som gäst och/eller ändra språk eller tema direkt. Prakiskt vid debug av ändringar... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/sv_SE/index.php b/sources/plugins/admin_multi_view/language/sv_SE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/sv_SE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/ta_IN/description.txt b/sources/plugins/admin_multi_view/language/ta_IN/description.txt new file mode 100755 index 0000000..6b38719 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/ta_IN/description.txt @@ -0,0 +1 @@ +நிர்வாகிகள் விருந்தாளிகளாக தான் கேலரியில் பார்க்க அனுமதிக்கிறது.மற்றும்/அல்லது பறக்கும் மீதான மொழி மற்றும்/அல்லது கருப்பொருளை மாற்றுவதற்கு. பயனுள்ள பிழை நீக்க மாற்றங்கள் ... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/th_TH/description.txt b/sources/plugins/admin_multi_view/language/th_TH/description.txt new file mode 100755 index 0000000..af23da7 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/th_TH/description.txt @@ -0,0 +1 @@ +แอดมินมัลติวิว \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/th_TH/index.php b/sources/plugins/admin_multi_view/language/th_TH/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/th_TH/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/tr_TR/description.txt b/sources/plugins/admin_multi_view/language/tr_TR/description.txt new file mode 100644 index 0000000..afda931 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/tr_TR/description.txt @@ -0,0 +1 @@ +Yöneticilerin galeriye misafir olarak bakmasını ve/veya dili ve/veya temayı değiştirmesini sağlar. Değişiklikleri ayıklamak için kullanışlıdır... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/tr_TR/index.php b/sources/plugins/admin_multi_view/language/tr_TR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/tr_TR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/uk_UA/description.txt b/sources/plugins/admin_multi_view/language/uk_UA/description.txt new file mode 100755 index 0000000..bb689ef --- /dev/null +++ b/sources/plugins/admin_multi_view/language/uk_UA/description.txt @@ -0,0 +1 @@ +Дозволяє адміністраторам переглядати галерею в якості гостей та/або змінити мову та/або теми на льоту. Практичне налагоджування змін... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/vi_VN/description.txt b/sources/plugins/admin_multi_view/language/vi_VN/description.txt new file mode 100644 index 0000000..242d2d7 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/vi_VN/description.txt @@ -0,0 +1 @@ +Cho phép Quản trị viên xem thư viện hình như một tài khoản khách và/hoặc thay đổi ngôn ngữ hiển thị và/hoặc giao diện trong thời gian ghé vào thư viện hình. Rất thiết thực cho việc thay đổi những hiệu chỉnh... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/vi_VN/index.php b/sources/plugins/admin_multi_view/language/vi_VN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/vi_VN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/zh_CN/description.txt b/sources/plugins/admin_multi_view/language/zh_CN/description.txt new file mode 100644 index 0000000..59277c4 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/zh_CN/description.txt @@ -0,0 +1 @@ +允许管理员以客人身份查看相册,或者改变语言和主题。部分改变和调试等... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/zh_CN/index.php b/sources/plugins/admin_multi_view/language/zh_CN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/zh_CN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/language/zh_HK/description.txt b/sources/plugins/admin_multi_view/language/zh_HK/description.txt new file mode 100755 index 0000000..6196717 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/zh_HK/description.txt @@ -0,0 +1 @@ +允許管理員以嘉賓身份查看相簿和/或更改語言和/或主題。對調試很有用... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/zh_HK/index.php b/sources/plugins/admin_multi_view/language/zh_HK/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/zh_HK/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/admin_multi_view/language/zh_TW/description.txt b/sources/plugins/admin_multi_view/language/zh_TW/description.txt new file mode 100644 index 0000000..7d578e8 --- /dev/null +++ b/sources/plugins/admin_multi_view/language/zh_TW/description.txt @@ -0,0 +1 @@ +允許管理員以訪客模式瀏覽畫廊,並(或)快速更改語言和(或)底圖。這對作修改時除錯很有用... \ No newline at end of file diff --git a/sources/plugins/admin_multi_view/language/zh_TW/index.php b/sources/plugins/admin_multi_view/language/zh_TW/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/admin_multi_view/language/zh_TW/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/admin_multi_view/main.inc.php b/sources/plugins/admin_multi_view/main.inc.php new file mode 100644 index 0000000..2d3c7e2 --- /dev/null +++ b/sources/plugins/admin_multi_view/main.inc.php @@ -0,0 +1,50 @@ + diff --git a/sources/plugins/c13y_upgrade/index.php b/sources/plugins/c13y_upgrade/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/initialize.inc.php b/sources/plugins/c13y_upgrade/initialize.inc.php new file mode 100644 index 0000000..8f4d679 --- /dev/null +++ b/sources/plugins/c13y_upgrade/initialize.inc.php @@ -0,0 +1,116 @@ + 1 +limit 1 +;'; + + if (pwg_db_fetch_row(pwg_query($query))) + { + $to_deactivate = false; + $c13y->add_anomaly( + l10n('c13y_dbl_email_user'), + null, + null, + l10n('c13y_correction_dbl_email_user')); + } + + /* Check plugin included in Piwigo sources */ + $included_plugins = array('dew', 'UpToDate', 'PluginsManager', 'LinkRoot'); + $query = ' +select + id +from + '.PLUGINS_TABLE.' +where + id in ('. + implode( + ',', + array_map( + create_function('$s', 'return "\'".$s."\'";'), + $included_plugins + ) + ) + .') +;'; + + $result = pwg_query($query); + while ($row = pwg_db_fetch_assoc($result)) + { + $to_deactivate = false; + + $uninstall_msg_link = + ''. + sprintf(l10n('c13y_correction_obsolete_plugin'), $row['id']).''; + + $c13y->add_anomaly( + l10n('c13y_obsolete_plugin'), + null, + null, + $uninstall_msg_link); + } + + /* Check if this plugin must be deactivate */ + if ($to_deactivate) + { + $query = ' +REPLACE INTO '.PLUGINS_TABLE.' +(id, state) +VALUES (\'c13y_upgrade\', \'inactive\') +;'; + pwg_query($query); + + global $page; + $page['infos'][] = l10n('c13y_upgrade_no_anomaly'); + } +} + +?> diff --git a/sources/plugins/c13y_upgrade/language/ar_SA/description.txt b/sources/plugins/c13y_upgrade/language/ar_SA/description.txt new file mode 100644 index 0000000..db4fb73 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ar_SA/description.txt @@ -0,0 +1 @@ +التحقق من سلامة ترقيات \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ar_SA/index.php b/sources/plugins/c13y_upgrade/language/ar_SA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ar_SA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/ar_SA/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ar_SA/plugin.lang.php new file mode 100644 index 0000000..70fc82c --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ar_SA/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/bg_BG/description.txt b/sources/plugins/c13y_upgrade/language/bg_BG/description.txt new file mode 100755 index 0000000..e80363f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/bg_BG/description.txt @@ -0,0 +1 @@ +c13y_upgrade - проверява точността и цялостта на обновленията. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/bg_BG/index.php b/sources/plugins/c13y_upgrade/language/bg_BG/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/bg_BG/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/c13y_upgrade/language/bg_BG/plugin.lang.php b/sources/plugins/c13y_upgrade/language/bg_BG/plugin.lang.php new file mode 100755 index 0000000..4809d0f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/bg_BG/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/br_FR/description.txt b/sources/plugins/c13y_upgrade/language/br_FR/description.txt new file mode 100755 index 0000000..aa96dc5 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/br_FR/description.txt @@ -0,0 +1 @@ +Gwiriañ anterinded an hizivadennoù. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/br_FR/index.php b/sources/plugins/c13y_upgrade/language/br_FR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/br_FR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/c13y_upgrade/language/br_FR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/br_FR/plugin.lang.php new file mode 100755 index 0000000..b595cdd --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/br_FR/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ca_ES/description.txt b/sources/plugins/c13y_upgrade/language/ca_ES/description.txt new file mode 100755 index 0000000..1318ba5 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ca_ES/description.txt @@ -0,0 +1 @@ +Comprova la integritat de les actualitzacions. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ca_ES/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ca_ES/plugin.lang.php new file mode 100755 index 0000000..38d059b --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ca_ES/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/cs_CZ/description.txt b/sources/plugins/c13y_upgrade/language/cs_CZ/description.txt new file mode 100644 index 0000000..7bc629e --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/cs_CZ/description.txt @@ -0,0 +1 @@ +Kontroluje integritu aktualizací. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/cs_CZ/index.php b/sources/plugins/c13y_upgrade/language/cs_CZ/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/cs_CZ/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/cs_CZ/plugin.lang.php b/sources/plugins/c13y_upgrade/language/cs_CZ/plugin.lang.php new file mode 100644 index 0000000..6428c90 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/cs_CZ/plugin.lang.php @@ -0,0 +1,31 @@ + diff --git a/sources/plugins/c13y_upgrade/language/da_DK/description.txt b/sources/plugins/c13y_upgrade/language/da_DK/description.txt new file mode 100755 index 0000000..c00a0aa --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/da_DK/description.txt @@ -0,0 +1 @@ +Tjek opgraderingintegritet. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/da_DK/plugin.lang.php b/sources/plugins/c13y_upgrade/language/da_DK/plugin.lang.php new file mode 100755 index 0000000..ba78690 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/da_DK/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/de_DE/description.txt b/sources/plugins/c13y_upgrade/language/de_DE/description.txt new file mode 100644 index 0000000..6525788 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/de_DE/description.txt @@ -0,0 +1 @@ +Überprüft die Integrität der Updates. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/de_DE/index.php b/sources/plugins/c13y_upgrade/language/de_DE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/de_DE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/de_DE/plugin.lang.php b/sources/plugins/c13y_upgrade/language/de_DE/plugin.lang.php new file mode 100644 index 0000000..6415d5c --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/de_DE/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/el_GR/description.txt b/sources/plugins/c13y_upgrade/language/el_GR/description.txt new file mode 100755 index 0000000..ce848e9 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/el_GR/description.txt @@ -0,0 +1 @@ +Ελ?γχει την ακεραι?τητα των αναβαθμ?σεων. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/el_GR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/el_GR/plugin.lang.php new file mode 100755 index 0000000..affdf2e --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/el_GR/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/en_UK/description.txt b/sources/plugins/c13y_upgrade/language/en_UK/description.txt new file mode 100644 index 0000000..b5f0edb --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/en_UK/description.txt @@ -0,0 +1 @@ +Check integrity of upgrades. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/en_UK/index.php b/sources/plugins/c13y_upgrade/language/en_UK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/en_UK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/en_UK/plugin.lang.php b/sources/plugins/c13y_upgrade/language/en_UK/plugin.lang.php new file mode 100644 index 0000000..0733ee5 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/en_UK/plugin.lang.php @@ -0,0 +1,31 @@ + diff --git a/sources/plugins/c13y_upgrade/language/eo_EO/description.txt b/sources/plugins/c13y_upgrade/language/eo_EO/description.txt new file mode 100755 index 0000000..a28c902 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/eo_EO/description.txt @@ -0,0 +1 @@ +Kontrolas la kromaĵointegrecon. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/eo_EO/plugin.lang.php b/sources/plugins/c13y_upgrade/language/eo_EO/plugin.lang.php new file mode 100755 index 0000000..52e1b2a --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/eo_EO/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/es_ES/description.txt b/sources/plugins/c13y_upgrade/language/es_ES/description.txt new file mode 100644 index 0000000..530c2da --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/es_ES/description.txt @@ -0,0 +1 @@ +Comprobación de integridad de las actualizaciones. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/es_ES/index.php b/sources/plugins/c13y_upgrade/language/es_ES/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/es_ES/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/es_ES/plugin.lang.php b/sources/plugins/c13y_upgrade/language/es_ES/plugin.lang.php new file mode 100644 index 0000000..8372a08 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/es_ES/plugin.lang.php @@ -0,0 +1,31 @@ + diff --git a/sources/plugins/c13y_upgrade/language/et_EE/description.txt b/sources/plugins/c13y_upgrade/language/et_EE/description.txt new file mode 100755 index 0000000..c92d0e3 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/et_EE/description.txt @@ -0,0 +1 @@ +Kontrolli uuenduste korrasolekut. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/et_EE/plugin.lang.php b/sources/plugins/c13y_upgrade/language/et_EE/plugin.lang.php new file mode 100755 index 0000000..0af3a29 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/et_EE/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fa_IR/description.txt b/sources/plugins/c13y_upgrade/language/fa_IR/description.txt new file mode 100755 index 0000000..296d52d --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fa_IR/description.txt @@ -0,0 +1 @@ +بررسی درست بودن آپگرید ها. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fa_IR/index.php b/sources/plugins/c13y_upgrade/language/fa_IR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fa_IR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/c13y_upgrade/language/fa_IR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/fa_IR/plugin.lang.php new file mode 100755 index 0000000..37a88b0 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fa_IR/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fi_FI/description.txt b/sources/plugins/c13y_upgrade/language/fi_FI/description.txt new file mode 100755 index 0000000..6595a51 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fi_FI/description.txt @@ -0,0 +1 @@ +Tarkista päivitysten eheys. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fi_FI/plugin.lang.php b/sources/plugins/c13y_upgrade/language/fi_FI/plugin.lang.php new file mode 100755 index 0000000..1d2e7f1 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fi_FI/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fr_CA/description.txt b/sources/plugins/c13y_upgrade/language/fr_CA/description.txt new file mode 100644 index 0000000..23a016b --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fr_CA/description.txt @@ -0,0 +1 @@ +Contrôle d'intégrité des mises à jour. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fr_CA/index.php b/sources/plugins/c13y_upgrade/language/fr_CA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fr_CA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/fr_CA/plugin.lang.php b/sources/plugins/c13y_upgrade/language/fr_CA/plugin.lang.php new file mode 100644 index 0000000..6edf649 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fr_CA/plugin.lang.php @@ -0,0 +1,29 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fr_FR/description.txt b/sources/plugins/c13y_upgrade/language/fr_FR/description.txt new file mode 100644 index 0000000..23a016b --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fr_FR/description.txt @@ -0,0 +1 @@ +Contrôle d'intégrité des mises à jour. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/fr_FR/index.php b/sources/plugins/c13y_upgrade/language/fr_FR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fr_FR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/fr_FR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/fr_FR/plugin.lang.php new file mode 100644 index 0000000..890e93e --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/fr_FR/plugin.lang.php @@ -0,0 +1,31 @@ + diff --git a/sources/plugins/c13y_upgrade/language/gl_ES/description.txt b/sources/plugins/c13y_upgrade/language/gl_ES/description.txt new file mode 100755 index 0000000..53818e9 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/gl_ES/description.txt @@ -0,0 +1 @@ +Comprobar a integridade das actualizacións. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/gl_ES/plugin.lang.php b/sources/plugins/c13y_upgrade/language/gl_ES/plugin.lang.php new file mode 100755 index 0000000..278754c --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/gl_ES/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/he_IL/description.txt b/sources/plugins/c13y_upgrade/language/he_IL/description.txt new file mode 100644 index 0000000..81b27cb --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/he_IL/description.txt @@ -0,0 +1 @@ +בדיקת תקינות של השדרוגים. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/he_IL/index.php b/sources/plugins/c13y_upgrade/language/he_IL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/he_IL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/he_IL/plugin.lang.php b/sources/plugins/c13y_upgrade/language/he_IL/plugin.lang.php new file mode 100644 index 0000000..f5e470a --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/he_IL/plugin.lang.php @@ -0,0 +1,31 @@ + diff --git a/sources/plugins/c13y_upgrade/language/hr_HR/description.txt b/sources/plugins/c13y_upgrade/language/hr_HR/description.txt new file mode 100644 index 0000000..a74b9bd --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/hr_HR/description.txt @@ -0,0 +1 @@ +Provjera integriteta kod nadogradnji. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/hr_HR/index.php b/sources/plugins/c13y_upgrade/language/hr_HR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/hr_HR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/hr_HR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/hr_HR/plugin.lang.php new file mode 100644 index 0000000..d9003a0 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/hr_HR/plugin.lang.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/hu_HU/description.txt b/sources/plugins/c13y_upgrade/language/hu_HU/description.txt new file mode 100644 index 0000000..729f538 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/hu_HU/description.txt @@ -0,0 +1 @@ +Ellenőrizze a frissítés teljességét. diff --git a/sources/plugins/c13y_upgrade/language/hu_HU/index.php b/sources/plugins/c13y_upgrade/language/hu_HU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/hu_HU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/hu_HU/plugin.lang.php b/sources/plugins/c13y_upgrade/language/hu_HU/plugin.lang.php new file mode 100644 index 0000000..6a3886c --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/hu_HU/plugin.lang.php @@ -0,0 +1,31 @@ + diff --git a/sources/plugins/c13y_upgrade/language/index.php b/sources/plugins/c13y_upgrade/language/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/it_IT/description.txt b/sources/plugins/c13y_upgrade/language/it_IT/description.txt new file mode 100644 index 0000000..37c00ee --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/it_IT/description.txt @@ -0,0 +1 @@ +Controllo d'integrità degli aggiornamenti. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/it_IT/index.php b/sources/plugins/c13y_upgrade/language/it_IT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/it_IT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/it_IT/plugin.lang.php b/sources/plugins/c13y_upgrade/language/it_IT/plugin.lang.php new file mode 100644 index 0000000..66cac93 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/it_IT/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ja_JP/description.txt b/sources/plugins/c13y_upgrade/language/ja_JP/description.txt new file mode 100644 index 0000000..b5f0edb --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ja_JP/description.txt @@ -0,0 +1 @@ +Check integrity of upgrades. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ja_JP/index.php b/sources/plugins/c13y_upgrade/language/ja_JP/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ja_JP/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/ja_JP/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ja_JP/plugin.lang.php new file mode 100644 index 0000000..0c7de87 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ja_JP/plugin.lang.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/ka_GE/description.txt b/sources/plugins/c13y_upgrade/language/ka_GE/description.txt new file mode 100644 index 0000000..0c99f15 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ka_GE/description.txt @@ -0,0 +1 @@ +შეამოწმეთ განახლების მთლიანობა. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ka_GE/index.php b/sources/plugins/c13y_upgrade/language/ka_GE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ka_GE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/ka_GE/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ka_GE/plugin.lang.php new file mode 100644 index 0000000..417bca5 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ka_GE/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/kn_IN/description.txt b/sources/plugins/c13y_upgrade/language/kn_IN/description.txt new file mode 100755 index 0000000..2f4997f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/kn_IN/description.txt @@ -0,0 +1 @@ +ನವೀಕರಣಗಳ ಸಮಗ್ರತೆ ಯನ್ನು ಪರೀಕ್ಷಿಸಿ. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/kn_IN/plugin.lang.php b/sources/plugins/c13y_upgrade/language/kn_IN/plugin.lang.php new file mode 100755 index 0000000..e1960ee --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/kn_IN/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ko_KR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ko_KR/plugin.lang.php new file mode 100755 index 0000000..fb0c938 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ko_KR/plugin.lang.php @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/lt_LT/description.txt b/sources/plugins/c13y_upgrade/language/lt_LT/description.txt new file mode 100755 index 0000000..773c5cb --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/lt_LT/description.txt @@ -0,0 +1 @@ +Tikrinti atnaujinimų vientisumą \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/lt_LT/plugin.lang.php b/sources/plugins/c13y_upgrade/language/lt_LT/plugin.lang.php new file mode 100755 index 0000000..6f79fa6 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/lt_LT/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/lv_LV/description.txt b/sources/plugins/c13y_upgrade/language/lv_LV/description.txt new file mode 100644 index 0000000..79d625b --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/lv_LV/description.txt @@ -0,0 +1 @@ +Uzlabojumu integritātes pārbaude. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/lv_LV/index.php b/sources/plugins/c13y_upgrade/language/lv_LV/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/lv_LV/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/lv_LV/plugin.lang.php b/sources/plugins/c13y_upgrade/language/lv_LV/plugin.lang.php new file mode 100644 index 0000000..d81edd6 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/lv_LV/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/nb_NO/description.txt b/sources/plugins/c13y_upgrade/language/nb_NO/description.txt new file mode 100644 index 0000000..c58ae33 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nb_NO/description.txt @@ -0,0 +1 @@ +Sjekker integriteten til oppdateringer. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/nb_NO/index.php b/sources/plugins/c13y_upgrade/language/nb_NO/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nb_NO/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/nb_NO/plugin.lang.php b/sources/plugins/c13y_upgrade/language/nb_NO/plugin.lang.php new file mode 100644 index 0000000..4961ea8 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nb_NO/plugin.lang.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/nl_NL/description.txt b/sources/plugins/c13y_upgrade/language/nl_NL/description.txt new file mode 100644 index 0000000..634a345 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nl_NL/description.txt @@ -0,0 +1 @@ +Controleer de integriteit van de upgrades. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/nl_NL/index.php b/sources/plugins/c13y_upgrade/language/nl_NL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nl_NL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/nl_NL/plugin.lang.php b/sources/plugins/c13y_upgrade/language/nl_NL/plugin.lang.php new file mode 100644 index 0000000..652a1f4 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nl_NL/plugin.lang.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/nn_NO/description.txt b/sources/plugins/c13y_upgrade/language/nn_NO/description.txt new file mode 100755 index 0000000..e45ba0c --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nn_NO/description.txt @@ -0,0 +1 @@ +Sjekk integriteten av ein oppgradering. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/nn_NO/plugin.lang.php b/sources/plugins/c13y_upgrade/language/nn_NO/plugin.lang.php new file mode 100755 index 0000000..217e199 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/nn_NO/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/pl_PL/description.txt b/sources/plugins/c13y_upgrade/language/pl_PL/description.txt new file mode 100644 index 0000000..b256453 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pl_PL/description.txt @@ -0,0 +1 @@ +Sprawdzanie integralności uaktualnień. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/pl_PL/index.php b/sources/plugins/c13y_upgrade/language/pl_PL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pl_PL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/pl_PL/plugin.lang.php b/sources/plugins/c13y_upgrade/language/pl_PL/plugin.lang.php new file mode 100644 index 0000000..5834f4d --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pl_PL/plugin.lang.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/pt_BR/description.txt b/sources/plugins/c13y_upgrade/language/pt_BR/description.txt new file mode 100755 index 0000000..c9ed53d --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pt_BR/description.txt @@ -0,0 +1 @@ +Verifique a integridade de atualizações. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/pt_BR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/pt_BR/plugin.lang.php new file mode 100755 index 0000000..c7a8df8 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pt_BR/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/pt_PT/description.txt b/sources/plugins/c13y_upgrade/language/pt_PT/description.txt new file mode 100644 index 0000000..ea36103 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pt_PT/description.txt @@ -0,0 +1 @@ +Teste a integridade das actualizações. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/pt_PT/index.php b/sources/plugins/c13y_upgrade/language/pt_PT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pt_PT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/pt_PT/plugin.lang.php b/sources/plugins/c13y_upgrade/language/pt_PT/plugin.lang.php new file mode 100644 index 0000000..c9d50bf --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/pt_PT/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ro_RO/description.txt b/sources/plugins/c13y_upgrade/language/ro_RO/description.txt new file mode 100755 index 0000000..c6685a2 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ro_RO/description.txt @@ -0,0 +1 @@ +Verifică integritatea actualizărilor. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ro_RO/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ro_RO/plugin.lang.php new file mode 100755 index 0000000..fd1d22a --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ro_RO/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ru_RU/description.txt b/sources/plugins/c13y_upgrade/language/ru_RU/description.txt new file mode 100644 index 0000000..4fb2f85 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ru_RU/description.txt @@ -0,0 +1 @@ +Проверка целостности обновлений. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ru_RU/index.php b/sources/plugins/c13y_upgrade/language/ru_RU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ru_RU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/ru_RU/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ru_RU/plugin.lang.php new file mode 100644 index 0000000..5caf3c3 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ru_RU/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/sh_RS/plugin.lang.php b/sources/plugins/c13y_upgrade/language/sh_RS/plugin.lang.php new file mode 100644 index 0000000..23b638b --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sh_RS/plugin.lang.php @@ -0,0 +1,27 @@ + diff --git a/sources/plugins/c13y_upgrade/language/sk_SK/plugin.lang.php b/sources/plugins/c13y_upgrade/language/sk_SK/plugin.lang.php new file mode 100644 index 0000000..753a4dd --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sk_SK/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/sl_SI/description.txt b/sources/plugins/c13y_upgrade/language/sl_SI/description.txt new file mode 100755 index 0000000..ca74caf --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sl_SI/description.txt @@ -0,0 +1 @@ +Preveri celovitost nadgradnje \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/sl_SI/plugin.lang.php b/sources/plugins/c13y_upgrade/language/sl_SI/plugin.lang.php new file mode 100755 index 0000000..6034ac0 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sl_SI/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/sr_RS/description.txt b/sources/plugins/c13y_upgrade/language/sr_RS/description.txt new file mode 100644 index 0000000..f70ae23 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sr_RS/description.txt @@ -0,0 +1 @@ +Провера стабилности надоградње. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/sr_RS/index.php b/sources/plugins/c13y_upgrade/language/sr_RS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sr_RS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/sr_RS/plugin.lang.php b/sources/plugins/c13y_upgrade/language/sr_RS/plugin.lang.php new file mode 100644 index 0000000..1785907 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sr_RS/plugin.lang.php @@ -0,0 +1,29 @@ + diff --git a/sources/plugins/c13y_upgrade/language/sv_SE/plugin.lang.php b/sources/plugins/c13y_upgrade/language/sv_SE/plugin.lang.php new file mode 100644 index 0000000..b7fddaf --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/sv_SE/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ta_IN/description.txt b/sources/plugins/c13y_upgrade/language/ta_IN/description.txt new file mode 100755 index 0000000..0694a0c --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ta_IN/description.txt @@ -0,0 +1 @@ +மேம்படுத்த முழுமையை சரிபார்க்கவும். \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/ta_IN/plugin.lang.php b/sources/plugins/c13y_upgrade/language/ta_IN/plugin.lang.php new file mode 100755 index 0000000..802defe --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/ta_IN/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/th_TH/description.txt b/sources/plugins/c13y_upgrade/language/th_TH/description.txt new file mode 100755 index 0000000..e4bc37a --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/th_TH/description.txt @@ -0,0 +1 @@ +ตรวจสอบความสมบูรณ์ของการอัพเกรด \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/th_TH/plugin.lang.php b/sources/plugins/c13y_upgrade/language/th_TH/plugin.lang.php new file mode 100755 index 0000000..f601be5 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/th_TH/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/tr_TR/description.txt b/sources/plugins/c13y_upgrade/language/tr_TR/description.txt new file mode 100644 index 0000000..61c9de9 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/tr_TR/description.txt @@ -0,0 +1 @@ +Yükseltmelerin bütünlüğünü kontrol edin. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/tr_TR/index.php b/sources/plugins/c13y_upgrade/language/tr_TR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/tr_TR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/tr_TR/plugin.lang.php b/sources/plugins/c13y_upgrade/language/tr_TR/plugin.lang.php new file mode 100644 index 0000000..64bc8e1 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/tr_TR/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/uk_UA/description.txt b/sources/plugins/c13y_upgrade/language/uk_UA/description.txt new file mode 100755 index 0000000..bab65ce --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/uk_UA/description.txt @@ -0,0 +1 @@ +Перевірте цілісність оновлень. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/uk_UA/plugin.lang.php b/sources/plugins/c13y_upgrade/language/uk_UA/plugin.lang.php new file mode 100755 index 0000000..4bef99f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/uk_UA/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/vi_VN/description.txt b/sources/plugins/c13y_upgrade/language/vi_VN/description.txt new file mode 100644 index 0000000..47d0052 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/vi_VN/description.txt @@ -0,0 +1 @@ +Kiểm tra tính nguyên vẹn của bản nâng cấp. \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/vi_VN/index.php b/sources/plugins/c13y_upgrade/language/vi_VN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/vi_VN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/vi_VN/plugin.lang.php b/sources/plugins/c13y_upgrade/language/vi_VN/plugin.lang.php new file mode 100644 index 0000000..9b34ee5 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/vi_VN/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/zh_CN/description.txt b/sources/plugins/c13y_upgrade/language/zh_CN/description.txt new file mode 100644 index 0000000..cff491d --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_CN/description.txt @@ -0,0 +1 @@ +检查升级的完整性。 \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/zh_CN/index.php b/sources/plugins/c13y_upgrade/language/zh_CN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_CN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/zh_CN/plugin.lang.php b/sources/plugins/c13y_upgrade/language/zh_CN/plugin.lang.php new file mode 100644 index 0000000..24986c8 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_CN/plugin.lang.php @@ -0,0 +1,31 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/zh_HK/description.txt b/sources/plugins/c13y_upgrade/language/zh_HK/description.txt new file mode 100755 index 0000000..0e7a078 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_HK/description.txt @@ -0,0 +1 @@ +檢查升級完整性。 \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/zh_HK/plugin.lang.php b/sources/plugins/c13y_upgrade/language/zh_HK/plugin.lang.php new file mode 100755 index 0000000..6225cd9 --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_HK/plugin.lang.php @@ -0,0 +1,28 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/zh_TW/description.txt b/sources/plugins/c13y_upgrade/language/zh_TW/description.txt new file mode 100644 index 0000000..6ffd2df --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_TW/description.txt @@ -0,0 +1 @@ +檢查更新版本的完整性。 \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/language/zh_TW/index.php b/sources/plugins/c13y_upgrade/language/zh_TW/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_TW/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/c13y_upgrade/language/zh_TW/plugin.lang.php b/sources/plugins/c13y_upgrade/language/zh_TW/plugin.lang.php new file mode 100644 index 0000000..5ab1cbc --- /dev/null +++ b/sources/plugins/c13y_upgrade/language/zh_TW/plugin.lang.php @@ -0,0 +1,30 @@ + \ No newline at end of file diff --git a/sources/plugins/c13y_upgrade/main.inc.php b/sources/plugins/c13y_upgrade/main.inc.php new file mode 100644 index 0000000..4d6be6c --- /dev/null +++ b/sources/plugins/c13y_upgrade/main.inc.php @@ -0,0 +1,46 @@ + diff --git a/sources/plugins/index.php b/sources/plugins/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/flag_sprite.jpg b/sources/plugins/language_switch/flag_sprite.jpg new file mode 100644 index 0000000..c22450d Binary files /dev/null and b/sources/plugins/language_switch/flag_sprite.jpg differ diff --git a/sources/plugins/language_switch/flag_sprite_original.png b/sources/plugins/language_switch/flag_sprite_original.png new file mode 100644 index 0000000..dc95afd Binary files /dev/null and b/sources/plugins/language_switch/flag_sprite_original.png differ diff --git a/sources/plugins/language_switch/flags.tpl b/sources/plugins/language_switch/flags.tpl new file mode 100644 index 0000000..089e396 --- /dev/null +++ b/sources/plugins/language_switch/flags.tpl @@ -0,0 +1,33 @@ +
        • {strip} +  {'Language'|@translate} + +
          +
          {'Language'|@translate}
          + {foreach from=$lang_switch.flags item=flag name=f} + + {if $lang_info.direction=="ltr"}{$flag.alt}{$flag.title}{else}{$flag.title}{$flag.alt}{/if} + + {if ($smarty.foreach.f.index+1)%3 == 0}
          {/if} + {/foreach} +
          +{/strip}
        • + +{footer_script require='jquery'}{literal} +jQuery("#languageSwitchLink").click(function() { + var elt = jQuery("#languageSwitchBox"); + elt.css("left", Math.min(jQuery(this).offset().left, jQuery(window).width() - elt.outerWidth(true) - 5)) + .css("top", jQuery(this).offset().top + jQuery(this).outerHeight(true)) + .toggle(); +}); +jQuery("#languageSwitchBox").on("mouseleave", function() { + jQuery(this).hide(); +}); +{/literal}{/footer_script} + +{* *} +{if $LANGUAGE_SWITCH_LOAD_STYLE} +{combine_css path=$LANGUAGE_SWITCH_PATH|@cat:"style.css"} +{/if} + +{* *} +{combine_css path=$LANGUAGE_SWITCH_PATH|@cat:"language_switch.css"} \ No newline at end of file diff --git a/sources/plugins/language_switch/index.php b/sources/plugins/language_switch/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/af_ZA/description.txt b/sources/plugins/language_switch/language/af_ZA/description.txt new file mode 100755 index 0000000..5b5fb07 --- /dev/null +++ b/sources/plugins/language_switch/language/af_ZA/description.txt @@ -0,0 +1 @@ +Skakel na 'n ander taal deur vlae op jou gallery se tuisblad. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/af_ZA/index.php b/sources/plugins/language_switch/language/af_ZA/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/af_ZA/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/ar_SA/description.txt b/sources/plugins/language_switch/language/ar_SA/description.txt new file mode 100644 index 0000000..b0dec5d --- /dev/null +++ b/sources/plugins/language_switch/language/ar_SA/description.txt @@ -0,0 +1 @@ +التبديل إلى لغة أخرى من الأعلام على الصفحة الرئيسية لمعرض الصور \ No newline at end of file diff --git a/sources/plugins/language_switch/language/ar_SA/index.php b/sources/plugins/language_switch/language/ar_SA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/ar_SA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/bg_BG/description.txt b/sources/plugins/language_switch/language/bg_BG/description.txt new file mode 100755 index 0000000..c35a94e --- /dev/null +++ b/sources/plugins/language_switch/language/bg_BG/description.txt @@ -0,0 +1,2 @@ +Language Switch - Промяна на език +Български [BG] \ No newline at end of file diff --git a/sources/plugins/language_switch/language/bg_BG/index.php b/sources/plugins/language_switch/language/bg_BG/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/bg_BG/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/br_FR/description.txt b/sources/plugins/language_switch/language/br_FR/description.txt new file mode 100755 index 0000000..d823ada --- /dev/null +++ b/sources/plugins/language_switch/language/br_FR/description.txt @@ -0,0 +1 @@ +Cheñchit yezh gant bannieloù war ho pajenn-degemer. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/ca_ES/description.txt b/sources/plugins/language_switch/language/ca_ES/description.txt new file mode 100755 index 0000000..e7b2bed --- /dev/null +++ b/sources/plugins/language_switch/language/ca_ES/description.txt @@ -0,0 +1 @@ +Canvia fàcilment l'idioma de la galeria. Es mostren banderes com a símbol dels idiomes disponibles. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/cs_CZ/description.txt b/sources/plugins/language_switch/language/cs_CZ/description.txt new file mode 100644 index 0000000..a355801 --- /dev/null +++ b/sources/plugins/language_switch/language/cs_CZ/description.txt @@ -0,0 +1 @@ +Pøepíná do jiného jazyka podle vlajeèek na hlavní stránce galerie. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/cs_CZ/index.php b/sources/plugins/language_switch/language/cs_CZ/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/cs_CZ/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/da_DK/description.txt b/sources/plugins/language_switch/language/da_DK/description.txt new file mode 100755 index 0000000..097eba5 --- /dev/null +++ b/sources/plugins/language_switch/language/da_DK/description.txt @@ -0,0 +1 @@ +Skift til et andet sprog via flag på dit galleris forside. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/de_DE/description.txt b/sources/plugins/language_switch/language/de_DE/description.txt new file mode 100644 index 0000000..dcf2b6d --- /dev/null +++ b/sources/plugins/language_switch/language/de_DE/description.txt @@ -0,0 +1 @@ +Ändert die Sprache der Galerie durch Anklicken einer Landesfahne. diff --git a/sources/plugins/language_switch/language/de_DE/index.php b/sources/plugins/language_switch/language/de_DE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/de_DE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/el_GR/description.txt b/sources/plugins/language_switch/language/el_GR/description.txt new file mode 100755 index 0000000..1b32b23 --- /dev/null +++ b/sources/plugins/language_switch/language/el_GR/description.txt @@ -0,0 +1 @@ +Αλλαγ? σε ?λλη γλ?σσα απ? εικον?διο σημα?ας στην αρχικ? σελ?δα γκαλερ? σας. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/en_UK/description.txt b/sources/plugins/language_switch/language/en_UK/description.txt new file mode 100644 index 0000000..6dd277e --- /dev/null +++ b/sources/plugins/language_switch/language/en_UK/description.txt @@ -0,0 +1 @@ +Switch to another language using the flags on your gallery home page. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/en_UK/index.php b/sources/plugins/language_switch/language/en_UK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/en_UK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/eo_EO/description.txt b/sources/plugins/language_switch/language/eo_EO/description.txt new file mode 100755 index 0000000..e25c9e7 --- /dev/null +++ b/sources/plugins/language_switch/language/eo_EO/description.txt @@ -0,0 +1 @@ +Ŝaltu al alia lingvo pere de la flagoj ĉe la hejmpaĝo de via galerio. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/es_ES/description.txt b/sources/plugins/language_switch/language/es_ES/description.txt new file mode 100644 index 0000000..27ae235 --- /dev/null +++ b/sources/plugins/language_switch/language/es_ES/description.txt @@ -0,0 +1 @@ +Cambiar el idioma de la galería con facilidad de las banderas de la página de inicio. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/es_ES/index.php b/sources/plugins/language_switch/language/es_ES/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/es_ES/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/et_EE/description.txt b/sources/plugins/language_switch/language/et_EE/description.txt new file mode 100755 index 0000000..a1b4411 --- /dev/null +++ b/sources/plugins/language_switch/language/et_EE/description.txt @@ -0,0 +1 @@ +Vali keel vajutades lipule su galerii leheküljel. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/et_EE/index.php b/sources/plugins/language_switch/language/et_EE/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/et_EE/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/fa_IR/description.txt b/sources/plugins/language_switch/language/fa_IR/description.txt new file mode 100755 index 0000000..e33630f --- /dev/null +++ b/sources/plugins/language_switch/language/fa_IR/description.txt @@ -0,0 +1 @@ +به کمک عکس پرچم ها در صفحه ی اصلی گالری خود ، زبان گالری را تغییر دهید. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/fa_IR/index.php b/sources/plugins/language_switch/language/fa_IR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/fa_IR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/fi_FI/description.txt b/sources/plugins/language_switch/language/fi_FI/description.txt new file mode 100755 index 0000000..653e02b --- /dev/null +++ b/sources/plugins/language_switch/language/fi_FI/description.txt @@ -0,0 +1 @@ +Vaihda toiselle kielelle klikkaamalla lippua gallerian etusivulta. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/fr_CA/description.txt b/sources/plugins/language_switch/language/fr_CA/description.txt new file mode 100644 index 0000000..42d4c3a --- /dev/null +++ b/sources/plugins/language_switch/language/fr_CA/description.txt @@ -0,0 +1 @@ +Changez la langue de la galerie facilement à partir des drapeaux de la page d'accueil. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/fr_CA/index.php b/sources/plugins/language_switch/language/fr_CA/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/fr_CA/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/fr_FR/description.txt b/sources/plugins/language_switch/language/fr_FR/description.txt new file mode 100644 index 0000000..42d4c3a --- /dev/null +++ b/sources/plugins/language_switch/language/fr_FR/description.txt @@ -0,0 +1 @@ +Changez la langue de la galerie facilement à partir des drapeaux de la page d'accueil. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/fr_FR/index.php b/sources/plugins/language_switch/language/fr_FR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/fr_FR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/gl_ES/description.txt b/sources/plugins/language_switch/language/gl_ES/description.txt new file mode 100755 index 0000000..38a63f1 --- /dev/null +++ b/sources/plugins/language_switch/language/gl_ES/description.txt @@ -0,0 +1 @@ +Muda a outro idioma empregando as bandeiras na páxina de inicio da túa galería. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/he_IL/description.txt b/sources/plugins/language_switch/language/he_IL/description.txt new file mode 100644 index 0000000..56956c1 --- /dev/null +++ b/sources/plugins/language_switch/language/he_IL/description.txt @@ -0,0 +1 @@ +שנה לשפה אחרת מהדגל בדף הבית בגלריה שלך. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/he_IL/index.php b/sources/plugins/language_switch/language/he_IL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/he_IL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/hr_HR/description.txt b/sources/plugins/language_switch/language/hr_HR/description.txt new file mode 100644 index 0000000..f1a3fd8 --- /dev/null +++ b/sources/plugins/language_switch/language/hr_HR/description.txt @@ -0,0 +1 @@ +Prebacivanje na drugi jezik koristeći zastave na naslovnici galerije. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/hr_HR/index.php b/sources/plugins/language_switch/language/hr_HR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/hr_HR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/hu_HU/description.txt b/sources/plugins/language_switch/language/hu_HU/description.txt new file mode 100644 index 0000000..5326aeb --- /dev/null +++ b/sources/plugins/language_switch/language/hu_HU/description.txt @@ -0,0 +1 @@ +Galéria nyelvének változtatása a honlapon, zászló segítségével. diff --git a/sources/plugins/language_switch/language/hu_HU/index.php b/sources/plugins/language_switch/language/hu_HU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/hu_HU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/index.php b/sources/plugins/language_switch/language/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/it_IT/description.txt b/sources/plugins/language_switch/language/it_IT/description.txt new file mode 100644 index 0000000..f179c68 --- /dev/null +++ b/sources/plugins/language_switch/language/it_IT/description.txt @@ -0,0 +1 @@ +Cambiate facilmente la lingua della galleria grazie alle bandierine sulla pagina principale. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/it_IT/index.php b/sources/plugins/language_switch/language/it_IT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/it_IT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/ja_JP/description.txt b/sources/plugins/language_switch/language/ja_JP/description.txt new file mode 100644 index 0000000..8e5b3e8 --- /dev/null +++ b/sources/plugins/language_switch/language/ja_JP/description.txt @@ -0,0 +1 @@ +ギャラリーホームページで国旗を選んで言語を選べる \ No newline at end of file diff --git a/sources/plugins/language_switch/language/ja_JP/index.php b/sources/plugins/language_switch/language/ja_JP/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/ja_JP/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/ka_GE/description.txt b/sources/plugins/language_switch/language/ka_GE/description.txt new file mode 100644 index 0000000..cfb0ab8 --- /dev/null +++ b/sources/plugins/language_switch/language/ka_GE/description.txt @@ -0,0 +1 @@ +გადასვლა სხვა ენაზე დროშების საშუალებით თქვენი გალერეის მთავარ გვერდზე. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/ka_GE/index.php b/sources/plugins/language_switch/language/ka_GE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/ka_GE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/km_KH/description.txt b/sources/plugins/language_switch/language/km_KH/description.txt new file mode 100644 index 0000000..daa1c09 --- /dev/null +++ b/sources/plugins/language_switch/language/km_KH/description.txt @@ -0,0 +1 @@ +ផ្តូរ​ទៅ​ភាសាដទៃ​ទៀត ដោយការ​ប្រើប្រាស់​រូប​ទង់ជាតិ​លើទំព័រ​វិចិត្រសាល​របស់​អ្នក។ \ No newline at end of file diff --git a/sources/plugins/language_switch/language/km_KH/index.php b/sources/plugins/language_switch/language/km_KH/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/km_KH/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/kn_IN/description.txt b/sources/plugins/language_switch/language/kn_IN/description.txt new file mode 100755 index 0000000..5f2373b --- /dev/null +++ b/sources/plugins/language_switch/language/kn_IN/description.txt @@ -0,0 +1 @@ +ನಿಮ್ಮ ಚಿತ್ರಾಂಗಣದ (ಗ್ಯಾಲರಿಯ) ಮುಖಪುಟದಲ್ಲಿರುವ ಬಾವುಟಗಳ ಸಂಕೇತವನ್ನು ಬಳಸಿ ಬೇರೊಂದು ಭಾಷೆಗೆ ಬದಲಿಸಿ. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/lt_LT/description.txt b/sources/plugins/language_switch/language/lt_LT/description.txt new file mode 100755 index 0000000..a90140a --- /dev/null +++ b/sources/plugins/language_switch/language/lt_LT/description.txt @@ -0,0 +1 @@ +Savo galerijos pradiniame puslapyje galite perjungti kalbą naudodamiesi vėlevėlėmis. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/lv_LV/description.txt b/sources/plugins/language_switch/language/lv_LV/description.txt new file mode 100644 index 0000000..738fcc5 --- /dev/null +++ b/sources/plugins/language_switch/language/lv_LV/description.txt @@ -0,0 +1 @@ +Pārslēgšanās uz citu valodu, izmantojot karodziņus Jūsu galerijas mājas lapā \ No newline at end of file diff --git a/sources/plugins/language_switch/language/lv_LV/index.php b/sources/plugins/language_switch/language/lv_LV/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/lv_LV/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/mn_MN/description.txt b/sources/plugins/language_switch/language/mn_MN/description.txt new file mode 100755 index 0000000..7302525 --- /dev/null +++ b/sources/plugins/language_switch/language/mn_MN/description.txt @@ -0,0 +1 @@ +Хэлээ солихыг хүсвэл нүүр хуудасан дахь далбааны зурагнаас сонгоно уу. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/mn_MN/index.php b/sources/plugins/language_switch/language/mn_MN/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/mn_MN/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/nb_NO/description.txt b/sources/plugins/language_switch/language/nb_NO/description.txt new file mode 100644 index 0000000..76986a9 --- /dev/null +++ b/sources/plugins/language_switch/language/nb_NO/description.txt @@ -0,0 +1 @@ +Bytt til et annet språk via språkvelger på ditt galleris hjemmeside. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/nb_NO/index.php b/sources/plugins/language_switch/language/nb_NO/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/nb_NO/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/nl_NL/description.txt b/sources/plugins/language_switch/language/nl_NL/description.txt new file mode 100644 index 0000000..0935fac --- /dev/null +++ b/sources/plugins/language_switch/language/nl_NL/description.txt @@ -0,0 +1 @@ +Gebruik de landen-vlaggetjes op uw galerie-startpagina om van taal te wisselen. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/nl_NL/index.php b/sources/plugins/language_switch/language/nl_NL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/nl_NL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/nn_NO/description.txt b/sources/plugins/language_switch/language/nn_NO/description.txt new file mode 100755 index 0000000..b7f698c --- /dev/null +++ b/sources/plugins/language_switch/language/nn_NO/description.txt @@ -0,0 +1 @@ +Bytt til eit anna språk ved å bruke flaggsymbol på startsida på galleriet. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/pl_PL/description.txt b/sources/plugins/language_switch/language/pl_PL/description.txt new file mode 100644 index 0000000..d3669e0 --- /dev/null +++ b/sources/plugins/language_switch/language/pl_PL/description.txt @@ -0,0 +1 @@ +Przełączanie na inny język poprzez ikony flag na stronie głównej Twojej galerii. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/pl_PL/index.php b/sources/plugins/language_switch/language/pl_PL/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/pl_PL/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/pt_BR/description.txt b/sources/plugins/language_switch/language/pt_BR/description.txt new file mode 100755 index 0000000..8d6d708 --- /dev/null +++ b/sources/plugins/language_switch/language/pt_BR/description.txt @@ -0,0 +1 @@ +Troque para outro idioma usando as bandeiras na página da sua galeria. diff --git a/sources/plugins/language_switch/language/pt_BR/index.php b/sources/plugins/language_switch/language/pt_BR/index.php new file mode 100644 index 0000000..ec66053 --- /dev/null +++ b/sources/plugins/language_switch/language/pt_BR/index.php @@ -0,0 +1,7 @@ + diff --git a/sources/plugins/language_switch/language/pt_PT/description.txt b/sources/plugins/language_switch/language/pt_PT/description.txt new file mode 100644 index 0000000..b54b2a2 --- /dev/null +++ b/sources/plugins/language_switch/language/pt_PT/description.txt @@ -0,0 +1 @@ +Mude para outro idioma clicando na bandeira correspondente ao idioma existentes na página de entrada da sua galeria. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/pt_PT/index.php b/sources/plugins/language_switch/language/pt_PT/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/pt_PT/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/ro_RO/description.txt b/sources/plugins/language_switch/language/ro_RO/description.txt new file mode 100755 index 0000000..97b3cb0 --- /dev/null +++ b/sources/plugins/language_switch/language/ro_RO/description.txt @@ -0,0 +1 @@ +Comutați într-o o altă limbă folosind steagurile de pe pagina de start a galeriei. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/ru_RU/description.txt b/sources/plugins/language_switch/language/ru_RU/description.txt new file mode 100644 index 0000000..487dbe6 --- /dev/null +++ b/sources/plugins/language_switch/language/ru_RU/description.txt @@ -0,0 +1 @@ +Позволяет переключать языки, нажимая на картинки флажков на главной странице Вашей галереи. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/ru_RU/index.php b/sources/plugins/language_switch/language/ru_RU/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/ru_RU/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/sh_RS/description.txt b/sources/plugins/language_switch/language/sh_RS/description.txt new file mode 100755 index 0000000..d01b7f9 --- /dev/null +++ b/sources/plugins/language_switch/language/sh_RS/description.txt @@ -0,0 +1 @@ +Promenite jezik preko zastavica na početnoj strani Vaše galerije. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/sk_SK/description.txt b/sources/plugins/language_switch/language/sk_SK/description.txt new file mode 100644 index 0000000..45368c7 --- /dev/null +++ b/sources/plugins/language_switch/language/sk_SK/description.txt @@ -0,0 +1 @@ +Prepínac na iný jazyk z vlajok vo Vašej galérii. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/sk_SK/index.php b/sources/plugins/language_switch/language/sk_SK/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/sk_SK/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/sl_SI/description.txt b/sources/plugins/language_switch/language/sl_SI/description.txt new file mode 100755 index 0000000..eed62d8 --- /dev/null +++ b/sources/plugins/language_switch/language/sl_SI/description.txt @@ -0,0 +1 @@ +Za spremembo jezika kliknite zastavico na domači strani galerije. diff --git a/sources/plugins/language_switch/language/sr_RS/description.txt b/sources/plugins/language_switch/language/sr_RS/description.txt new file mode 100644 index 0000000..2ade27b --- /dev/null +++ b/sources/plugins/language_switch/language/sr_RS/description.txt @@ -0,0 +1 @@ +Промена на други језик преко заставе на почетној страници Ваше галерије. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/sr_RS/index.php b/sources/plugins/language_switch/language/sr_RS/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/sr_RS/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/sv_SE/description.txt b/sources/plugins/language_switch/language/sv_SE/description.txt new file mode 100644 index 0000000..07efaac --- /dev/null +++ b/sources/plugins/language_switch/language/sv_SE/description.txt @@ -0,0 +1 @@ +Byt till annat språk via flaggorna på ditt galleris hemsida. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/sv_SE/index.php b/sources/plugins/language_switch/language/sv_SE/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/sv_SE/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/ta_IN/description.txt b/sources/plugins/language_switch/language/ta_IN/description.txt new file mode 100755 index 0000000..cf89b85 --- /dev/null +++ b/sources/plugins/language_switch/language/ta_IN/description.txt @@ -0,0 +1 @@ +உங்கள் கேலரி இல்லப்பக்கத்தில் கொடிகளை பயன்படுத்தி வேறு ஒரு மொழியை மாற்றவும். \ No newline at end of file diff --git a/sources/plugins/language_switch/language/th_TH/description.txt b/sources/plugins/language_switch/language/th_TH/description.txt new file mode 100644 index 0000000..37737c2 --- /dev/null +++ b/sources/plugins/language_switch/language/th_TH/description.txt @@ -0,0 +1 @@ +สลับใช้ภาษาอื่นได้ง่ายๆ โดยคลิกรูปธงบนหน้าเว็บแกลลอรี่ของคุณ. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/th_TH/index.php b/sources/plugins/language_switch/language/th_TH/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/th_TH/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/tr_TR/description.txt b/sources/plugins/language_switch/language/tr_TR/description.txt new file mode 100644 index 0000000..f94f6ed --- /dev/null +++ b/sources/plugins/language_switch/language/tr_TR/description.txt @@ -0,0 +1 @@ +Ana sayfadaki dil bayraklarından dil değişimi. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/tr_TR/index.php b/sources/plugins/language_switch/language/tr_TR/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/tr_TR/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/uk_UA/description.txt b/sources/plugins/language_switch/language/uk_UA/description.txt new file mode 100644 index 0000000..3492ace --- /dev/null +++ b/sources/plugins/language_switch/language/uk_UA/description.txt @@ -0,0 +1 @@ +Перехід на іншу мову з прапорами на вашій домашній сторінці галереї. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/vi_VN/description.txt b/sources/plugins/language_switch/language/vi_VN/description.txt new file mode 100644 index 0000000..0119bdd --- /dev/null +++ b/sources/plugins/language_switch/language/vi_VN/description.txt @@ -0,0 +1 @@ +Chuyển sang ngôn ngữ khác từ biểu tượng lá cờ trên trang chủ Thư viện hình của bạn. \ No newline at end of file diff --git a/sources/plugins/language_switch/language/vi_VN/index.php b/sources/plugins/language_switch/language/vi_VN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/vi_VN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/zh_CN/description.txt b/sources/plugins/language_switch/language/zh_CN/description.txt new file mode 100644 index 0000000..be6e400 --- /dev/null +++ b/sources/plugins/language_switch/language/zh_CN/description.txt @@ -0,0 +1 @@ +在您的Piwigo首页使用旗帜图标来选择其他语言 \ No newline at end of file diff --git a/sources/plugins/language_switch/language/zh_CN/index.php b/sources/plugins/language_switch/language/zh_CN/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/zh_CN/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language/zh_HK/description.txt b/sources/plugins/language_switch/language/zh_HK/description.txt new file mode 100755 index 0000000..ced411f --- /dev/null +++ b/sources/plugins/language_switch/language/zh_HK/description.txt @@ -0,0 +1 @@ +使用照片庫主頁的旗幟圖標切換語言 \ No newline at end of file diff --git a/sources/plugins/language_switch/language/zh_TW/description.txt b/sources/plugins/language_switch/language/zh_TW/description.txt new file mode 100644 index 0000000..e913d67 --- /dev/null +++ b/sources/plugins/language_switch/language/zh_TW/description.txt @@ -0,0 +1 @@ +從你的相簿主頁,直接點選國旗以切換使用語言。 \ No newline at end of file diff --git a/sources/plugins/language_switch/language/zh_TW/index.php b/sources/plugins/language_switch/language/zh_TW/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/plugins/language_switch/language/zh_TW/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/plugins/language_switch/language_switch.css b/sources/plugins/language_switch/language_switch.css new file mode 100644 index 0000000..1d10e7e --- /dev/null +++ b/sources/plugins/language_switch/language_switch.css @@ -0,0 +1,273 @@ +#languageSwitchBox a { + display:inline-block; + width:130px; + text-decoration:none; + border:none; + text-transform:none; + margin-bottom:3px; + text-overflow:ellipsis; + white-space:nowrap; + overflow:hidden; + line-height:1.2em; +} +#languageSwitchLink span { + margin-bottom:5px; + margin-top:5px; +} +[class*="langflag-"] { + background-image:url('flag_sprite.jpg') !important; + background-repeat:no-repeat; + background-position:24px 16px; + margin-right:3px; + width:24px; + height:16px; + direction:ltr; +} + +/** Change the langflag-XX label to match a new language. All flags are represented there**/ +.langflag-ad { background-position:0px 0px; } +.langflag-ae { background-position:-24px 0px; } +.langflag-af { background-position:-48px 0px; } +.langflag-ag { background-position:-72px 0px; } +.langflag-al { background-position:-96px 0px; } +.langflag-am { background-position:-120px 0px; } +.langflag-an { background-position:-144px 0px; } +.langflag-ao { background-position:-168px 0px; } +.langflag-es_AR { background-position:-192px 0px; } +.langflag-as { background-position:-216px 0px; } +.langflag-at { background-position:-240px 0px; } +.langflag-aw { background-position:-264px 0px; } +.langflag-ax { background-position:-288px 0px; } +.langflag-az_AZ { background-position:-312px 0px; } +.langflag-ba { background-position:-336px 0px; } +.langflag-bb { background-position:0px -16px; } +.langflag-bd { background-position:-24px -16px; } +.langflag-be { background-position:-48px -16px; } +.langflag-bf { background-position:-72px -16px; } +.langflag-bg_BG { background-position:-96px -16px; } +.langflag-bh { background-position:-120px -16px; } +.langflag-bi { background-position:-144px -16px; } +.langflag-bj { background-position:-168px -16px; } +.langflag-bl { background-position:-192px -16px; } +.langflag-bm { background-position:-216px -16px; } +.langflag-bn{ background-position:-240px -16px; } +.langflag-bo { background-position:-264px -16px; } +.langflag-bonaire { background-position:-288px -16px; } +.langflag-pt_BR { background-position:-312px -16px; } +.langflag-bs { background-position:-336px -16px; } +.langflag-bt { background-position:0px -32px; } +.langflag-bv { background-position:-24px -32px; } +.langflag-bw { background-position:-48px -32px; } +.langflag-by { background-position:-72px -32px; } +.langflag-bz { background-position:-96px -32px; } +.langflag-ca { background-position:-120px -32px; } +.langflag-ca_ES { background-position:-144px -32px; } +.langflag-cc { background-position:-168px -32px; } +.langflag-cd { background-position:-192px -32px; } +.langflag-cf { background-position:-216px -32px; } +.langflag-cg { background-position:-240px -32px; } +.langflag-ch { background-position:-264px -32px; } +.langflag-ci { background-position:-288px -32px; } +.langflag-cl { background-position:-312px -32px; } +.langflag-cm { background-position:-336px -32px; } +.langflag-zh_CN { background-position:0px -48px; } +.langflag-co { background-position:-24px -48px; } +.langflag-cr { background-position:-48px -48px; } +.langflag-cs_CZ { background-position:-72px -48px; } +.langflag-cu { background-position:-96px -48px; } +.langflag-cv { background-position:-120px -48px; } +.langflag-cx { background-position:-144px -48px; } +.langflag-cy { background-position:-168px -48px; } +.langflag-cz { background-position:-192px -48px; } +.langflag-de_DE { background-position:-216px -48px; } +.langflag-dj { background-position:-240px -48px; } +.langflag-da_DK { background-position:-264px -48px; } +.langflag-dm { background-position:-288px -48px; } +.langflag-do { background-position:-312px -48px; } +.langflag-dz { background-position:-336px -48px; } +.langflag-ec { background-position:0px -64px; } +.langflag-et_EE { background-position:-24px -64px; } +.langflag-eg { background-position:-48px -64px; } +.langflag-eh { background-position:-72px -64px; } +.langflag-en_UK { background-position:-96px -64px; } +.langflag-eo_EO { background-position:-120px -64px; } +.langflag-er { background-position:-144px -64px; } +.langflag-es_ES { background-position:-168px -64px; } +.langflag-et { background-position:-192px -64px; } +.langflag-fi_FI { background-position:-216px -64px; } +.langflag-fm { background-position:-240px -64px; } +.langflag-fo { background-position:-264px -64px; } +.langflag-fr_FR { background-position:-288px -64px; } +.langflag-ga { background-position:-312px -64px; } +.langflag-gb { background-position:-336px -64px; } +.langflag-en_GB { background-position:-336px -64px; } +.langflag-gd { background-position:0px -80px; } +.langflag-ka_GE { background-position:-24px -80px; } +.langflag-gg { background-position:-48px -80px; } +.langflag-gh { background-position:-72px -80px; } +.langflag-gi { background-position:-96px -80px; } +.langflag-gl { background-position:-120px -80px; } +.langflag-gm { background-position:-144px -80px; } +.langflag-gn { background-position:-168px -80px; } +.langflag-gq { background-position:-192px -80px; } +.langflag-el_GR { background-position:-216px -80px; } +.langflag-gt { background-position:-240px -80px; } +.langflag-gu { background-position:-264px -80px; } +.langflag-gw { background-position:-288px -80px; } +.langflag-gy { background-position:-312px -80px; } +.langflag-zh_HK { background-position:-336px -80px; } +.langflag-hn { background-position:0px -96px; } +.langflag-hr_HR { background-position:-24px -96px; } +.langflag-ht { background-position:-48px -96px; } +.langflag-hu_HU { background-position:-72px -96px; } +.langflag-id_ID { background-position:-96px -96px; } +.langflag-ie { background-position:-120px -96px; } +.langflag-ga_IE { background-position:-120px -96px; } +.langflag-he_IL { background-position:-144px -96px; } +.langflag-im { background-position:-168px -96px; } +.langflag-kok_IN { background-position:-192px -96px; } +.langflag-ta_IN { background-position:-192px -96px; } +.langflag-bn_IN { background-position:-192px -96px; } +.langflag-kn_IN { background-position:-192px -96px; } +.langflag-iq { background-position:-216px -96px; } +.langflag-fa_IR { background-position:-240px -96px; } +.langflag-is_IS { background-position:-264px -96px; } +.langflag-it_IT { background-position:-288px -96px; } +.langflag-je { background-position:-312px -96px; } +.langflag-jm { background-position:-336px -96px; } +.langflag-jo { background-position:0px -112px; } +.langflag-ja_JP { background-position:-24px -112px; } +.langflag-ke { background-position:-48px -112px; } +.langflag-kg { background-position:-72px -112px; } +.langflag-km_KH { background-position:-96px -112px; } +.langflag-ki { background-position:-120px -112px; } +.langflag-km { background-position:-144px -112px; } +.langflag-kn { background-position:-168px -112px; } +.langflag-kosovo { background-position:-192px -112px; } +.langflag-kp { background-position:-216px -112px; } +.langflag-ko_KR { background-position:-240px -112px; } +.langflag-kw { background-position:-264px -112px; } +.langflag-kz { background-position:-288px -112px; } +.langflag-la { background-position:-312px -112px; } +.langflag-lb { background-position:-336px -112px; } +.langflag-lc { background-position:0px -128px; } +.langflag-li { background-position:-24px -128px; } +.langflag-lk { background-position:-48px -128px; } +.langflag-lr { background-position:-72px -128px; } +.langflag-ls { background-position:-96px -128px; } +.langflag-lt_LT { background-position:-120px -128px; } +.langflag-lu { background-position:-144px -128px; } +.langflag-lb_LU { background-position:-144px -128px; } +.langflag-lv_LV { background-position:-168px -128px; } +.langflag-ly { background-position:-192px -128px; } +.langflag-ar_MA { background-position:-216px -128px; } +.langflag-mc { background-position:-240px -128px; } +.langflag-md { background-position:-264px -128px; } +.langflag-me { background-position:-288px -128px; } +.langflag-mg { background-position:-312px -128px; } +.langflag-mh { background-position:-336px -128px; } +.langflag-mk_MK { background-position:0px -144px; } +.langflag-ml { background-position:-24px -144px; } +.langflag-mm { background-position:-48px -144px; } +.langflag-mn_MN { background-position:-72px -144px; } +.langflag-mo { background-position:-96px -144px; } +.langflag-mp { background-position:-120px -144px; } +.langflag-mq { background-position:-144px -144px; } +.langflag-mr { background-position:-168px -144px; } +.langflag-mt { background-position:-192px -144px; } +.langflag-mu { background-position:-216px -144px; } +.langflag-dv_MV { background-position:-240px -144px; } +.langflag-mw { background-position:-264px -144px; } +.langflag-mx { background-position:-288px -144px; } +.langflag-es_MX { background-position:-288px -144px; } +.langflag-ms_MY { background-position:-312px -144px; } +.langflag-mz { background-position:-336px -144px; } +.langflag-na { background-position:0px -160px; } +.langflag-ne { background-position:-24px -160px; } +.langflag-nf { background-position:-48px -160px; } +.langflag-ng { background-position:-72px -160px; } +.langflag-ni { background-position:-96px -160px; } +.langflag-nl_NL { background-position:-120px -160px; } +.langflag-nb_NO { background-position:-144px -160px; } +.langflag-nn_NO { background-position:-144px -160px; } +.langflag-np { background-position:-168px -160px; } +.langflag-nr { background-position:-192px -160px; } +.langflag-nu { background-position:-216px -160px; } +.langflag-om { background-position:-240px -160px; } +.langflag-pa { background-position:-264px -160px; } +.langflag-pe { background-position:-288px -160px; } +.langflag-pf { background-position:-312px -160px; } +.langflag-pg { background-position:-336px -160px; } +.langflag-ph { background-position:0px -176px; } +.langflag-pk { background-position:-24px -176px; } +.langflag-pl_PL { background-position:-48px -176px; } +.langflag-pm { background-position:-72px -176px; } +.langflag-pr { background-position:-96px -176px; } +.langflag-ps { background-position:-120px -176px; } +.langflag-pt_PT { background-position:-144px -176px; } +.langflag-pw { background-position:-168px -176px; } +.langflag-py { background-position:-192px -176px; } +.langflag-qa { background-position:-216px -176px; } +.langflag-fr_CA { background-position:-240px -176px; } +.langflag-ro_RO { background-position:-264px -176px; } +.langflag-sh_RS { background-position:-288px -176px; } +.langflag-sr_RS { background-position:-288px -176px; } +.langflag-ru_RU { background-position:-312px -176px; } +.langflag-rw { background-position:-336px -176px; } +.langflag-ar_SA { background-position:0px -192px; } +.langflag-saba { background-position:-24px -192px; } +.langflag-sark { background-position:-48px -192px; } +.langflag-sb { background-position:-72px -192px; } +.langflag-sc { background-position:-96px -192px; } +.langflag-scotland { background-position:-120px -192px; } +.langflag-sd { background-position:-144px -192px; } +.langflag-sv_SE { background-position:-168px -192px; } +.langflag-sg { background-position:-192px -192px; } +.langflag-sl_SI { background-position:-216px -192px; } +.langflag-sj { background-position:-240px -192px; } +.langflag-sk_SK { background-position:-264px -192px; } +.langflag-sl { background-position:-288px -192px; } +.langflag-sm { background-position:-312px -192px; } +.langflag-sn { background-position:-336px -192px; } +.langflag-wo_SN { background-position:-336px -192px; } +.langflag-so { background-position:0px -208px; } +.langflag-sr { background-position:-24px -208px; } +.langflag-st { background-position:-48px -208px; } +.langflag-sv { background-position:-72px -208px; } +.langflag-sy { background-position:-96px -208px; } +.langflag-sz { background-position:-120px -208px; } +.langflag-td { background-position:-144px -208px; } +.langflag-tg { background-position:-168px -208px; } +.langflag-th_TH { background-position:-192px -208px; } +.langflag-tj { background-position:-216px -208px; } +.langflag-tk { background-position:-240px -208px; } +.langflag-tl { background-position:-264px -208px; } +.langflag-tm { background-position:-288px -208px; } +.langflag-tn { background-position:-312px -208px; } +.langflag-to { background-position:-336px -208px; } +.langflag-tr_TR { background-position:0px -224px; } +.langflag-tt { background-position:-24px -224px; } +.langflag-zh_TW{ background-position:-48px -224px; } +.langflag-tz { background-position:-72px -224px; } +.langflag-uk_UA { background-position:-96px -224px; } +.langflag-ug { background-position:-120px -224px; } +.langflag-en_US { background-position:-144px -224px; } +.langflag-uy { background-position:-168px -224px; } +.langflag-uz { background-position:-192px -224px; } +.langflag-va { background-position:-216px -224px; } +.langflag-vc { background-position:-240px -224px; } +.langflag-ve { background-position:-264px -224px; } +.langflag-vi { background-position:-288px -224px; } +.langflag-vi_VN { background-position:-312px -224px; } +.langflag-vu { background-position:-336px -224px; } +.langflag-wales { background-position:0px -240px; } +.langflag-wf { background-position:-24px -240px; } +.langflag-ws { background-position:-48px -240px; } +.langflag-ye { background-position:-72px -240px; } +.langflag-yt { background-position:-96px -240px; } +.langflag-af_ZA { background-position:-120px -240px; } +.langflag-zm { background-position:-144px -240px; } +.langflag-zw { background-position:-168px -240px; } +.langflag-gl_ES { background-position:-192px -240px; } +.langflag-br_FR { background-position:-216px -240px; } +.langflag-eu_ES { background-position:-240px -240px; } \ No newline at end of file diff --git a/sources/plugins/language_switch/language_switch.inc.php b/sources/plugins/language_switch/language_switch.inc.php new file mode 100644 index 0000000..8a7e628 --- /dev/null +++ b/sources/plugins/language_switch/language_switch.inc.php @@ -0,0 +1,140 @@ +fs_languages)) ) + { + $_GET['lang'] = PHPWG_DEFAULT_LANGUAGE; + } + + if ( !empty($_GET['lang']) and file_exists(PHPWG_ROOT_PATH.'language/'.$_GET['lang'].'/common.lang.php') ) + { + if ( is_a_guest() or is_generic() ) + { + pwg_set_session_var('lang_switch', $_GET['lang']); + } + else + { + $query = ' +UPDATE '.USER_INFOS_TABLE.' + SET language = \''.$_GET['lang'].'\' + WHERE user_id = '.$user['id'].' +;'; + pwg_query($query); + } + + $user['language'] = $_GET['lang']; + } + } + elseif ( (is_a_guest() or is_generic()) ) + { + $user['language'] = pwg_get_session_var('lang_switch', $user['language']); + } + + // Reload language only if it isn't the same one + if ( $same !== $user['language'] ) + { + load_language('common.lang', '', array('language'=>$user['language'])); + + load_language( + 'lang', + PHPWG_ROOT_PATH.PWG_LOCAL_DIR, + array( + 'language' => $user['language'], + 'no_fallback' => true, + 'local' => true + ) + ); + + if ( defined('IN_ADMIN') and IN_ADMIN ) + { + // Never currently + load_language('admin.lang', '', array('language'=>$user['language'])); + } + } +} + +function language_controler_flags() +{ + global $user, $template, $conf, $page; + + $available_lang = get_languages(); + + if (isset($conf['no_flag_languages'])) + { + $available_lang = array_diff_key($available_lang, array_flip($conf['no_flag_languages'])); + } + + $url_starting = get_query_string_diff(array('lang')); + + if (isset($page['section']) and $page['section'] == 'additional_page' and isset($page['additional_page'])) + { + $base_url = make_index_url(array('section'=>'page')).'/'.(isset($page['additional_page']['permalink']) ? $page['additional_page']['permalink'] : $page['additional_page']['id']); + } + else + { + $base_url = duplicate_index_url(); + } + + foreach ($available_lang as $code => $displayname) + { + $qlc = array ( + 'url' => add_url_params($base_url, array('lang'=> $code)), + 'alt' => ucwords($displayname), + 'title' => substr($displayname, 0, -4), // remove [FR] or [RU] + 'code' => $code, + ); + + $lsw['flags'][$code] = $qlc; + + if ($code == $user['language']) + { + $lsw['Active'] = $qlc; + } + } + + $safe_themes = array('clear','dark','elegant','Sylvia','simple-grey','simple-black','simple-white','kardon','luciano','montblancxl'); // stripped (2.6) + + $template->assign(array( + 'lang_switch'=> $lsw, + 'LANGUAGE_SWITCH_PATH' => LANGUAGE_SWITCH_PATH, + 'LANGUAGE_SWITCH_LOAD_STYLE' => !in_array($user['theme'], $safe_themes), + )); + + $template->set_filename('language_flags', dirname(__FILE__) . '/flags.tpl'); + $template->concat('PLUGIN_INDEX_ACTIONS', $template->parse('language_flags', true) ); + $template->clear_assign('lang_switch'); +} + +?> \ No newline at end of file diff --git a/sources/plugins/language_switch/main.inc.php b/sources/plugins/language_switch/main.inc.php new file mode 100644 index 0000000..47e402c --- /dev/null +++ b/sources/plugins/language_switch/main.inc.php @@ -0,0 +1,42 @@ + \ No newline at end of file diff --git a/sources/plugins/language_switch/style.css b/sources/plugins/language_switch/style.css new file mode 100644 index 0000000..55992d3 --- /dev/null +++ b/sources/plugins/language_switch/style.css @@ -0,0 +1,23 @@ +#languageSwitchBox { + padding: 0.5em 5px; + border-radius: 4px; + z-index: 100; + text-align:left; + display: none; + position: absolute; + left: 0; top: 0; /*left, right set through js*/ + background-color: #555; + border: 1px solid #000; +} + +#languageSwitchBox .switchBoxTitle { + padding-bottom:5px; + margin-bottom:5px; + border-bottom: 1px solid #444; +} +#languageSwitchBox a { + color:#aaa; +} +#languageSwitchBox a:hover { + color:#ddd; +} \ No newline at end of file diff --git a/sources/popuphelp.php b/sources/popuphelp.php new file mode 100644 index 0000000..713879c --- /dev/null +++ b/sources/popuphelp.php @@ -0,0 +1,81 @@ +1, 'nofollow'=>1); +include(PHPWG_ROOT_PATH.'include/page_header.php'); + +if + ( + isset($_GET['page']) + and preg_match('/^[a-z_]*$/', $_GET['page']) + ) +{ + $help_content = + load_language('help/'.$_GET['page'].'.html', '', array('return'=>true) ); + + if ($help_content == false) + { + $help_content = ''; + } + + $help_content = trigger_event( + 'get_popup_help_content', $help_content, $_GET['page']); +} +else +{ + die('Hacking attempt!'); +} + +$template->set_filename('popuphelp','popuphelp.tpl'); + +$template->assign( + array + ( + 'HELP_CONTENT' => $help_content + )); + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->pparse('popuphelp'); + +include(PHPWG_ROOT_PATH.'include/page_tail.php'); + +?> \ No newline at end of file diff --git a/sources/profile.php b/sources/profile.php new file mode 100644 index 0000000..301fba8 --- /dev/null +++ b/sources/profile.php @@ -0,0 +1,343 @@ +set_filename('profile', 'profile.tpl'); + + load_profile_in_template( + get_root_url().'profile.php', // action + make_index_url(), // for redirect + $userdata ); + + + // include menubar + $themeconf = $template->get_template_vars('themeconf'); + if (!isset($themeconf['hide_menu_on']) OR !in_array('theProfilePage', $themeconf['hide_menu_on'])) + { + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); + } + + include(PHPWG_ROOT_PATH.'include/page_header.php'); + trigger_action('loc_end_profile'); + flush_page_messages(); + $template->pparse('profile'); + include(PHPWG_ROOT_PATH.'include/page_tail.php'); +} + +//------------------------------------------------------ update & customization +function save_profile_from_post($userdata, &$errors) +{ + global $conf, $page; + $errors = array(); + + if (!isset($_POST['validate'])) + { + return false; + } + + $special_user = in_array($userdata['id'], array($conf['guest_id'], $conf['default_user_id'])); + if ($special_user) + { + unset( + $_POST['username'], + $_POST['mail_address'], + $_POST['password'], + $_POST['use_new_pwd'], + $_POST['passwordConf'], + $_POST['theme'], + $_POST['language'] + ); + $_POST['theme'] = get_default_theme(); + $_POST['language'] = get_default_language(); + } + + if (!defined('IN_ADMIN')) + { + unset($_POST['username']); + } + + if ($conf['allow_user_customization'] or defined('IN_ADMIN')) + { + $int_pattern = '/^\d+$/'; + if (empty($_POST['nb_image_page']) + or (!preg_match($int_pattern, $_POST['nb_image_page']))) + { + $errors[] = l10n('The number of photos per page must be a not null scalar'); + } + + // periods must be integer values, they represents number of days + if (!preg_match($int_pattern, $_POST['recent_period']) + or $_POST['recent_period'] < 0) + { + $errors[] = l10n('Recent period must be a positive integer value') ; + } + + if (!in_array($_POST['language'], array_keys(get_languages()))) + { + die('Hacking attempt, incorrect language value'); + } + + if (!in_array($_POST['theme'], array_keys(get_pwg_themes()))) + { + die('Hacking attempt, incorrect theme value'); + } + } + + if (isset($_POST['mail_address'])) + { + // if $_POST and $userdata have are same email + // validate_mail_address allows, however, to check email + $mail_error = validate_mail_address($userdata['id'], $_POST['mail_address']); + if (!empty($mail_error)) + { + $errors[] = $mail_error; + } + } + + if (!empty($_POST['use_new_pwd'])) + { + // password must be the same as its confirmation + if ($_POST['use_new_pwd'] != $_POST['passwordConf']) + { + $errors[] = l10n('The passwords do not match'); + } + + if ( !defined('IN_ADMIN') ) + {// changing password requires old password + $query = ' + SELECT '.$conf['user_fields']['password'].' AS password + FROM '.USERS_TABLE.' + WHERE '.$conf['user_fields']['id'].' = \''.$userdata['id'].'\' + ;'; + list($current_password) = pwg_db_fetch_row(pwg_query($query)); + + if (!$conf['password_verify']($_POST['password'], $current_password)) + { + $errors[] = l10n('Current password is wrong'); + } + } + } + + if (count($errors) == 0) + { + // mass_updates function + include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); + + if (isset($_POST['mail_address'])) + { + // update common user informations + $fields = array($conf['user_fields']['email']); + + $data = array(); + $data{$conf['user_fields']['id']} = $userdata['id']; + $data{$conf['user_fields']['email']} = $_POST['mail_address']; + + // password is updated only if filled + if (!empty($_POST['use_new_pwd'])) + { + $fields[] = $conf['user_fields']['password']; + // password is hashed with function $conf['password_hash'] + $data{$conf['user_fields']['password']} = $conf['password_hash']($_POST['use_new_pwd']); + } + + // username is updated only if allowed + if (!empty($_POST['username'])) + { + if ($_POST['username'] != $userdata['username'] and get_userid($_POST['username'])) + { + $page['errors'][] = l10n('this login is already used'); + unset($_POST['redirect']); + } + else + { + $fields[] = $conf['user_fields']['username']; + $data{$conf['user_fields']['username']} = $_POST['username']; + + // send email to the user + if ($_POST['username'] != $userdata['username']) + { + include_once(PHPWG_ROOT_PATH.'include/functions_mail.inc.php'); + switch_lang_to($userdata['language']); + + $keyargs_content = array( + get_l10n_args('Hello', ''), + get_l10n_args('Your username has been successfully changed to : %s', $_POST['username']), + ); + + pwg_mail( + $_POST['mail_address'], + array( + 'subject' => '['.$conf['gallery_title'].'] '.l10n('Username modification'), + 'content' => l10n_args($keyargs_content), + 'content_format' => 'text/plain', + ) + ); + + switch_lang_back(); + } + } + } + + mass_updates(USERS_TABLE, + array( + 'primary' => array($conf['user_fields']['id']), + 'update' => $fields + ), + array($data)); + } + + if ($conf['allow_user_customization'] or defined('IN_ADMIN')) + { + // update user "additional" informations (specific to Piwigo) + $fields = array( + 'nb_image_page', 'language', + 'expand', 'show_nb_hits', 'recent_period', 'theme' + ); + + if ($conf['activate_comments']) + { + $fields[] = 'show_nb_comments'; + } + + $data = array(); + $data['user_id'] = $userdata['id']; + + foreach ($fields as $field) + { + if (isset($_POST[$field])) + { + $data[$field] = $_POST[$field]; + } + } + mass_updates(USER_INFOS_TABLE, + array('primary' => array('user_id'), 'update' => $fields), + array($data)); + } + trigger_action( 'save_profile_from_post', $userdata['id'] ); + + if (!empty($_POST['redirect'])) + { + redirect($_POST['redirect']); + } + } + return true; +} + + +function load_profile_in_template($url_action, $url_redirect, $userdata) +{ + global $template, $conf; + + $template->set_filename('profile_content', 'profile_content.tpl'); + + $template->assign('radio_options', + array( + 'true' => l10n('Yes'), + 'false' => l10n('No'))); + + $template->assign( + array( + 'USERNAME'=>stripslashes($userdata['username']), + 'EMAIL'=>@$userdata['email'], + 'ALLOW_USER_CUSTOMIZATION'=>$conf['allow_user_customization'], + 'ACTIVATE_COMMENTS'=>$conf['activate_comments'], + 'NB_IMAGE_PAGE'=>$userdata['nb_image_page'], + 'RECENT_PERIOD'=>$userdata['recent_period'], + 'EXPAND' =>$userdata['expand'] ? 'true' : 'false', + 'NB_COMMENTS'=>$userdata['show_nb_comments'] ? 'true' : 'false', + 'NB_HITS'=>$userdata['show_nb_hits'] ? 'true' : 'false', + 'REDIRECT' => $url_redirect, + 'F_ACTION'=>$url_action, + )); + + $template->assign('template_selection', $userdata['theme']); + $template->assign('template_options', get_pwg_themes()); + + foreach (get_languages() as $language_code => $language_name) + { + if (isset($_POST['submit']) or $userdata['language'] == $language_code) + { + $template->assign('language_selection', $language_code); + } + $language_options[$language_code] = $language_name; + } + + $template->assign('language_options', $language_options); + + $special_user = in_array($userdata['id'], array($conf['guest_id'], $conf['default_user_id'])); + $template->assign('SPECIAL_USER', $special_user); + $template->assign('IN_ADMIN', defined('IN_ADMIN')); + + // allow plugins to add their own form data to content + trigger_action( 'load_profile_in_template', $userdata ); + + $template->assign('PWG_TOKEN', get_pwg_token()); + $template->assign_var_from_handle('PROFILE_CONTENT', 'profile_content'); +} +?> diff --git a/sources/qsearch.php b/sources/qsearch.php new file mode 100644 index 0000000..a19efa5 --- /dev/null +++ b/sources/qsearch.php @@ -0,0 +1,74 @@ + 'search', + 'search' => $search_id, + ) + ) + ); +?> \ No newline at end of file diff --git a/sources/random.php b/sources/random.php new file mode 100644 index 0000000..74cad94 --- /dev/null +++ b/sources/random.php @@ -0,0 +1,63 @@ + 'category_id', + 'visible_categories' => 'category_id', + 'visible_images' => 'id' + ), + 'WHERE' + ).' + ORDER BY '.DB_RANDOM_FUNCTION.'() + LIMIT '.min(50, $conf['top_number'],$user['nb_image_page']).' +;'; + +// +-----------------------------------------------------------------------+ +// | redirect | +// +-----------------------------------------------------------------------+ + +redirect(make_index_url(array('list' => array_from_query($query, 'id')))); +?> \ No newline at end of file diff --git a/sources/register.php b/sources/register.php new file mode 100644 index 0000000..993fe16 --- /dev/null +++ b/sources/register.php @@ -0,0 +1,124 @@ +set_filenames( array('register'=>'register.tpl') ); +$template->assign(array( + 'U_HOME' => make_index_url(), + 'F_KEY' => $registration_post_key, + 'F_ACTION' => 'register.php', + 'F_LOGIN' => $login, + 'F_EMAIL' => $email, + 'obligatory_user_mail_address' => $conf['obligatory_user_mail_address'], + )); + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theRegisterPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_register'); +flush_page_messages(); +$template->parse('register'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> diff --git a/sources/search.php b/sources/search.php new file mode 100644 index 0000000..6feee27 --- /dev/null +++ b/sources/search.php @@ -0,0 +1,243 @@ + $post_value) + { + if (!is_array($post_value)) + { + $_POST[$post_key] = pwg_db_real_escape_string($post_value); + } + } + + if (isset($_POST['search_allwords']) + and !preg_match('/^\s*$/', $_POST['search_allwords'])) + { + check_input_parameter('mode', $_POST, false, '/^(OR|AND)$/'); + + $drop_char_match = array( + '-','^','$',';','#','&','(',')','<','>','`','\'','"','|',',','@','_', + '?','%','~','.','[',']','{','}',':','\\','/','=','\'','!','*'); + $drop_char_replace = array( + ' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','','',' ',' ',' ',' ','',' ', + ' ',' ',' ',' ',' ',' ',' ',' ','' ,' ',' ',' ',' ',' '); + + // Split words + $search['fields']['allwords'] = array( + 'words' => array_unique( + preg_split( + '/\s+/', + str_replace( + $drop_char_match, + $drop_char_replace, + $_POST['search_allwords'] + ) + ) + ), + 'mode' => $_POST['mode'], + ); + } + + if (isset($_POST['tags'])) + { + check_input_parameter('tags', $_POST, true, PATTERN_ID); + check_input_parameter('tag_mode', $_POST, false, '/^(OR|AND)$/'); + + $search['fields']['tags'] = array( + 'words' => $_POST['tags'], + 'mode' => $_POST['tag_mode'], + ); + } + + if ($_POST['search_author']) + { + $search['fields']['author'] = array( + 'words' => preg_split( + '/\s+/', + strip_tags($_POST['search_author']) + ), + 'mode' => 'OR', + ); + } + + if (isset($_POST['cat'])) + { + check_input_parameter('cat', $_POST, true, PATTERN_ID); + + $search['fields']['cat'] = array( + 'words' => $_POST['cat'], + 'sub_inc' => ($_POST['subcats-included'] == 1) ? true : false, + ); + } + + // dates + $type_date = $_POST['date_type']; + + if (!empty($_POST['start_year'])) + { + $search['fields'][$type_date.'-after'] = array( + 'date' => sprintf( + '%d-%02d-%02d', + $_POST['start_year'], + $_POST['start_month'] != 0 ? $_POST['start_month'] : '01', + $_POST['start_day'] != 0 ? $_POST['start_day'] : '01' + ), + 'inc' => true, + ); + } + + if (!empty($_POST['end_year'])) + { + $search['fields'][$type_date.'-before'] = array( + 'date' => sprintf( + '%d-%02d-%02d', + $_POST['end_year'], + $_POST['end_month'] != 0 ? $_POST['end_month'] : '12', + $_POST['end_day'] != 0 ? $_POST['end_day'] : '31' + ), + 'inc' => true, + ); + } + + if (!empty($search)) + { + // default search mode : each clause must be respected + $search['mode'] = 'AND'; + + // register search rules in database, then they will be available on + // thumbnails page and picture page. + $query =' +INSERT INTO '.SEARCH_TABLE.' + (rules, last_seen) + VALUES + (\''.serialize($search).'\', NOW()) +;'; + pwg_query($query); + + $search_id = pwg_db_insert_id(SEARCH_TABLE); + } + else + { + $page['errors'][] = l10n('Empty query. No criteria has been entered.'); + } +} +//----------------------------------------------------------------- redirection +if (isset($_POST['submit']) and count($page['errors']) == 0) +{ + redirect( + make_index_url( + array( + 'section' => 'search', + 'search' => $search_id, + ) + ) + ); +} +//----------------------------------------------------- template initialization + +// +// Start output of page +// +$title= l10n('Search'); +$page['body_id'] = 'theSearchPage'; + +$template->set_filename('search' ,'search.tpl' ); + +$month_list = $lang['month']; +$month_list[0]='------------'; +ksort($month_list); + +$template->assign( + array( + 'F_SEARCH_ACTION' => 'search.php', + 'U_HELP' => PHPWG_ROOT_PATH.'popuphelp.php?page=search', + + 'month_list' => $month_list, + 'START_DAY_SELECTED' => @$_POST['start_day'], + 'START_MONTH_SELECTED' => @$_POST['start_month'], + 'END_DAY_SELECTED' => @$_POST['end_day'], + 'END_MONTH_SELECTED' => @$_POST['end_month'], + ) + ); + +$available_tags = get_available_tags(); + +if (count($available_tags) > 0) +{ + usort( $available_tags, 'tag_alpha_compare'); + + $template->assign( + 'TAG_SELECTION', + get_html_tag_selection( + $available_tags, + 'tags', + isset($_POST['tags']) ? $_POST['tags'] : array() + ) + ); +} + +//------------------------------------------------------------- categories form +$query = ' +SELECT id,name,global_rank,uppercats + FROM '.CATEGORIES_TABLE.' +'.get_sql_condition_FandF + ( + array + ( + 'forbidden_categories' => 'id', + 'visible_categories' => 'id' + ), + 'WHERE' + ).' +;'; +display_select_cat_wrapper($query, array(), 'category_options', false); + + +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theSearchPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +//------------------------------------------------------------ html code display +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_search'); +flush_page_messages(); +$template->pparse('search'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> diff --git a/sources/search_rules.php b/sources/search_rules.php new file mode 100644 index 0000000..34854d2 --- /dev/null +++ b/sources/search_rules.php @@ -0,0 +1,243 @@ +1, 'nofollow'=>1); +include(PHPWG_ROOT_PATH.'include/page_header.php'); + +$template->set_filenames(array('search_rules' => 'search_rules.tpl')); + +// +-----------------------------------------------------------------------+ +// | Textual rules creation | +// +-----------------------------------------------------------------------+ + +// Rules are stored in database, serialized in an array. This array must be +// transformed into a list of textual rules. + +$search = get_search_array($_GET['search_id']); + +if (isset($search['q'])) +{ + $template->append( 'search_words', $search['q'] ); +} +else +{ + $template->assign( + array( + 'INTRODUCTION' + => 'OR' == $search['mode'] + ? l10n('At least one listed rule must be satisfied.') + : l10n('Each listed rule must be satisfied.'), + ) + ); +} + +if (isset($search['fields']['allwords'])) +{ + $template->append( + 'search_words', + l10n( + 'searched words : %s', + join(', ', $search['fields']['allwords']['words']) + ) + ); +} + +if (isset($search['fields']['tags'])) +{ + $template->assign('SEARCH_TAGS_MODE', $search['fields']['tags']['mode']); + + $query = ' +SELECT name + FROM '.TAGS_TABLE.' + WHERE id IN ('.implode(',', $search['fields']['tags']['words']).') +;'; + $template->assign( + 'search_tags', + array_from_query($query, 'name') + ); +} + +if (isset($search['fields']['author'])) +{ + $template->append( + 'search_words', + l10n( + 'author(s) : %s', + join(', ', array_map('strip_tags', $search['fields']['author']['words'])) + ) + ); +} + +if (isset($search['fields']['cat'])) +{ + if ($search['fields']['cat']['sub_inc']) + { + // searching all the categories id of sub-categories + $cat_ids = get_subcat_ids($search['fields']['cat']['words']); + } + else + { + $cat_ids = $search['fields']['cat']['words']; + } + + $query = ' +SELECT id, uppercats, global_rank + FROM '.CATEGORIES_TABLE.' + WHERE id IN ('. + implode(',', $cat_ids). + ') +;'; + $result = pwg_query($query); + + $categories = array(); + if (!empty($result)) + { + while ($row = pwg_db_fetch_assoc($result)) + { + $categories[] = $row; + } + } + usort($categories, 'global_rank_compare'); + + foreach ($categories as $category) + { + $template->append( + 'search_categories', + get_cat_display_name_cache( + $category['uppercats'], + null // no url on category names + ) + ); + } +} + +foreach (array('date_available', 'date_creation') as $datefield) +{ + if ('date_available' == $datefield) + { + $lang_items = array( + 'date' => l10n('posted on %s'), + 'period' => l10n('posted between %s (%s) and %s (%s)'), + 'after' => l10n('posted after %s (%s)'), + 'before' => l10n('posted before %s (%s)'), + ); + } + elseif ('date_creation' == $datefield) + { + $lang_items = array( + 'date' => l10n('created on %s'), + 'period' => l10n('created between %s (%s) and %s (%s)'), + 'after' => l10n('created after %s (%s)'), + 'before' => l10n('created before %s (%s)'), + ); + } + + $keys = array( + 'date' => $datefield, + 'after' => $datefield.'-after', + 'before' => $datefield.'-before', + ); + + if (isset($search['fields'][ $keys['date'] ])) + { + $template->assign( + strtoupper($datefield), + sprintf( + $lang_items['date'], + format_date($search['fields'][ $keys['date'] ]) + ) + ); + } + elseif (isset($search['fields'][ $keys['before'] ]) + and isset($search['fields'][ $keys['after'] ])) + { + $template->assign( + strtoupper($datefield), + sprintf( + $lang_items['period'], + + format_date($search['fields'][ $keys['after'] ]['date']), + inc_exc_str($search['fields'][ $keys['after'] ]['inc']), + + format_date($search['fields'][ $keys['before'] ]['date']), + inc_exc_str($search['fields'][ $keys['before'] ]['inc']) + ) + ); + } + elseif (isset($search['fields'][ $keys['before'] ])) + { + $template->assign( + strtoupper($datefield), + sprintf( + $lang_items['before'], + + format_date($search['fields'][ $keys['before'] ]['date']), + inc_exc_str($search['fields'][ $keys['before'] ]['inc']) + ) + ); + } + elseif (isset($search['fields'][ $keys['after'] ])) + { + $template->assign( + strtoupper($datefield), + sprintf( + $lang_items['after'], + + format_date($search['fields'][ $keys['after'] ]['date']), + inc_exc_str($search['fields'][ $keys['after'] ]['inc']) + ) + ); + } +} + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->pparse('search_rules'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> \ No newline at end of file diff --git a/sources/tags.php b/sources/tags.php new file mode 100644 index 0000000..dea4900 --- /dev/null +++ b/sources/tags.php @@ -0,0 +1,202 @@ +set_filenames(array('tags'=>'tags.tpl')); + +$page['display_mode'] = $conf['tags_default_display_mode']; +if (isset($_GET['display_mode'])) +{ + if (in_array($_GET['display_mode'], array('cloud', 'letters'))) + { + $page['display_mode'] = $_GET['display_mode']; + } +} + +foreach (array('cloud', 'letters') as $mode) +{ + $template->assign( + 'U_'.strtoupper($mode), + get_root_url().'tags.php'. ($conf['tags_default_display_mode']==$mode ? '' : '?display_mode='.$mode) + ); +} + +$template->assign( 'display_mode', $page['display_mode'] ); + +// find all tags available for the current user +$tags = get_available_tags(); + +// +-----------------------------------------------------------------------+ +// | letter groups construction | +// +-----------------------------------------------------------------------+ + +if ($page['display_mode'] == 'letters') { + // we want tags diplayed in alphabetic order + usort($tags, 'tag_alpha_compare'); + + $current_letter = null; + $nb_tags = count($tags); + $current_column = 1; + $current_tag_idx = 0; + + $letter = array( + 'tags' => array() + ); + + foreach ($tags as $tag) + { + $tag_letter = mb_strtoupper(mb_substr(transliterate($tag['name']), 0, 1, PWG_CHARSET), PWG_CHARSET); + + if ($current_tag_idx==0) { + $current_letter = $tag_letter; + $letter['TITLE'] = $tag_letter; + } + + //lettre precedente differente de la lettre suivante + if ($tag_letter !== $current_letter) + { + if ($current_column<$conf['tag_letters_column_number'] + and $current_tag_idx > $current_column*$nb_tags/$conf['tag_letters_column_number'] ) + { + $letter['CHANGE_COLUMN'] = true; + $current_column++; + } + + $letter['TITLE'] = $current_letter; + + $template->append( + 'letters', + $letter + ); + + $current_letter = $tag_letter; + $letter = array( + 'tags' => array() + ); + } + + $letter['tags'][] = array_merge( + $tag, + array( + 'URL' => make_index_url(array('tags' => array($tag))), + ) + ); + + $current_tag_idx++; + } + + // flush last letter + if (count($letter['tags']) > 0) + { + unset($letter['CHANGE_COLUMN']); + $letter['TITLE'] = $current_letter; + $template->append( + 'letters', + $letter + ); + } +} +else +{ + // +-----------------------------------------------------------------------+ + // | tag cloud construction | + // +-----------------------------------------------------------------------+ + + // we want only the first most represented tags, so we sort them by counter + // and take the first tags + usort($tags, 'counter_compare'); + $tags = array_slice($tags, 0, $conf['full_tag_cloud_items_number']); + + // depending on its counter and the other tags counter, each tag has a level + $tags = add_level_to_tags($tags); + + // we want tags diplayed in alphabetic order + usort($tags, 'tag_alpha_compare'); + + // display sorted tags + foreach ($tags as $tag) + { + $template->append( + 'tags', + array_merge( + $tag, + array( + 'URL' => make_index_url( + array( + 'tags' => array($tag), + ) + ), + ) + ) + ); + } +} +// include menubar +$themeconf = $template->get_template_vars('themeconf'); +if (!isset($themeconf['hide_menu_on']) OR !in_array('theTagsPage', $themeconf['hide_menu_on'])) +{ + include( PHPWG_ROOT_PATH.'include/menubar.inc.php'); +} + +include(PHPWG_ROOT_PATH.'include/page_header.php'); +trigger_action('loc_end_tags'); +flush_page_messages(); +$template->pparse('tags'); +include(PHPWG_ROOT_PATH.'include/page_tail.php'); +?> \ No newline at end of file diff --git a/sources/template-extension/distributed/samples/my-picture.tpl b/sources/template-extension/distributed/samples/my-picture.tpl new file mode 100644 index 0000000..990bca1 --- /dev/null +++ b/sources/template-extension/distributed/samples/my-picture.tpl @@ -0,0 +1,122 @@ + +{if isset($errors)} +
          +
            + {foreach from=$errors item=error} +
          • {$error}
          • + {/foreach} +
          +
          +{/if} + +{if isset($infos)} +
          +
            + {foreach from=$infos item=info} +
          • {$info}
          • + {/foreach} +
          +
          +{/if} + +
          +
          + {'Home'|@translate} + {if !$IS_HOME}{$LEVEL_SEPARATOR}{$SECTION_TITLE}{/if} + {$LEVEL_SEPARATOR}{$current.TITLE} +
          +
          {$PHOTO}
          +

          {$current.TITLE}

          +
          + +{if !empty($PLUGIN_PICTURE_BEFORE)}{$PLUGIN_PICTURE_BEFORE}{/if} +
          +
          +{if isset($U_SLIDESHOW_START)} + +  {'slideshow'|@translate} + +{/if} +{if isset($U_SLIDESHOW_STOP)} + +  {'stop the slideshow'|@translate} + +{/if} +{if isset($U_METADATA)} + +  {'Show file metadata'|@translate} + +{/if} +{if isset($current.U_DOWNLOAD)} + +  {'Download'|@translate} + +{/if} +{if isset($PLUGIN_PICTURE_ACTIONS)}{$PLUGIN_PICTURE_ACTIONS}{/if} +{if isset($favorite)} + +  {'Favorites'|@translate} + +{/if} +{if isset($U_SET_AS_REPRESENTATIVE)} + +  {'representative'|@translate} + +{/if} +{if isset($U_ADMIN)} + +  {'Edit'|@translate} + +{/if} +{if isset($U_CADDIE)}{*caddie management BEGIN*} + + +  {'Caddie'|@translate} + +{/if}{*caddie management END*} +
          + {include file='picture_nav_buttons.tpl'|@get_extent:'picture_nav_buttons'} +
          + +
          +{$ELEMENT_CONTENT} + +{if isset($COMMENT_IMG)} +

          {$COMMENT_IMG}

          +{/if} + +{if isset($U_SLIDESHOW_STOP) } +

          + [ {'stop the slideshow'|@translate} ] +

          +{/if} + +
          + +{if isset($previous) } + +{/if} +{if isset($next) } + +{/if} + +{if !empty($PLUGIN_PICTURE_AFTER)}{$PLUGIN_PICTURE_AFTER}{/if} diff --git a/sources/template-extension/distributed/samples/my-thumbnails.tpl b/sources/template-extension/distributed/samples/my-thumbnails.tpl new file mode 100644 index 0000000..e571f8f --- /dev/null +++ b/sources/template-extension/distributed/samples/my-thumbnails.tpl @@ -0,0 +1,35 @@ + +{if !empty($thumbnails)} +
            +{foreach from=$thumbnails item=thumbnail} +
          • + + + + {$thumbnail.TN_ALT} + + + + © 2008 Piwigo
            + {if !empty($thumbnail.NAME)}{$thumbnail.NAME}{/if} + {if !empty($thumbnail.ICON_TS)}{$thumbnail.ICON_TS}{/if} + + {if isset($thumbnail.NB_COMMENTS)} + +
            + {$pwg->l10n_dec('%d comment', '%d comments',$thumbnail.NB_COMMENTS)} +
            + {/if} + + {if isset($thumbnail.NB_HITS)} + +
            + {$pwg->l10n_dec('%d hit', '%d hits',$thumbnail.NB_HITS)} +
            + {/if} +
            +
            +
          • +{/foreach} +
          +{/if} diff --git a/sources/template-extension/distributed/samples/my-thumbnails2.css b/sources/template-extension/distributed/samples/my-thumbnails2.css new file mode 100644 index 0000000..5ae77fb --- /dev/null +++ b/sources/template-extension/distributed/samples/my-thumbnails2.css @@ -0,0 +1,13 @@ +.thumbLegend { padding: 0 6px; color: #666; font-style:italic; font-size: 7px; } +.fld1 { width: 96px; min-width: 96px; padding: 0; +margin: 5px; display: inline;} +.lap2 { display: block; padding: 4px 15px 10px 15px; border: 0;} +.fld1:hover { background-color: #000; } +.fld1 a:hover { border:0; } +.thumbnail { margin: 2px auto; } +/* Advanced hacks for IE 7 */ +*+html .thumbnail { display: inline; margin: 0 auto; } +*+html .lap2 span { position: relative; top: 50%; margin: 0 auto; } +*+html .lap2 { display: inline; position: relative; top: 0%; } +*+html .fld1 { width: auto; padding: 6px 0 6px 0; margin-top: 0px;} +*+html .thumbLegend { font-size: 10px; } \ No newline at end of file diff --git a/sources/template-extension/distributed/samples/my-thumbnails2.tpl b/sources/template-extension/distributed/samples/my-thumbnails2.tpl new file mode 100644 index 0000000..48b52d5 --- /dev/null +++ b/sources/template-extension/distributed/samples/my-thumbnails2.tpl @@ -0,0 +1,18 @@ + +{if !empty($thumbnails)} +{html_head}{/html_head} +
            +{foreach from=$thumbnails item=thumbnail} +
          • +
            + + {if !empty($thumbnail.NAME)}{$thumbnail.NAME}{/if} + + + {$thumbnail.TN_ALT} + +
            +
          • +{/foreach} +
          +{/if} diff --git a/sources/template-extension/distributed/samples/titling_categories.tpl b/sources/template-extension/distributed/samples/titling_categories.tpl new file mode 100644 index 0000000..7700da6 --- /dev/null +++ b/sources/template-extension/distributed/samples/titling_categories.tpl @@ -0,0 +1,50 @@ +{* + + Copied from mainpage_categories.tpl + +*} +{if !empty($category_thumbnails)} + {html_head} + + {/html_head} +
            {* 1st difference: Titling/thumbnail *} + {foreach from=$category_thumbnails item=cat} +
            {* W3C HTML non conform *} +

            {* 2nd difference: h3 is outside of description *} + {$cat.NAME}{$cat.ICON_TS} +

            +
          • +
            +
            + + {$cat.ALT} + +
            +
            + {if isset($cat.INFO_DATES) } +

            {$cat.INFO_DATES}

            + {/if} +
            +

            {$cat.CAPTION_NB_IMAGES}

            + {if not empty($cat.DESCRIPTION)} +

            {$cat.DESCRIPTION}

            + {/if} +
            +
            +
            +
          • +
            + {/foreach} +
          +{/if} \ No newline at end of file diff --git a/sources/template-extension/index.php b/sources/template-extension/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/template-extension/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/template-extension/yoga/index.php b/sources/template-extension/yoga/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/template-extension/yoga/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/template-extension/yoga/local/README b/sources/template-extension/yoga/local/README new file mode 100644 index 0000000..d62571a --- /dev/null +++ b/sources/template-extension/yoga/local/README @@ -0,0 +1,19 @@ +If you want to make some template customization without building a brand new +template, you should use this directory to store yur customized version of the +official template files rather than editing them on place. +Doing this, they won't be lost during the next upgrade. + +For example, if you want your own header file just copy +"template/yoga/header.tpl" to this directory with whatever, but significant, +filename you want. +Then edit "include/page_header.php" and replace the line : + $template->set_filenames(array('header'=>'header.tpl')); +by + $template->set_filenames(array('header'=>'../../template-extension/yoga/local/header.tpl')); +Or whatever new filename you gave instead of header.tpl + +In future version of PWG, you probably won't have to edit the php code, but +a parameter table instead. + +Feel free to ask in the forum for further assistance : +http://piwigo.org/forum diff --git a/sources/template-extension/yoga/local/index.php b/sources/template-extension/yoga/local/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/template-extension/yoga/local/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/Sylvia/icon/datepicker.png b/sources/themes/Sylvia/icon/datepicker.png new file mode 100644 index 0000000..3d0e015 Binary files /dev/null and b/sources/themes/Sylvia/icon/datepicker.png differ diff --git a/sources/themes/Sylvia/icon/delete.png b/sources/themes/Sylvia/icon/delete.png new file mode 100644 index 0000000..285e53e Binary files /dev/null and b/sources/themes/Sylvia/icon/delete.png differ diff --git a/sources/themes/Sylvia/icon/edit.png b/sources/themes/Sylvia/icon/edit.png new file mode 100644 index 0000000..9c755cd Binary files /dev/null and b/sources/themes/Sylvia/icon/edit.png differ diff --git a/sources/themes/Sylvia/icon/errors.png b/sources/themes/Sylvia/icon/errors.png new file mode 100644 index 0000000..e26d8c6 Binary files /dev/null and b/sources/themes/Sylvia/icon/errors.png differ diff --git a/sources/themes/Sylvia/icon/errors_small.png b/sources/themes/Sylvia/icon/errors_small.png new file mode 100644 index 0000000..724cc65 Binary files /dev/null and b/sources/themes/Sylvia/icon/errors_small.png differ diff --git a/sources/themes/Sylvia/icon/favicon.ico b/sources/themes/Sylvia/icon/favicon.ico new file mode 100644 index 0000000..f25fffe Binary files /dev/null and b/sources/themes/Sylvia/icon/favicon.ico differ diff --git a/sources/themes/Sylvia/icon/img_small.png b/sources/themes/Sylvia/icon/img_small.png new file mode 100644 index 0000000..dbfcc9a Binary files /dev/null and b/sources/themes/Sylvia/icon/img_small.png differ diff --git a/sources/themes/Sylvia/icon/index.php b/sources/themes/Sylvia/icon/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/Sylvia/icon/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/Sylvia/icon/infos.png b/sources/themes/Sylvia/icon/infos.png new file mode 100644 index 0000000..00695cb Binary files /dev/null and b/sources/themes/Sylvia/icon/infos.png differ diff --git a/sources/themes/Sylvia/icon/mimetypes/avi.png b/sources/themes/Sylvia/icon/mimetypes/avi.png new file mode 100644 index 0000000..b5dde08 Binary files /dev/null and b/sources/themes/Sylvia/icon/mimetypes/avi.png differ diff --git a/sources/themes/Sylvia/icon/mimetypes/index.php b/sources/themes/Sylvia/icon/mimetypes/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/Sylvia/icon/mimetypes/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/Sylvia/icon/mimetypes/mp3.png b/sources/themes/Sylvia/icon/mimetypes/mp3.png new file mode 100644 index 0000000..cb12885 Binary files /dev/null and b/sources/themes/Sylvia/icon/mimetypes/mp3.png differ diff --git a/sources/themes/Sylvia/icon/mimetypes/mpg.png b/sources/themes/Sylvia/icon/mimetypes/mpg.png new file mode 100644 index 0000000..4dc09c2 Binary files /dev/null and b/sources/themes/Sylvia/icon/mimetypes/mpg.png differ diff --git a/sources/themes/Sylvia/icon/mimetypes/ogg.png b/sources/themes/Sylvia/icon/mimetypes/ogg.png new file mode 100644 index 0000000..978b235 Binary files /dev/null and b/sources/themes/Sylvia/icon/mimetypes/ogg.png differ diff --git a/sources/themes/Sylvia/icon/mimetypes/zip.png b/sources/themes/Sylvia/icon/mimetypes/zip.png new file mode 100644 index 0000000..7d76f9a Binary files /dev/null and b/sources/themes/Sylvia/icon/mimetypes/zip.png differ diff --git a/sources/themes/Sylvia/icon/note.png b/sources/themes/Sylvia/icon/note.png new file mode 100644 index 0000000..9ef1af5 Binary files /dev/null and b/sources/themes/Sylvia/icon/note.png differ diff --git a/sources/themes/Sylvia/icon/rating-stars.gif b/sources/themes/Sylvia/icon/rating-stars.gif new file mode 100644 index 0000000..4059e03 Binary files /dev/null and b/sources/themes/Sylvia/icon/rating-stars.gif differ diff --git a/sources/themes/Sylvia/icon/rating-stars.png b/sources/themes/Sylvia/icon/rating-stars.png new file mode 100644 index 0000000..dba59ef Binary files /dev/null and b/sources/themes/Sylvia/icon/rating-stars.png differ diff --git a/sources/themes/Sylvia/icon/recent.png b/sources/themes/Sylvia/icon/recent.png new file mode 100644 index 0000000..75567d6 Binary files /dev/null and b/sources/themes/Sylvia/icon/recent.png differ diff --git a/sources/themes/Sylvia/icon/recent_by_child.png b/sources/themes/Sylvia/icon/recent_by_child.png new file mode 100644 index 0000000..faf5c4d Binary files /dev/null and b/sources/themes/Sylvia/icon/recent_by_child.png differ diff --git a/sources/themes/Sylvia/icon/recent_s.png b/sources/themes/Sylvia/icon/recent_s.png new file mode 100644 index 0000000..90b1905 Binary files /dev/null and b/sources/themes/Sylvia/icon/recent_s.png differ diff --git a/sources/themes/Sylvia/icon/recent_s_by_child.png b/sources/themes/Sylvia/icon/recent_s_by_child.png new file mode 100644 index 0000000..842a513 Binary files /dev/null and b/sources/themes/Sylvia/icon/recent_s_by_child.png differ diff --git a/sources/themes/Sylvia/icon/remove_s.png b/sources/themes/Sylvia/icon/remove_s.png new file mode 100644 index 0000000..012efc1 Binary files /dev/null and b/sources/themes/Sylvia/icon/remove_s.png differ diff --git a/sources/themes/Sylvia/icon/start_filter.png b/sources/themes/Sylvia/icon/start_filter.png new file mode 100644 index 0000000..f8611cd Binary files /dev/null and b/sources/themes/Sylvia/icon/start_filter.png differ diff --git a/sources/themes/Sylvia/icon/stop_filter.png b/sources/themes/Sylvia/icon/stop_filter.png new file mode 100644 index 0000000..145e64c Binary files /dev/null and b/sources/themes/Sylvia/icon/stop_filter.png differ diff --git a/sources/themes/Sylvia/icon/validate_s.png b/sources/themes/Sylvia/icon/validate_s.png new file mode 100644 index 0000000..adea3d5 Binary files /dev/null and b/sources/themes/Sylvia/icon/validate_s.png differ diff --git a/sources/themes/Sylvia/images/ajax_loader.gif b/sources/themes/Sylvia/images/ajax_loader.gif new file mode 100644 index 0000000..d84f653 Binary files /dev/null and b/sources/themes/Sylvia/images/ajax_loader.gif differ diff --git a/sources/themes/Sylvia/images/bottom-left-bg.jpg b/sources/themes/Sylvia/images/bottom-left-bg.jpg new file mode 100644 index 0000000..3d8a5ee Binary files /dev/null and b/sources/themes/Sylvia/images/bottom-left-bg.jpg differ diff --git a/sources/themes/Sylvia/images/cat_bottom-left.gif b/sources/themes/Sylvia/images/cat_bottom-left.gif new file mode 100644 index 0000000..2a04289 Binary files /dev/null and b/sources/themes/Sylvia/images/cat_bottom-left.gif differ diff --git a/sources/themes/Sylvia/images/cat_bottom-right.gif b/sources/themes/Sylvia/images/cat_bottom-right.gif new file mode 100644 index 0000000..901f31d Binary files /dev/null and b/sources/themes/Sylvia/images/cat_bottom-right.gif differ diff --git a/sources/themes/Sylvia/images/cat_top-left.gif b/sources/themes/Sylvia/images/cat_top-left.gif new file mode 100644 index 0000000..1ea5734 Binary files /dev/null and b/sources/themes/Sylvia/images/cat_top-left.gif differ diff --git a/sources/themes/Sylvia/images/cat_top-right.gif b/sources/themes/Sylvia/images/cat_top-right.gif new file mode 100644 index 0000000..7eb5c49 Binary files /dev/null and b/sources/themes/Sylvia/images/cat_top-right.gif differ diff --git a/sources/themes/Sylvia/images/fillet.gif b/sources/themes/Sylvia/images/fillet.gif new file mode 100644 index 0000000..6da6411 Binary files /dev/null and b/sources/themes/Sylvia/images/fillet.gif differ diff --git a/sources/themes/Sylvia/images/header_msgs-bg.gif b/sources/themes/Sylvia/images/header_msgs-bg.gif new file mode 100644 index 0000000..0879e1b Binary files /dev/null and b/sources/themes/Sylvia/images/header_msgs-bg.gif differ diff --git a/sources/themes/Sylvia/images/menuBox_bottom.gif b/sources/themes/Sylvia/images/menuBox_bottom.gif new file mode 100644 index 0000000..72c91b1 Binary files /dev/null and b/sources/themes/Sylvia/images/menuBox_bottom.gif differ diff --git a/sources/themes/Sylvia/images/menuBox_sides.gif b/sources/themes/Sylvia/images/menuBox_sides.gif new file mode 100644 index 0000000..853772d Binary files /dev/null and b/sources/themes/Sylvia/images/menuBox_sides.gif differ diff --git a/sources/themes/Sylvia/images/menuBox_top.gif b/sources/themes/Sylvia/images/menuBox_top.gif new file mode 100644 index 0000000..3c80b3c Binary files /dev/null and b/sources/themes/Sylvia/images/menuBox_top.gif differ diff --git a/sources/themes/Sylvia/images/menuId_bottom.gif b/sources/themes/Sylvia/images/menuId_bottom.gif new file mode 100644 index 0000000..e6d1faa Binary files /dev/null and b/sources/themes/Sylvia/images/menuId_bottom.gif differ diff --git a/sources/themes/Sylvia/images/menuId_sides.gif b/sources/themes/Sylvia/images/menuId_sides.gif new file mode 100644 index 0000000..68923cb Binary files /dev/null and b/sources/themes/Sylvia/images/menuId_sides.gif differ diff --git a/sources/themes/Sylvia/images/menuId_top.gif b/sources/themes/Sylvia/images/menuId_top.gif new file mode 100644 index 0000000..5243a40 Binary files /dev/null and b/sources/themes/Sylvia/images/menuId_top.gif differ diff --git a/sources/themes/Sylvia/images/top-left-bg.jpg b/sources/themes/Sylvia/images/top-left-bg.jpg new file mode 100644 index 0000000..98aa1d6 Binary files /dev/null and b/sources/themes/Sylvia/images/top-left-bg.jpg differ diff --git a/sources/themes/Sylvia/images/transparent.gif b/sources/themes/Sylvia/images/transparent.gif new file mode 100644 index 0000000..2fb4189 Binary files /dev/null and b/sources/themes/Sylvia/images/transparent.gif differ diff --git a/sources/themes/Sylvia/index.php b/sources/themes/Sylvia/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/Sylvia/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/Sylvia/local_head.tpl b/sources/themes/Sylvia/local_head.tpl new file mode 100644 index 0000000..932b5d2 --- /dev/null +++ b/sources/themes/Sylvia/local_head.tpl @@ -0,0 +1,3 @@ + diff --git a/sources/themes/Sylvia/screenshot.png b/sources/themes/Sylvia/screenshot.png new file mode 100644 index 0000000..ee3637c Binary files /dev/null and b/sources/themes/Sylvia/screenshot.png differ diff --git a/sources/themes/Sylvia/theme-ie.css b/sources/themes/Sylvia/theme-ie.css new file mode 100644 index 0000000..fe2a58a --- /dev/null +++ b/sources/themes/Sylvia/theme-ie.css @@ -0,0 +1,12 @@ +#content .thumbnailCategory .description .text { + scrollbar-face-color:#222; + scrollbar-shadow-color:#444; + scrollbar-highlight-color:#000; + scrollbar-darkshadow-color:#333; + scrollbar-track-color:#111; + scrollbar-arrow-color:#f70; +} + +#debug { word-wrap:break-word; } +/* IE6... Hacks: */ +/*\*/ * html #menubar #mbIdentification .button { margin-right:25px; } /* */ \ No newline at end of file diff --git a/sources/themes/Sylvia/theme.css b/sources/themes/Sylvia/theme.css new file mode 100644 index 0000000..7abbebe --- /dev/null +++ b/sources/themes/Sylvia/theme.css @@ -0,0 +1,483 @@ +/* thumbnail wrap size */ +.thumbnailCategory .illustration { + min-width:165px !important; /* Usable range 162px-360px , optimal : Thumbnail width + 40px */ +} + .commentElement .illustration { + min-width:220px !important; /* Usable range 219px-360px , optimal : Thumbnail width + 95px */ +} + +/** + * Menubar + */ +#menubar DL { + background:transparent url(images/menuBox_top.gif) no-repeat scroll left top; + margin:0 0 5px 40px; + padding:0; + width: 231px; + min-width: 231px; + border: 0; + min-height: 32px; + overflow-x: hidden; +} +#menubar DT { + background-color:#111; + border:0; + display:inline; + margin-left:8px; + text-align:left; +} +#menubar DD { + background:transparent url(images/menuBox_bottom.gif) no-repeat scroll left bottom; + margin:14px 0 0 0; + padding:0 0 22px; + width: 231px; + min-width: 231px; + border: 0; + overflow-x: hidden; +} +#menubar DD P { + background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom; + padding: 2px 16px 0; + margin: 0; +} +#menubar UL, #menubar #mbCategories p, #menubar .illustration { + background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom; + margin:0; +} +#menubar DT A { + font-size: 100%; +} +#menubar UL { + color:#333; + font-size: 16px; + line-height: 15px; +} +#menubar UL SPAN.menuInfoCat { + color:#666; +} +#menubar LI { + padding-left: 12px; +} +#menubar LI UL { + background: transparent url(images/transparent.gif); +} +#menubar A, .menuInfoCat { + font-size: 13px; +} +#menubar form { + background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom; + margin:0; +} +#menubar p { + padding: 16px 16px 0; +} + +.menubarFilter { + position: relative; + right: 8px; + top: 16px; +} + +#menubar #mbIdentification { + background:transparent url(images/menuId_top.gif) no-repeat scroll left top !important; +} +#menubar #mbIdentification DD { + background:transparent url(images/menuId_bottom.gif) no-repeat scroll left bottom; +} +#menubar #mbIdentification UL, #menubar #mbIdentification p, #menubar #mbIdentification .illustration { + background:transparent url(images/menuId_sides.gif) repeat-y scroll left bottom; +} +#menubar #mbIdentification form { + background:transparent url(images/menuId_sides.gif) repeat-y scroll left bottom; +} +#menubar #mbIdentification form p { + background:transparent none repeat-y scroll left bottom; +} +#menubar #mbIdentification p { + padding: 2px 16px 0; + margin: 0; +} +#menubar #mbIdentification fieldset div input[type="text"] { + margin: 0 0 3px; + width: 174px; + display: inline; +} +#menubar #mbIdentification .button { + height:24px; + width:24px; + right:0px; + top:-40px; +} +#menubar #mbIdentification fieldset { + border:0; + margin:0 24px 0 23px; +} +#menubar #mbIdentification legend { + display: none; +} +#mbIdentification p, .totalImages { + color:#666; +} + +#menubar #menuTagCloud { + background:transparent url(images/menuBox_sides.gif) repeat-y scroll left bottom; + margin:0; + padding: 0 12px; +} + +#qsearchInput:focus, input:focus, select:focus, textarea:focus, input.focus, form .focus { + background-color:#444; + color:#999; +} +#qsearchInput { + color:#999; +} + + +/** + * Content + */ +.content { + background:#222 url(images/fillet.gif) repeat-x scroll left top; + min-height:466px; + border: 1px solid #000; + border-top: 0; + margin:21px 7px 0 290px !important; + padding-top:7px; +} + +#the_page { + background:transparent url(images/top-left-bg.jpg) no-repeat scroll left top; + left:0; + margin:0; + padding:0; + position:absolute; + top:0; + z-index:0; + width: 100%; + min-width: 100%; +} + +.content h2 { + padding:0px 10px 15px 15px; + border:0; +} +.content .navigationBar { + color:#666; +} +/* contentWithMenu */ +.contentWithMenu { + margin-left: 290px; +} +.contentWithMenu #comments { + padding: 0 0 5px 0; +} +.contentWithMenu #imageToolBar { + padding-left: 0; +} +.contentWithMenu #imageHeaderBar .browsePath { + margin-left: 0; +} + +/* Category thumbnails on main page */ +.thumbnailCategories li { + background:#222 url(images/cat_bottom-right.gif) no-repeat scroll right bottom; + width:49%; + margin: 0; + padding:0; +} +.thumbnailCategory { + background:transparent url(images/cat_bottom-left.gif) no-repeat scroll left bottom; + padding: 0 0 2px; + margin:0; +} +.thumbnailCategory .illustration { + background:transparent url(images/cat_top-left.gif) no-repeat scroll left top; + padding: 0 5px 0 10px; + margin: 0 !important; + text-align: center; +} +.thumbnailCategory .illustration a { + display: block; + margin: 0 auto; + padding: 20px 4px 0; + border:0; +} +.thumbnailCategory .description { + background:transparent url(images/cat_top-right.gif) no-repeat scroll right top; + margin: 0; + padding:15px 10px 3px 0; + overflow: hidden !important; + height:158px; +} +.thumbnailCategory .description .text { + display:block; + margin:10px 2px 0 0; + overflow: auto; + overflow-x:hidden; + padding:0 0 5px; +} +.thumbnailCategory .description p.dates { + margin: 0 15px 0 15px; + text-align: right; +} +.thumbnailCategory .description H3 { + display: block; +} +.thumbnailCategories li:hover { + background-color:#111; +} + +/* header */ +#theHeader { + min-height:110px; + height:110px; +} + +.header_msgs { + background:transparent url(images/header_msgs-bg.gif) repeat scroll left top; + border:0; + color:#333; + font-size:24px; + left:0; + margin:0; + padding:10px 0 6px 0; + text-align:center; + top:0; + width:100%; + z-index:99; +} +.header_notes { + background:transparent url(images/header_msgs-bg.gif) repeat scroll left top; + border:0 none; + color:#333; + font-size:16px; + margin:0; + padding:0; + position:absolute; + top:0; + width:100%; + z-index:99; +} +.infos { + color:#f70; + border:0; + background:transparent url(icon/infos.png) no-repeat center right; + margin-left:40px; + text-align:left; +} +.errors { + color:#f33; + border:0; + background:transparent url(icon/errors.png) no-repeat center right; + margin-left:40px; + text-align:left; + font-weight:bold; +} +.infos li, .errors li { + list-style-type:none; +} + +/* User comments */ +#comments { + margin: 0 10px 5px 10px; +} +.content .commentElement { + border: 1px solid #666; +} +.content .commentElement.odd { + background-color: #222; +} +.content .commentElement.even { + background-color: #111; +} +.content .commentElement .illustration { + margin: 2px; + text-align: center; +} +.content .commentElement .description { + padding:15px 10px 3px 0; + overflow-x: hidden !important; +} + +#comments .commentsList hr {display:none;} +#comments .filter input[type="submit"] { margin-top:1.8em; } + +/* Thumbnails */ +.thumbnails .wrap2 { + border: 1px solid #666; /* thumbnails border color and style */ + border-radius: 4px 4px; /* round corners with CSS3 compliant browsers */ +} +.thumbnails .wrap2:hover { + color:#666; + background-color:#111; + border:1px solid #ff3363; /* thumbnails border color when mouse cursor is over it */ +} +.calItem { + border:1px solid #666; + margin:0 5px; + padding:2px 5px 0 8px; +} +SPAN.calItem, td.calDayCellEmpty, td.calDayCellFull { + border:1px solid #666; +} + + +/** + * Picture + */ +#imageToolBar { + padding:0 7%; +} +#imageHeaderBar .imageNumber { + margin-right:7%; +} +#imageHeaderBar .browsePath { + margin-left:7%; +} +#imageHeaderBar, #imageToolBar A:hover { + background-color: transparent; +} +#imageHeaderBar H2 { + border: 0; +} + +#theImage A, .illustration A, A.navThumb, A.navThumb { + border-bottom-width: 0; +} +.rateButtonStarFull, .rateButtonStarEmpty { + background-image: url('icon/rating-stars.gif'); +} + +#thePicturePage .commentElement { + padding: 15px 2px 6px 12px; + border: 1px solid #666; +} +#thePicturePage .commentsList { + padding-left: 12px; + padding-right: 12px; + overflow: visible; + width: auto; +} +#thePicturePage .odd { + background-color: #222; +} + +.pictureContent { + margin:0 7px 7px 290px; +} + +#addComment fieldset { + color: #f70; + border-color: #f70; +} +#addComment fieldset label { + color: #666; +} + + +/** + * Default Layout + */ +*, *:focus, *:active, input:active, a:active, input:focus, a:focus { + outline: none; +} +BODY { + background:#111 url(images/bottom-left-bg.jpg) no-repeat fixed left bottom; + margin:0; + min-height: 100%; + height: 100%; + padding:0; +} +BODY, H1, H3, DT, INPUT.rateButtonSelected, H2, #menubar DT { + color:#666; +} + +/* forms */ +FIELDSET, INPUT, SELECT, TEXTAREA { + border: 1px solid #666; +} +input[type="text"], input[type="password"], input[type="button"], input[type="submit"], input[type="reset"], input[type="file"] { + background-color:#444; + color:#999; +} /* stupid Line but needed due to inpact on other themes and deadline of Piwigo 2.0 */ +input[type="file"] { + background-color:#222; + border: 1px solid #666; +} +INPUT, select, textarea { + color:#999; + background-color:#444; +} +input[type="radio"], input[type="checkbox"], input[type="button"].rateButtonStarEmpty, input[type="button"].rateButtonStarFull { + background-color: transparent; +} +input[type="button"], input[type="submit"], input[type="reset"] { + color:#ff3363; + background-color:#222; + border-color:#ff3363; +} +input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover { + color:#999; + border-color:#666; +} + +/* links */ +A, .rateButton { + color:#f70; + border-width: 0; +} +A:hover, A:active { + color:#f33; + border-bottom: 1px solid #ff3363; + cursor: pointer; +} +a.external { + color:#ff3363; + border:0; + text-decoration: none; +} +a.external:hover { + color:#ff7700; + border:0; +} +a.Piwigo { + font-family: verdana, arial, helvetica, sans-serif !important; + font-size: 11px; font-weight: normal; letter-spacing: 0; + color : #F33; text-decoration: none; border: 0; } +a.Piwigo:hover { + border-bottom: 1px solid #ff3363; +} + +.titrePage img.button[alt="x"] { margin: 0 3px 3px; } +tr.tagLine, fieldset.tagLetter, legend.tagLetterLegend { + border-color: #666; +} +#debug { + margin: 15px 15px 5px 248px; + font-size:12px; + clear: both; +} + +/* sprites */ +.pwg-icon { + background-image: url(../default/s26/outline_ff3363.png); +} +A:hover .pwg-icon { + background-image: url(../default/s26/outline_ff7700.png); +} + +.message { + color:white; + background-color:#666; +} + +.switchBox { + background-color: #222222; + border: 1px solid #FF3363; + border-radius: 0 15px 0 15px; +} + +.switchBoxTitle { + border-color:#666; +} diff --git a/sources/themes/Sylvia/themeconf.inc.php b/sources/themes/Sylvia/themeconf.inc.php new file mode 100644 index 0000000..1022115 --- /dev/null +++ b/sources/themes/Sylvia/themeconf.inc.php @@ -0,0 +1,38 @@ + 'Sylvia', + 'parent' => 'default', + 'icon_dir' => 'themes/Sylvia/icon', + 'mime_icon_dir' => 'themes/Sylvia/icon/mimetypes/', +); +/************************************ mainpage_categories.tpl ************************************/ +add_event_handler('loc_end_index_category_thumbnails', 'Sylvia_album'); +function Sylvia_album($tpl_thumbnails_var) +{ + global $template; + $template->set_prefilter('index_category_thumbnails', 'Sylvia_album_prefilter'); + return $tpl_thumbnails_var; +} +function Sylvia_album_prefilter($content, &$smarty) +{ + $search = '#\{html_style\}#'; + $replacement = '{html_style} +.thumbnailCategory .description .text{ldelim} + height: {$derivative_params->max_height()-30}px; +}'; + $content = preg_replace($search, $replacement, $content); + $search = '#\.thumbnailCategory[\t ]*.description\{ldelim\}[\s]*height:[\t ]*\{\$derivative_params->max_height\(\)\+5#'; + $replacement = '.thumbnailCategory .description{ldelim} + height: {$derivative_params->max_height()+15'; + $content = preg_replace($search, $replacement, $content); + return $content; +} +?> diff --git a/sources/themes/clear/index.php b/sources/themes/clear/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/clear/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/clear/screenshot.png b/sources/themes/clear/screenshot.png new file mode 100644 index 0000000..6ae1a6a Binary files /dev/null and b/sources/themes/clear/screenshot.png differ diff --git a/sources/themes/clear/theme.css b/sources/themes/clear/theme.css new file mode 100644 index 0000000..a7c64fa --- /dev/null +++ b/sources/themes/clear/theme.css @@ -0,0 +1,89 @@ + +/* text color */ +BODY, H1, H2, DT, +INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ { + color:#696969; /* dimgray */ +} + +/* backgrounds */ +BODY { + background-color: #ffffff; /* white */ +} + +H2, #menubar DT, #imageHeaderBar, #imageToolBar A:hover { + background-color: #d3d3d3; +} + +#menubar DL, .content, #imageToolBar, .switchBox, .header_notes { + background-color: #eeeeee; +} + +/* borders */ +#menubar DL, .content, #imageToolBar, .switchBox { + border: 1px solid #d3d3d3; +} + +#theImage IMG { + border: 3px solid #d3d3d3; +} + +/*I think this rule is never used*/ +.content UL.thumbnail IMG { + border: 1px solid #a0a0a0; +} + +FIELDSET, INPUT, SELECT, TEXTAREA, +.content .thumbnailCategory, +.content .commentElement { + border: 1px solid gray; +} + +.thumbnails .wrap2 { + border: 1px solid #aaaaaa; /* thumbnails border color and style */ +} + +.thumbnails .wrap2:hover, +.content .thumbnailCategories .thumbnailCategory:hover, +.content .thumbnailCategories .thumbnailCategory:hover A, +.content .commentsList .commentElement:hover, +.content .commentsList .commentElement:hover A { + background-color: #faebd7; + border-color: yellow; /* thumbnails border color when mouse cursor is over it */ + color: black; +} + +/* links */ +A, INPUT.rateButton { + color: #005e89; + background: transparent; + border-bottom: 1px dotted #005e89; +} + +A:hover, INPUT.rateButton:hover { + color: #808060; +} + +A.pwg-state-default { + border: 0; +} + +A.navThumb, A.navThumb:hover { + border-bottom: none; +} + +/*calendar elements*/ +.calItem +{ + border: 1px solid silver; +} + +#qsearchInput { color: #005e89; } + +.pwg-icon { + background-image: url(../default/s26/outline_005e89.png); +} + +A:hover .pwg-icon { + background-image: url(../default/s26/outline_808060.png); +} + diff --git a/sources/themes/clear/themeconf.inc.php b/sources/themes/clear/themeconf.inc.php new file mode 100644 index 0000000..f7387c2 --- /dev/null +++ b/sources/themes/clear/themeconf.inc.php @@ -0,0 +1,14 @@ + 'clear', + 'parent' => 'default', +); +?> diff --git a/sources/themes/dark/images/index.php b/sources/themes/dark/images/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/dark/images/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/dark/images/tableh1_bg.png b/sources/themes/dark/images/tableh1_bg.png new file mode 100644 index 0000000..fb3c518 Binary files /dev/null and b/sources/themes/dark/images/tableh1_bg.png differ diff --git a/sources/themes/dark/index.php b/sources/themes/dark/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/dark/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/dark/screenshot.png b/sources/themes/dark/screenshot.png new file mode 100644 index 0000000..8886060 Binary files /dev/null and b/sources/themes/dark/screenshot.png differ diff --git a/sources/themes/dark/theme.css b/sources/themes/dark/theme.css new file mode 100644 index 0000000..04360e0 --- /dev/null +++ b/sources/themes/dark/theme.css @@ -0,0 +1,76 @@ + +/* text color */ +BODY, H1, +INPUT.rateButtonSelected /* <= why IE doesn't inherit this ? */ { + color:#d0d0d0; +} + +H2, #menubar DT { + color: #ffff80; + background-image: url(images/tableh1_bg.png); +} + + +/* backgrounds */ + +BODY, #imageToolBar A:hover { + background-color: #2f2f2f; +} + +#menubar DL, .content, #imageToolBar, #imageHeaderBar, .switchBox, .header_notes { + background-color: #505050; +} + +#imageHeaderBar H2 { + background-image: none; +} + +#imageHeaderBar { + border-top: 1px solid #000; +} + +/* borders */ +#menubar DL, .content, .switchBox { + border: 1px solid #000; +} + +#menubar DT, #imageToolBar { + border-bottom: 1px solid #000; +} + +FIELDSET, INPUT, SELECT, TEXTAREA, +.thumbnailCategory , +.content .commentElement , +.thumbnails .wrap2 { + border: 1px solid gray; +} + + +.thumbnails .wrap2:hover, +.thumbnailCategory:hover, +.content .commentElement:hover{ + border-color: yellow; /* thumbnails border color when mouse cursor is over it */ +} + + +/* links */ +A, INPUT.rateButton { + color: #fff; +} + +A:hover { + color: #ffff80; +} + +.pwg-icon { + background-image: url(../default/s26/outline_ffffff.png); +} + +A:hover .pwg-icon { + background-image: url(../default/s26/outline_ffff80.png); +} + +.message { + color:white; + background-color:#666; +} \ No newline at end of file diff --git a/sources/themes/dark/themeconf.inc.php b/sources/themes/dark/themeconf.inc.php new file mode 100644 index 0000000..832954e --- /dev/null +++ b/sources/themes/dark/themeconf.inc.php @@ -0,0 +1,14 @@ + 'dark', + 'parent' => 'default', +); +?> diff --git a/sources/themes/default/fix-ie5-ie6.css b/sources/themes/default/fix-ie5-ie6.css new file mode 100644 index 0000000..4c2f7e9 --- /dev/null +++ b/sources/themes/default/fix-ie5-ie6.css @@ -0,0 +1,72 @@ +/* Issues in IE from 5 to 6 only not to be used with IE7 */ + +#menubar LI.selected A { + font-weight: bold; +} + +#menubar LI.selected LI A { + font-weight: normal; +} + +/* fix IE with another layout for thumbnails */ +.thumbnails .wrap2 { + display: block; + position: relative; + text-align: left; +} +.thumbnails .wrap2 A, +.thumbnails .wrap2 SPAN { + overflow: visible; + position: absolute; + top: 50%; + text-align: center; +} + +.thumbnails .wrap2 IMG { + position: relative; + top: -50%; + /*\*//*/ + margin-top: -40%; + /**/ +} + +/* to avoid vanishing objects in IE6 */ +H1, #theHeader { + width: 100%; /* <- useless but seems to make IE6 happy */ +} +.content { + height: 1em; /* for IE6 it's like min-height */ +} + +/* fix category thumbnails on main page */ +.content .thumbnailCategories { + width: 99%; /* buggy IE box model */ +} + + +/* fix quickconnect layout */ +#quickconnect FIELDSET { + width: 99%; /* correct an ugly 1 or 2 px misalignement with IE */ +} + +.filter LABEL INPUT, +.filter LABEL SELECT { + display: block; + margin: 0.5em 0; +} +.filter FIELDSET * LABEL INPUT, +.filter FIELDSET * LABEL SELECT { + display: inline; + vertical-align: top; + margin: 0 0.5em 0 0; +} + +.pwg-icon { + display: block; +} + +.imageInfoTable {display:block; margin: 0 200px;} +.imageInfo {display:block; line-height:16px;} +.imageInfo dt {display:block; text-align:left; font-weight:bold; padding-right:0.5em;} +.imageInfo dd {display:block; text-align:left; font-weight:normal;} +#imageInfos dd { margin: 0 0 5px 20px;} \ No newline at end of file diff --git a/sources/themes/default/fix-ie7.css b/sources/themes/default/fix-ie7.css new file mode 100644 index 0000000..fb77bfc --- /dev/null +++ b/sources/themes/default/fix-ie7.css @@ -0,0 +1,29 @@ +/* fix IE with another layout for thumbnails */ + +.thumbnails .wrap2 { + display: block; + position: relative; + text-align: left; +} +.thumbnails .wrap2 A, +.thumbnails .wrap2 SPAN { + overflow: visible; + position: absolute; + top: 50%; + text-align: center; +} + +.thumbnails .wrap2 IMG { + position: relative; + top: -50%; +} + +.pwg-icon { + display: block; +} + +.imageInfoTable {display:block; margin: 0 200px;} +.imageInfo {display:block; line-height:16px;} +.imageInfo dt {display:block; text-align:left; font-weight:bold; padding-right:0.5em;} +.imageInfo dd {display:block; text-align:left; font-weight:normal;} +#imageInfos dd { margin: 0 0 5px 20px;} \ No newline at end of file diff --git a/sources/themes/default/fix-khtml.css b/sources/themes/default/fix-khtml.css new file mode 100644 index 0000000..ed263ef --- /dev/null +++ b/sources/themes/default/fix-khtml.css @@ -0,0 +1,17 @@ +/* Issue in Safari/Konqueror only */ +/* If H2 has a 0 margin-top categoryActions doesn't float right but overwrites H2 */ +.content>.titrePage>H2 { + margin: 1px 0 0 0; /* add an arbitrary margin-top */ +} + +.content>.titrePage { + position: relative; + top: -1px; /* move the container up by the same amount */ + margin-bottom: 5px; +} + +#menubar #menuTagCloud SPAN +{ + display: inline-block;/* required for Safari 3.1 - otherwise overflows on the right */ +} + diff --git a/sources/themes/default/icon/datepicker.png b/sources/themes/default/icon/datepicker.png new file mode 100644 index 0000000..bbb2992 Binary files /dev/null and b/sources/themes/default/icon/datepicker.png differ diff --git a/sources/themes/default/icon/errors.png b/sources/themes/default/icon/errors.png new file mode 100644 index 0000000..3c8a37d Binary files /dev/null and b/sources/themes/default/icon/errors.png differ diff --git a/sources/themes/default/icon/errors_small.png b/sources/themes/default/icon/errors_small.png new file mode 100644 index 0000000..724cc65 Binary files /dev/null and b/sources/themes/default/icon/errors_small.png differ diff --git a/sources/themes/default/icon/favicon.ico b/sources/themes/default/icon/favicon.ico new file mode 100644 index 0000000..f25fffe Binary files /dev/null and b/sources/themes/default/icon/favicon.ico differ diff --git a/sources/themes/default/icon/img_small.png b/sources/themes/default/icon/img_small.png new file mode 100644 index 0000000..dbfcc9a Binary files /dev/null and b/sources/themes/default/icon/img_small.png differ diff --git a/sources/themes/default/icon/index.php b/sources/themes/default/icon/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/default/icon/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/default/icon/infos.png b/sources/themes/default/icon/infos.png new file mode 100644 index 0000000..dc8c8a4 Binary files /dev/null and b/sources/themes/default/icon/infos.png differ diff --git a/sources/themes/default/icon/mimetypes/avi.png b/sources/themes/default/icon/mimetypes/avi.png new file mode 100644 index 0000000..065f0b2 Binary files /dev/null and b/sources/themes/default/icon/mimetypes/avi.png differ diff --git a/sources/themes/default/icon/mimetypes/index.php b/sources/themes/default/icon/mimetypes/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/default/icon/mimetypes/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/default/icon/mimetypes/mp3.png b/sources/themes/default/icon/mimetypes/mp3.png new file mode 100644 index 0000000..afb7e1b Binary files /dev/null and b/sources/themes/default/icon/mimetypes/mp3.png differ diff --git a/sources/themes/default/icon/mimetypes/mpg.png b/sources/themes/default/icon/mimetypes/mpg.png new file mode 100644 index 0000000..f7dbd23 Binary files /dev/null and b/sources/themes/default/icon/mimetypes/mpg.png differ diff --git a/sources/themes/default/icon/mimetypes/ogg.png b/sources/themes/default/icon/mimetypes/ogg.png new file mode 100644 index 0000000..ead3f62 Binary files /dev/null and b/sources/themes/default/icon/mimetypes/ogg.png differ diff --git a/sources/themes/default/icon/mimetypes/unknown.png b/sources/themes/default/icon/mimetypes/unknown.png new file mode 100644 index 0000000..a5687db Binary files /dev/null and b/sources/themes/default/icon/mimetypes/unknown.png differ diff --git a/sources/themes/default/icon/mimetypes/zip.png b/sources/themes/default/icon/mimetypes/zip.png new file mode 100644 index 0000000..1f08fe1 Binary files /dev/null and b/sources/themes/default/icon/mimetypes/zip.png differ diff --git a/sources/themes/default/icon/note.png b/sources/themes/default/icon/note.png new file mode 100644 index 0000000..5849f79 Binary files /dev/null and b/sources/themes/default/icon/note.png differ diff --git a/sources/themes/default/icon/rating-stars.gif b/sources/themes/default/icon/rating-stars.gif new file mode 100644 index 0000000..66d938d Binary files /dev/null and b/sources/themes/default/icon/rating-stars.gif differ diff --git a/sources/themes/default/icon/recent.png b/sources/themes/default/icon/recent.png new file mode 100644 index 0000000..78c1428 Binary files /dev/null and b/sources/themes/default/icon/recent.png differ diff --git a/sources/themes/default/icon/recent_by_child.png b/sources/themes/default/icon/recent_by_child.png new file mode 100644 index 0000000..48e2b4b Binary files /dev/null and b/sources/themes/default/icon/recent_by_child.png differ diff --git a/sources/themes/default/icon/remove_s.png b/sources/themes/default/icon/remove_s.png new file mode 100644 index 0000000..dbe7a52 Binary files /dev/null and b/sources/themes/default/icon/remove_s.png differ diff --git a/sources/themes/default/iconset.css b/sources/themes/default/iconset.css new file mode 100644 index 0000000..6c8e7a1 --- /dev/null +++ b/sources/themes/default/iconset.css @@ -0,0 +1,72 @@ +.pwg-icon { + display: inline-block; /*IE6 does not get this correctly*/ + text-indent: -9999px; overflow: hidden; background-repeat: no-repeat; + width: 26px; height: 26px; background-image: url(s26/outline_808080.png); + vertical-align: bottom; +} +.pwg-button-text { display:none; } + +.pwg-state-disabled .pwg-icon { + opacity: .5; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; + filter: alpha(opacity=50); +} + +.pwg-button { + display: inline-block; + vertical-align: top; + cursor:pointer; +} + +.pwg-icon-home {background-position: -26px 0} +.pwg-icon-camera {background-position: -52px 0} +.pwg-icon-save {background-position: -78px 0} +.pwg-icon-cloud {background-position: -104px 0} +.pwg-icon-letters {background-position: -130px 0} +.pwg-icon-calendar {background-position: -156px 0} +.pwg-icon-camera-calendar {background-position: -182px 0} + +.pwg-icon-arrow-n {background-position: 0 -26px} +.pwg-icon-arrow-e {background-position: -26px -26px} +/*.pwg-icon-arrow-s {background-position: -52px -26px}*/ +.pwg-icon-arrow-w {background-position: -78px -26px} +/*.pwg-icon-arrowstop-n {background-position: -104px -26px}*/ +.pwg-icon-arrowstop-e {background-position: -130px -26px} +/*.pwg-icon-arrowstop-s {background-position: -156px -26px}*/ +.pwg-icon-arrowstop-w {background-position: -182px -26px} + +.pwg-icon-close {background-position: 0 -52px} +.pwg-icon-category-edit {background-position: -26px -52px} +.pwg-icon-sort {background-position: -52px -52px} +.pwg-icon-sizes {background-position: -78px -52px} +.pwg-icon-menu {background-position: -130px -52px} +.pwg-icon-category-view-normal {background-position: -156px -52px} +.pwg-icon-category-view-flat {background-position: -182px -52px} + +.pwg-icon-caddie {background-position: 0 -78px} +.pwg-icon-caddie-add {background-position: -26px -78px} +.pwg-icon-caddie-del {background-position: -52px -78px} +.pwg-icon-favorite {background-position: -78px -78px} +.pwg-icon-favorite-add {background-position: -104px -78px} +.pwg-icon-favorite-del {background-position: -130px -78px} +.pwg-icon-filter {background-position: -156px -78px} +.pwg-icon-filter-del {background-position: -182px -78px} + +.pwg-icon-camera-info {background-position: 0 -104px} +.pwg-icon-representative {background-position: -26px -104px} +.pwg-icon-edit {background-position: -52px -104px} +.pwg-icon-register {background-position: -78px -104px} +.pwg-icon-lost-password {background-position: -104px -104px} + +.pwg-icon-slideshow {background-position: 0 -130px} +.pwg-icon-play {background-position: -26px -130px} +.pwg-icon-pause {background-position: -52px -130px} +.pwg-icon-stop {background-position: -78px -130px} +.pwg-icon-clock-plus {background-position: -104px -130px} +.pwg-icon-clock-minus {background-position: -130px -130px} +.pwg-icon-repeat-play {background-position: -156px -130px} +.pwg-icon-repeat-stop {background-position: -182px -130px} + +.pwg-icon-map {background-position: 0 -156px} +.pwg-icon-globe {background-position: -26px -156px} + diff --git a/sources/themes/default/images/ajax-loader-small.gif b/sources/themes/default/images/ajax-loader-small.gif new file mode 100644 index 0000000..09d621e Binary files /dev/null and b/sources/themes/default/images/ajax-loader-small.gif differ diff --git a/sources/themes/default/images/ajax_loader.gif b/sources/themes/default/images/ajax_loader.gif new file mode 100644 index 0000000..d84f653 Binary files /dev/null and b/sources/themes/default/images/ajax_loader.gif differ diff --git a/sources/themes/default/images/index.php b/sources/themes/default/images/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/default/images/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/default/images/progressbar.gif b/sources/themes/default/images/progressbar.gif new file mode 100644 index 0000000..abe588c Binary files /dev/null and b/sources/themes/default/images/progressbar.gif differ diff --git a/sources/themes/default/images/progressbg_black.gif b/sources/themes/default/images/progressbg_black.gif new file mode 100644 index 0000000..74fd1f9 Binary files /dev/null and b/sources/themes/default/images/progressbg_black.gif differ diff --git a/sources/themes/default/images/progressbg_green.gif b/sources/themes/default/images/progressbg_green.gif new file mode 100644 index 0000000..f3f3bf6 Binary files /dev/null and b/sources/themes/default/images/progressbg_green.gif differ diff --git a/sources/themes/default/images/progressbg_orange.gif b/sources/themes/default/images/progressbg_orange.gif new file mode 100644 index 0000000..808cac7 Binary files /dev/null and b/sources/themes/default/images/progressbg_orange.gif differ diff --git a/sources/themes/default/images/progressbg_red.gif b/sources/themes/default/images/progressbg_red.gif new file mode 100644 index 0000000..54dfa13 Binary files /dev/null and b/sources/themes/default/images/progressbg_red.gif differ diff --git a/sources/themes/default/images/progressbg_yellow.gif b/sources/themes/default/images/progressbg_yellow.gif new file mode 100644 index 0000000..fdb0dfc Binary files /dev/null and b/sources/themes/default/images/progressbg_yellow.gif differ diff --git a/sources/themes/default/index.php b/sources/themes/default/index.php new file mode 100644 index 0000000..c8de97f --- /dev/null +++ b/sources/themes/default/index.php @@ -0,0 +1,30 @@ + diff --git a/sources/themes/default/js/datepicker.js b/sources/themes/default/js/datepicker.js new file mode 100644 index 0000000..ff2c2d4 --- /dev/null +++ b/sources/themes/default/js/datepicker.js @@ -0,0 +1,188 @@ +// initialize controls +// buttonImageName: Directory and name of calendar picture +// day, month, year: selectors of visible date controls +// linked_date: selector of hidden linked dates control +// checked_on_change: selector of control to change "checked" attribut +// min_linked_date: selector of hidden linked date control witch give min value +// max_linked_date: selector of hidden linked date control witch give max value +function pwg_common_initialization_datepicker(buttonImageName, day, month, year, linked_date, checked_on_change, min_linked_date, max_linked_date) +{ + // return formated date with control values + function pwg_get_fmt_from_ctrls() + { + return $(year).val() + "-" + $(month).val() + "-" + $(day).val(); + } + + // return if linked_date is valid date + function is_valid_linked_value(linked_date_name) + { + var array_date = $(linked_date_name).val().split('-'); + return ( + (array_date.length == 3) && + (array_date[0].length) && + (array_date[1].length) && (array_date[1] != "0") && + (array_date[2].length) && (array_date[2] != "0") + ) + } + + // Action on change date value + function pwg_on_date_change() + { + pwg_check_date(); + if (checked_on_change != null) + { + $(checked_on_change).prop("checked", true); + } + } + + // In order to desable element of list + function pwg_disabled_selection() + { + var array_date = $(linked_date).val().split('-') + , y = array_date[0] + , m = array_date[1]; + + // Init list + $(day + " option").removeAttr("disabled"); + $(month + " option").removeAttr("disabled"); + + var daysInMonth = 32 - new Date(y, m - 1, 32).getDate(); + $(day + " option:gt(" + (daysInMonth) +")").attr("disabled", "disabled"); + + if ((min_linked_date != null) && (is_valid_linked_value(min_linked_date) == true)) + { + date_cmp = min_linked_date; + op_cmp = "lt"; + } + else if ((max_linked_date != null) && (is_valid_linked_value(max_linked_date) == true)) + { + date_cmp = max_linked_date; + op_cmp = "gt"; + } + else + { + date_cmp = null; + op_cmp = null; + } + + if (op_cmp != null) + { + array_date = $(date_cmp).val().split('-'); + y_cmp = array_date[0]; + m_cmp = array_date[1]; + d_cmp = array_date[2]; + + if (y == y_cmp) + { + $(month + " option:" + op_cmp + "(" + (m_cmp) +")").attr("disabled", "disabled"); + if (op_cmp == "lt") + { + $(month + " option:eq(" + (0) +")").removeAttr("disabled"); + } + + if (m == m_cmp) + { + $(day + " option:" + op_cmp + "(" + (d_cmp) +")").attr("disabled", "disabled"); + if (op_cmp == "lt") + { + $(day + " option:eq(" + (0) +")").removeAttr("disabled"); + } + } + } + } + } + + // Prevent selection of invalid dates through the select controls + function pwg_check_date() + { + var last_date = $(linked_date).val() + , cancel=false; + + $(linked_date).val(pwg_get_fmt_from_ctrls()); + + if ((min_linked_date != null) && (is_valid_linked_value(min_linked_date))) + { + cancel = ($(min_linked_date).datepicker("getDate") > $(linked_date).datepicker("getDate")); + } + else if ((max_linked_date != null) && (is_valid_linked_value(max_linked_date))) + { + cancel = ($(max_linked_date).datepicker("getDate") < $(linked_date).datepicker("getDate")); + } + + if (cancel) + { + var array_date = last_date.split('-'); + $(year).val(array_date[0]); + $(month).val(array_date[1]); + $(day).val(array_date[2]); + // check again + pwg_check_date(); + } + } + + jQuery().ready(function(){ + // Init hidden value + $(linked_date).val(pwg_get_fmt_from_ctrls()); + + // Init Datepicker + jQuery(linked_date).datepicker({ + dateFormat:'yy-m-d', + beforeShow: + // Prepare to show a date picker linked to three select controls + function readLinked(input) { + if (min_linked_date != null) + { + return {minDate: $(min_linked_date).datepicker("getDate")}; + } + else if (max_linked_date != null) + { + return {maxDate: $(max_linked_date).datepicker("getDate")}; + } + else + { + return {}; + } + }, + onSelect: + // Update three select controls to match a date picker selection + function updateLinked(date) { + if (date.length == 0) + { + $(year).val(""); + $(month).val("0"); + $(day).val("0"); + } + else + { + var array_date = date.split('-'); + $(year).val(array_date[0]); + $(month).val(array_date[1]); + $(day).val(array_date[2]); + } + pwg_on_date_change(); + }, + showOn: "both", + buttonImage: buttonImageName, + buttonImageOnly: true, + buttonText: "" + }); + + // Check showed controls + jQuery(day + ", " + month + ", " + year).change( + function () + { + pwg_on_date_change(); + }); + + // Check showed controls + jQuery(day + ", " + month + ", " + year).focus( + function () + { + pwg_disabled_selection(); + }); + + // In order to init linked input + pwg_check_date(); + }); + +} diff --git a/sources/themes/default/js/jquery.js b/sources/themes/default/js/jquery.js new file mode 100644 index 0000000..c5c6482 --- /dev/null +++ b/sources/themes/default/js/jquery.js @@ -0,0 +1,9789 @@ +/*! + * jQuery JavaScript Library v1.10.2 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03T13:48Z + */ +(function( window, undefined ) { + +// Can't do this because several apps including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +// Support: Firefox 18+ +//"use strict"; +var + // The deferred used on DOM ready + readyList, + + // A central reference to the root jQuery(document) + rootjQuery, + + // Support: IE<10 + // For `typeof xmlNode.method` instead of `xmlNode.method !== undefined` + core_strundefined = typeof undefined, + + // Use the correct document accordingly with window argument (sandbox) + location = window.location, + document = window.document, + docElem = document.documentElement, + + // Map over jQuery in case of overwrite + _jQuery = window.jQuery, + + // Map over the $ in case of overwrite + _$ = window.$, + + // [[Class]] -> type pairs + class2type = {}, + + // List of deleted data cache ids, so we can reuse them + core_deletedIds = [], + + core_version = "1.10.2", + + // Save a reference to some core methods + core_concat = core_deletedIds.concat, + core_push = core_deletedIds.push, + core_slice = core_deletedIds.slice, + core_indexOf = core_deletedIds.indexOf, + core_toString = class2type.toString, + core_hasOwn = class2type.hasOwnProperty, + core_trim = core_version.trim, + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + // The jQuery object is actually just the init constructor 'enhanced' + return new jQuery.fn.init( selector, context, rootjQuery ); + }, + + // Used for matching numbers + core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source, + + // Used for splitting on whitespace + core_rnotwhite = /\S+/g, + + // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE) + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + // Match a standalone tag + rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, + + // JSON RegExp + rvalidchars = /^[\],:{}\s]*$/, + rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g, + rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g, + rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }, + + // The ready event handler + completed = function( event ) { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { + detach(); + jQuery.ready(); + } + }, + // Clean-up method for dom ready events + detach = function() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed, false ); + window.removeEventListener( "load", completed, false ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } + }; + +jQuery.fn = jQuery.prototype = { + // The current version of jQuery being used + jquery: core_version, + + constructor: jQuery, + init: function( selector, context, rootjQuery ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && (match[1] || !context) ) { + + // HANDLE: $(html) -> $(array) + if ( match[1] ) { + context = context instanceof jQuery ? context[0] : context; + + // scripts is true for back-compat + jQuery.merge( this, jQuery.parseHTML( + match[1], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[2] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[2] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[0] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || rootjQuery ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[0] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return rootjQuery.ready( selector ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return core_slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num == null ? + + // Return a 'clean' array + this.toArray() : + + // Return just the object + ( num < 0 ? this[ this.length + num ] : this[ num ] ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + // (You can seed the arguments with an array of args, but this is + // only used internally.) + each: function( callback, args ) { + return jQuery.each( this, callback, args ); + }, + + ready: function( fn ) { + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; + }, + + slice: function() { + return this.pushStack( core_slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map(this, function( elem, i ) { + return callback.call( elem, i, elem ); + })); + }, + + end: function() { + return this.prevObject || this.constructor(null); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: core_push, + sort: [].sort, + splice: [].splice +}; + +// Give the init function the jQuery prototype for later instantiation +jQuery.fn.init.prototype = jQuery.fn; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[0] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + target = arguments[1] || {}; + // skip the boolean and the target + i = 2; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction(target) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( length === i ) { + target = this; + --i; + } + + for ( ; i < length; i++ ) { + // Only deal with non-null/undefined values + if ( (options = arguments[ i ]) != null ) { + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray(src) ? src : []; + + } else { + clone = src && jQuery.isPlainObject(src) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend({ + // Unique for each copy of jQuery on the page + // Non-digits removed to match rinlinejQuery + expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ), + + noConflict: function( deep ) { + if ( window.$ === jQuery ) { + window.$ = _$; + } + + if ( deep && window.jQuery === jQuery ) { + window.jQuery = _jQuery; + } + + return jQuery; + }, + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). + if ( !document.body ) { + return setTimeout( jQuery.ready ); + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.trigger ) { + jQuery( document ).trigger("ready").off("ready"); + } + }, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type(obj) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type(obj) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + return !isNaN( parseFloat(obj) ) && isFinite( obj ); + }, + + type: function( obj ) { + if ( obj == null ) { + return String( obj ); + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ core_toString.call(obj) ] || "object" : + typeof obj; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + // Not own constructor property must be Object + if ( obj.constructor && + !core_hasOwn.call(obj, "constructor") && + !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { + return false; + } + } catch ( e ) { + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( jQuery.support.ownLast ) { + for ( key in obj ) { + return core_hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || core_hasOwn.call( obj, key ); + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + error: function( msg ) { + throw new Error( msg ); + }, + + // data: string of html + // context (optional): If specified, the fragment will be created in this context, defaults to document + // keepScripts (optional): If true, will include scripts passed in the html string + parseHTML: function( data, context, keepScripts ) { + if ( !data || typeof data !== "string" ) { + return null; + } + if ( typeof context === "boolean" ) { + keepScripts = context; + context = false; + } + context = context || document; + + var parsed = rsingleTag.exec( data ), + scripts = !keepScripts && []; + + // Single tag + if ( parsed ) { + return [ context.createElement( parsed[1] ) ]; + } + + parsed = jQuery.buildFragment( [ data ], context, scripts ); + if ( scripts ) { + jQuery( scripts ).remove(); + } + return jQuery.merge( [], parsed.childNodes ); + }, + + parseJSON: function( data ) { + // Attempt to parse using the native JSON parser first + if ( window.JSON && window.JSON.parse ) { + return window.JSON.parse( data ); + } + + if ( data === null ) { + return data; + } + + if ( typeof data === "string" ) { + + // Make sure leading/trailing whitespace is removed (IE can't handle it) + data = jQuery.trim( data ); + + if ( data ) { + // Make sure the incoming data is actual JSON + // Logic borrowed from http://json.org/json2.js + if ( rvalidchars.test( data.replace( rvalidescape, "@" ) + .replace( rvalidtokens, "]" ) + .replace( rvalidbraces, "")) ) { + + return ( new Function( "return " + data ) )(); + } + } + } + + jQuery.error( "Invalid JSON: " + data ); + }, + + // Cross-browser xml parsing + parseXML: function( data ) { + var xml, tmp; + if ( !data || typeof data !== "string" ) { + return null; + } + try { + if ( window.DOMParser ) { // Standard + tmp = new DOMParser(); + xml = tmp.parseFromString( data , "text/xml" ); + } else { // IE + xml = new ActiveXObject( "Microsoft.XMLDOM" ); + xml.async = "false"; + xml.loadXML( data ); + } + } catch( e ) { + xml = undefined; + } + if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) { + jQuery.error( "Invalid XML: " + data ); + } + return xml; + }, + + noop: function() {}, + + // Evaluates a script in a global context + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + // args is for internal usage only + each: function( obj, callback, args ) { + var value, + i = 0, + length = obj.length, + isArray = isArraylike( obj ); + + if ( args ) { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.apply( obj[ i ], args ); + + if ( value === false ) { + break; + } + } + } + + // A special, fast, case for the most common use of each + } else { + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } else { + for ( i in obj ) { + value = callback.call( obj[ i ], i, obj[ i ] ); + + if ( value === false ) { + break; + } + } + } + } + + return obj; + }, + + // Use native String.trim function wherever possible + trim: core_trim && !core_trim.call("\uFEFF\xA0") ? + function( text ) { + return text == null ? + "" : + core_trim.call( text ); + } : + + // Otherwise use our own trimming functionality + function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArraylike( Object(arr) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + core_push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( core_indexOf ) { + return core_indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var l = second.length, + i = first.length, + j = 0; + + if ( typeof l === "number" ) { + for ( ; j < l; j++ ) { + first[ i++ ] = second[ j ]; + } + } else { + while ( second[j] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, inv ) { + var retVal, + ret = [], + i = 0, + length = elems.length; + inv = !!inv; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + retVal = !!callback( elems[ i ], i ); + if ( inv !== retVal ) { + ret.push( elems[ i ] ); + } + } + + return ret; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var value, + i = 0, + length = elems.length, + isArray = isArraylike( elems ), + ret = []; + + // Go through the array, translating each of the items to their + if ( isArray ) { + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret[ ret.length ] = value; + } + } + } + + // Flatten any nested arrays + return core_concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = core_slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + // Multifunctional method to get and set values of a collection + // The value/s can optionally be executed if it's a function + access: function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[0], key ) : emptyGet; + }, + + now: function() { + return ( new Date() ).getTime(); + }, + + // A method for quickly swapping in/out CSS properties to get correct calculations. + // Note: this method belongs to the css module but it's needed here for the support module. + // If support gets modularized, this method should be moved back to the css module. + swap: function( elem, options, callback, args ) { + var ret, name, + old = {}; + + // Remember the old values, and insert the new ones + for ( name in options ) { + old[ name ] = elem.style[ name ]; + elem.style[ name ] = options[ name ]; + } + + ret = callback.apply( elem, args || [] ); + + // Revert the old values + for ( name in options ) { + elem.style[ name ] = old[ name ]; + } + + return ret; + } +}); + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called after the browser event has already occurred. + // we once tried to use readyState "interactive" here, but it caused issues like the one + // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 + if ( document.readyState === "complete" ) { + // Handle it asynchronously to allow scripts the opportunity to delay ready + setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed, false ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed, false ); + + // If IE event model is used + } else { + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch(e) {} + + if ( top && top.doScroll ) { + (function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll("left"); + } catch(e) { + return setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + })(); + } + } + } + return readyList.promise( obj ); +}; + +// Populate the class2type map +jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +}); + +function isArraylike( obj ) { + var length = obj.length, + type = jQuery.type( obj ); + + if ( jQuery.isWindow( obj ) ) { + return false; + } + + if ( obj.nodeType === 1 && length ) { + return true; + } + + return type === "array" || type !== "function" && + ( length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj ); +} + +// All jQuery objects should point back to these +rootjQuery = jQuery(document); +/*! + * Sizzle CSS Selector Engine v1.10.2 + * http://sizzlejs.com/ + * + * Copyright 2013 jQuery Foundation, Inc. and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2013-07-03 + */ +(function( window, undefined ) { + +var i, + support, + cachedruns, + Expr, + getText, + isXML, + compile, + outermostContext, + sortInput, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + -(new Date()), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + hasDuplicate = false, + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + return 0; + } + return 0; + }, + + // General-purpose constants + strundefined = typeof undefined, + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf if we can't use a native one + indexOf = arr.indexOf || function( elem ) { + var i = 0, + len = this.length; + for ( ; i < len; i++ ) { + if ( this[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + // http://www.w3.org/TR/css3-syntax/#characters + characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Loosely modeled on CSS identifier characters + // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors + // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = characterEncoding.replace( "w", "w#" ), + + // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace + + "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]", + + // Prefer arguments quoted, + // then not containing pseudos/brackets, + // then attribute selectors/non-parenthetical expressions, + // then anything else + // These preferences are here to reduce the number of selectors + // needing tokenize in the PSEUDO preFilter + pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rsibling = new RegExp( whitespace + "*[+~]" ), + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + characterEncoding + ")" ), + "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), + "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + // BMP codepoint + high < 0 ? + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var match, elem, m, nodeType, + // QSA vars + i, groups, old, nid, newContext, newSelector; + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + + context = context || document; + results = results || []; + + if ( !selector || typeof selector !== "string" ) { + return results; + } + + if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) { + return []; + } + + if ( documentIsHTML && !seed ) { + + // Shortcuts + if ( (match = rquickExpr.exec( selector )) ) { + // Speed-up: Sizzle("#ID") + if ( (m = match[1]) ) { + if ( nodeType === 9 ) { + elem = context.getElementById( m ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + // Handle the case where IE, Opera, and Webkit return items + // by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + } else { + // Context is not a document + if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && + contains( context, elem ) && elem.id === m ) { + results.push( elem ); + return results; + } + } + + // Speed-up: Sizzle("TAG") + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Speed-up: Sizzle(".CLASS") + } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) { + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // QSA path + if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + nid = old = expando; + newContext = context; + newSelector = nodeType === 9 && selector; + + // qSA works strangely on Element-rooted queries + // We can work around this by specifying an extra ID on the root + // and working up from there (Thanks to Andrew Dupont for the technique) + // IE 8 doesn't work on object elements + if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { + groups = tokenize( selector ); + + if ( (old = context.getAttribute("id")) ) { + nid = old.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", nid ); + } + nid = "[id='" + nid + "'] "; + + i = groups.length; + while ( i-- ) { + groups[i] = nid + toSelector( groups[i] ); + } + newContext = rsibling.test( selector ) && context.parentNode || context; + newSelector = groups.join(","); + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch(qsaError) { + } finally { + if ( !old ) { + context.removeAttribute("id"); + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {Function(string, Object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key += " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = attrs.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Detect xml + * @param {Element|Object} elem An element or a document + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var doc = node ? node.ownerDocument || node : preferredDoc, + parent = doc.defaultView; + + // If no document and documentElement is available, return + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Set our document + document = doc; + docElem = doc.documentElement; + + // Support tests + documentIsHTML = !isXML( doc ); + + // Support: IE>8 + // If iframe document is assigned to "document" variable and if iframe has been reloaded, + // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 + // IE6-8 do not support the defaultView property so parent will be undefined + if ( parent && parent.attachEvent && parent !== parent.top ) { + parent.attachEvent( "onbeforeunload", function() { + setDocument(); + }); + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( doc.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Check if getElementsByClassName can be trusted + support.getElementsByClassName = assert(function( div ) { + div.innerHTML = "
          "; + + // Support: Safari<4 + // Catch class over-caching + div.firstChild.className = "i"; + // Support: Opera<10 + // Catch gEBCN failure to find non-leading classes + return div.getElementsByClassName("i").length === 2; + }); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !doc.getElementsByName || !doc.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== strundefined && documentIsHTML ) { + var m = context.getElementById( id ); + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + return m && m.parentNode ? [m] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== strundefined ) { + return context.getElementsByTagName( tag ); + } + } : + function( tag, context ) { + var elem, + tmp = [], + i = 0, + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + div.innerHTML = ""; + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + }); + + assert(function( div ) { + + // Support: Opera 10-12/IE8 + // ^= $= *= and empty values + // Should not select anything + // Support: Windows 8 Native Apps + // The type attribute is restricted during .innerHTML assignment + var input = doc.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "t", "" ); + + if ( div.querySelectorAll("[t^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + + // Element contains another + // Purposefully does not implement inclusive descendent + // As in, an element does not contain itself + contains = rnative.test( docElem.contains ) || docElem.compareDocumentPosition ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = docElem.compareDocumentPosition ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b ); + + if ( compare ) { + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === doc || contains(preferredDoc, a) ) { + return -1; + } + if ( b === doc || contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } + + // Not directly comparable, sort on existence of method + return a.compareDocumentPosition ? -1 : 1; + } : + function( a, b ) { + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + + // Parentless nodes are either documents or disconnected + } else if ( !aup || !bup ) { + return a === doc ? -1 : + b === doc ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return doc; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch(e) {} + } + + return Sizzle( expr, document, null, [elem] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val === undefined ? + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null : + val; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + for ( ; (node = elem[i]); i++ ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (see #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[5] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] && match[4] !== undefined ) { + match[2] = match[4]; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, outerCache, node, diff, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + // Seek `elem` from a previously-cached index + outerCache = parent[ expando ] || (parent[ expando ] = {}); + cache = outerCache[ type ] || []; + nodeIndex = cache[0] === dirruns && cache[1]; + diff = cache[0] === dirruns && cache[2]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + outerCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + // Use previously-cached element index if available + } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { + diff = cache[1]; + + // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) + } else { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { + // Cache the index of each encountered element + if ( useCache ) { + (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf.call( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)), + // not comment, processing instructions, or others + // Thanks to Diego Perini for the nodeName shortcut + // Greater than "@" means alpha characters (specifically not starting with "#" or "?") + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) + // use getAttribute instead to test this case + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +function tokenize( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( tokens = [] ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +} + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var data, cache, outerCache, + dirkey = dirruns + " " + doneName; + + // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) { + if ( (data = cache[1]) === true || data === cachedruns ) { + return data === true; + } + } else { + cache = outerCache[ dir ] = [ dirkey ]; + cache[1] = matcher( elem, context, xml ) || cachedruns; + if ( cache[1] === true ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf.call( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + return ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + // A counter to specify which element is currently being matched + var matcherCachedRuns = 0, + bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, expandContext ) { + var elem, j, matcher, + setMatched = [], + matchedCount = 0, + i = "0", + unmatched = seed && [], + outermost = expandContext != null, + contextBackup = outermostContext, + // We must always have either seed elements or context + elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1); + + if ( outermost ) { + outermostContext = context !== document && context; + cachedruns = matcherCachedRuns; + } + + // Add elements passing elementMatchers directly to results + // Keep `i` a string if there are no elements so `matchedCount` will be "00" below + for ( ; (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context, xml ) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + cachedruns = ++matcherCachedRuns; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // Apply set filters to unmatched elements + matchedCount += i; + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !group ) { + group = tokenize( selector ); + } + i = group.length; + while ( i-- ) { + cached = matcherFromTokens( group[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + } + return cached; +}; + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function select( selector, context, results, seed ) { + var i, tokens, token, type, find, + match = tokenize( selector ); + + if ( !seed ) { + // Try to minimize operations if there is only one group + if ( match.length === 1 ) { + + // Take a shortcut and set the context if the root selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + } + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && context.parentNode || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + } + + // Compile and execute a filtering function + // Provide `match` to avoid retokenization if we modified the selector above + compile( selector, match )( + seed, + context, + !documentIsHTML, + results, + rsibling.test( selector ) + ); + return results; +} + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome<14 +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + elem[ name ] === true ? name.toLowerCase() : null; + } + }); +} + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[":"] = jQuery.expr.pseudos; +jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + +})( window ); +// String to Object options format cache +var optionsCache = {}; + +// Convert String-formatted options into Object-formatted ones and store in cache +function createOptions( options ) { + var object = optionsCache[ options ] = {}; + jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + }); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + ( optionsCache[ options ] || createOptions( options ) ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + // Last fire value (for non-forgettable lists) + memory, + // Flag to know if list was already fired + fired, + // End of the loop when firing + firingLength, + // Index of currently firing callback (modified by remove if needed) + firingIndex, + // First callback to fire (used internally by add and fireWith) + firingStart, + // Actual callback list + list = [], + // Stack of fire calls for repeatable lists + stack = !options.once && [], + // Fire callbacks + fire = function( data ) { + memory = options.memory && data; + fired = true; + firingIndex = firingStart || 0; + firingStart = 0; + firingLength = list.length; + firing = true; + for ( ; list && firingIndex < firingLength; firingIndex++ ) { + if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { + memory = false; // To prevent further calls using add + break; + } + } + firing = false; + if ( list ) { + if ( stack ) { + if ( stack.length ) { + fire( stack.shift() ); + } + } else if ( memory ) { + list = []; + } else { + self.disable(); + } + } + }, + // Actual Callbacks object + self = { + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + // First, we save the current length + var start = list.length; + (function add( args ) { + jQuery.each( args, function( _, arg ) { + var type = jQuery.type( arg ); + if ( type === "function" ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && type !== "string" ) { + // Inspect recursively + add( arg ); + } + }); + })( arguments ); + // Do we need to add the callbacks to the + // current firing batch? + if ( firing ) { + firingLength = list.length; + // With memory, if we're not firing then + // we should call right away + } else if ( memory ) { + firingStart = start; + fire( memory ); + } + } + return this; + }, + // Remove a callback from the list + remove: function() { + if ( list ) { + jQuery.each( arguments, function( _, arg ) { + var index; + while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + // Handle firing indexes + if ( firing ) { + if ( index <= firingLength ) { + firingLength--; + } + if ( index <= firingIndex ) { + firingIndex--; + } + } + } + }); + } + return this; + }, + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); + }, + // Remove all callbacks from the list + empty: function() { + list = []; + firingLength = 0; + return this; + }, + // Have the list do nothing anymore + disable: function() { + list = stack = memory = undefined; + return this; + }, + // Is it disabled? + disabled: function() { + return !list; + }, + // Lock the list in its current state + lock: function() { + stack = undefined; + if ( !memory ) { + self.disable(); + } + return this; + }, + // Is it locked? + locked: function() { + return !stack; + }, + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( list && ( !fired || stack ) ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + if ( firing ) { + stack.push( args ); + } else { + fire( args ); + } + } + return this; + }, + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; +jQuery.extend({ + + Deferred: function( func ) { + var tuples = [ + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], + [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], + [ "notify", "progress", jQuery.Callbacks("memory") ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred(function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var action = tuple[ 0 ], + fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[1] ](function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .done( newDefer.resolve ) + .fail( newDefer.reject ) + .progress( newDefer.notify ); + } else { + newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); + } + }); + }); + fns = null; + }).promise(); + }, + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[1] ] = list.add; + + // Handle state + if ( stateString ) { + list.add(function() { + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[0] ] = function() { + deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[0] + "With" ] = list.fireWith; + }); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = core_slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value; + if( values === progressValues ) { + deferred.notifyWith( contexts, values ); + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ) + .progress( updateFunc( i, progressContexts, progressValues ) ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +}); +jQuery.support = (function( support ) { + + var all, a, input, select, fragment, opt, eventName, isSupported, i, + div = document.createElement("div"); + + // Setup + div.setAttribute( "className", "t" ); + div.innerHTML = "
          a"; + + // Finish early in limited (non-browser) environments + all = div.getElementsByTagName("*") || []; + a = div.getElementsByTagName("a")[ 0 ]; + if ( !a || !a.style || !all.length ) { + return support; + } + + // First batch of tests + select = document.createElement("select"); + opt = select.appendChild( document.createElement("option") ); + input = div.getElementsByTagName("input")[ 0 ]; + + a.style.cssText = "top:1px;float:left;opacity:.5"; + + // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7) + support.getSetAttribute = div.className !== "t"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName("tbody").length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName("link").length; + + // Get the style information from getAttribute + // (IE uses .cssText instead) + support.style = /top/.test( a.getAttribute("style") ); + + // Make sure that URLs aren't manipulated + // (IE normalizes it by default) + support.hrefNormalized = a.getAttribute("href") === "/a"; + + // Make sure that element opacity exists + // (IE uses filter instead) + // Use a regex to work around a WebKit issue. See #5145 + support.opacity = /^0.5/.test( a.style.opacity ); + + // Verify style float existence + // (IE uses styleFloat instead of cssFloat) + support.cssFloat = !!a.style.cssFloat; + + // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere) + support.checkOn = !!input.value; + + // Make sure that a selected-by-default option has a working selected property. + // (WebKit defaults to false instead of true, IE too, if it's in an optgroup) + support.optSelected = opt.selected; + + // Tests for enctype support on a form (#6743) + support.enctype = !!document.createElement("form").enctype; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav>"; + + // Will be defined later + support.inlineBlockNeedsLayout = false; + support.shrinkWrapBlocks = false; + support.pixelPosition = false; + support.deleteExpando = true; + support.noCloneEvent = true; + support.reliableMarginRight = true; + support.boxSizingReliable = true; + + // Make sure checked status is properly cloned + input.checked = true; + support.noCloneChecked = input.cloneNode( true ).checked; + + // Make sure that the options inside disabled selects aren't marked as disabled + // (WebKit marks them as disabled) + select.disabled = true; + support.optDisabled = !opt.disabled; + + // Support: IE<9 + try { + delete div.test; + } catch( e ) { + support.deleteExpando = false; + } + + // Check if we can trust getAttribute("value") + input = document.createElement("input"); + input.setAttribute( "value", "" ); + support.input = input.getAttribute( "value" ) === ""; + + // Check if an input maintains its value after becoming a radio + input.value = "t"; + input.setAttribute( "type", "radio" ); + support.radioValue = input.value === "t"; + + // #11217 - WebKit loses check when the name is after the checked attribute + input.setAttribute( "checked", "t" ); + input.setAttribute( "name", "t" ); + + fragment = document.createDocumentFragment(); + fragment.appendChild( input ); + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + support.appendChecked = input.checked; + + // WebKit doesn't clone checked state correctly in fragments + support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Opera does not clone events (and typeof div.attachEvent === undefined). + // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() + if ( div.attachEvent ) { + div.attachEvent( "onclick", function() { + support.noCloneEvent = false; + }); + + div.cloneNode( true ).click(); + } + + // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event) + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + for ( i in { submit: true, change: true, focusin: true }) { + div.setAttribute( eventName = "on" + i, "t" ); + + support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false; + } + + div.style.backgroundClip = "content-box"; + div.cloneNode( true ).style.backgroundClip = ""; + support.clearCloneStyle = div.style.backgroundClip === "content-box"; + + // Support: IE<9 + // Iteration over object's inherited properties before its own. + for ( i in jQuery( support ) ) { + break; + } + support.ownLast = i !== "0"; + + // Run tests that need a body at doc ready + jQuery(function() { + var container, marginDiv, tds, + divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;", + body = document.getElementsByTagName("body")[0]; + + if ( !body ) { + // Return for frameset docs that don't have a body + return; + } + + container = document.createElement("div"); + container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px"; + + body.appendChild( container ).appendChild( div ); + + // Support: IE8 + // Check if table cells still have offsetWidth/Height when they are set + // to display:none and there are still other visible table cells in a + // table row; if so, offsetWidth/Height are not reliable for use when + // determining if an element has been hidden directly using + // display:none (it is still safe to use offsets if a parent element is + // hidden; don safety goggles and see bug #4512 for more information). + div.innerHTML = "
          t
          "; + tds = div.getElementsByTagName("td"); + tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none"; + isSupported = ( tds[ 0 ].offsetHeight === 0 ); + + tds[ 0 ].style.display = ""; + tds[ 1 ].style.display = "none"; + + // Support: IE8 + // Check if empty table cells still have offsetWidth/Height + support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 ); + + // Check box-sizing and margin behavior. + div.innerHTML = ""; + div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;"; + + // Workaround failing boxSizing test due to offsetWidth returning wrong value + // with some non-1 values of body zoom, ticket #13543 + jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() { + support.boxSizing = div.offsetWidth === 4; + }); + + // Use window.getComputedStyle because jsdom on node.js will break without it. + if ( window.getComputedStyle ) { + support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%"; + support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px"; + + // Check if div with explicit width and no margin-right incorrectly + // gets computed margin-right based on width of container. (#3333) + // Fails in WebKit before Feb 2011 nightlies + // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right + marginDiv = div.appendChild( document.createElement("div") ); + marginDiv.style.cssText = div.style.cssText = divReset; + marginDiv.style.marginRight = marginDiv.style.width = "0"; + div.style.width = "1px"; + + support.reliableMarginRight = + !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight ); + } + + if ( typeof div.style.zoom !== core_strundefined ) { + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.innerHTML = ""; + div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1"; + support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + div.style.display = "block"; + div.innerHTML = "
          "; + div.firstChild.style.width = "5px"; + support.shrinkWrapBlocks = ( div.offsetWidth !== 3 ); + + if ( support.inlineBlockNeedsLayout ) { + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); + + // Null elements to avoid leaks in IE + container = div = tds = marginDiv = null; + }); + + // Null elements to avoid leaks in IE + all = select = fragment = opt = a = input = null; + + return support; +})({}); + +var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, + rmultiDash = /([A-Z])/g; + +function internalData( elem, name, data, pvt /* Internal Use Only */ ){ + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = core_deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !jQuery.acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split(" "); + } + } + } else { + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[i] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( jQuery.support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, null + } else { + cache[ id ] = null; + } +} + +jQuery.extend({ + cache: {}, + + // The following elements throw uncatchable exceptions if you + // attempt to add expando properties to them. + noData: { + "applet": true, + "embed": true, + // Ban all objects except for Flash (which handle expandos) + "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + }, + + // A method for determining if a DOM node can handle the data expando + acceptData: function( elem ) { + // Do not set data on non-element because it will not be cleared (#8335). + if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) { + return false; + } + + var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ]; + + // nodes accept data unless otherwise specified; rejection can be conditional + return !noData || noData !== true && elem.getAttribute("classid") === noData; + } +}); + +jQuery.fn.extend({ + data: function( key, value ) { + var attrs, name, + data = null, + i = 0, + elem = this[0]; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + attrs = elem.attributes; + for ( ; i < attrs.length; i++ ) { + name = attrs[i].name; + + if ( name.indexOf("data-") === 0 ) { + name = jQuery.camelCase( name.slice(5) ); + + dataAttr( elem, name, data[ name ] ); + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each(function() { + jQuery.data( this, key ); + }); + } + + return arguments.length > 1 ? + + // Sets one value + this.each(function() { + jQuery.data( this, key, value ); + }) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null; + }, + + removeData: function( key ) { + return this.each(function() { + jQuery.removeData( this, key ); + }); + } +}); + +function dataAttr( elem, key, data ) { + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} +jQuery.extend({ + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray(data) ) { + queue = jQuery._data( elem, type, jQuery.makeArray(data) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks("once memory").add(function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + }) + }); + } +}); + +jQuery.fn.extend({ + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[0], type ); + } + + return data === undefined ? + this : + this.each(function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[0] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + }); + }, + dequeue: function( type ) { + return this.each(function() { + jQuery.dequeue( this, type ); + }); + }, + // Based off of the plugin by Clint Helfers, with permission. + // http://blindsignals.com/index.php/2009/07/jquery-delay/ + delay: function( time, type ) { + time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; + type = type || "fx"; + + return this.queue( type, function( next, hooks ) { + var timeout = setTimeout( next, time ); + hooks.stop = function() { + clearTimeout( timeout ); + }; + }); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +}); +var nodeHook, boolHook, + rclass = /[\t\r\n\f]/g, + rreturn = /\r/g, + rfocusable = /^(?:input|select|textarea|button|object)$/i, + rclickable = /^(?:a|area)$/i, + ruseDefault = /^(?:checked|selected)$/i, + getSetAttribute = jQuery.support.getSetAttribute, + getSetInput = jQuery.support.input; + +jQuery.fn.extend({ + attr: function( name, value ) { + return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 ); + }, + + removeAttr: function( name ) { + return this.each(function() { + jQuery.removeAttr( this, name ); + }); + }, + + prop: function( name, value ) { + return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 ); + }, + + removeProp: function( name ) { + name = jQuery.propFix[ name ] || name; + return this.each(function() { + // try/catch handles cases where IE balks (such as removing a property on window) + try { + this[ name ] = undefined; + delete this[ name ]; + } catch( e ) {} + }); + }, + + addClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).addClass( value.call( this, j, this.className ) ); + }); + } + + if ( proceed ) { + // The disjunction here is for better compressibility (see removeClass) + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + " " + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + if ( cur.indexOf( " " + clazz + " " ) < 0 ) { + cur += clazz + " "; + } + } + elem.className = jQuery.trim( cur ); + + } + } + } + + return this; + }, + + removeClass: function( value ) { + var classes, elem, cur, clazz, j, + i = 0, + len = this.length, + proceed = arguments.length === 0 || typeof value === "string" && value; + + if ( jQuery.isFunction( value ) ) { + return this.each(function( j ) { + jQuery( this ).removeClass( value.call( this, j, this.className ) ); + }); + } + if ( proceed ) { + classes = ( value || "" ).match( core_rnotwhite ) || []; + + for ( ; i < len; i++ ) { + elem = this[ i ]; + // This expression is here for better compressibility (see addClass) + cur = elem.nodeType === 1 && ( elem.className ? + ( " " + elem.className + " " ).replace( rclass, " " ) : + "" + ); + + if ( cur ) { + j = 0; + while ( (clazz = classes[j++]) ) { + // Remove *all* instances + while ( cur.indexOf( " " + clazz + " " ) >= 0 ) { + cur = cur.replace( " " + clazz + " ", " " ); + } + } + elem.className = value ? jQuery.trim( cur ) : ""; + } + } + } + + return this; + }, + + toggleClass: function( value, stateVal ) { + var type = typeof value; + + if ( typeof stateVal === "boolean" && type === "string" ) { + return stateVal ? this.addClass( value ) : this.removeClass( value ); + } + + if ( jQuery.isFunction( value ) ) { + return this.each(function( i ) { + jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal ); + }); + } + + return this.each(function() { + if ( type === "string" ) { + // toggle individual class names + var className, + i = 0, + self = jQuery( this ), + classNames = value.match( core_rnotwhite ) || []; + + while ( (className = classNames[ i++ ]) ) { + // check each className given, space separated list + if ( self.hasClass( className ) ) { + self.removeClass( className ); + } else { + self.addClass( className ); + } + } + + // Toggle whole class name + } else if ( type === core_strundefined || type === "boolean" ) { + if ( this.className ) { + // store className if set + jQuery._data( this, "__className__", this.className ); + } + + // If the element has a class name or if we're passed "false", + // then remove the whole classname (if there was one, the above saved it). + // Otherwise bring back whatever was previously saved (if anything), + // falling back to the empty string if nothing was stored. + this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || ""; + } + }); + }, + + hasClass: function( selector ) { + var className = " " + selector + " ", + i = 0, + l = this.length; + for ( ; i < l; i++ ) { + if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) { + return true; + } + } + + return false; + }, + + val: function( value ) { + var ret, hooks, isFunction, + elem = this[0]; + + if ( !arguments.length ) { + if ( elem ) { + hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ]; + + if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) { + return ret; + } + + ret = elem.value; + + return typeof ret === "string" ? + // handle most common string cases + ret.replace(rreturn, "") : + // handle cases where value is null/undef or number + ret == null ? "" : ret; + } + + return; + } + + isFunction = jQuery.isFunction( value ); + + return this.each(function( i ) { + var val; + + if ( this.nodeType !== 1 ) { + return; + } + + if ( isFunction ) { + val = value.call( this, i, jQuery( this ).val() ); + } else { + val = value; + } + + // Treat null/undefined as ""; convert numbers to string + if ( val == null ) { + val = ""; + } else if ( typeof val === "number" ) { + val += ""; + } else if ( jQuery.isArray( val ) ) { + val = jQuery.map(val, function ( value ) { + return value == null ? "" : value + ""; + }); + } + + hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; + + // If set returns undefined, fall back to normal setting + if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) { + this.value = val; + } + }); + } +}); + +jQuery.extend({ + valHooks: { + option: { + get: function( elem ) { + // Use proper attribute retrieval(#6932, #12072) + var val = jQuery.find.attr( elem, "value" ); + return val != null ? + val : + elem.text; + } + }, + select: { + get: function( elem ) { + var value, option, + options = elem.options, + index = elem.selectedIndex, + one = elem.type === "select-one" || index < 0, + values = one ? null : [], + max = one ? index + 1 : options.length, + i = index < 0 ? + max : + one ? index : 0; + + // Loop through all the selected options + for ( ; i < max; i++ ) { + option = options[ i ]; + + // oldIE doesn't update selected after form reset (#2551) + if ( ( option.selected || i === index ) && + // Don't return options that are disabled or in a disabled optgroup + ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) && + ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) { + + // Get the specific value for the option + value = jQuery( option ).val(); + + // We don't need an array for one selects + if ( one ) { + return value; + } + + // Multi-Selects return an array + values.push( value ); + } + } + + return values; + }, + + set: function( elem, value ) { + var optionSet, option, + options = elem.options, + values = jQuery.makeArray( value ), + i = options.length; + + while ( i-- ) { + option = options[ i ]; + if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) { + optionSet = true; + } + } + + // force browsers to behave consistently when non-matching value is set + if ( !optionSet ) { + elem.selectedIndex = -1; + } + return values; + } + } + }, + + attr: function( elem, name, value ) { + var hooks, ret, + nType = elem.nodeType; + + // don't get/set attributes on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + // Fallback to prop when attributes are not supported + if ( typeof elem.getAttribute === core_strundefined ) { + return jQuery.prop( elem, name, value ); + } + + // All attributes are lowercase + // Grab necessary hook if one is defined + if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { + name = name.toLowerCase(); + hooks = jQuery.attrHooks[ name ] || + ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook ); + } + + if ( value !== undefined ) { + + if ( value === null ) { + jQuery.removeAttr( elem, name ); + + } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) { + return ret; + + } else { + elem.setAttribute( name, value + "" ); + return value; + } + + } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) { + return ret; + + } else { + ret = jQuery.find.attr( elem, name ); + + // Non-existent attributes return null, we normalize to undefined + return ret == null ? + undefined : + ret; + } + }, + + removeAttr: function( elem, value ) { + var name, propName, + i = 0, + attrNames = value && value.match( core_rnotwhite ); + + if ( attrNames && elem.nodeType === 1 ) { + while ( (name = attrNames[i++]) ) { + propName = jQuery.propFix[ name ] || name; + + // Boolean attributes get special treatment (#10870) + if ( jQuery.expr.match.bool.test( name ) ) { + // Set corresponding property to false + if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + elem[ propName ] = false; + // Support: IE<9 + // Also clear defaultChecked/defaultSelected (if appropriate) + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = + elem[ propName ] = false; + } + + // See #9699 for explanation of this approach (setting first, then removal) + } else { + jQuery.attr( elem, name, "" ); + } + + elem.removeAttribute( getSetAttribute ? name : propName ); + } + } + }, + + attrHooks: { + type: { + set: function( elem, value ) { + if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) { + // Setting the type on a radio button after the value resets the value in IE6-9 + // Reset value to default in case type is set after value during creation + var val = elem.value; + elem.setAttribute( "type", value ); + if ( val ) { + elem.value = val; + } + return value; + } + } + } + }, + + propFix: { + "for": "htmlFor", + "class": "className" + }, + + prop: function( elem, name, value ) { + var ret, hooks, notxml, + nType = elem.nodeType; + + // don't get/set properties on text, comment and attribute nodes + if ( !elem || nType === 3 || nType === 8 || nType === 2 ) { + return; + } + + notxml = nType !== 1 || !jQuery.isXMLDoc( elem ); + + if ( notxml ) { + // Fix name and attach hooks + name = jQuery.propFix[ name ] || name; + hooks = jQuery.propHooks[ name ]; + } + + if ( value !== undefined ) { + return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ? + ret : + ( elem[ name ] = value ); + + } else { + return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ? + ret : + elem[ name ]; + } + }, + + propHooks: { + tabIndex: { + get: function( elem ) { + // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set + // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ + // Use proper attribute retrieval(#12072) + var tabindex = jQuery.find.attr( elem, "tabindex" ); + + return tabindex ? + parseInt( tabindex, 10 ) : + rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ? + 0 : + -1; + } + } + } +}); + +// Hooks for boolean attributes +boolHook = { + set: function( elem, value, name ) { + if ( value === false ) { + // Remove boolean attributes when set to false + jQuery.removeAttr( elem, name ); + } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) { + // IE<8 needs the *property* name + elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name ); + + // Use defaultChecked and defaultSelected for oldIE + } else { + elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true; + } + + return name; + } +}; +jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) { + var getter = jQuery.expr.attrHandle[ name ] || jQuery.find.attr; + + jQuery.expr.attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ? + function( elem, name, isXML ) { + var fn = jQuery.expr.attrHandle[ name ], + ret = isXML ? + undefined : + /* jshint eqeqeq: false */ + (jQuery.expr.attrHandle[ name ] = undefined) != + getter( elem, name, isXML ) ? + + name.toLowerCase() : + null; + jQuery.expr.attrHandle[ name ] = fn; + return ret; + } : + function( elem, name, isXML ) { + return isXML ? + undefined : + elem[ jQuery.camelCase( "default-" + name ) ] ? + name.toLowerCase() : + null; + }; +}); + +// fix oldIE attroperties +if ( !getSetInput || !getSetAttribute ) { + jQuery.attrHooks.value = { + set: function( elem, value, name ) { + if ( jQuery.nodeName( elem, "input" ) ) { + // Does not return so that setAttribute is also used + elem.defaultValue = value; + } else { + // Use nodeHook if defined (#1954); otherwise setAttribute is fine + return nodeHook && nodeHook.set( elem, value, name ); + } + } + }; +} + +// IE6/7 do not support getting/setting some attributes with get/setAttribute +if ( !getSetAttribute ) { + + // Use this for any attribute in IE6/7 + // This fixes almost every IE6/7 issue + nodeHook = { + set: function( elem, value, name ) { + // Set the existing or create a new attribute node + var ret = elem.getAttributeNode( name ); + if ( !ret ) { + elem.setAttributeNode( + (ret = elem.ownerDocument.createAttribute( name )) + ); + } + + ret.value = value += ""; + + // Break association with cloned elements by also using setAttribute (#9646) + return name === "value" || value === elem.getAttribute( name ) ? + value : + undefined; + } + }; + jQuery.expr.attrHandle.id = jQuery.expr.attrHandle.name = jQuery.expr.attrHandle.coords = + // Some attributes are constructed with empty-string values when not defined + function( elem, name, isXML ) { + var ret; + return isXML ? + undefined : + (ret = elem.getAttributeNode( name )) && ret.value !== "" ? + ret.value : + null; + }; + jQuery.valHooks.button = { + get: function( elem, name ) { + var ret = elem.getAttributeNode( name ); + return ret && ret.specified ? + ret.value : + undefined; + }, + set: nodeHook.set + }; + + // Set contenteditable to false on removals(#10429) + // Setting to empty string throws an error as an invalid value + jQuery.attrHooks.contenteditable = { + set: function( elem, value, name ) { + nodeHook.set( elem, value === "" ? false : value, name ); + } + }; + + // Set width and height to auto instead of 0 on empty string( Bug #8150 ) + // This is for removals + jQuery.each([ "width", "height" ], function( i, name ) { + jQuery.attrHooks[ name ] = { + set: function( elem, value ) { + if ( value === "" ) { + elem.setAttribute( name, "auto" ); + return value; + } + } + }; + }); +} + + +// Some attributes require a special call on IE +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !jQuery.support.hrefNormalized ) { + // href/src property should get the full normalized URL (#10299/#12915) + jQuery.each([ "href", "src" ], function( i, name ) { + jQuery.propHooks[ name ] = { + get: function( elem ) { + return elem.getAttribute( name, 4 ); + } + }; + }); +} + +if ( !jQuery.support.style ) { + jQuery.attrHooks.style = { + get: function( elem ) { + // Return undefined in the case of empty string + // Note: IE uppercases css property names, but if we were to .toLowerCase() + // .cssText, that would destroy case senstitivity in URL's, like in "background" + return elem.style.cssText || undefined; + }, + set: function( elem, value ) { + return ( elem.style.cssText = value + "" ); + } + }; +} + +// Safari mis-reports the default selected property of an option +// Accessing the parent's selectedIndex property fixes it +if ( !jQuery.support.optSelected ) { + jQuery.propHooks.selected = { + get: function( elem ) { + var parent = elem.parentNode; + + if ( parent ) { + parent.selectedIndex; + + // Make sure that it also works with optgroups, see #5701 + if ( parent.parentNode ) { + parent.parentNode.selectedIndex; + } + } + return null; + } + }; +} + +jQuery.each([ + "tabIndex", + "readOnly", + "maxLength", + "cellSpacing", + "cellPadding", + "rowSpan", + "colSpan", + "useMap", + "frameBorder", + "contentEditable" +], function() { + jQuery.propFix[ this.toLowerCase() ] = this; +}); + +// IE6/7 call enctype encoding +if ( !jQuery.support.enctype ) { + jQuery.propFix.enctype = "encoding"; +} + +// Radios and checkboxes getter/setter +jQuery.each([ "radio", "checkbox" ], function() { + jQuery.valHooks[ this ] = { + set: function( elem, value ) { + if ( jQuery.isArray( value ) ) { + return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 ); + } + } + }; + if ( !jQuery.support.checkOn ) { + jQuery.valHooks[ this ].get = function( elem ) { + // Support: Webkit + // "" is returned instead of "on" if a value isn't specified + return elem.getAttribute("value") === null ? "on" : elem.value; + }; + } +}); +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|contextmenu)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !(events = elemData.events) ) { + events = elemData.events = {}; + } + if ( !(eventHandle = elemData.handle) ) { + eventHandle = elemData.handle = function( e ) { + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend({ + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join(".") + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !(handlers = events[ type ]) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !(events = elemData.events) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( core_rnotwhite ) || [""]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[t] ) || []; + type = origType = tmp[1]; + namespaces = ( tmp[2] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = core_hasOwn.call( event, "type" ) ? event.type : event, + namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf(".") >= 0 ) { + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split("."); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf(":") < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join("."); + event.namespace_re = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === (elem.ownerDocument || document) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) { + event.preventDefault(); + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && + jQuery.acceptData( elem ) ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, ret, handleObj, matched, j, + handlerQueue = [], + args = core_slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[0] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or + // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). + if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) + .apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( (event.result = ret) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var sel, handleObj, matches, i, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // Avoid non-left-click bubbling in Firefox (#3861) + if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) >= 0 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push({ elem: cur, handlers: matches }); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Chrome 23+, Safari? + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split(" "), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Even when returnValue equals to undefined Firefox will still show alert + if ( event.result !== undefined ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + simulate: function( type, elem, event, bubble ) { + // Piggyback on a donor event to simulate a different one. + // Fake originalEvent to avoid donor's stopPropagation, but if the + // simulated event prevents default then we do the same on the donor. + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true, + originalEvent: {} + } + ); + if ( bubble ) { + jQuery.event.trigger( e, null, elem ); + } else { + jQuery.event.dispatch.call( elem, e ); + } + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle, false ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, to properly expose it to GC + if ( typeof elem[ name ] === core_strundefined ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + // Allow instantiation without the 'new' keyword + if ( !(this instanceof jQuery.Event) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false || + src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + if ( !e ) { + return; + } + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +jQuery.each({ + mouseenter: "mouseover", + mouseleave: "mouseout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mousenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || (related !== target && !jQuery.contains( target, related )) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +}); + +// IE submit delegation +if ( !jQuery.support.submitBubbles ) { + + jQuery.event.special.submit = { + setup: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; + if ( form && !jQuery._data( form, "submitBubbles" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submit_bubble = true; + }); + jQuery._data( form, "submitBubbles", true ); + } + }); + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + // If form was submitted by the user, bubble the event up the tree + if ( event._submit_bubble ) { + delete event._submit_bubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event, true ); + } + } + }, + + teardown: function() { + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !jQuery.support.changeBubbles ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._just_changed = true; + } + }); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._just_changed && !event.isTrigger ) { + this._just_changed = false; + } + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event, true ); + }); + } + return false; + } + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event, true ); + } + }); + jQuery._data( elem, "changeBubbles", true ); + } + }); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Create "bubbling" focus and blur events +if ( !jQuery.support.focusinBubbles ) { + jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler while someone wants focusin/focusout + var attaches = 0, + handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + if ( attaches++ === 0 ) { + document.addEventListener( orig, handler, true ); + } + }, + teardown: function() { + if ( --attaches === 0 ) { + document.removeEventListener( orig, handler, true ); + } + } + }; + }); +} + +jQuery.fn.extend({ + + on: function( types, selector, data, fn, /*INTERNAL*/ one ) { + var type, origFn; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + this.on( type, selector, data, types[ type ], one ); + } + return this; + } + + if ( data == null && fn == null ) { + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return this; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return this.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + }); + }, + one: function( types, selector, data, fn ) { + return this.on( types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each(function() { + jQuery.event.remove( this, types, fn, selector ); + }); + }, + + trigger: function( type, data ) { + return this.each(function() { + jQuery.event.trigger( type, data, this ); + }); + }, + triggerHandler: function( type, data ) { + var elem = this[0]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +}); +var isSimple = /^.[^:#\[\.,]*$/, + rparentsprev = /^(?:parents|prev(?:Until|All))/, + rneedsContext = jQuery.expr.match.needsContext, + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend({ + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + }) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter(function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[i] ) ) { + return true; + } + } + }); + }, + + not: function( selector ) { + return this.pushStack( winnow(this, selector || [], true) ); + }, + + filter: function( selector ) { + return this.pushStack( winnow(this, selector || [], false) ); + }, + + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + ret = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { + // Always skip document fragments + if ( cur.nodeType < 11 && (pos ? + pos.index(cur) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector(cur, selectors)) ) { + + cur = ret.push( cur ); + break; + } + } + } + + return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[0], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[0] : elem, this ); + }, + + add: function( selector, context ) { + var set = typeof selector === "string" ? + jQuery( selector, context ) : + jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ), + all = jQuery.merge( this.get(), set ); + + return this.pushStack( jQuery.unique(all) ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter(selector) + ); + } +}); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each({ + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return jQuery.dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return jQuery.dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return jQuery.dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return jQuery.dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return jQuery.dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return jQuery.dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return jQuery.sibling( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.unique( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +}); + +jQuery.extend({ + filter: function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + })); + }, + + dir: function( elem, dir, until ) { + var matched = [], + cur = elem[ dir ]; + + while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { + if ( cur.nodeType === 1 ) { + matched.push( cur ); + } + cur = cur[dir]; + } + return matched; + }, + + sibling: function( n, elem ) { + var r = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + r.push( n ); + } + } + + return r; + } +}); + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + }); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + }); + + } + + if ( typeof qualifier === "string" ) { + if ( isSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; + }); +} +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + + "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", + rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), + rleadingWhitespace = /^\s+/, + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, + rtagName = /<([\w:]+)/, + rtbody = /\s*$/g, + + // We have to close these tags to support XHTML (#13200) + wrapMap = { + option: [ 1, "" ], + legend: [ 1, "
          ", "
          " ], + area: [ 1, "", "" ], + param: [ 1, "", "" ], + thead: [ 1, "", "
          " ], + tr: [ 2, "", "
          " ], + col: [ 2, "", "
          " ], + td: [ 3, "", "
          " ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
          ", "
          " ] + }, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement("div") ); + +wrapMap.optgroup = wrapMap.option; +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + +jQuery.fn.extend({ + text: function( value ) { + return jQuery.access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); + }, null, value, arguments.length ); + }, + + append: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + }); + }, + + prepend: function() { + return this.domManip( arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + }); + }, + + before: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + }); + }, + + after: function() { + return this.domManip( arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + }); + }, + + // keepData is for internal use only--do not document + remove: function( selector, keepData ) { + var elem, + elems = selector ? jQuery.filter( selector, this ) : this, + i = 0; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( !keepData && elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem ) ); + } + + if ( elem.parentNode ) { + if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { + setGlobalEval( getAll( elem, "script" ) ); + } + elem.parentNode.removeChild( elem ); + } + } + + return this; + }, + + empty: function() { + var elem, + i = 0; + + for ( ; (elem = this[i]) != null; i++ ) { + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function () { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + }); + }, + + html: function( value ) { + return jQuery.access( this, function( value ) { + var elem = this[0] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) { + + value = value.replace( rxhtmlTag, "<$1>" ); + + try { + for (; i < l; i++ ) { + // Remove element nodes and prevent memory leaks + elem = this[i] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch(e) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var + // Snapshot the DOM in case .domManip sweeps something relevant into its fragment + args = jQuery.map( this, function( elem ) { + return [ elem.nextSibling, elem.parentNode ]; + }), + i = 0; + + // Make the changes, replacing each context element with the new content + this.domManip( arguments, function( elem ) { + var next = args[ i++ ], + parent = args[ i++ ]; + + if ( parent ) { + // Don't use the snapshot next if it has moved (#13810) + if ( next && next.parentNode !== parent ) { + next = this.nextSibling; + } + jQuery( this ).remove(); + parent.insertBefore( elem, next ); + } + // Allow new content to include elements from the context set + }, true ); + + // Force removal if there was no new content (e.g., from empty arguments) + return i ? this : this.remove(); + }, + + detach: function( selector ) { + return this.remove( selector, true ); + }, + + domManip: function( args, callback, allowIntersection ) { + + // Flatten any nested arrays + args = core_concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = this.length, + set = this, + iNoClone = l - 1, + value = args[0], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) { + return this.each(function( index ) { + var self = set.eq( index ); + if ( isFunction ) { + args[0] = value.call( this, index, self.html() ); + } + self.domManip( args, callback, allowIntersection ); + }); + } + + if ( l ) { + fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, !allowIntersection && this ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + if ( first ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( this[i], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { + + if ( node.src ) { + // Hope ajax is available... + jQuery._evalUrl( node.src ); + } else { + jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return this; + } +}); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType === 1 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName("tbody")[0] || + elem.appendChild( elem.ownerDocument.createElement("tbody") ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[1]; + } else { + elem.removeAttribute("type"); + } + return elem; +} + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; (elem = elems[i]) != null; i++ ) { + jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); + } +} + +function cloneCopyEvent( src, dest ) { + + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) { + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +jQuery.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone(true); + jQuery( insert[i] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + core_push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +}); + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + +// Used in buildFragment, fixes the defaultChecked property +function fixDefaultChecked( elem ) { + if ( manipulation_rcheckableType.test( elem.type ) ) { + elem.defaultChecked = elem.checked; + } +} + +jQuery.extend({ + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) && + (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; (node = srcElements[i]) != null; ++i ) { + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[i] ) { + fixCloneNodeIssues( node, destElements[i] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; (node = srcElements[i]) != null; i++ ) { + cloneCopyEvent( node, destElements[i] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + buildFragment: function( elems, context, scripts, selection ) { + var j, elem, contains, + tmp, tag, tbody, wrap, + l = elems.length, + + // Ensure a safe fragment + safe = createSafeFragment( context ), + + nodes = [], + i = 0; + + for ( ; i < l; i++ ) { + elem = elems[ i ]; + + if ( elem || elem === 0 ) { + + // Add nodes directly + if ( jQuery.type( elem ) === "object" ) { + jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); + + // Convert non-html into a text node + } else if ( !rhtml.test( elem ) ) { + nodes.push( context.createTextNode( elem ) ); + + // Convert html into DOM nodes + } else { + tmp = tmp || safe.appendChild( context.createElement("div") ); + + // Deserialize a standard representation + tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(); + wrap = wrapMap[ tag ] || wrapMap._default; + + tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; + + // Descend through wrappers to the right content + j = wrap[0]; + while ( j-- ) { + tmp = tmp.lastChild; + } + + // Manually add leading whitespace removed by IE + if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { + nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); + } + + // Remove IE's autoinserted from table fragments + if ( !jQuery.support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[1] === "
          " && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !jQuery.support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( (elem = nodes[ i++ ]) ) { + + // #4087 - If origin and destination elements are the same, and this is + // that element, do not do anything + if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( (elem = tmp[ j++ ]) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; + }, + + cleanData: function( elems, /* internal */ acceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + deleteExpando = jQuery.support.deleteExpando, + special = jQuery.event.special; + + for ( ; (elem = elems[i]) != null; i++ ) { + + if ( acceptData || jQuery.acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // IE does not allow us to delete expando properties from nodes, + // nor does it have a removeAttribute function on Document nodes; + // we must handle all of these cases + if ( deleteExpando ) { + delete elem[ internalKey ]; + + } else if ( typeof elem.removeAttribute !== core_strundefined ) { + elem.removeAttribute( internalKey ); + + } else { + elem[ internalKey ] = null; + } + + core_deletedIds.push( id ); + } + } + } + } + }, + + _evalUrl: function( url ) { + return jQuery.ajax({ + url: url, + type: "GET", + dataType: "script", + async: false, + global: false, + "throws": true + }); + } +}); +jQuery.fn.extend({ + wrapAll: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapAll( html.call(this, i) ); + }); + } + + if ( this[0] ) { + // The elements to wrap the target around + var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true); + + if ( this[0].parentNode ) { + wrap.insertBefore( this[0] ); + } + + wrap.map(function() { + var elem = this; + + while ( elem.firstChild && elem.firstChild.nodeType === 1 ) { + elem = elem.firstChild; + } + + return elem; + }).append( this ); + } + + return this; + }, + + wrapInner: function( html ) { + if ( jQuery.isFunction( html ) ) { + return this.each(function(i) { + jQuery(this).wrapInner( html.call(this, i) ); + }); + } + + return this.each(function() { + var self = jQuery( this ), + contents = self.contents(); + + if ( contents.length ) { + contents.wrapAll( html ); + + } else { + self.append( html ); + } + }); + }, + + wrap: function( html ) { + var isFunction = jQuery.isFunction( html ); + + return this.each(function(i) { + jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html ); + }); + }, + + unwrap: function() { + return this.parent().each(function() { + if ( !jQuery.nodeName( this, "body" ) ) { + jQuery( this ).replaceWith( this.childNodes ); + } + }).end(); + } +}); +var iframe, getStyles, curCSS, + ralpha = /alpha\([^)]*\)/i, + ropacity = /opacity\s*=\s*([^)]*)/, + rposition = /^(top|right|bottom|left)$/, + // swappable if display is none or starts with table except "table", "table-cell", or "table-caption" + // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display + rdisplayswap = /^(none|table(?!-c[ea]).+)/, + rmargin = /^margin/, + rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ), + rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ), + rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ), + elemdisplay = { BODY: "block" }, + + cssShow = { position: "absolute", visibility: "hidden", display: "block" }, + cssNormalTransform = { + letterSpacing: 0, + fontWeight: 400 + }, + + cssExpand = [ "Top", "Right", "Bottom", "Left" ], + cssPrefixes = [ "Webkit", "O", "Moz", "ms" ]; + +// return a css property mapped to a potentially vendor prefixed property +function vendorPropName( style, name ) { + + // shortcut for names that are not vendor prefixed + if ( name in style ) { + return name; + } + + // check for vendor prefixed names + var capName = name.charAt(0).toUpperCase() + name.slice(1), + origName = name, + i = cssPrefixes.length; + + while ( i-- ) { + name = cssPrefixes[ i ] + capName; + if ( name in style ) { + return name; + } + } + + return origName; +} + +function isHidden( elem, el ) { + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); +} + +function showHide( elements, show ) { + var display, elem, hidden, + values = [], + index = 0, + length = elements.length; + + for ( ; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + + values[ index ] = jQuery._data( elem, "olddisplay" ); + display = elem.style.display; + if ( show ) { + // Reset the inline display of this element to learn if it is + // being hidden by cascaded rules or not + if ( !values[ index ] && display === "none" ) { + elem.style.display = ""; + } + + // Set elements which have been overridden with display: none + // in a stylesheet to whatever the default browser style is + // for such an element + if ( elem.style.display === "" && isHidden( elem ) ) { + values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) ); + } + } else { + + if ( !values[ index ] ) { + hidden = isHidden( elem ); + + if ( display && display !== "none" || !hidden ) { + jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) ); + } + } + } + } + + // Set the display of most of the elements in a second loop + // to avoid the constant reflow + for ( index = 0; index < length; index++ ) { + elem = elements[ index ]; + if ( !elem.style ) { + continue; + } + if ( !show || elem.style.display === "none" || elem.style.display === "" ) { + elem.style.display = show ? values[ index ] || "" : "none"; + } + } + + return elements; +} + +jQuery.fn.extend({ + css: function( name, value ) { + return jQuery.access( this, function( elem, name, value ) { + var len, styles, + map = {}, + i = 0; + + if ( jQuery.isArray( name ) ) { + styles = getStyles( elem ); + len = name.length; + + for ( ; i < len; i++ ) { + map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); + } + + return map; + } + + return value !== undefined ? + jQuery.style( elem, name, value ) : + jQuery.css( elem, name ); + }, name, value, arguments.length > 1 ); + }, + show: function() { + return showHide( this, true ); + }, + hide: function() { + return showHide( this ); + }, + toggle: function( state ) { + if ( typeof state === "boolean" ) { + return state ? this.show() : this.hide(); + } + + return this.each(function() { + if ( isHidden( this ) ) { + jQuery( this ).show(); + } else { + jQuery( this ).hide(); + } + }); + } +}); + +jQuery.extend({ + // Add in style property hooks for overriding the default + // behavior of getting and setting a style property + cssHooks: { + opacity: { + get: function( elem, computed ) { + if ( computed ) { + // We should always get a number back from opacity + var ret = curCSS( elem, "opacity" ); + return ret === "" ? "1" : ret; + } + } + } + }, + + // Don't automatically add "px" to these possibly-unitless properties + cssNumber: { + "columnCount": true, + "fillOpacity": true, + "fontWeight": true, + "lineHeight": true, + "opacity": true, + "order": true, + "orphans": true, + "widows": true, + "zIndex": true, + "zoom": true + }, + + // Add in properties whose names you wish to fix before + // setting or getting the value + cssProps: { + // normalize float css property + "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat" + }, + + // Get and set the style property on a DOM Node + style: function( elem, name, value, extra ) { + // Don't set styles on text and comment nodes + if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { + return; + } + + // Make sure that we're working with the right name + var ret, type, hooks, + origName = jQuery.camelCase( name ), + style = elem.style; + + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // Check if we're setting a value + if ( value !== undefined ) { + type = typeof value; + + // convert relative number strings (+= or -=) to relative numbers. #7345 + if ( type === "string" && (ret = rrelNum.exec( value )) ) { + value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) ); + // Fixes bug #9237 + type = "number"; + } + + // Make sure that NaN and null values aren't set. See: #7116 + if ( value == null || type === "number" && isNaN( value ) ) { + return; + } + + // If a number was passed in, add 'px' to the (except for certain CSS properties) + if ( type === "number" && !jQuery.cssNumber[ origName ] ) { + value += "px"; + } + + // Fixes #8908, it can be done more correctly by specifing setters in cssHooks, + // but it would mean to define eight (for every problematic property) identical functions + if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) { + style[ name ] = "inherit"; + } + + // If a hook was provided, use that value, otherwise just set the specified value + if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) { + + // Wrapped to prevent IE from throwing errors when 'invalid' values are provided + // Fixes bug #5509 + try { + style[ name ] = value; + } catch(e) {} + } + + } else { + // If a hook was provided get the non-computed value from there + if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) { + return ret; + } + + // Otherwise just get the value from the style object + return style[ name ]; + } + }, + + css: function( elem, name, extra, styles ) { + var num, val, hooks, + origName = jQuery.camelCase( name ); + + // Make sure that we're working with the right name + name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) ); + + // gets hook for the prefixed version + // followed by the unprefixed version + hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; + + // If a hook was provided get the computed value from there + if ( hooks && "get" in hooks ) { + val = hooks.get( elem, true, extra ); + } + + // Otherwise, if a way to get the computed value exists, use that + if ( val === undefined ) { + val = curCSS( elem, name, styles ); + } + + //convert "normal" to computed value + if ( val === "normal" && name in cssNormalTransform ) { + val = cssNormalTransform[ name ]; + } + + // Return, converting to number if forced or a qualifier was provided and val looks numeric + if ( extra === "" || extra ) { + num = parseFloat( val ); + return extra === true || jQuery.isNumeric( num ) ? num || 0 : val; + } + return val; + } +}); + +// NOTE: we've included the "window" in window.getComputedStyle +// because jsdom on node.js will break without it. +if ( window.getComputedStyle ) { + getStyles = function( elem ) { + return window.getComputedStyle( elem, null ); + }; + + curCSS = function( elem, name, _computed ) { + var width, minWidth, maxWidth, + computed = _computed || getStyles( elem ), + + // getPropertyValue is only needed for .css('filter') in IE9, see #12537 + ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined, + style = elem.style; + + if ( computed ) { + + if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) { + ret = jQuery.style( elem, name ); + } + + // A tribute to the "awesome hack by Dean Edwards" + // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right + // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels + // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values + if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) { + + // Remember the original values + width = style.width; + minWidth = style.minWidth; + maxWidth = style.maxWidth; + + // Put in the new values to get a computed value out + style.minWidth = style.maxWidth = style.width = ret; + ret = computed.width; + + // Revert the changed values + style.width = width; + style.minWidth = minWidth; + style.maxWidth = maxWidth; + } + } + + return ret; + }; +} else if ( document.documentElement.currentStyle ) { + getStyles = function( elem ) { + return elem.currentStyle; + }; + + curCSS = function( elem, name, _computed ) { + var left, rs, rsLeft, + computed = _computed || getStyles( elem ), + ret = computed ? computed[ name ] : undefined, + style = elem.style; + + // Avoid setting ret to empty string here + // so we don't default to auto + if ( ret == null && style && style[ name ] ) { + ret = style[ name ]; + } + + // From the awesome hack by Dean Edwards + // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 + + // If we're not dealing with a regular pixel number + // but a number that has a weird ending, we need to convert it to pixels + // but not position css attributes, as those are proportional to the parent element instead + // and we can't measure the parent instead because it might trigger a "stacking dolls" problem + if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) { + + // Remember the original values + left = style.left; + rs = elem.runtimeStyle; + rsLeft = rs && rs.left; + + // Put in the new values to get a computed value out + if ( rsLeft ) { + rs.left = elem.currentStyle.left; + } + style.left = name === "fontSize" ? "1em" : ret; + ret = style.pixelLeft + "px"; + + // Revert the changed values + style.left = left; + if ( rsLeft ) { + rs.left = rsLeft; + } + } + + return ret === "" ? "auto" : ret; + }; +} + +function setPositiveNumber( elem, value, subtract ) { + var matches = rnumsplit.exec( value ); + return matches ? + // Guard against undefined "subtract", e.g., when used as in cssHooks + Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) : + value; +} + +function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) { + var i = extra === ( isBorderBox ? "border" : "content" ) ? + // If we already have the right measurement, avoid augmentation + 4 : + // Otherwise initialize for horizontal or vertical properties + name === "width" ? 1 : 0, + + val = 0; + + for ( ; i < 4; i += 2 ) { + // both box models exclude margin, so add it if we want it + if ( extra === "margin" ) { + val += jQuery.css( elem, extra + cssExpand[ i ], true, styles ); + } + + if ( isBorderBox ) { + // border-box includes padding, so remove it if we want content + if ( extra === "content" ) { + val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + } + + // at this point, extra isn't border nor margin, so remove border + if ( extra !== "margin" ) { + val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } else { + // at this point, extra isn't content, so add padding + val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); + + // at this point, extra isn't content nor padding, so add border + if ( extra !== "padding" ) { + val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); + } + } + } + + return val; +} + +function getWidthOrHeight( elem, name, extra ) { + + // Start with offset property, which is equivalent to the border-box value + var valueIsBorderBox = true, + val = name === "width" ? elem.offsetWidth : elem.offsetHeight, + styles = getStyles( elem ), + isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; + + // some non-html elements return undefined for offsetWidth, so check for null/undefined + // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285 + // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668 + if ( val <= 0 || val == null ) { + // Fall back to computed then uncomputed css if necessary + val = curCSS( elem, name, styles ); + if ( val < 0 || val == null ) { + val = elem.style[ name ]; + } + + // Computed unit is not pixels. Stop here and return. + if ( rnumnonpx.test(val) ) { + return val; + } + + // we need the check for style in case a browser which returns unreliable values + // for getComputedStyle silently falls back to the reliable elem.style + valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] ); + + // Normalize "", auto, and prepare for extra + val = parseFloat( val ) || 0; + } + + // use the active box-sizing model to add/subtract irrelevant styles + return ( val + + augmentWidthOrHeight( + elem, + name, + extra || ( isBorderBox ? "border" : "content" ), + valueIsBorderBox, + styles + ) + ) + "px"; +} + +// Try to determine the default display value of an element +function css_defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + // Use the already-created iframe if possible + iframe = ( iframe || + jQuery(" + increase height • + decrease height + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sources/upgrade.php b/sources/upgrade.php new file mode 100644 index 0000000..7c707bd --- /dev/null +++ b/sources/upgrade.php @@ -0,0 +1,512 @@ +'); +if ($php_end_tag === false) +{ + die('Cannot find php end tag in '.$config_file); +} + +include($config_file); + +// $conf is not used for users tables - define cannot be re-defined +define('USERS_TABLE', $prefixeTable.'users'); +include_once(PHPWG_ROOT_PATH.'include/constants.php'); +define('PREFIX_TABLE', $prefixeTable); +define('UPGRADES_PATH', PHPWG_ROOT_PATH.'install/db'); + +include_once(PHPWG_ROOT_PATH.'include/functions.inc.php'); +include_once(PHPWG_ROOT_PATH.'admin/include/functions.php'); + +// +-----------------------------------------------------------------------+ +// | functions | +// +-----------------------------------------------------------------------+ + +/** + * list all tables in an array + * + * @return array + */ +function get_tables() +{ + $tables = array(); + + $query = ' +SHOW TABLES +;'; + $result = pwg_query($query); + + while ($row = pwg_db_fetch_row($result)) + { + if (preg_match('/^'.PREFIX_TABLE.'/', $row[0])) + { + $tables[] = $row[0]; + } + } + + return $tables; +} + +/** + * list all columns of each given table + * + * @return array of array + */ +function get_columns_of($tables) +{ + $columns_of = array(); + + foreach ($tables as $table) + { + $query = ' +DESC '.$table.' +;'; + $result = pwg_query($query); + + $columns_of[$table] = array(); + + while ($row = pwg_db_fetch_row($result)) + { + $columns_of[$table][] = $row[0]; + } + } + + return $columns_of; +} + +/** + */ +function print_time($message) +{ + global $last_time; + + $new_time = get_moment(); + echo '
          ['.get_elapsed_time($last_time, $new_time).']';
          +  echo ' '.$message;
          +  echo '
          '; + flush(); + $last_time = $new_time; +} + +// +-----------------------------------------------------------------------+ +// | playing zone | +// +-----------------------------------------------------------------------+ + +// echo implode('
          ', get_tables()); +// echo '
          '; print_r(get_columns_of(get_tables())); echo '
          '; + +// foreach (get_available_upgrade_ids() as $upgrade_id) +// { +// echo $upgrade_id, '
          '; +// } + +// +-----------------------------------------------------------------------+ +// | language | +// +-----------------------------------------------------------------------+ +include(PHPWG_ROOT_PATH . 'admin/include/languages.class.php'); +$languages = new languages('utf-8'); + +if (isset($_GET['language'])) +{ + $language = strip_tags($_GET['language']); + + if (!in_array($language, array_keys($languages->fs_languages))) + { + $language = PHPWG_DEFAULT_LANGUAGE; + } +} +else +{ + $language = 'en_UK'; + // Try to get browser language + foreach ($languages->fs_languages as $language_code => $fs_language) + { + if (substr($language_code,0,2) == @substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2)) + { + $language = $language_code; + break; + } + } +} + +if ('fr_FR' == $language) { + define('PHPWG_DOMAIN', 'fr.piwigo.org'); +} +else if ('it_IT' == $language) { + define('PHPWG_DOMAIN', 'it.piwigo.org'); +} +else if ('de_DE' == $language) { + define('PHPWG_DOMAIN', 'de.piwigo.org'); +} +else if ('es_ES' == $language) { + define('PHPWG_DOMAIN', 'es.piwigo.org'); +} +else if ('pl_PL' == $language) { + define('PHPWG_DOMAIN', 'pl.piwigo.org'); +} +else if ('zh_CN' == $language) { + define('PHPWG_DOMAIN', 'cn.piwigo.org'); +} +else if ('hu_HU' == $language) { + define('PHPWG_DOMAIN', 'hu.piwigo.org'); +} +else if ('ru_RU' == $language) { + define('PHPWG_DOMAIN', 'ru.piwigo.org'); +} +else if ('nl_NL' == $language) { + define('PHPWG_DOMAIN', 'nl.piwigo.org'); +} +else if ('tr_TR' == $language) { + define('PHPWG_DOMAIN', 'tr.piwigo.org'); +} +else if ('da_DK' == $language) { + define('PHPWG_DOMAIN', 'da.piwigo.org'); +} +else if ('pt_BR' == $language) { + define('PHPWG_DOMAIN', 'br.piwigo.org'); +} +else { + define('PHPWG_DOMAIN', 'piwigo.org'); +} +define('PHPWG_URL', 'http://'.PHPWG_DOMAIN); + +load_language( 'common.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) ); +load_language( 'admin.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) ); +load_language( 'install.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) ); +load_language( 'upgrade.lang', '', array('language'=>$language, 'target_charset'=>'utf-8', 'no_fallback' => true) ); + +// check php version +if (version_compare(PHP_VERSION, REQUIRED_PHP_VERSION, '<')) +{ + include(PHPWG_ROOT_PATH.'install/php5_apache_configuration.php'); +} + +// +-----------------------------------------------------------------------+ +// | database connection | +// +-----------------------------------------------------------------------+ +include_once(PHPWG_ROOT_PATH.'admin/include/functions_upgrade.php'); +include(PHPWG_ROOT_PATH .'include/dblayer/functions_'.$conf['dblayer'].'.inc.php'); + +upgrade_db_connect(); +pwg_db_check_charset(); + +list($dbnow) = pwg_db_fetch_row(pwg_query('SELECT NOW();')); +define('CURRENT_DATE', $dbnow); + +// +-----------------------------------------------------------------------+ +// | template initialization | +// +-----------------------------------------------------------------------+ + +$template = new Template(PHPWG_ROOT_PATH.'admin/themes', 'clear'); +$template->set_filenames(array('upgrade'=>'upgrade.tpl')); +$template->assign(array( + 'RELEASE' => PHPWG_VERSION, + 'L_UPGRADE_HELP' => l10n('Need help ? Ask your question on Piwigo message board.', PHPWG_URL.'/forum'), + ) +); + +// +-----------------------------------------------------------------------+ +// | Remote sites are not compatible with Piwigo 2.4+ | +// +-----------------------------------------------------------------------+ + +$has_remote_site = false; + +$query = 'SELECT galleries_url FROM '.SITES_TABLE.';'; +$result = pwg_query($query); +while ($row = pwg_db_fetch_assoc($result)) +{ + if (url_is_remote($row['galleries_url'])) + { + $has_remote_site = true; + } +} + +if ($has_remote_site) +{ + include_once(PHPWG_ROOT_PATH.'admin/include/updates.class.php'); + include_once(PHPWG_ROOT_PATH.'admin/include/pclzip.lib.php'); + + $page['errors'] = array(); + $step = 3; + updates::upgrade_to('2.3.4', $step, false); + + if (!empty($page['errors'])) + { + echo '
            '; + foreach ($page['errors'] as $error) + { + echo '
          • '.$error.'
          • '; + } + echo '
          '; + } + + exit(); +} + +// +-----------------------------------------------------------------------+ +// | upgrade choice | +// +-----------------------------------------------------------------------+ + +$tables = get_tables(); +$columns_of = get_columns_of($tables); + +// find the current release +if (!in_array('param', $columns_of[PREFIX_TABLE.'config'])) +{ + // we're in branch 1.3, important upgrade, isn't it? + if (in_array(PREFIX_TABLE.'user_category', $tables)) + { + $current_release = '1.3.1'; + } + else + { + $current_release = '1.3.0'; + } +} +else if (!in_array(PREFIX_TABLE.'user_cache', $tables)) +{ + $current_release = '1.4.0'; +} +else if (!in_array(PREFIX_TABLE.'tags', $tables)) +{ + $current_release = '1.5.0'; +} +else if ( !in_array(PREFIX_TABLE.'plugins', $tables) ) +{ + if (!in_array('auto_login_key', $columns_of[PREFIX_TABLE.'user_infos'])) + { + $current_release = '1.6.0'; + } + else + { + $current_release = '1.6.2'; + } +} +else if (!in_array('md5sum', $columns_of[PREFIX_TABLE.'images'])) +{ + $current_release = '1.7.0'; +} +else if (!in_array(PREFIX_TABLE.'themes', $tables)) +{ + $current_release = '2.0.0'; +} +else if (!in_array('added_by', $columns_of[PREFIX_TABLE.'images'])) +{ + $current_release = '2.1.0'; +} +else if (!in_array('rating_score', $columns_of[PREFIX_TABLE.'images'])) +{ + $current_release = '2.2.0'; +} +else if (!in_array('rotation', $columns_of[PREFIX_TABLE.'images'])) +{ + $current_release = '2.3.0'; +} +else if (!in_array('website_url', $columns_of[PREFIX_TABLE.'comments'])) +{ + $current_release = '2.4.0'; +} +else +{ + // retrieve already applied upgrades + $query = ' +SELECT id + FROM '.PREFIX_TABLE.'upgrade +;'; + $applied_upgrades = array_from_query($query, 'id'); + + if (!in_array(139, $applied_upgrades)) + { + $current_release = '2.5.0'; + } + else + { + // confirm that the database is in the same version as source code files + conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION)); + + header('Content-Type: text/html; charset='.get_pwg_charset()); + echo 'No upgrade required, the database structure is up to date'; + echo '
          ← back to gallery'; + exit(); + } +} + +// +-----------------------------------------------------------------------+ +// | upgrade launch | +// +-----------------------------------------------------------------------+ +$page['infos'] = array(); +$page['errors'] = array(); +$mysql_changes = array(); + +check_upgrade_access_rights(); + +if ((isset($_POST['submit']) or isset($_GET['now'])) + and check_upgrade()) +{ + $upgrade_file = PHPWG_ROOT_PATH.'install/upgrade_'.$current_release.'.php'; + if (is_file($upgrade_file)) + { + $page['upgrade_start'] = get_moment(); + $conf['die_on_sql_error'] = false; + include($upgrade_file); + conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION)); + + // Something to add in database.inc.php? + if (!empty($mysql_changes)) + { + $config_file_contents = + substr($config_file_contents, 0, $php_end_tag) . "\r\n" + . implode("\r\n" , $mysql_changes) . "\r\n" + . substr($config_file_contents, $php_end_tag); + + if (!@file_put_contents($config_file, $config_file_contents)) + { + $page['infos'][] = l10n( + 'In %s, before ?>, insert:', + PWG_LOCAL_DIR.'config/database.inc.php' + ) + .'

          '; + } + } + + // Plugins deactivation + if (in_array(PREFIX_TABLE.'plugins', $tables)) + { + deactivate_non_standard_plugins(); + } + + deactivate_non_standard_themes(); + deactivate_templates(); + + $page['upgrade_end'] = get_moment(); + + $template->assign( + 'upgrade', + array( + 'VERSION' => $current_release, + 'TOTAL_TIME' => get_elapsed_time( + $page['upgrade_start'], + $page['upgrade_end'] + ), + 'SQL_TIME' => number_format( + $page['queries_time'], + 3, + '.', + ' ' + ).' s', + 'NB_QUERIES' => $page['count_queries'] + ) + ); + + $page['infos'][] = l10n('Perform a maintenance check in [Administration>Tools>Maintenance] if you encounter any problem.'); + + // Save $page['infos'] in order to restore after maintenance actions + $page['infos_sav'] = $page['infos']; + $page['infos'] = array(); + + // c13y_upgrade plugin means "check integrity after upgrade", so it + // becomes useful just after an upgrade + $query = ' +REPLACE INTO '.PLUGINS_TABLE.' + (id, state) + VALUES (\'c13y_upgrade\', \'active\') +;'; + pwg_query($query); + + // Delete cache data + invalidate_user_cache(true); + $template->delete_compiled_templates(); + + // Tables Maintenance + do_maintenance_all_tables(); + + // Restore $page['infos'] in order to hide informations messages from functions calles + // errors messages are not hide + $page['infos'] = $page['infos_sav']; + + } +} + +// +-----------------------------------------------------------------------+ +// | start template output | +// +-----------------------------------------------------------------------+ +else +{ + if (!defined('PWG_CHARSET')) + { + define('PWG_CHARSET', 'utf-8'); + } + + include_once(PHPWG_ROOT_PATH.'admin/include/languages.class.php'); + $languages = new languages(); + + foreach ($languages->fs_languages as $language_code => $fs_language) + { + if ($language == $language_code) + { + $template->assign('language_selection', $language_code); + } + $languages_options[$language_code] = $fs_language['name']; + } + $template->assign('language_options', $languages_options); + + $template->assign('introduction', array( + 'CURRENT_RELEASE' => $current_release, + 'F_ACTION' => 'upgrade.php?language=' . $language)); + + if (!check_upgrade()) + { + $template->assign('login', true); + } +} + +if (count($page['errors']) != 0) +{ + $template->assign('errors', $page['errors']); +} + +if (count($page['infos']) != 0) +{ + $template->assign('infos', $page['infos']); +} + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ + +$template->pparse('upgrade'); +?> diff --git a/sources/upgrade_feed.php b/sources/upgrade_feed.php new file mode 100644 index 0000000..77e2aea --- /dev/null +++ b/sources/upgrade_feed.php @@ -0,0 +1,116 @@ +getMessage(), true)); +} + +pwg_db_check_charset(); + +// +-----------------------------------------------------------------------+ +// | Upgrades | +// +-----------------------------------------------------------------------+ + +// retrieve already applied upgrades +$query = ' +SELECT id + FROM '.PREFIX_TABLE.'upgrade +;'; +$applied = array_from_query($query, 'id'); + +// retrieve existing upgrades +$existing = get_available_upgrade_ids(); + +// which upgrades need to be applied? +$to_apply = array_diff($existing, $applied); + +echo '
          ';
          +echo count($to_apply).' upgrades to apply';
          +
          +foreach ($to_apply as $upgrade_id)
          +{
          +  unset($upgrade_description);
          +
          +  echo "\n\n";
          +  echo '=== upgrade '.$upgrade_id."\n";
          +
          +  // include & execute upgrade script. Each upgrade script must contain
          +  // $upgrade_description variable which describe briefly what the upgrade
          +  // script does.
          +  include(UPGRADES_PATH.'/'.$upgrade_id.'-database.php');
          +
          +  // notify upgrade
          +  $query = '
          +INSERT INTO '.PREFIX_TABLE.'upgrade
          +  (id, applied, description)
          +  VALUES
          +  (\''.$upgrade_id.'\', NOW(), \''.$upgrade_description.'\')
          +;';
          +  pwg_query($query);
          +}
          +
          +echo '
          '; +?> diff --git a/sources/ws.php b/sources/ws.php new file mode 100644 index 0000000..c582967 --- /dev/null +++ b/sources/ws.php @@ -0,0 +1,969 @@ +setHandler($requestFormat, $handler); +} + +if (!is_null($responseFormat)) +{ + $encoder = null; + switch ($responseFormat) + { + case 'rest': + include_once(PHPWG_ROOT_PATH.'include/ws_protocols/rest_encoder.php'); + $encoder = new PwgRestEncoder(); + break; + case 'php': + include_once(PHPWG_ROOT_PATH.'include/ws_protocols/php_encoder.php'); + $encoder = new PwgSerialPhpEncoder(); + break; + case 'json': + include_once(PHPWG_ROOT_PATH.'include/ws_protocols/json_encoder.php'); + $encoder = new PwgJsonEncoder(); + break; + case 'xmlrpc': + include_once(PHPWG_ROOT_PATH.'include/ws_protocols/xmlrpc_encoder.php'); + $encoder = new PwgXmlRpcEncoder(); + break; + } + $service->setEncoder($responseFormat, $encoder); +} + +set_make_full_url(); +$service->run(); + + +/** + * event handler that registers standard methods with the web service + */ +function ws_addDefaultMethods( $arr ) +{ + global $conf, $user; + $service = &$arr[0]; + + include_once(PHPWG_ROOT_PATH.'include/ws_functions.inc.php'); + $ws_functions_root = PHPWG_ROOT_PATH.'include/ws_functions/'; + + $f_params = array( + 'f_min_rate' => array('default'=>null, + 'type'=>WS_TYPE_FLOAT), + 'f_max_rate' => array('default'=>null, + 'type'=>WS_TYPE_FLOAT), + 'f_min_hit' => array('default'=>null, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'f_max_hit' => array('default'=>null, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'f_min_ratio' => array('default'=>null, + 'type'=>WS_TYPE_FLOAT|WS_TYPE_POSITIVE), + 'f_max_ratio' => array('default'=>null, + 'type'=>WS_TYPE_FLOAT|WS_TYPE_POSITIVE), + 'f_max_level' => array('default'=>null, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'f_min_date_available' => array('default'=>null), + 'f_max_date_available' => array('default'=>null), + 'f_min_date_created' => array('default'=>null), + 'f_max_date_created' => array('default'=>null), + ); + + $service->addMethod( + 'pwg.getVersion', + 'ws_getVersion', + null, + 'Returns the Piwigo version.', + $ws_functions_root . 'pwg.php' + ); + + $service->addMethod( + 'pwg.getInfos', + 'ws_getInfos', + null, + 'Returns general informations.', + $ws_functions_root . 'pwg.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.caddie.add', + 'ws_caddie_add', + array( + 'image_id'=> array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + ), + 'Adds elements to the caddie. Returns the number of elements added.', + $ws_functions_root . 'pwg.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.getImages', + 'ws_categories_getImages', + array_merge(array( + 'cat_id' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'recursive' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + 'per_page' => array('default'=>100, + 'maxValue'=>$conf['ws_max_images_per_page'], + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'page' => array('default'=>0, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'order' => array('default'=>null, + 'info'=>'id, file, name, hit, rating_score, date_creation, date_available, random'), + ), $f_params), + 'Returns elements for the corresponding categories. +
          cat_id can be empty if recursive is true. +
          order comma separated fields for sorting', + $ws_functions_root . 'pwg.categories.php' + ); + + $service->addMethod( + 'pwg.categories.getList', + 'ws_categories_getList', + array( + 'cat_id' => array('default'=>null, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE, + 'info'=>'Parent category. "0" or empty for root.'), + 'recursive' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + 'public' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + 'tree_output' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + 'fullname' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + ), + 'Returns a list of categories.', + $ws_functions_root . 'pwg.categories.php' + ); + + $service->addMethod( + 'pwg.getMissingDerivatives', + 'ws_getMissingDerivatives', + array_merge(array( + 'types' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY, + 'info'=>'square, thumb, 2small, xsmall, small, medium, large, xlarge, xxlarge'), + 'ids' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'max_urls' => array('default'=>200, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'prev_page' => array('default'=>null, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + ), $f_params), + 'Returns a list of derivatives to build.', + $ws_functions_root . 'pwg.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.images.addComment', + 'ws_images_addComment', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'author' => array('default'=>is_a_guest()?'guest':$user['username']), + 'content' => array(), + 'key' => array(), + ), + 'Adds a comment to an image.', + $ws_functions_root . 'pwg.images.php', + array('post_only'=>true) + ); + + $service->addMethod( + 'pwg.images.getInfo', + 'ws_images_getInfo', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'comments_page' => array('default'=>0, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'comments_per_page' => array('default'=>$conf['nb_comment_page'], + 'maxValue'=>2*$conf['nb_comment_page'], + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + ), + 'Returns information about an image.', + $ws_functions_root . 'pwg.images.php' + ); + + $service->addMethod( + 'pwg.images.rate', + 'ws_images_rate', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'rate' => array('type'=>WS_TYPE_FLOAT), + ), + 'Rates an image.', + $ws_functions_root . 'pwg.images.php' + ); + + $service->addMethod( + 'pwg.images.search', + 'ws_images_search', + array_merge(array( + 'query' => array(), + 'per_page' => array('default'=>100, + 'maxValue'=>$conf['ws_max_images_per_page'], + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'page' => array('default'=>0, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'order' => array('default'=>null, + 'info'=>'id, file, name, hit, rating_score, date_creation, date_available, random'), + ), $f_params), + 'Returns elements for the corresponding query search.', + $ws_functions_root . 'pwg.images.php' + ); + + $service->addMethod( + 'pwg.images.setPrivacyLevel', + 'ws_images_setPrivacyLevel', + array( + 'image_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'level' => array('maxValue'=>max($conf['available_permission_levels']), + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + ), + 'Sets the privacy levels for the images.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.images.setRank', + 'ws_images_setRank', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'category_id' => array('type'=>WS_TYPE_ID), + 'rank' => array('type'=>WS_TYPE_INT|WS_TYPE_POSITIVE|WS_TYPE_NOTNULL) + ), + 'Sets the rank of a photo for a given album.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.rates.delete', + 'ws_rates_delete', + array( + 'user_id' => array('type'=>WS_TYPE_ID), + 'anonymous_id' => array('default'=>null), + 'image_id' => array('flags'=>WS_PARAM_OPTIONAL, 'type'=>WS_TYPE_ID), + ), + 'Deletes all rates for a user.', + $ws_functions_root . 'pwg.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.session.getStatus', + 'ws_session_getStatus', + null, + 'Gets information about the current session. Also provides a token useable with admin methods.', + $ws_functions_root . 'pwg.php' + ); + + $service->addMethod( + 'pwg.session.login', + 'ws_session_login', + array('username', 'password'), + 'Tries to login the user.', + $ws_functions_root . 'pwg.php', + array('post_only'=>true) + ); + + $service->addMethod( + 'pwg.session.logout', + 'ws_session_logout', + null, + 'Ends the current session.', + $ws_functions_root . 'pwg.php' + ); + + $service->addMethod( + 'pwg.tags.getList', + 'ws_tags_getList', + array( + 'sort_by_counter' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + ), + 'Retrieves a list of available tags.', + $ws_functions_root . 'pwg.tags.php' + ); + + $service->addMethod( + 'pwg.tags.getImages', + 'ws_tags_getImages', + array_merge(array( + 'tag_id' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'tag_url_name' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY), + 'tag_name' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY), + 'tag_mode_and' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + 'per_page' => array('default'=>100, + 'maxValue'=>$conf['ws_max_images_per_page'], + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'page' => array('default'=>0, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'order' => array('default'=>null, + 'info'=>'id, file, name, hit, rating_score, date_creation, date_available, random'), + ), $f_params), + 'Returns elements for the corresponding tags. Fill at least tag_id, tag_url_name or tag_name.', + $ws_functions_root . 'pwg.tags.php' + ); + + $service->addMethod( + 'pwg.images.addChunk', + 'ws_images_add_chunk', + array( + 'data' => array(), + 'original_sum' => array(), + 'type' => array('default'=>'file', + 'info'=>'Must be "file", for backward compatiblity "high" and "thumb" are allowed.'), + 'position' => array() + ), + 'Add a chunk of a file.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.images.addFile', + 'ws_images_addFile', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'type' => array('default'=>'file', + 'info'=>'Must be "file", for backward compatiblity "high" and "thumb" are allowed.'), + 'sum' => array(), + ), + 'Add or update a file for an existing photo. +
          pwg.images.addChunk must have been called before (maybe several times).', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true) + ); + + + $service->addMethod( + 'pwg.images.add', + 'ws_images_add', + array( + 'thumbnail_sum' => array('default'=>null), + 'high_sum' => array('default'=>null), + 'original_sum' => array(), + 'original_filename' => array('default'=>null, + 'Provide it if "check_uniqueness" is true and $conf["uniqueness_mode"] is "filename".'), + 'name' => array('default'=>null), + 'author' => array('default'=>null), + 'date_creation' => array('default'=>null), + 'comment' => array('default'=>null), + 'categories' => array('default'=>null, + 'info'=>'String list "category_id[,rank];category_id[,rank]".
          The rank is optional and is equivalent to "auto" if not given.'), + 'tag_ids' => array('default'=>null, + 'info'=>'Comma separated ids'), + 'level' => array('default'=>0, + 'maxValue'=>max($conf['available_permission_levels']), + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'check_uniqueness' => array('default'=>true, + 'type'=>WS_TYPE_BOOL), + 'image_id' => array('default'=>null, + 'type'=>WS_TYPE_ID), + ), + 'Add an image. +
          pwg.images.addChunk must have been called before (maybe several times). +
          Don\'t use "thumbnail_sum" and "high_sum", these parameters are here for backward compatibility.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.images.addSimple', + 'ws_images_addSimple', + array( + 'category' => array('default'=>null, + 'flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'name' => array('default'=>null), + 'author' => array('default'=>null), + 'comment' => array('default'=>null), + 'level' => array('default'=>0, + 'maxValue'=>max($conf['available_permission_levels']), + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'tags' => array('default'=>null, + 'flags'=>WS_PARAM_ACCEPT_ARRAY), + 'image_id' => array('default'=>null, + 'type'=>WS_TYPE_ID), + ), + 'Add an image. +
          Use the $_FILES[image] field for uploading file. +
          Set the form encoding to "form-data". +
          You can update an existing photo if you define an existing image_id.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.images.delete', + 'ws_images_delete', + array( + 'image_id' => array('flags'=>WS_PARAM_ACCEPT_ARRAY), + 'pwg_token' => array(), + ), + 'Deletes image(s).', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.getAdminList', + 'ws_categories_getAdminList', + null, + 'Get albums list as displayed on admin page.', + $ws_functions_root . 'pwg.categories.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.add', + 'ws_categories_add', + array( + 'name' => array(), + 'parent' => array('default'=>null, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'comment' => array('default'=>null), + 'visible' => array('default'=>true, + 'type'=>WS_TYPE_BOOL), + 'status' => array('default'=>null, + 'info'=>'public, private'), + 'commentable' => array('default'=>true, + 'type'=>WS_TYPE_BOOL), + ), + 'Adds an album.', + $ws_functions_root . 'pwg.categories.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.delete', + 'ws_categories_delete', + array( + 'category_id'=> array('flags'=>WS_PARAM_ACCEPT_ARRAY), + 'photo_deletion_mode' => array('default'=>'delete_orphans'), + 'pwg_token' => array(), + ), + 'Deletes album(s). +
          photo_deletion_mode can be "no_delete" (may create orphan photos), "delete_orphans" +(default mode, only deletes photos linked to no other album) or "force_delete" (delete all photos, even those linked to other albums)', + $ws_functions_root . 'pwg.categories.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.move', + 'ws_categories_move', + array( + 'category_id' => array('flags'=>WS_PARAM_ACCEPT_ARRAY), + 'parent' => array('type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'pwg_token' => array(), + ), + 'Move album(s). +
          Set parent as 0 to move to gallery root. Only virtual categories can be moved.', + $ws_functions_root . 'pwg.categories.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.setRepresentative', + 'ws_categories_setRepresentative', + array( + 'category_id' => array('type'=>WS_TYPE_ID), + 'image_id' => array('type'=>WS_TYPE_ID), + ), + 'Sets the representative photo for an album. The photo doesn\'t have to belong to the album.', + $ws_functions_root . 'pwg.categories.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.tags.getAdminList', + 'ws_tags_getAdminList', + null, + 'Admin only.', + $ws_functions_root . 'pwg.tags.php', + array('admin_only'=>true) + ); + + $service->addMethod( // TODO: create multiple tags + 'pwg.tags.add', + 'ws_tags_add', + array('name'), + 'Adds a new tag.', + $ws_functions_root . 'pwg.tags.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.images.exist', + 'ws_images_exist', + array( + 'md5sum_list' => array('default'=>null), + 'filename_list' => array('default'=>null), + ), + 'Checks existence of images. +
          Give md5sum_list if $conf[uniqueness_mode]==md5sum. Give filename_list if $conf[uniqueness_mode]==filename.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.images.checkFiles', + 'ws_images_checkFiles', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'file_sum' => array('default'=>null), + 'thumbnail_sum' => array('default'=>null), + 'high_sum' => array('default'=>null), + ), + 'Checks if you have updated version of your files for a given photo, the answer can be "missing", "equals" or "differs". +
          Don\'t use "thumbnail_sum" and "high_sum", these parameters are here for backward compatibility.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.images.checkUpload', + 'ws_images_checkUpload', + null, + 'Checks if Piwigo is ready for upload.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.images.setInfo', + 'ws_images_setInfo', + array( + 'image_id' => array('type'=>WS_TYPE_ID), + 'file' => array('default'=>null), + 'name' => array('default'=>null), + 'author' => array('default'=>null), + 'date_creation' => array('default'=>null), + 'comment' => array('default'=>null), + 'categories' => array('default'=>null, + 'info'=>'String list "category_id[,rank];category_id[,rank]".
          The rank is optional and is equivalent to "auto" if not given.'), + 'tag_ids' => array('default'=>null, + 'info'=>'Comma separated ids'), + 'level' => array('default'=>null, + 'maxValue'=>max($conf['available_permission_levels']), + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'single_value_mode' => array('default'=>'fill_if_empty'), + 'multiple_value_mode' => array('default'=>'append'), + ), + 'Changes properties of an image. +
          single_value_mode can be "fill_if_empty" (only use the input value if the corresponding values is currently empty) or "replace" +(overwrite any existing value) and applies to single values properties like name/author/date_creation/comment. +
          multiple_value_mode can be "append" (no change on existing values, add the new values) or "replace" and applies to multiple values properties like tag_ids/categories.', + $ws_functions_root . 'pwg.images.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.categories.setInfo', + 'ws_categories_setInfo', + array( + 'category_id' => array('type'=>WS_TYPE_ID), + 'name' => array('default'=>null), + 'comment' => array('default'=>null), + ), + 'Changes properties of an album.', + $ws_functions_root . 'pwg.categories.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.plugins.getList', + 'ws_plugins_getList', + null, + 'Gets the list of plugins with id, name, version, state and description.', + $ws_functions_root . 'pwg.extensions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.plugins.performAction', + 'ws_plugins_performAction', + array( + 'action' => array('info'=>'install, activate, deactivate, uninstall, delete'), + 'plugin' => array(), + 'pwg_token' => array(), + ), + null, + $ws_functions_root . 'pwg.extensions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.themes.performAction', + 'ws_themes_performAction', + array( + 'action' => array('info'=>'activate, deactivate, delete, set_default'), + 'theme' => array(), + 'pwg_token' => array(), + ), + null, + $ws_functions_root . 'pwg.extensions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.extensions.update', + 'ws_extensions_update', + array( + 'type' => array('info'=>'plugins, languages, themes'), + 'id' => array(), + 'revision' => array(), + 'pwg_token' => array(), + ), + 'Webmaster only.', + $ws_functions_root . 'pwg.extensions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.extensions.ignoreUpdate', + 'ws_extensions_ignoreupdate', + array( + 'type' => array('default'=>null, + 'info'=>'plugins, languages, themes'), + 'id' => array('default'=>null), + 'reset' => array('default'=>false, + 'type'=>WS_TYPE_BOOL, + 'info'=>'If true, all ignored extensions will be reinitilized.'), + 'pwg_token' => array(), + ), + 'Webmaster only. Ignores an extension if it needs update.', + $ws_functions_root . 'pwg.extensions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.extensions.checkUpdates', + 'ws_extensions_checkupdates', + null, + 'Checks if piwigo or extensions are up to date.', + $ws_functions_root . 'pwg.extensions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.groups.getList', + 'ws_groups_getList', + array( + 'group_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'name' => array('flags'=>WS_PARAM_OPTIONAL, + 'info'=>'Use "%" as wildcard.'), + 'per_page' => array('default'=>100, + 'maxValue'=>$conf['ws_max_users_per_page'], + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'page' => array('default'=>0, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'order' => array('default'=>'name', + 'info'=>'id, name, nb_users, is_default'), + ), + 'Retrieves a list of all groups. The list can be filtered.', + $ws_functions_root . 'pwg.groups.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.groups.add', + 'ws_groups_add', + array( + 'name' => array(), + 'is_default' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + ), + 'Creates a group and returns the new group record.', + $ws_functions_root . 'pwg.groups.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.groups.delete', + 'ws_groups_delete', + array( + 'group_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'pwg_token' => array(), + ), + 'Deletes a or more groups. Users and photos are not deleted.', + $ws_functions_root . 'pwg.groups.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.groups.setInfo', + 'ws_groups_setInfo', + array( + 'group_id' => array('type'=>WS_TYPE_ID), + 'name' => array('flags'=>WS_PARAM_OPTIONAL), + 'is_default' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_BOOL), + 'pwg_token' => array(), + ), + 'Updates a group. Leave a field blank to keep the current value.', + $ws_functions_root . 'pwg.groups.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.groups.addUser', + 'ws_groups_addUser', + array( + 'group_id' => array('type'=>WS_TYPE_ID), + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'pwg_token' => array(), + ), + 'Adds one or more users to a group.', + $ws_functions_root . 'pwg.groups.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.groups.deleteUser', + 'ws_groups_deleteUser', + array( + 'group_id' => array('type'=>WS_TYPE_ID), + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'pwg_token' => array(), + ), + 'Removes one or more users from a group.', + $ws_functions_root . 'pwg.groups.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.users.getList', + 'ws_users_getList', + array( + 'user_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'username' => array('flags'=>WS_PARAM_OPTIONAL, + 'info'=>'Use "%" as wildcard.'), + 'status' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, + 'info'=>'guest,generic,normal,admin,webmaster'), + 'min_level' => array('default'=>0, + 'maxValue'=>max($conf['available_permission_levels']), + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'group_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'per_page' => array('default'=>100, + 'maxValue'=>$conf['ws_max_users_per_page'], + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'page' => array('default'=>0, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'order' => array('default'=>'id', + 'info'=>'id, username, level, email'), + 'display' => array('default'=>'basics', + 'info'=>'Comma saparated list (see method description)'), + ), + 'Retrieves a list of all the users.
          +
          +display controls which data are returned, possible values are:
          +all, basics, none,
          +username, email, status, level, groups,
          +language, theme, nb_image_page, recent_period, expand, show_nb_comments, show_nb_hits,
          +enabled_high, registration_date, registration_date_string, registration_date_since, last_visit, last_visit_string, last_visit_since
          +basics stands for "username,email,status,level,groups"', + $ws_functions_root . 'pwg.users.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.users.add', + 'ws_users_add', + array( + 'username' => array(), + 'password' => array('default'=>null), + 'password_confirm' => array('flags'=>WS_PARAM_OPTIONAL), + 'email' => array('default'=>null), + 'send_password_by_mail' => array('default'=>false, 'type'=>WS_TYPE_BOOL), + 'pwg_token' => array(), + ), + 'Registers a new user.', + $ws_functions_root . 'pwg.users.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.users.delete', + 'ws_users_delete', + array( + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'pwg_token' => array(), + ), + 'Deletes on or more users. Photos owned by this user are not deleted.', + $ws_functions_root . 'pwg.users.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.users.setInfo', + 'ws_users_setInfo', + array( + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'username' => array('flags'=>WS_PARAM_OPTIONAL), + 'password' => array('flags'=>WS_PARAM_OPTIONAL), + 'email' => array('flags'=>WS_PARAM_OPTIONAL), + 'status' => array('flags'=>WS_PARAM_OPTIONAL, + 'info'=>'guest,generic,normal,admin,webmaster'), + 'level'=> array('flags'=>WS_PARAM_OPTIONAL, + 'maxValue'=>max($conf['available_permission_levels']), + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'language' => array('flags'=>WS_PARAM_OPTIONAL), + 'theme' => array('flags'=>WS_PARAM_OPTIONAL), + 'group_id' => array('flags'=>WS_PARAM_OPTIONAL|WS_PARAM_FORCE_ARRAY, 'type'=>WS_TYPE_INT), + // bellow are parameters removed in a future version + 'nb_image_page' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE|WS_TYPE_NOTNULL), + 'recent_period' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_INT|WS_TYPE_POSITIVE), + 'expand' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_BOOL), + 'show_nb_comments' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_BOOL), + 'show_nb_hits' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_BOOL), + 'enabled_high' => array('flags'=>WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_BOOL), + 'pwg_token' => array(), + ), + 'Updates a user. Leave a field blank to keep the current value. +
          "username", "password" and "email" are ignored if "user_id" is an array. +
          set "group_id" to -1 if you want to dissociate users from all groups', + $ws_functions_root . 'pwg.users.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.permissions.getList', + 'ws_permissions_getList', + array( + 'cat_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + 'group_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + ), + 'Returns permissions: user ids and group ids having access to each album ; this list can be filtered. +
          Provide only one parameter!', + $ws_functions_root . 'pwg.permissions.php', + array('admin_only'=>true) + ); + + $service->addMethod( + 'pwg.permissions.add', + 'ws_permissions_add', + array( + 'cat_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'group_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + 'recursive' => array('default'=>false, + 'type'=>WS_TYPE_BOOL), + 'pwg_token' => array(), + ), + 'Adds permissions to an album.', + $ws_functions_root . 'pwg.permissions.php', + array('admin_only'=>true, 'post_only'=>true) + ); + + $service->addMethod( + 'pwg.permissions.remove', + 'ws_permissions_remove', + array( + 'cat_id' => array('flags'=>WS_PARAM_FORCE_ARRAY, + 'type'=>WS_TYPE_ID), + 'group_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + 'user_id' => array('flags'=>WS_PARAM_FORCE_ARRAY|WS_PARAM_OPTIONAL, + 'type'=>WS_TYPE_ID), + 'pwg_token' => array(), + ), + 'Removes permissions from an album.', + $ws_functions_root . 'pwg.permissions.php', + array('admin_only'=>true, 'post_only'=>true) + ); +} + +?> \ No newline at end of file